ZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2Jpbi9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYmluL3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTM4NGJiMQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2Jpbi9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkLy5wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS5kZXBlbmQgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC8ucGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkuZGVwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NWFkZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC8ucGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkuZGVwZW5kCkBAIC0wLDAgKzEsMTk0NCBAQAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL2lvcXVldWVfc2VsZWN0Lm86IC4uL3NyYy9wai9pb3F1ZXVlX3NlbGVjdC5jIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2suaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc29ja2lvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NraW9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Vpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2luLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW42LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lwdjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbl9zeXN0bS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L3RjcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90Y3AuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0L2lmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2hkbGMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXJwYS9pbmV0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2lvY3Rscy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdGVybWJpdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2lvY3RsX2NvbXBhdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8tYmFzZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRkYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS91bmlzdGQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2NvbmYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9wYXRoY29uZi5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfc2VsZWN0LmggLi4vaW5jbHVkZS9wai9zb2NrX3Fvcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCAuLi9pbmNsdWRlL3BqL3JhbmQuaCBcCisgLi4vc3JjL3BqL2lvcXVldWVfY29tbW9uX2Ficy5oIC4uL3NyYy9wai9pb3F1ZXVlX2NvbW1vbl9hYnMuYworb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL2ZpbGVfYWNjZXNzX3VuaXN0ZC5vOiAuLi9zcmMvcGovZmlsZV9hY2Nlc3NfdW5pc3RkLmMgXAorIC4uL2luY2x1ZGUvcGovZmlsZV9hY2Nlc3MuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RhdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS91bmlzdGQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2NvbmYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9wYXRoY29uZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9maWxlX2lvX2Fuc2kubzogLi4vc3JjL3BqL2ZpbGVfaW9fYW5zaS5jIC4uL2luY2x1ZGUvcGovZmlsZV9pby5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLWJhc2UuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL29zX2NvcmVfdW5peC5vOiAuLi9zcmMvcGovb3NfY29yZV91bml4LmMgLi4vaW5jbHVkZS9wai9vcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovZ3VpZC5oIC4uL2luY2x1ZGUvcGovZXhjZXB0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NlbWFwaG9yZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS91bmlzdGQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2NvbmYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9wYXRoY29uZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8tYmFzZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9wdGhyZWFkLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2NoZWQuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL29zX2Vycm9yX3VuaXgubzogLi4vc3JjL3BqL29zX2Vycm9yX3VuaXguYyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9zdHJpbmcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLWJhc2UuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL29zX3RpbWVfdW5peC5vOiAuLi9zcmMvcGovb3NfdGltZV91bml4LmMgLi4vaW5jbHVkZS9wai9vcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovZXJybm8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdGltZWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvdW5pc3RkLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzY29uZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3BhdGhjb25mLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9vc190aW1lc3RhbXBfcG9zaXgubzogLi4vc3JjL3BqL29zX3RpbWVzdGFtcF9wb3NpeC5jIC4uL2luY2x1ZGUvcGovb3MuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2Vycm5vLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzY29uZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3BhdGhjb25mLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLWJhc2UuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL2d1aWRfc2ltcGxlLm86IC4uL3NyYy9wai9ndWlkX3NpbXBsZS5jIC4uL2luY2x1ZGUvcGovZ3VpZC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvYWRkcl9yZXNvbHZfc29jay5vOiAuLi9zcmMvcGovYWRkcl9yZXNvbHZfc29jay5jIFwKKyAuLi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmggLi4vaW5jbHVkZS9wai9zb2NrLmggLi4vaW5jbHVkZS9wai90eXBlcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgLi4vaW5jbHVkZS9wai9pcF9oZWxwZXIuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc29ja2lvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NraW9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Vpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2luLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW42LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lwdjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbl9zeXN0bS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L3RjcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90Y3AuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0L2lmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2hkbGMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXJwYS9pbmV0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2lvY3Rscy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdGVybWJpdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2lvY3RsX2NvbXBhdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8tYmFzZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRkYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS91bmlzdGQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2NvbmYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9wYXRoY29uZi5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvbG9nX3dyaXRlcl9zdGRvdXQubzogLi4vc3JjL3BqL2xvZ193cml0ZXJfc3Rkb3V0LmMgLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0ZGZpbGVpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9vc190aW1lc3RhbXBfY29tbW9uLm86IC4uL3NyYy9wai9vc190aW1lc3RhbXBfY29tbW9uLmMgLi4vaW5jbHVkZS9wai9vcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hdGguaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvcG9vbF9wb2xpY3lfbWFsbG9jLm86IC4uL3NyYy9wai9wb29sX3BvbGljeV9tYWxsb2MuYyAuLi9pbmNsdWRlL3BqL3Bvb2wuaCBcCisgLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2V4Y2VwdC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovbG9nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC4uL3NyYy9wai9wb29sX3NpZ25hdHVyZS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9zdHJpbmcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvc29ja19ic2QubzogLi4vc3JjL3BqL3NvY2tfYnNkLmMgLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9zdHJpbmcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc29ja2lvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC91aW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5lcmljLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2luNi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pcHY2LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW42LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW5fc3lzdG0uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC90Y3AuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdGNwLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldC9pZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9oZGxjL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FycGEvaW5ldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9pb2N0bHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9pb2N0bF9jb21wYXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLWJhc2UuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0ZGIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvdW5pc3RkLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNjb25mLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvcGF0aGNvbmYuaCBcCisgLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIC4uL2luY2x1ZGUvcGovZXJybm8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCAuLi9pbmNsdWRlL3BqL3VuaWNvZGUuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL3NvY2tfc2VsZWN0Lm86IC4uL3NyYy9wai9zb2NrX3NlbGVjdC5jIC4uL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc29ja2lvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NraW9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Vpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pbjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaXB2Ni5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luNi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luX3N5c3RtLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvdGNwLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RjcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXQvaWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaGRsYy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hcnBhL2luZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vaW9jdGxzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90ZXJtYml0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvaW9jdGxfY29tcGF0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGRiLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzY29uZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3BhdGhjb25mLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9hY3RpdmVzb2NrLm86IC4uL3NyYy9wai9hY3RpdmVzb2NrLmMgLi4vaW5jbHVkZS9wai9hY3RpdmVzb2NrLmggXAorIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zb2NraW9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdWlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5lcmljLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2luNi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pcHY2LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW42LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW5fc3lzdG0uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC90Y3AuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdGNwLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldC9pZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9oZGxjL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FycGEvaW5ldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9pb2N0bHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9pb2N0bF9jb21wYXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLWJhc2UuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0ZGIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvdW5pc3RkLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNjb25mLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvcGF0aGNvbmYuaCBcCisgLi4vaW5jbHVkZS9wai9hc3NlcnQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIFwKKyAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL2FycmF5Lm86IC4uL3NyYy9wai9hcnJheS5jIC4uL2luY2x1ZGUvcGovYXJyYXkuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9hc3NlcnQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvY29uZmlnLm86IC4uL3NyYy9wai9jb25maWcuYyAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvY3R5cGUubzogLi4vc3JjL3BqL2N0eXBlLmMgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovdHlwZXMuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9lcnJuby5vOiAuLi9zcmMvcGovZXJybm8uYyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai90eXBlcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdGRhcmcuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9leGNlcHQubzogLi4vc3JjL3BqL2V4Y2VwdC5jIC4uL2luY2x1ZGUvcGovZXhjZXB0LmggLi4vaW5jbHVkZS9wai90eXBlcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL3NldGptcC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvZmlmb2J1Zi5vOiAuLi9zcmMvcGovZmlmb2J1Zi5jIC4uL2luY2x1ZGUvcGovZmlmb2J1Zi5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovbG9nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9ndWlkLm86IC4uL3NyYy9wai9ndWlkLmMgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovdHlwZXMuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovZ3VpZC5oIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovbGlzdC5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvaGFzaC5vOiAuLi9zcmMvcGovaGFzaC5jIC4uL2luY2x1ZGUvcGovaGFzaC5oIC4uL2luY2x1ZGUvcGovdHlwZXMuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovbG9nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovb3MuaCBcCisgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvaXBfaGVscGVyX2dlbmVyaWMubzogLi4vc3JjL3BqL2lwX2hlbHBlcl9nZW5lcmljLmMgXAorIC4uL2luY2x1ZGUvcGovaXBfaGVscGVyLmggLi4vaW5jbHVkZS9wai9zb2NrLmggLi4vaW5jbHVkZS9wai90eXBlcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIFwKKyAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zb2NraW9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdWlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pbjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaXB2Ni5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luNi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luX3N5c3RtLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvdGNwLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RjcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXQvaWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaGRsYy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hcnBhL2luZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vaW9jdGxzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90ZXJtYml0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvaW9jdGxfY29tcGF0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGRiLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzY29uZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3BhdGhjb25mLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9saXN0Lm86IC4uL3NyYy9wai9saXN0LmMgLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai90eXBlcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9saXN0X2kuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL2xvY2subzogLi4vc3JjL3BqL2xvY2suYyAuLi9pbmNsdWRlL3BqL2xvY2suaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9sb2cubzogLi4vc3JjL3BqL2xvZy5jIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9zdHJpbmcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0ZGFyZy5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvb3NfdGltZV9jb21tb24ubzogLi4vc3JjL3BqL29zX3RpbWVfY29tbW9uLmMgLi4vaW5jbHVkZS9wai9vcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3RpbWViLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvb3NfaW5mby5vOiAuLi9zcmMvcGovb3NfaW5mby5jIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2N0eXBlLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdXRzbmFtZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9wb29sLm86IC4uL3NyYy9wai9wb29sLmMgLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9saXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sX2kuaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL3Bvb2xfYnVmLm86IC4uL3NyYy9wai9wb29sX2J1Zi5jIC4uL2luY2x1ZGUvcGovcG9vbF9idWYuaCBcCisgLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai90eXBlcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9wb29sX2NhY2hpbmcubzogLi4vc3JjL3BqL3Bvb2xfY2FjaGluZy5jIC4uL2luY2x1ZGUvcGovcG9vbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovbG9nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvY2suaCAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sX2J1Zi5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvcG9vbF9kYmcubzogLi4vc3JjL3BqL3Bvb2xfZGJnLmMgLi4vaW5jbHVkZS9wai9wb29sLmggXAorIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9yYW5kLm86IC4uL3NyYy9wai9yYW5kLmMgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3JhbmQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9yYnRyZWUubzogLi4vc3JjL3BqL3JidHJlZS5jIC4uL2luY2x1ZGUvcGovcmJ0cmVlLmggLi4vaW5jbHVkZS9wai90eXBlcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9vcy5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvc29ja19jb21tb24ubzogLi4vc3JjL3BqL3NvY2tfY29tbW9uLmMgLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2N0eXBlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovaXBfaGVscGVyLmggLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovYWRkcl9yZXNvbHYuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zb2NraW9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdWlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pbjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaXB2Ni5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luNi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luX3N5c3RtLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvdGNwLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RjcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXQvaWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaGRsYy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hcnBhL2luZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vaW9jdGxzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90ZXJtYml0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvaW9jdGxfY29tcGF0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGRiLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzY29uZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3BhdGhjb25mLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9zb2NrX3Fvc19jb21tb24ubzogLi4vc3JjL3BqL3NvY2tfcW9zX2NvbW1vbi5jIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrLmggLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9zb2NrX3Fvc19ic2QubzogLi4vc3JjL3BqL3NvY2tfcW9zX2JzZC5jIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrLmggLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvc3NsX3NvY2tfY29tbW9uLm86IC4uL3NyYy9wai9zc2xfc29ja19jb21tb24uYyAuLi9pbmNsdWRlL3BqL3NzbF9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oCitvdXRwdXQvcGpsaWItYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvc3NsX3NvY2tfb3NzbC5vOiAuLi9zcmMvcGovc3NsX3NvY2tfb3NzbC5jIC4uL2luY2x1ZGUvcGovc3NsX3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9pb3F1ZXVlLmggLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrX3Fvcy5oIC4uL2luY2x1ZGUvcGovYWN0aXZlc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc29ja2lvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NraW9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Vpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pbjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaXB2Ni5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luNi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luX3N5c3RtLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvdGNwLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RjcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXQvaWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaGRsYy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hcnBhL2luZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vaW9jdGxzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90ZXJtYml0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvaW9jdGxfY29tcGF0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGRiLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzY29uZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3BhdGhjb25mLmggXAorIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2NrLmggLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgLi4vaW5jbHVkZS9wai9tYXRoLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYXRoLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL3RpbWVyLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9zc2xfc29ja19kdW1wLm86IC4uL3NyYy9wai9zc2xfc29ja19kdW1wLmMgLi4vaW5jbHVkZS9wai9zc2xfc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL2lvcXVldWUuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfcW9zLmggLi4vaW5jbHVkZS9wai9lcnJuby5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL3N0cmluZy5vOiAuLi9zcmMvcGovc3RyaW5nLmMgLi4vaW5jbHVkZS9wai9zdHJpbmcuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9hc3NlcnQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovc3RyaW5nX2kuaAorb3V0cHV0L3BqbGliLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL3RpbWVyLm86IC4uL3NyYy9wai90aW1lci5jIC4uL2luY2x1ZGUvcGovdGltZXIuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCAuLi9pbmNsdWRlL3BqL3Bvb2wuaCBcCisgLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmgKK291dHB1dC9wamxpYi1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS90eXBlcy5vOiAuLi9zcmMvcGovdHlwZXMuYyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovb3MuaApkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvLnBqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkuZGVwZW5kIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvLnBqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkuZGVwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYjhhMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC8ucGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS5kZXBlbmQKQEAgLTAsMCArMSwxNzQzIEBACitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9tYWluLm86IC4uL3NyYy9wamxpYi10ZXN0L21haW4uYyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovc29jay5oIC4uL2luY2x1ZGUvcGovbG9nLmgKK291dHB1dC9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL2FjdGl2ZXNvY2subzogLi4vc3JjL3BqbGliLXRlc3QvYWN0aXZlc29jay5jIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqbGliLmggXAorIC4uL2luY2x1ZGUvcGovYWN0aXZlc29jay5oIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIC4uL2luY2x1ZGUvcGovc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmggLi4vaW5jbHVkZS9wai9hcnJheS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2V4Y2VwdC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL2ZpZm9idWYuaCAuLi9pbmNsdWRlL3BqL2ZpbGVfYWNjZXNzLmggXAorIC4uL2luY2x1ZGUvcGovZmlsZV9pby5oIC4uL2luY2x1ZGUvcGovZ3VpZC5oIC4uL2luY2x1ZGUvcGovaGFzaC5oIFwKKyAuLi9pbmNsdWRlL3BqL2lwX2hlbHBlci5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovbG9jay5oIFwKKyAuLi9pbmNsdWRlL3BqL21hdGguaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWF0aC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL3Bvb2xfYnVmLmggXAorIC4uL2luY2x1ZGUvcGovcmFuZC5oIC4uL2luY2x1ZGUvcGovcmJ0cmVlLmggLi4vaW5jbHVkZS9wai9zb2NrX3Fvcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfc2VsZWN0LmggLi4vaW5jbHVkZS9wai9zc2xfc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL3RpbWVyLmggLi4vaW5jbHVkZS9wai91bmljb2RlLmgKK291dHB1dC9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL2F0b21pYy5vOiAuLi9zcmMvcGpsaWItdGVzdC9hdG9taWMuYyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wamxpYi5oIFwKKyAuLi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaCAuLi9pbmNsdWRlL3BqL2lvcXVldWUuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIC4uL2luY2x1ZGUvcGovYXJyYXkuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovY3R5cGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jdHlwZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9jdHlwZS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai9maWZvYnVmLmggLi4vaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2ZpbGVfaW8uaCAuLi9pbmNsdWRlL3BqL2d1aWQuaCAuLi9pbmNsdWRlL3BqL2hhc2guaCBcCisgLi4vaW5jbHVkZS9wai9pcF9oZWxwZXIuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCBcCisgLi4vaW5jbHVkZS9wai9tYXRoLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hdGguaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9wb29sX2J1Zi5oIFwKKyAuLi9pbmNsdWRlL3BqL3JhbmQuaCAuLi9pbmNsdWRlL3BqL3JidHJlZS5oIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrX3NlbGVjdC5oIC4uL2luY2x1ZGUvcGovc3NsX3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai90aW1lci5oIC4uL2luY2x1ZGUvcGovdW5pY29kZS5oCitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9lY2hvX2NsdC5vOiAuLi9zcmMvcGpsaWItdGVzdC9lY2hvX2NsdC5jIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqbGliLmggXAorIC4uL2luY2x1ZGUvcGovYWN0aXZlc29jay5oIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIC4uL2luY2x1ZGUvcGovc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmggLi4vaW5jbHVkZS9wai9hcnJheS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2V4Y2VwdC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL2ZpZm9idWYuaCAuLi9pbmNsdWRlL3BqL2ZpbGVfYWNjZXNzLmggXAorIC4uL2luY2x1ZGUvcGovZmlsZV9pby5oIC4uL2luY2x1ZGUvcGovZ3VpZC5oIC4uL2luY2x1ZGUvcGovaGFzaC5oIFwKKyAuLi9pbmNsdWRlL3BqL2lwX2hlbHBlci5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovbG9jay5oIFwKKyAuLi9pbmNsdWRlL3BqL21hdGguaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWF0aC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL3Bvb2xfYnVmLmggXAorIC4uL2luY2x1ZGUvcGovcmFuZC5oIC4uL2luY2x1ZGUvcGovcmJ0cmVlLmggLi4vaW5jbHVkZS9wai9zb2NrX3Fvcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfc2VsZWN0LmggLi4vaW5jbHVkZS9wai9zc2xfc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL3RpbWVyLmggLi4vaW5jbHVkZS9wai91bmljb2RlLmgKK291dHB1dC9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL2Vycm5vLm86IC4uL3NyYy9wamxpYi10ZXN0L2Vycm5vLmMgLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovZXJybm8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL2N0eXBlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc29ja2lvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC91aW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2luLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW42LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lwdjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbl9zeXN0bS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L3RjcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90Y3AuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0L2lmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2hkbGMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXJwYS9pbmV0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2lvY3Rscy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdGVybWJpdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2lvY3RsX2NvbXBhdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8tYmFzZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRkYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS91bmlzdGQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2NvbmYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9wYXRoY29uZi5oIFwKKyAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvZXhjZXB0aW9uLm86IC4uL3NyYy9wamxpYi10ZXN0L2V4Y2VwdGlvbi5jIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqbGliLmggXAorIC4uL2luY2x1ZGUvcGovYWN0aXZlc29jay5oIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIC4uL2luY2x1ZGUvcGovc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmggLi4vaW5jbHVkZS9wai9hcnJheS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2V4Y2VwdC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL2ZpZm9idWYuaCAuLi9pbmNsdWRlL3BqL2ZpbGVfYWNjZXNzLmggXAorIC4uL2luY2x1ZGUvcGovZmlsZV9pby5oIC4uL2luY2x1ZGUvcGovZ3VpZC5oIC4uL2luY2x1ZGUvcGovaGFzaC5oIFwKKyAuLi9pbmNsdWRlL3BqL2lwX2hlbHBlci5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovbG9jay5oIFwKKyAuLi9pbmNsdWRlL3BqL21hdGguaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWF0aC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL3Bvb2xfYnVmLmggXAorIC4uL2luY2x1ZGUvcGovcmFuZC5oIC4uL2luY2x1ZGUvcGovcmJ0cmVlLmggLi4vaW5jbHVkZS9wai9zb2NrX3Fvcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfc2VsZWN0LmggLi4vaW5jbHVkZS9wai9zc2xfc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL3RpbWVyLmggLi4vaW5jbHVkZS9wai91bmljb2RlLmgKK291dHB1dC9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL2ZpZm9idWYubzogLi4vc3JjL3BqbGliLXRlc3QvZmlmb2J1Zi5jIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvZmlsZS5vOiAuLi9zcmMvcGpsaWItdGVzdC9maWxlLmMgLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGpsaWIuaCBcCisgLi4vaW5jbHVkZS9wai9hY3RpdmVzb2NrLmggLi4vaW5jbHVkZS9wai9pb3F1ZXVlLmggLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovYWRkcl9yZXNvbHYuaCAuLi9pbmNsdWRlL3BqL2FycmF5LmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2N0eXBlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovZXhjZXB0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL3NldGptcC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIC4uL2luY2x1ZGUvcGovZmlmb2J1Zi5oIC4uL2luY2x1ZGUvcGovZmlsZV9hY2Nlc3MuaCBcCisgLi4vaW5jbHVkZS9wai9maWxlX2lvLmggLi4vaW5jbHVkZS9wai9ndWlkLmggLi4vaW5jbHVkZS9wai9oYXNoLmggXAorIC4uL2luY2x1ZGUvcGovaXBfaGVscGVyLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2NrLmggXAorIC4uL2luY2x1ZGUvcGovbWF0aC5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYXRoLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovcG9vbF9idWYuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9yYnRyZWUuaCAuLi9pbmNsdWRlL3BqL3NvY2tfcW9zLmggXAorIC4uL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaCAuLi9pbmNsdWRlL3BqL3NzbF9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovdGltZXIuaCAuLi9pbmNsdWRlL3BqL3VuaWNvZGUuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvaGFzaF90ZXN0Lm86IC4uL3NyYy9wamxpYi10ZXN0L2hhc2hfdGVzdC5jIC4uL2luY2x1ZGUvcGovaGFzaC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovcmFuZC5oIC4uL2luY2x1ZGUvcGovbG9nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvaW9xX3BlcmYubzogLi4vc3JjL3BqbGliLXRlc3QvaW9xX3BlcmYuYyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wamxpYi5oIFwKKyAuLi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaCAuLi9pbmNsdWRlL3BqL2lvcXVldWUuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIC4uL2luY2x1ZGUvcGovYXJyYXkuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovY3R5cGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jdHlwZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9jdHlwZS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai9maWZvYnVmLmggLi4vaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2ZpbGVfaW8uaCAuLi9pbmNsdWRlL3BqL2d1aWQuaCAuLi9pbmNsdWRlL3BqL2hhc2guaCBcCisgLi4vaW5jbHVkZS9wai9pcF9oZWxwZXIuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCBcCisgLi4vaW5jbHVkZS9wai9tYXRoLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hdGguaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9wb29sX2J1Zi5oIFwKKyAuLi9pbmNsdWRlL3BqL3JhbmQuaCAuLi9pbmNsdWRlL3BqL3JidHJlZS5oIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrX3NlbGVjdC5oIC4uL2luY2x1ZGUvcGovc3NsX3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai90aW1lci5oIC4uL2luY2x1ZGUvcGovdW5pY29kZS5oCitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9pb3FfdWRwLm86IC4uL3NyYy9wamxpYi10ZXN0L2lvcV91ZHAuYyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wamxpYi5oIFwKKyAuLi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaCAuLi9pbmNsdWRlL3BqL2lvcXVldWUuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIC4uL2luY2x1ZGUvcGovYXJyYXkuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovY3R5cGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jdHlwZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9jdHlwZS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai9maWZvYnVmLmggLi4vaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2ZpbGVfaW8uaCAuLi9pbmNsdWRlL3BqL2d1aWQuaCAuLi9pbmNsdWRlL3BqL2hhc2guaCBcCisgLi4vaW5jbHVkZS9wai9pcF9oZWxwZXIuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCBcCisgLi4vaW5jbHVkZS9wai9tYXRoLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hdGguaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9wb29sX2J1Zi5oIFwKKyAuLi9pbmNsdWRlL3BqL3JhbmQuaCAuLi9pbmNsdWRlL3BqL3JidHJlZS5oIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrX3NlbGVjdC5oIC4uL2luY2x1ZGUvcGovc3NsX3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai90aW1lci5oIC4uL2luY2x1ZGUvcGovdW5pY29kZS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NvY2tldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vc29ja2lvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zb2NraW9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Vpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3RpbWUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnbmFsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zaWdpbmZvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5lcmljLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2luNi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pcHY2LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW42LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldGluZXQvaW5fc3lzdG0uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC90Y3AuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdGNwLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL25ldC9pZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9oZGxjL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FycGEvaW5ldC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2lvY3RsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9pb2N0bHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9pb2N0bF9jb21wYXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLWJhc2UuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0ZGIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvdW5pc3RkLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNjb25mLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvcGF0aGNvbmYuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvaW9xX3VucmVnLm86IC4uL3NyYy9wamxpYi10ZXN0L2lvcV91bnJlZy5jIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2Vycm5vLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai9vcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc29ja2V0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9zb2NrZXQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc29ja2lvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC91aW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdGltZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90aW1lLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ25hbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWduYWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2VuZGlhbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2luLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvaW42LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lwdjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbjYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbl9zeXN0bS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRpbmV0L3RjcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90Y3AuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbmV0L2lmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2lmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2hkbGMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXJwYS9pbmV0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9pb2N0bC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvaW9jdGwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL2lvY3Rscy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdGVybWJpdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2lvY3RsX2NvbXBhdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8tYmFzZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9uZXRkYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS91bmlzdGQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2NvbmYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9wYXRoY29uZi5oIFwKKyAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvaW9xX3RjcC5vOiAuLi9zcmMvcGpsaWItdGVzdC9pb3FfdGNwLmMgLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGpsaWIuaCBcCisgLi4vaW5jbHVkZS9wai9hY3RpdmVzb2NrLmggLi4vaW5jbHVkZS9wai9pb3F1ZXVlLmggLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovYWRkcl9yZXNvbHYuaCAuLi9pbmNsdWRlL3BqL2FycmF5LmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2N0eXBlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovZXhjZXB0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL3NldGptcC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIC4uL2luY2x1ZGUvcGovZmlmb2J1Zi5oIC4uL2luY2x1ZGUvcGovZmlsZV9hY2Nlc3MuaCBcCisgLi4vaW5jbHVkZS9wai9maWxlX2lvLmggLi4vaW5jbHVkZS9wai9ndWlkLmggLi4vaW5jbHVkZS9wai9oYXNoLmggXAorIC4uL2luY2x1ZGUvcGovaXBfaGVscGVyLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2NrLmggXAorIC4uL2luY2x1ZGUvcGovbWF0aC5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYXRoLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovcG9vbF9idWYuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9yYnRyZWUuaCAuLi9pbmNsdWRlL3BqL3NvY2tfcW9zLmggXAorIC4uL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaCAuLi9pbmNsdWRlL3BqL3NzbF9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovdGltZXIuaCAuLi9pbmNsdWRlL3BqL3VuaWNvZGUuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvbGlzdC5vOiAuLi9zcmMvcGpsaWItdGVzdC9saXN0LmMgLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGpsaWIuaCBcCisgLi4vaW5jbHVkZS9wai9hY3RpdmVzb2NrLmggLi4vaW5jbHVkZS9wai9pb3F1ZXVlLmggLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovYWRkcl9yZXNvbHYuaCAuLi9pbmNsdWRlL3BqL2FycmF5LmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2N0eXBlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovZXhjZXB0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL3NldGptcC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIC4uL2luY2x1ZGUvcGovZmlmb2J1Zi5oIC4uL2luY2x1ZGUvcGovZmlsZV9hY2Nlc3MuaCBcCisgLi4vaW5jbHVkZS9wai9maWxlX2lvLmggLi4vaW5jbHVkZS9wai9ndWlkLmggLi4vaW5jbHVkZS9wai9oYXNoLmggXAorIC4uL2luY2x1ZGUvcGovaXBfaGVscGVyLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2NrLmggXAorIC4uL2luY2x1ZGUvcGovbWF0aC5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYXRoLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovcG9vbF9idWYuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9yYnRyZWUuaCAuLi9pbmNsdWRlL3BqL3NvY2tfcW9zLmggXAorIC4uL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaCAuLi9pbmNsdWRlL3BqL3NzbF9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovdGltZXIuaCAuLi9pbmNsdWRlL3BqL3VuaWNvZGUuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvbXV0ZXgubzogLi4vc3JjL3BqbGliLXRlc3QvbXV0ZXguYyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wamxpYi5oIFwKKyAuLi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaCAuLi9pbmNsdWRlL3BqL2lvcXVldWUuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIC4uL2luY2x1ZGUvcGovYXJyYXkuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovY3R5cGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jdHlwZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9jdHlwZS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai9maWZvYnVmLmggLi4vaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2ZpbGVfaW8uaCAuLi9pbmNsdWRlL3BqL2d1aWQuaCAuLi9pbmNsdWRlL3BqL2hhc2guaCBcCisgLi4vaW5jbHVkZS9wai9pcF9oZWxwZXIuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCBcCisgLi4vaW5jbHVkZS9wai9tYXRoLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hdGguaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9wb29sX2J1Zi5oIFwKKyAuLi9pbmNsdWRlL3BqL3JhbmQuaCAuLi9pbmNsdWRlL3BqL3JidHJlZS5oIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrX3NlbGVjdC5oIC4uL2luY2x1ZGUvcGovc3NsX3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai90aW1lci5oIC4uL2luY2x1ZGUvcGovdW5pY29kZS5oCitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9vcy5vOiAuLi9zcmMvcGpsaWItdGVzdC9vcy5jIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2xvZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmgKK291dHB1dC9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL3Bvb2wubzogLi4vc3JjL3BqbGliLXRlc3QvcG9vbC5jIC4uL2luY2x1ZGUvcGovcG9vbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovcG9vbF9idWYuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvcG9vbF9wZXJmLm86IC4uL3NyYy9wamxpYi10ZXN0L3Bvb2xfcGVyZi5jIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqbGliLmggXAorIC4uL2luY2x1ZGUvcGovYWN0aXZlc29jay5oIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIC4uL2luY2x1ZGUvcGovc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmggLi4vaW5jbHVkZS9wai9hcnJheS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2V4Y2VwdC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL2ZpZm9idWYuaCAuLi9pbmNsdWRlL3BqL2ZpbGVfYWNjZXNzLmggXAorIC4uL2luY2x1ZGUvcGovZmlsZV9pby5oIC4uL2luY2x1ZGUvcGovZ3VpZC5oIC4uL2luY2x1ZGUvcGovaGFzaC5oIFwKKyAuLi9pbmNsdWRlL3BqL2lwX2hlbHBlci5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovbG9jay5oIFwKKyAuLi9pbmNsdWRlL3BqL21hdGguaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWF0aC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL3Bvb2xfYnVmLmggXAorIC4uL2luY2x1ZGUvcGovcmFuZC5oIC4uL2luY2x1ZGUvcGovcmJ0cmVlLmggLi4vaW5jbHVkZS9wai9zb2NrX3Fvcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfc2VsZWN0LmggLi4vaW5jbHVkZS9wai9zc2xfc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL3RpbWVyLmggLi4vaW5jbHVkZS9wai91bmljb2RlLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21hbGxvYy5oCitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9yYW5kLm86IC4uL3NyYy9wamxpYi10ZXN0L3JhbmQuYyAuLi9pbmNsdWRlL3BqL3JhbmQuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmgKK291dHB1dC9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL3JidHJlZS5vOiAuLi9zcmMvcGpsaWItdGVzdC9yYnRyZWUuYyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wamxpYi5oIFwKKyAuLi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaCAuLi9pbmNsdWRlL3BqL2lvcXVldWUuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIC4uL2luY2x1ZGUvcGovYXJyYXkuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovY3R5cGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jdHlwZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9jdHlwZS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai9maWZvYnVmLmggLi4vaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2ZpbGVfaW8uaCAuLi9pbmNsdWRlL3BqL2d1aWQuaCAuLi9pbmNsdWRlL3BqL2hhc2guaCBcCisgLi4vaW5jbHVkZS9wai9pcF9oZWxwZXIuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCBcCisgLi4vaW5jbHVkZS9wai9tYXRoLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hdGguaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9wb29sX2J1Zi5oIFwKKyAuLi9pbmNsdWRlL3BqL3JhbmQuaCAuLi9pbmNsdWRlL3BqL3JidHJlZS5oIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrX3NlbGVjdC5oIC4uL2luY2x1ZGUvcGovc3NsX3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai90aW1lci5oIC4uL2luY2x1ZGUvcGovdW5pY29kZS5oCitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9zZWxlY3QubzogLi4vc3JjL3BqbGliLXRlc3Qvc2VsZWN0LmMgLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfc2VsZWN0LmggLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9zdHJpbmcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9hc3NlcnQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvc2xlZXAubzogLi4vc3JjL3BqbGliLXRlc3Qvc2xlZXAuYyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wamxpYi5oIFwKKyAuLi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaCAuLi9pbmNsdWRlL3BqL2lvcXVldWUuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIC4uL2luY2x1ZGUvcGovYXJyYXkuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovY3R5cGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jdHlwZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9jdHlwZS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai9maWZvYnVmLmggLi4vaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2ZpbGVfaW8uaCAuLi9pbmNsdWRlL3BqL2d1aWQuaCAuLi9pbmNsdWRlL3BqL2hhc2guaCBcCisgLi4vaW5jbHVkZS9wai9pcF9oZWxwZXIuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCBcCisgLi4vaW5jbHVkZS9wai9tYXRoLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hdGguaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9wb29sX2J1Zi5oIFwKKyAuLi9pbmNsdWRlL3BqL3JhbmQuaCAuLi9pbmNsdWRlL3BqL3JidHJlZS5oIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrX3NlbGVjdC5oIC4uL2luY2x1ZGUvcGovc3NsX3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai90aW1lci5oIC4uL2luY2x1ZGUvcGovdW5pY29kZS5oCitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9zb2NrLm86IC4uL3NyYy9wamxpYi10ZXN0L3NvY2suYyAuLi9pbmNsdWRlL3BqbGliLmggXAorIC4uL2luY2x1ZGUvcGovYWN0aXZlc29jay5oIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIC4uL2luY2x1ZGUvcGovdHlwZXMuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWcuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmggLi4vaW5jbHVkZS9wai9hcnJheS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2V4Y2VwdC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL2ZpZm9idWYuaCAuLi9pbmNsdWRlL3BqL2ZpbGVfYWNjZXNzLmggXAorIC4uL2luY2x1ZGUvcGovZmlsZV9pby5oIC4uL2luY2x1ZGUvcGovZ3VpZC5oIC4uL2luY2x1ZGUvcGovaGFzaC5oIFwKKyAuLi9pbmNsdWRlL3BqL2lwX2hlbHBlci5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovbG9jay5oIFwKKyAuLi9pbmNsdWRlL3BqL21hdGguaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWF0aC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL3Bvb2xfYnVmLmggXAorIC4uL2luY2x1ZGUvcGovcmFuZC5oIC4uL2luY2x1ZGUvcGovcmJ0cmVlLmggLi4vaW5jbHVkZS9wai9zb2NrX3Fvcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfc2VsZWN0LmggLi4vaW5jbHVkZS9wai9zc2xfc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL3RpbWVyLmggLi4vaW5jbHVkZS9wai91bmljb2RlLmggLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oCitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9zb2NrX3BlcmYubzogLi4vc3JjL3BqbGliLXRlc3Qvc29ja19wZXJmLmMgLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGpsaWIuaCBcCisgLi4vaW5jbHVkZS9wai9hY3RpdmVzb2NrLmggLi4vaW5jbHVkZS9wai9pb3F1ZXVlLmggLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovYWRkcl9yZXNvbHYuaCAuLi9pbmNsdWRlL3BqL2FycmF5LmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2N0eXBlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovZXhjZXB0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL3NldGptcC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIC4uL2luY2x1ZGUvcGovZmlmb2J1Zi5oIC4uL2luY2x1ZGUvcGovZmlsZV9hY2Nlc3MuaCBcCisgLi4vaW5jbHVkZS9wai9maWxlX2lvLmggLi4vaW5jbHVkZS9wai9ndWlkLmggLi4vaW5jbHVkZS9wai9oYXNoLmggXAorIC4uL2luY2x1ZGUvcGovaXBfaGVscGVyLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2NrLmggXAorIC4uL2luY2x1ZGUvcGovbWF0aC5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYXRoLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovcG9vbF9idWYuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9yYnRyZWUuaCAuLi9pbmNsdWRlL3BqL3NvY2tfcW9zLmggXAorIC4uL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaCAuLi9pbmNsdWRlL3BqL3NzbF9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovdGltZXIuaCAuLi9pbmNsdWRlL3BqL3VuaWNvZGUuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvc3NsX3NvY2subzogLi4vc3JjL3BqbGliLXRlc3Qvc3NsX3NvY2suYyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wamxpYi5oIFwKKyAuLi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaCAuLi9pbmNsdWRlL3BqL2lvcXVldWUuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIC4uL2luY2x1ZGUvcGovYXJyYXkuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovY3R5cGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jdHlwZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9jdHlwZS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai9maWZvYnVmLmggLi4vaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2ZpbGVfaW8uaCAuLi9pbmNsdWRlL3BqL2d1aWQuaCAuLi9pbmNsdWRlL3BqL2hhc2guaCBcCisgLi4vaW5jbHVkZS9wai9pcF9oZWxwZXIuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCBcCisgLi4vaW5jbHVkZS9wai9tYXRoLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hdGguaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9wb29sX2J1Zi5oIFwKKyAuLi9pbmNsdWRlL3BqL3JhbmQuaCAuLi9pbmNsdWRlL3BqL3JidHJlZS5oIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrX3NlbGVjdC5oIC4uL2luY2x1ZGUvcGovc3NsX3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai90aW1lci5oIC4uL2luY2x1ZGUvcGovdW5pY29kZS5oCitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS9zdHJpbmcubzogLi4vc3JjL3BqbGliLXRlc3Qvc3RyaW5nLmMgLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvdGVzdC5vOiAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmMgLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGpsaWIuaCBcCisgLi4vaW5jbHVkZS9wai9hY3RpdmVzb2NrLmggLi4vaW5jbHVkZS9wai9pb3F1ZXVlLmggLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovYWRkcl9yZXNvbHYuaCAuLi9pbmNsdWRlL3BqL2FycmF5LmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2N0eXBlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovZXhjZXB0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL3NldGptcC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIC4uL2luY2x1ZGUvcGovZmlmb2J1Zi5oIC4uL2luY2x1ZGUvcGovZmlsZV9hY2Nlc3MuaCBcCisgLi4vaW5jbHVkZS9wai9maWxlX2lvLmggLi4vaW5jbHVkZS9wai9ndWlkLmggLi4vaW5jbHVkZS9wai9oYXNoLmggXAorIC4uL2luY2x1ZGUvcGovaXBfaGVscGVyLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2NrLmggXAorIC4uL2luY2x1ZGUvcGovbWF0aC5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYXRoLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovcG9vbF9idWYuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9yYnRyZWUuaCAuLi9pbmNsdWRlL3BqL3NvY2tfcW9zLmggXAorIC4uL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaCAuLi9pbmNsdWRlL3BqL3NzbF9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovdGltZXIuaCAuLi9pbmNsdWRlL3BqL3VuaWNvZGUuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvdGhyZWFkLm86IC4uL3NyYy9wamxpYi10ZXN0L3RocmVhZC5jIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqbGliLmggXAorIC4uL2luY2x1ZGUvcGovYWN0aXZlc29jay5oIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIC4uL2luY2x1ZGUvcGovc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmggLi4vaW5jbHVkZS9wai9hcnJheS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2V4Y2VwdC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL2ZpZm9idWYuaCAuLi9pbmNsdWRlL3BqL2ZpbGVfYWNjZXNzLmggXAorIC4uL2luY2x1ZGUvcGovZmlsZV9pby5oIC4uL2luY2x1ZGUvcGovZ3VpZC5oIC4uL2luY2x1ZGUvcGovaGFzaC5oIFwKKyAuLi9pbmNsdWRlL3BqL2lwX2hlbHBlci5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovbG9jay5oIFwKKyAuLi9pbmNsdWRlL3BqL21hdGguaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWF0aC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL3Bvb2xfYnVmLmggXAorIC4uL2luY2x1ZGUvcGovcmFuZC5oIC4uL2luY2x1ZGUvcGovcmJ0cmVlLmggLi4vaW5jbHVkZS9wai9zb2NrX3Fvcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfc2VsZWN0LmggLi4vaW5jbHVkZS9wai9zc2xfc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL3RpbWVyLmggLi4vaW5jbHVkZS9wai91bmljb2RlLmgKK291dHB1dC9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL3RpbWVyLm86IC4uL3NyYy9wamxpYi10ZXN0L3RpbWVyLmMgLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGpsaWIuaCBcCisgLi4vaW5jbHVkZS9wai9hY3RpdmVzb2NrLmggLi4vaW5jbHVkZS9wai9pb3F1ZXVlLmggLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovYWRkcl9yZXNvbHYuaCAuLi9pbmNsdWRlL3BqL2FycmF5LmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2N0eXBlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovZXhjZXB0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL3NldGptcC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIC4uL2luY2x1ZGUvcGovZmlmb2J1Zi5oIC4uL2luY2x1ZGUvcGovZmlsZV9hY2Nlc3MuaCBcCisgLi4vaW5jbHVkZS9wai9maWxlX2lvLmggLi4vaW5jbHVkZS9wai9ndWlkLmggLi4vaW5jbHVkZS9wai9oYXNoLmggXAorIC4uL2luY2x1ZGUvcGovaXBfaGVscGVyLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2NrLmggXAorIC4uL2luY2x1ZGUvcGovbWF0aC5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYXRoLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovcG9vbF9idWYuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9yYnRyZWUuaCAuLi9pbmNsdWRlL3BqL3NvY2tfcW9zLmggXAorIC4uL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaCAuLi9pbmNsdWRlL3BqL3NzbF9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovdGltZXIuaCAuLi9pbmNsdWRlL3BqL3VuaWNvZGUuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvdGltZXN0YW1wLm86IC4uL3NyYy9wamxpYi10ZXN0L3RpbWVzdGFtcC5jIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBcCisgLi4vaW5jbHVkZS9wai90eXBlcy5oIC4uL2luY2x1ZGUvcGovY29uZmlnLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oIC4uL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkZGVmLmggXAorIC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaCAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9sb2cuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmgKK291dHB1dC9wamxpYi10ZXN0LWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpL3VkcF9lY2hvX3Nydl9zeW5jLm86IC4uL3NyYy9wamxpYi10ZXN0L3VkcF9lY2hvX3Nydl9zeW5jLmMgXAorIC4uL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGpsaWIuaCBcCisgLi4vaW5jbHVkZS9wai9hY3RpdmVzb2NrLmggLi4vaW5jbHVkZS9wai9pb3F1ZXVlLmggLi4vaW5jbHVkZS9wai9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovYWRkcl9yZXNvbHYuaCAuLi9pbmNsdWRlL3BqL2FycmF5LmggLi4vaW5jbHVkZS9wai9hc3NlcnQuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2VsZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbmRyb2lkL2FwaS1sZXZlbC5oIFwKKyAuLi9pbmNsdWRlL3BqL2N0eXBlLmggLi4vaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgLi4vaW5jbHVkZS9wai9lcnJuby5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkYXJnLmggXAorIC4uL2luY2x1ZGUvcGovZXhjZXB0LmggLi4vaW5jbHVkZS9wai9jb21wYXQvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL3NldGptcC5oIFwKKyAuLi9pbmNsdWRlL3BqL2xvZy5oIC4uL2luY2x1ZGUvcGovZmlmb2J1Zi5oIC4uL2luY2x1ZGUvcGovZmlsZV9hY2Nlc3MuaCBcCisgLi4vaW5jbHVkZS9wai9maWxlX2lvLmggLi4vaW5jbHVkZS9wai9ndWlkLmggLi4vaW5jbHVkZS9wai9oYXNoLmggXAorIC4uL2luY2x1ZGUvcGovaXBfaGVscGVyLmggLi4vaW5jbHVkZS9wai9saXN0LmggLi4vaW5jbHVkZS9wai9sb2NrLmggXAorIC4uL2luY2x1ZGUvcGovbWF0aC5oIC4uL2luY2x1ZGUvcGovc3RyaW5nLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3RkaW8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fd2NoYXJfbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9jb21waWxlci5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUva2VybmVsLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdHJpbmdzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21lbW9yeS5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYXRoLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLTQuOC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL2djYy9hcm0tbGludXgtYW5kcm9pZGVhYmkvNC44L2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludGVybmFsX3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCBcCisgLi4vaW5jbHVkZS9wai9vcy5oIC4uL2luY2x1ZGUvcGovcG9vbC5oIC4uL2luY2x1ZGUvcGovcG9vbF9idWYuaCBcCisgLi4vaW5jbHVkZS9wai9yYW5kLmggLi4vaW5jbHVkZS9wai9yYnRyZWUuaCAuLi9pbmNsdWRlL3BqL3NvY2tfcW9zLmggXAorIC4uL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaCAuLi9pbmNsdWRlL3BqL3NzbF9zb2NrLmggXAorIC4uL2luY2x1ZGUvcGovdGltZXIuaCAuLi9pbmNsdWRlL3BqL3VuaWNvZGUuaAorb3V0cHV0L3BqbGliLXRlc3QtYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkvdWRwX2VjaG9fc3J2X2lvcXVldWUubzogLi4vc3JjL3BqbGliLXRlc3QvdWRwX2VjaG9fc3J2X2lvcXVldWUuYyBcCisgLi4vaW5jbHVkZS9wamxpYi5oIC4uL2luY2x1ZGUvcGovYWN0aXZlc29jay5oIC4uL2luY2x1ZGUvcGovaW9xdWV1ZS5oIFwKKyAuLi9pbmNsdWRlL3BqL3R5cGVzLmggLi4vaW5jbHVkZS9wai9jb25maWcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjLmggLi4vaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zaXplX3QuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRkZWYuaCBcCisgLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIC4uL2luY2x1ZGUvcGovc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmggLi4vaW5jbHVkZS9wai9hcnJheS5oIC4uL2luY2x1ZGUvcGovYXNzZXJ0LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2Fzc2VydC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmc19lbGYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYW5kcm9pZC9hcGktbGV2ZWwuaCBcCisgLi4vaW5jbHVkZS9wai9jdHlwZS5oIC4uL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2N0eXBlLmggXAorIC4uL2luY2x1ZGUvcGovZXJybm8uaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2V4Y2VwdC5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NldGptcC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAuaCBcCisgLi4vaW5jbHVkZS9wai9sb2cuaCAuLi9pbmNsdWRlL3BqL2ZpZm9idWYuaCAuLi9pbmNsdWRlL3BqL2ZpbGVfYWNjZXNzLmggXAorIC4uL2luY2x1ZGUvcGovZmlsZV9pby5oIC4uL2luY2x1ZGUvcGovZ3VpZC5oIC4uL2luY2x1ZGUvcGovaGFzaC5oIFwKKyAuLi9pbmNsdWRlL3BqL2lwX2hlbHBlci5oIC4uL2luY2x1ZGUvcGovbGlzdC5oIC4uL2luY2x1ZGUvcGovbG9jay5oIFwKKyAuLi9pbmNsdWRlL3BqL21hdGguaCAuLi9pbmNsdWRlL3BqL3N0cmluZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zdHJpbmcuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hbGxvYy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N0ZGlvLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGludC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvX3djaGFyX2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2tlcm5lbC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hbGxvY2EuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RyaW5ncy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tZW1vcnkuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWF0aC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRlcm5hbF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wYWdlLmggXAorIC4uL2luY2x1ZGUvcGovb3MuaCAuLi9pbmNsdWRlL3BqL3Bvb2wuaCAuLi9pbmNsdWRlL3BqL3Bvb2xfYnVmLmggXAorIC4uL2luY2x1ZGUvcGovcmFuZC5oIC4uL2luY2x1ZGUvcGovcmJ0cmVlLmggLi4vaW5jbHVkZS9wai9zb2NrX3Fvcy5oIFwKKyAuLi9pbmNsdWRlL3BqL3NvY2tfc2VsZWN0LmggLi4vaW5jbHVkZS9wai9zc2xfc29jay5oIFwKKyAuLi9pbmNsdWRlL3BqL3RpbWVyLmggLi4vaW5jbHVkZS9wai91bmljb2RlLmggLi4vc3JjL3BqbGliLXRlc3QvdGVzdC5oCitvdXRwdXQvcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS91dGlsLm86IC4uL3NyYy9wamxpYi10ZXN0L3V0aWwuYyAuLi9zcmMvcGpsaWItdGVzdC90ZXN0LmggXAorIC4uL2luY2x1ZGUvcGovdHlwZXMuaCAuLi9pbmNsdWRlL3BqL2NvbmZpZy5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oIC4uL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay90b29sY2hhaW5zL2FybS1saW51eC1hbmRyb2lkZWFiaS00LjgvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9nY2MvYXJtLWxpbnV4LWFuZHJvaWRlYWJpLzQuOC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmggLi4vaW5jbHVkZS9wamxpYi5oIFwKKyAuLi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaCAuLi9pbmNsdWRlL3BqL2lvcXVldWUuaCAuLi9pbmNsdWRlL3BqL3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai9hZGRyX3Jlc29sdi5oIC4uL2luY2x1ZGUvcGovYXJyYXkuaCAuLi9pbmNsdWRlL3BqL2Fzc2VydC5oIFwKKyAuLi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYXNzZXJ0LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvY2RlZnNfZWxmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FuZHJvaWQvYXBpLWxldmVsLmggXAorIC4uL2luY2x1ZGUvcGovY3R5cGUuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9jdHlwZS5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9jdHlwZS5oIFwKKyAuLi9pbmNsdWRlL3BqL2Vycm5vLmggLi4vaW5jbHVkZS9wai9jb21wYXQvZXJybm8uaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRhcmcuaCBcCisgLi4vaW5jbHVkZS9wai9leGNlcHQuaCAuLi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc2V0am1wLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmggXAorIC4uL2luY2x1ZGUvcGovbG9nLmggLi4vaW5jbHVkZS9wai9maWZvYnVmLmggLi4vaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oIFwKKyAuLi9pbmNsdWRlL3BqL2ZpbGVfaW8uaCAuLi9pbmNsdWRlL3BqL2d1aWQuaCAuLi9pbmNsdWRlL3BqL2hhc2guaCBcCisgLi4vaW5jbHVkZS9wai9pcF9oZWxwZXIuaCAuLi9pbmNsdWRlL3BqL2xpc3QuaCAuLi9pbmNsdWRlL3BqL2xvY2suaCBcCisgLi4vaW5jbHVkZS9wai9tYXRoLmggLi4vaW5jbHVkZS9wai9zdHJpbmcuaCBcCisgLi4vaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9tYWxsb2MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zdGRpby5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS9zdGRpbnQuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3RkaW50LmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL193Y2hhcl9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvc3RkZGVmLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9rZXJuZWwuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9zdGRsaWIuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvYWxsb2NhLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWVtb3J5LmggXAorIC4uL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hdGguaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvdG9vbGNoYWlucy9hcm0tbGludXgtYW5kcm9pZGVhYmktNC44L3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvZ2NjL2FybS1saW51eC1hbmRyb2lkZWFiaS80LjgvaW5jbHVkZS1maXhlZC9zeXNsaW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmggXAorIC9ob21lL2xpc2lvbmFsL0Rldi9BRFQvbmRrL3BsYXRmb3Jtcy9hbmRyb2lkLTE5L2FyY2gtYXJtL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50ZXJuYWxfdHlwZXMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCBcCisgL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIFwKKyAvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9wbGF0Zm9ybXMvYW5kcm9pZC0xOS9hcmNoLWFybS91c3IvaW5jbHVkZS9hc20vcGFnZS5oIFwKKyAuLi9pbmNsdWRlL3BqL29zLmggLi4vaW5jbHVkZS9wai9wb29sLmggLi4vaW5jbHVkZS9wai9wb29sX2J1Zi5oIFwKKyAuLi9pbmNsdWRlL3BqL3JhbmQuaCAuLi9pbmNsdWRlL3BqL3JidHJlZS5oIC4uL2luY2x1ZGUvcGovc29ja19xb3MuaCBcCisgLi4vaW5jbHVkZS9wai9zb2NrX3NlbGVjdC5oIC4uL2luY2x1ZGUvcGovc3NsX3NvY2suaCBcCisgLi4vaW5jbHVkZS9wai90aW1lci5oIC4uL2luY2x1ZGUvcGovdW5pY29kZS5oCisuLi9iaW4vcGpsaWItdGVzdC1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaTogLi4vbGliL2xpYnBqLWFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpLmEKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL01ha2VmaWxlIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZlNWVhZAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL01ha2VmaWxlCkBAIC0wLDAgKzEsMTM2IEBACitpbmNsdWRlIC4uLy4uL2J1aWxkLm1haworaW5jbHVkZSAuLi8uLi92ZXJzaW9uLm1haworaW5jbHVkZSAkKFBKRElSKS9idWlsZC9jb21tb24ubWFrCisKK2V4cG9ydCBMSUJESVIgOj0gLi4vbGliCitleHBvcnQgQklORElSIDo9IC4uL2JpbgorCitSVUxFU19NQUsgOj0gJChQSkRJUikvYnVpbGQvcnVsZXMubWFrCisKK2V4cG9ydCBQSkxJQl9MSUIgOj0gbGlicGotJChUQVJHRVRfTkFNRSkkKExJQkVYVCkKKworaWZlcSAoJChQSl9TSEFSRURfTElCUkFSSUVTKSwpCitlbHNlCitleHBvcnQgUEpMSUJfU09OQU1FIDo9IGxpYnBqLiQoU0hMSUJfU1VGRklYKQorZXhwb3J0IFBKTElCX1NITElCIDo9ICQoUEpMSUJfU09OQU1FKS4kKFBKX1ZFUlNJT05fTUFKT1IpCitlbmRpZgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEdhdGhlciBhbGwgZmxhZ3MuCisjCitleHBvcnQgX0NGTEFHUyAJOj0gJChDQ19DRkxBR1MpICQoT1NfQ0ZMQUdTKSAkKEhPU1RfQ0ZMQUdTKSAkKE1fQ0ZMQUdTKSBcCisJCSAgICQoQ0ZMQUdTKSAkKENDX0lOQykuLi9pbmNsdWRlCitleHBvcnQgX0NYWEZMQUdTOj0gJChfQ0ZMQUdTKSAkKENDX0NYWEZMQUdTKSAkKE9TX0NYWEZMQUdTKSAkKE1fQ1hYRkxBR1MpIFwKKwkJICAgJChIT1NUX0NYWEZMQUdTKSAkKENYWEZMQUdTKQorZXhwb3J0IF9MREZMQUdTIDo9ICQoQ0NfTERGTEFHUykgJChPU19MREZMQUdTKSAkKE1fTERGTEFHUykgJChIT1NUX0xERkxBR1MpIFwKKwkJICAgJChBUFBfTERGTEFHUykgJChMREZMQUdTKSAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERlZmluZXMgZm9yIGJ1aWxkaW5nIFBKTElCIGxpYnJhcnkKKyMKK2V4cG9ydCBQSkxJQl9TUkNESVIgPSAuLi9zcmMvcGoKK2V4cG9ydCBQSkxJQl9PQkpTICs9ICQoT1NfT0JKUykgJChNX09CSlMpICQoQ0NfT0JKUykgJChIT1NUX09CSlMpIFwKKwlhY3RpdmVzb2NrLm8gYXJyYXkubyBjb25maWcubyBjdHlwZS5vIGVycm5vLm8gZXhjZXB0Lm8gZmlmb2J1Zi5vIFwKKwlndWlkLm8gaGFzaC5vIGlwX2hlbHBlcl9nZW5lcmljLm8gbGlzdC5vIGxvY2subyBsb2cubyBvc190aW1lX2NvbW1vbi5vIFwKKwlvc19pbmZvLm8gcG9vbC5vIHBvb2xfYnVmLm8gcG9vbF9jYWNoaW5nLm8gcG9vbF9kYmcubyByYW5kLm8gXAorCXJidHJlZS5vIHNvY2tfY29tbW9uLm8gc29ja19xb3NfY29tbW9uLm8gc29ja19xb3NfYnNkLm8gXAorCXNzbF9zb2NrX2NvbW1vbi5vIHNzbF9zb2NrX29zc2wubyBzc2xfc29ja19kdW1wLm8gXAorCXN0cmluZy5vIHRpbWVyLm8gdHlwZXMubworZXhwb3J0IFBKTElCX0NGTEFHUyArPSAkKF9DRkxBR1MpCitleHBvcnQgUEpMSUJfQ1hYRkxBR1MgKz0gJChfQ1hYRkxBR1MpCitleHBvcnQgUEpMSUJfTERGTEFHUyArPSAkKF9MREZMQUdTKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERlZmluZXMgZm9yIGJ1aWxkaW5nIHRlc3QgYXBwbGljYXRpb24KKyMKK2V4cG9ydCBURVNUX1NSQ0RJUiA9IC4uL3NyYy9wamxpYi10ZXN0CitleHBvcnQgVEVTVF9PQkpTICs9IGFjdGl2ZXNvY2subyBhdG9taWMubyBlY2hvX2NsdC5vIGVycm5vLm8gZXhjZXB0aW9uLm8gXAorCQkgICAgZmlmb2J1Zi5vIGZpbGUubyBoYXNoX3Rlc3QubyBpb3FfcGVyZi5vIGlvcV91ZHAubyBcCisJCSAgICBpb3FfdW5yZWcubyBpb3FfdGNwLm8gXAorCQkgICAgbGlzdC5vIG11dGV4Lm8gb3MubyBwb29sLm8gcG9vbF9wZXJmLm8gcmFuZC5vIHJidHJlZS5vIFwKKwkJICAgIHNlbGVjdC5vIHNsZWVwLm8gc29jay5vIHNvY2tfcGVyZi5vIHNzbF9zb2NrLm8gXAorCQkgICAgc3RyaW5nLm8gdGVzdC5vIHRocmVhZC5vIHRpbWVyLm8gdGltZXN0YW1wLm8gXAorCQkgICAgdWRwX2VjaG9fc3J2X3N5bmMubyB1ZHBfZWNob19zcnZfaW9xdWV1ZS5vIFwKKwkJICAgIHV0aWwubworZXhwb3J0IFRFU1RfQ0ZMQUdTICs9ICQoX0NGTEFHUykKK2V4cG9ydCBURVNUX0NYWEZMQUdTICs9ICQoX0NYWEZMQUdTKQorZXhwb3J0IFRFU1RfTERGTEFHUyArPSAkKFBKTElCX0xETElCKSAkKF9MREZMQUdTKQorZXhwb3J0IFRFU1RfRVhFIDo9IHBqbGliLXRlc3QtJChUQVJHRVRfTkFNRSkkKEhPU1RfRVhFKQorCisKK2V4cG9ydCBDQ19PVVQgQ0MgQVIgUkFOTElCIEhPU1RfTVYgSE9TVF9STSBIT1NUX1JNRElSIEhPU1RfTUtESVIgT0JKRVhUIExEIExET1VUIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBNYWluIGVudHJ5CisjCisjICQoVEFSR0VUKSBpcyBkZWZpbmVkIGluIG9zLSQoT1NfTkFNRSkubWFrIGZpbGUgaW4gY3VycmVudCBkaXJlY3RvcnkuCisjCisKK2FsbDogJChUQVJHRVRTKQorCitkb2M6CisJY2QgLi4gJiYgcm0gLXJmIGRvY3MvJChQSl9WRVJTSU9OKSAmJiBkb3h5Z2VuIGRvY3MvZG94eWdlbi5jZmcKKwlAaWYgWyAtbiAiJChXV1dESVIpIiBdICYmICEgWyAtZCAiJChXV1dESVIpL2RvY3MvJChQSl9WRVJTSU9OKS9wamxpYi9kb2NzL2h0bWwiIF0gOyB0aGVuIFwKKwkJZWNobyAiQ3JlYXRpbmcgZG9jcy8kKFBKX1ZFUlNJT04pL3BqbGliL2RvY3MvaHRtbCIgOyBcCisJCW1rZGlyIC1wICQoV1dXRElSKS9kb2NzLyQoUEpfVkVSU0lPTikvcGpsaWIvZG9jcy9odG1sIDsgXAorCWZpIAorCUBpZiBbIC1uICIkKFdXV0RJUikiIF0gJiYgWyAtZCAiJChXV1dESVIpL2RvY3MvJChQSl9WRVJTSU9OKS9wamxpYi9kb2NzL2h0bWwiIF0gOyB0aGVuIFwKKwkJZWNobyAiQ29weWluZyBkb2NzLyQoUEpfVkVSU0lPTikgdG8gJChXV1dESVIpL2RvY3MvJChQSl9WRVJTSU9OKS9wamxpYi9kb2NzL2h0bWwuLiIgOyBcCisJCWNwIC12IC1hIC4uL2RvY3MvJChQSl9WRVJTSU9OKS9odG1sLyogJChXV1dESVIpL2RvY3MvJChQSl9WRVJTSU9OKS9wamxpYi9kb2NzL2h0bWwvIDsgXAorCWZpCitwcmludDoKKwkkKE1BS0UpIC1mICQoUlVMRVNfTUFLKSBBUFA9UEpMSUIgYXBwPXBqbGliIHByaW50X2xpYgorCSQoTUFLRSkgLWYgJChSVUxFU19NQUspIEFQUD1URVNUIGFwcD1wamxpYi10ZXN0IHByaW50X2JpbgorCQorZGVwZW5kOiAuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmgKKwkkKE1BS0UpIC1mICQoUlVMRVNfTUFLKSBBUFA9UEpMSUIgYXBwPXBqbGliIGRlcGVuZAorCSQoTUFLRSkgLWYgJChSVUxFU19NQUspIEFQUD1URVNUIGFwcD1wamxpYi10ZXN0IGRlcGVuZAorCWVjaG8gJyQoQklORElSKS8kKFRFU1RfRVhFKTogJChMSUJESVIpLyQoUEpMSUJfTElCKScgPj4gLnBqbGliLXRlc3QtJChUQVJHRVRfTkFNRSkuZGVwZW5kCisKKworLlBIT05ZOiBhbGwgZGVwIGRlcGVuZCBjbGVhbiByZWFsY2xlYW4gZGlzdGNsZWFuCisuUEhPTlk6ICQoVEFSR0VUUykKKy5QSE9OWTogJChQSkxJQl9MSUIpICQoUEpMSUJfU09OQU1FKQorLlBIT05ZOiAkKFRFU1RfRVhFKQorCitkZXA6IGRlcGVuZAorCitwamxpYjogJChQSkxJQl9MSUIpCiskKFBKTElCX0xJQik6IC4uL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaAorCiskKFBKTElCX1NPTkFNRSk6ICQoUEpMSUJfTElCKQorJChQSkxJQl9MSUIpICQoUEpMSUJfU09OQU1FKToKKwkkKE1BS0UpIC1mICQoUlVMRVNfTUFLKSBBUFA9UEpMSUIgYXBwPXBqbGliICQoc3Vic3QgLywkKEhPU1RfUFNFUCksJChMSUJESVIpLyRAKQorCisuLi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmg6CisJdG91Y2ggLi4vaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oCisKK3BqbGliLXRlc3Q6ICQoVEVTVF9FWEUpCiskKFRFU1RfRVhFKTogJChQSkxJQl9MSUIpICQoUEpMSUJfU09OQU1FKQorCSQoTUFLRSkgLWYgJChSVUxFU19NQUspIEFQUD1URVNUIGFwcD1wamxpYi10ZXN0ICQoc3Vic3QgLywkKEhPU1RfUFNFUCksJChCSU5ESVIpLyRAKQorCisuUEhPTlk6IHBqbGliLmtvCitwamxpYi5rbzoKKwllY2hvIE1ha2luZyAkQAorCSQoTUFLRSkgLWYgJChSVUxFU19NQUspIEFQUD1QSkxJQiBhcHA9cGpsaWIgJChzdWJzdCAvLCQoSE9TVF9QU0VQKSwkKExJQkRJUikvJEApCisKKy5QSE9OWTogcGpsaWItdGVzdC5rbworcGpsaWItdGVzdC5rbzoKKwkkKE1BS0UpIC1mICQoUlVMRVNfTUFLKSBBUFA9VEVTVCBhcHA9cGpsaWItdGVzdCAkKHN1YnN0IC8sJChIT1NUX1BTRVApLCQoTElCRElSKS8kQCkKKworY2xlYW46CisJJChNQUtFKSAtZiAkKFJVTEVTX01BSykgQVBQPVBKTElCIGFwcD1wamxpYiBjbGVhbgorCSQoTUFLRSkgLWYgJChSVUxFU19NQUspIEFQUD1URVNUIGFwcD1wamxpYi10ZXN0IGNsZWFuCisKK3JlYWxjbGVhbjoKKwkkKHN1YnN0IEBALCQoc3Vic3QgLywkKEhPU1RfUFNFUCksLnBqbGliLSQoVEFSR0VUX05BTUUpLmRlcGVuZCksJChIT1NUX1JNUikpCisJJChzdWJzdCBAQCwkKHN1YnN0IC8sJChIT1NUX1BTRVApLC5wamxpYi10ZXN0LSQoVEFSR0VUX05BTUUpLmRlcGVuZCksJChIT1NUX1JNUikpCisJJChNQUtFKSAtZiAkKFJVTEVTX01BSykgQVBQPVBKTElCIGFwcD1wamxpYiByZWFsY2xlYW4KKwkkKE1BS0UpIC1mICQoUlVMRVNfTUFLKSBBUFA9VEVTVCBhcHA9cGpsaWItdGVzdCByZWFsY2xlYW4KKworZGlzdGNsZWFuOiByZWFsY2xlYW4KKworZ2Nvdi1yZXBvcnQ6CisJJChNQUtFKSAtZiAkKFJVTEVTX01BSykgQVBQPVBKTElCIGFwcD1wamxpYiBnY292LXJlcG9ydAorCSQoTUFLRSkgLWYgJChSVUxFU19NQUspIEFQUD1URVNUIGFwcD1wamxpYi10ZXN0IGdjb3YtcmVwb3J0CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL2NhY2VydC5wZW0gYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9jYWNlcnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmY2UwOTIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9jYWNlcnQucGVtCkBAIC0wLDAgKzEsMTQgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJQ05EQ0NBWjJnQXdJQkFnSUpBSWE5bVpnZ01rMldNQTBHQ1NxR1NJYjNEUUVCQkFVQU1ETXhFakFRQmdOVgorQkFNVENYQnFjMmx3TG14aFlqRWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2RHVnpkRUJ3YW5OcGNDNXNZV0l3SGhjTgorTVRBd01qRXdNRGt3TlRRMFdoY05NakF3TWpBNE1Ea3dOVFEwV2pBek1SSXdFQVlEVlFRREV3bHdhbk5wY0M1cworWVdJeEhUQWJCZ2txaGtpRzl3MEJDUUVXRG5SbGMzUkFjR3B6YVhBdWJHRmlNSUdmTUEwR0NTcUdTSWIzRFFFQgorQVFVQUE0R05BRENCaVFLQmdRREk5VDBQZisxZ0tPVE9BR0VwWjQ4MVE2eGZtNXZ6Nm4xKzZ1ZHh6UXRmUEtsUQorclBENXg1aW0ydTN0bXk2QUJ4WmVZNXRDZGVpa0JQaUdsYzViUklSbmc2S004a2lka2czZ0Vod2hSVXhIQ01XYgorbUJwa3o3ckZFUmYvcFdBT0NxWUNpeTFSVDhRcksrWE9Gb0ZkSmhkRjg1VVBERVV3K3BIRXNZZXRURHM5UlFJRAorQVFBQm8xQXdUakJNQmdOVkhSRUVSVEJEZ2dsd2FuTnBjQzVzWVdLQ0RYTnBjQzV3YW5OcGNDNXNZV0tCRG5SbAorYzNSQWNHcHphWEF1YkdGaWhoRnphWEE2YzJsd0xuQnFjMmx3TG14aFlvY0Vmd0FBQVRBTkJna3Foa2lHOXcwQgorQVFRRkFBT0JnUUNMUGwvV0YxUXZqVDM2a1ZMSDBueGZId0RPSnVBemxoNm52OXJZQnZpT0x3OUZURU1nVzZoQQorb0c1NVlTZFZqVG5NeW5UTU9IL2tWcDRWeGxrNDZBOG5lRSsvTEk4UlBoNmxKaDUydmIraVBBdEJwc1FvcTA2VAorK3U0RGZKY044WS9qeStRQW43OGpyeUtqd0t1WldmdVdueTlneHNMV01VYkg1QmM2djZ3ZlFRPT0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLWF1dG8ubWFrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvb3MtYXV0by5tYWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAwMDM4MAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLWF1dG8ubWFrCkBAIC0wLDAgKzEsMzYgQEAKKyMgcGpsaWIvYnVpbGQvb3MtYXV0by5tYWsuICBHZW5lcmF0ZWQgZnJvbSBvcy1hdXRvLm1hay5pbiBieSBjb25maWd1cmUuCisKKyMgRGV0ZXJtaW5lIE9TIHNwZWNpZmljIGZpbGVzCitBQ19PU19PQkpTPWlvcXVldWVfc2VsZWN0Lm8gZmlsZV9hY2Nlc3NfdW5pc3RkLm8gZmlsZV9pb19hbnNpLm8gb3NfY29yZV91bml4Lm8gb3NfZXJyb3JfdW5peC5vIG9zX3RpbWVfdW5peC5vIG9zX3RpbWVzdGFtcF9wb3NpeC5vIGd1aWRfc2ltcGxlLm8KKworIworIyBQSkxJQl9PQkpTIHNwZWNpZmllZCBoZXJlIGFyZSBvYmplY3QgZmlsZXMgdG8gYmUgaW5jbHVkZWQgaW4gUEpMSUIKKyMgKHRoZSBsaWJyYXJ5KSBmb3IgdGhpcyBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtLiBPYmplY3QgZmlsZXMgY29tbW9uIAorIyB0byBhbGwgb3BlcmF0aW5nIHN5c3RlbXMgc2hvdWxkIGdvIGluIE1ha2VmaWxlIGluc3RlYWQuCisjCitleHBvcnQgUEpMSUJfT0JKUyArPQkkKEFDX09TX09CSlMpIFwKKwkJCWFkZHJfcmVzb2x2X3NvY2subyBcCisJCQlsb2dfd3JpdGVyX3N0ZG91dC5vIFwKKwkJCW9zX3RpbWVzdGFtcF9jb21tb24ubyBcCisJCQlwb29sX3BvbGljeV9tYWxsb2MubyBzb2NrX2JzZC5vIHNvY2tfc2VsZWN0Lm8KKworIworIyBURVNUX09CSlMgYXJlIG9wZXJhdGluZyBzeXN0ZW0gc3BlY2lmaWMgb2JqZWN0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluCisjIHRoZSB0ZXN0IGFwcGxpY2F0aW9uLgorIworZXhwb3J0IFRFU1RfT0JKUyArPQltYWluLm8KKworIworIyBBZGRpdGlvbmFsIExERkxBR1MgZm9yIHBqbGliLXRlc3QKKyMKKyMgRGlzYWJsZWQsIGFzIHRoaXMgY2F1c2VzIGR1cGxpY2F0ZWQgTERGTEFHUywgd2hpY2ggbWF5IHJhaXNlIGxpbmtpbmcgZXJyb3JzCisjZXhwb3J0IFRFU1RfTERGTEFHUyArPSAgLW5vc3RkbGliIC1ML2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2xpYi8gLUwvaG9tZS9saXNpb25hbC9EZXYvQURUL25kay9zb3VyY2VzL2N4eC1zdGwvZ251LWxpYnN0ZGMrKy80LjgvbGlicy9hcm1lYWJpLXY3YSAtbG0gL2hvbWUvbGlzaW9uYWwvRGV2L0FEVC9uZGsvcGxhdGZvcm1zL2FuZHJvaWQtMTkvYXJjaC1hcm0vdXNyL2xpYi9jcnRiZWdpbl9zby5vIC1sZ251c3RsX3NoYXJlZCAgLWxjIC1sZ2NjIC1sbG9nIC1sZ2NjCisKKyMKKyMgVEFSR0VUUyBhcmUgbWFrZSB0YXJnZXRzIGluIHRoZSBNYWtlZmlsZSwgdG8gYmUgZXhlY3V0ZWQgZm9yIHRoaXMgZ2l2ZW4KKyMgb3BlcmF0aW5nIHN5c3RlbS4KKyMKK2V4cG9ydCBUQVJHRVRTCSAgICA9CSQoUEpMSUJfTElCKSAkKFBKTElCX1NPTkFNRSkgJChURVNUX0VYRSkKKworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLWF1dG8ubWFrLmluIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvb3MtYXV0by5tYWsuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM3ZTMzMAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLWF1dG8ubWFrLmluCkBAIC0wLDAgKzEsMzYgQEAKKyMgQGNvbmZpZ3VyZV9pbnB1dEAKKworIyBEZXRlcm1pbmUgT1Mgc3BlY2lmaWMgZmlsZXMKK0FDX09TX09CSlM9QGFjX29zX29ianNACisKKyMKKyMgUEpMSUJfT0JKUyBzcGVjaWZpZWQgaGVyZSBhcmUgb2JqZWN0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIFBKTElCCisjICh0aGUgbGlicmFyeSkgZm9yIHRoaXMgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbS4gT2JqZWN0IGZpbGVzIGNvbW1vbiAKKyMgdG8gYWxsIG9wZXJhdGluZyBzeXN0ZW1zIHNob3VsZCBnbyBpbiBNYWtlZmlsZSBpbnN0ZWFkLgorIworZXhwb3J0IFBKTElCX09CSlMgKz0JJChBQ19PU19PQkpTKSBcCisJCQlhZGRyX3Jlc29sdl9zb2NrLm8gXAorCQkJbG9nX3dyaXRlcl9zdGRvdXQubyBcCisJCQlvc190aW1lc3RhbXBfY29tbW9uLm8gXAorCQkJcG9vbF9wb2xpY3lfbWFsbG9jLm8gc29ja19ic2QubyBzb2NrX3NlbGVjdC5vCisKKyMKKyMgVEVTVF9PQkpTIGFyZSBvcGVyYXRpbmcgc3lzdGVtIHNwZWNpZmljIG9iamVjdCBmaWxlcyB0byBiZSBpbmNsdWRlZCBpbgorIyB0aGUgdGVzdCBhcHBsaWNhdGlvbi4KKyMKK2V4cG9ydCBURVNUX09CSlMgKz0JQGFjX21haW5fb2JqQAorCisjCisjIEFkZGl0aW9uYWwgTERGTEFHUyBmb3IgcGpsaWItdGVzdAorIworIyBEaXNhYmxlZCwgYXMgdGhpcyBjYXVzZXMgZHVwbGljYXRlZCBMREZMQUdTLCB3aGljaCBtYXkgcmFpc2UgbGlua2luZyBlcnJvcnMKKyNleHBvcnQgVEVTVF9MREZMQUdTICs9IEBMREZMQUdTQCBATElCU0AKKworIworIyBUQVJHRVRTIGFyZSBtYWtlIHRhcmdldHMgaW4gdGhlIE1ha2VmaWxlLCB0byBiZSBleGVjdXRlZCBmb3IgdGhpcyBnaXZlbgorIyBvcGVyYXRpbmcgc3lzdGVtLgorIworZXhwb3J0IFRBUkdFVFMJICAgID0JJChQSkxJQl9MSUIpICQoUEpMSUJfU09OQU1FKSAkKFRFU1RfRVhFKQorCisKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvb3MtZGFyd2lub3MubWFrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvb3MtZGFyd2lub3MubWFrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZDk5ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9vcy1kYXJ3aW5vcy5tYWsKQEAgLTAsMCArMSwzNyBAQAorIworIyBQSkxJQiBPUyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBEYXJ3aW4vTWFjT1NYIHRhcmdldC4gCisjCisKKyMKKyMgUEpMSUJfT0JKUyBzcGVjaWZpZWQgaGVyZSBhcmUgb2JqZWN0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIFBKTElCCisjICh0aGUgbGlicmFyeSkgZm9yIHRoaXMgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbS4gT2JqZWN0IGZpbGVzIGNvbW1vbiAKKyMgdG8gYWxsIG9wZXJhdGluZyBzeXN0ZW1zIHNob3VsZCBnbyBpbiBNYWtlZmlsZSBpbnN0ZWFkLgorIworZXhwb3J0IFBKTElCX09CSlMgKz0gCWFkZHJfcmVzb2x2X3NvY2subyBndWlkX3NpbXBsZS5vIFwKKwkJCWxvZ193cml0ZXJfc3Rkb3V0Lm8gb3NfY29yZV91bml4Lm8gXAorCQkJb3NfZXJyb3JfdW5peC5vIG9zX3RpbWVfdW5peC5vIFwKKwkJCW9zX3RpbWVzdGFtcF9jb21tb24ubyBvc190aW1lc3RhbXBfcG9zaXgubyBcCisJCQlwb29sX3BvbGljeV9tYWxsb2MubyBzb2NrX2JzZC5vIHNvY2tfc2VsZWN0Lm8KKworZXhwb3J0IFBKTElCX09CSlMgKz0gaW9xdWV1ZV9zZWxlY3QubyAKKyNleHBvcnQgUEpMSUJfT0JKUyArPSBpb3F1ZXVlX2Vwb2xsLm8KKworZXhwb3J0IFBKTElCX09CSlMgKz0gZmlsZV9hY2Nlc3NfdW5pc3RkLm8gZmlsZV9pb19hbnNpLm8KKworIworIyBURVNUX09CSlMgYXJlIG9wZXJhdGluZyBzeXN0ZW0gc3BlY2lmaWMgb2JqZWN0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluCisjIHRoZSB0ZXN0IGFwcGxpY2F0aW9uLgorIworZXhwb3J0IFRFU1RfT0JKUyArPQltYWluLm8KKworIworIyBBZGRpdGlvbmFsIExERkxBR1MgZm9yIHBqbGliLXRlc3QKKyMKK2V4cG9ydCBURVNUX0xERkxBR1MgKz0gLWxtIAorCisjCisjIFRBUkdFVFMgYXJlIG1ha2UgdGFyZ2V0cyBpbiB0aGUgTWFrZWZpbGUsIHRvIGJlIGV4ZWN1dGVkIGZvciB0aGlzIGdpdmVuCisjIG9wZXJhdGluZyBzeXN0ZW0uCisjCitleHBvcnQgVEFSR0VUUwkgICAgPQkkKFBKTElCX0xJQikgJChQSkxJQl9TT05BTUUpICQoVEVTVF9FWEUpCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLWxpbnV4LWtlcm5lbC5tYWsgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9vcy1saW51eC1rZXJuZWwubWFrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4Y2ZiYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9vcy1saW51eC1rZXJuZWwubWFrCkBAIC0wLDAgKzEsNDcgQEAKKyMKKyMgT1Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgTGludXggS2VybmVsIG1vZHVsZSB0YXJnZXQuIAorIworCisjCisjIFBKTElCX09CSlMgc3BlY2lmaWVkIGhlcmUgYXJlIG9iamVjdCBmaWxlcyB0byBiZSBpbmNsdWRlZCBpbiBQSkxJQgorIyAodGhlIGxpYnJhcnkpIGZvciB0aGlzIHNwZWNpZmljIG9wZXJhdGluZyBzeXN0ZW0uIE9iamVjdCBmaWxlcyBjb21tb24gCisjIHRvIGFsbCBvcGVyYXRpbmcgc3lzdGVtcyBzaG91bGQgZ28gaW4gTWFrZWZpbGUgaW5zdGVhZC4KKyMKK2V4cG9ydCBQSkxJQl9PQkpTICs9CWNvbXBhdC9zaWdqbXAubyBjb21wYXQvc2V0am1wX2kzODYubyBcCisJCQljb21wYXQvbG9uZ2ptcF9pMzg2Lm8gY29tcGF0L3N0cmluZy5vIFwKKwkJCWFkZHJfcmVzb2x2X2xpbnV4X2tlcm5lbC5vIFwKKwkJCWd1aWRfc2ltcGxlLm8gXAorCQkJbG9nX3dyaXRlcl9wcmludGsubyBwb29sX3BvbGljeV9rbWFsbG9jLm8gXAorCQkJb3NfZXJyb3JfbGludXhfa2VybmVsLm8gb3NfY29yZV9saW51eF9rZXJuZWwubyBcCisJCQlvc190aW1lX2xpbnV4X2tlcm5lbC5vIG9zX3RpbWVzdGFtcF9jb21tb24ubyBcCisJCQlvc190aW1lc3RhbXBfbGludXhfa2VybmVsLm8gXAorCQkJc29ja19saW51eF9rZXJuZWwubyBzb2NrX3NlbGVjdC5vCisKKyMgRm9yIElPUXVldWUsIHdlIGNhbiB1c2UgZWl0aGVyIGVwb2xsIG9yIHNlbGVjdAorZXhwb3J0IFBKTElCX09CSlMgKz0JaW9xdWV1ZV9lcG9sbC5vIAorI2V4cG9ydCBQSkxJQl9PQkpTICs9CWlvcXVldWVfc2VsZWN0Lm8gCisKKyMKKyMgVEVTVF9PQkpTIGFyZSBvcGVyYXRpbmcgc3lzdGVtIHNwZWNpZmljIG9iamVjdCBmaWxlcyB0byBiZSBpbmNsdWRlZCBpbgorIyB0aGUgdGVzdCBhcHBsaWNhdGlvbi4KKyMKK2V4cG9ydCBURVNUX09CSlMgKz0JbWFpbl9tb2QubworCisjCisjIEFkZGl0aW9uYWwgQ0ZMQUdTCisjCitleHBvcnQgVEVTVF9DRkxBR1MgKz0gLW1zb2Z0LWZsb2F0CisKKyMKKyMgQWRkaXRpb25hbCBMRF9GTEFHUyBmb3IgdGhpcyB0YXJnZXQuCisjCitleHBvcnQgVEVTVF9MREZMQUdTICs9IC1sZ2NjCisKKworIworIyBUQVJHRVRTIGFyZSBtYWtlIHRhcmdldHMgaW4gdGhlIE1ha2VmaWxlLCB0byBiZSBleGVjdXRlZCBmb3IgdGhpcyBnaXZlbgorIyBvcGVyYXRpbmcgc3lzdGVtLgorIworZXhwb3J0IFRBUkdFVFMgOj0JcGpsaWIua28gcGpsaWItdGVzdC5rbworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLWxpbnV4Lm1hayBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLWxpbnV4Lm1hawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODEyM2VmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvb3MtbGludXgubWFrCkBAIC0wLDAgKzEsMzkgQEAKKyMKKyMgT1Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgTGludXggT1MgdGFyZ2V0LiAKKyMKKworIworIyBQSkxJQl9PQkpTIHNwZWNpZmllZCBoZXJlIGFyZSBvYmplY3QgZmlsZXMgdG8gYmUgaW5jbHVkZWQgaW4gUEpMSUIKKyMgKHRoZSBsaWJyYXJ5KSBmb3IgdGhpcyBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtLiBPYmplY3QgZmlsZXMgY29tbW9uIAorIyB0byBhbGwgb3BlcmF0aW5nIHN5c3RlbXMgc2hvdWxkIGdvIGluIE1ha2VmaWxlIGluc3RlYWQuCisjCitleHBvcnQgUEpMSUJfT0JKUyArPSAJYWRkcl9yZXNvbHZfc29jay5vIGZpbGVfYWNjZXNzX3VuaXN0ZC5vIFwKKwkJCWZpbGVfaW9fYW5zaS5vIGd1aWRfc2ltcGxlLm8gXAorCQkJbG9nX3dyaXRlcl9zdGRvdXQubyBvc19jb3JlX3VuaXgubyBcCisJCQlvc19lcnJvcl91bml4Lm8gb3NfdGltZV91bml4Lm8gXAorCQkJb3NfdGltZXN0YW1wX2NvbW1vbi5vIG9zX3RpbWVzdGFtcF9wb3NpeC5vIFwKKwkJCXBvb2xfcG9saWN5X21hbGxvYy5vIHNvY2tfYnNkLm8gc29ja19zZWxlY3QubworCitpZmVxIChlcG9sbCwkKExJTlVYX1BPTEwpKQorZXhwb3J0IFBKTElCX09CSlMgKz0gaW9xdWV1ZV9lcG9sbC5vCitlbHNlCitleHBvcnQgUEpMSUJfT0JKUyArPSBpb3F1ZXVlX3NlbGVjdC5vIAorZW5kaWYKKworIworIyBURVNUX09CSlMgYXJlIG9wZXJhdGluZyBzeXN0ZW0gc3BlY2lmaWMgb2JqZWN0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluCisjIHRoZSB0ZXN0IGFwcGxpY2F0aW9uLgorIworZXhwb3J0IFRFU1RfT0JKUyArPQltYWluLm8KKworIworIyBBZGRpdGlvbmFsIExERkxBR1MgZm9yIHBqbGliLXRlc3QKKyMKK2V4cG9ydCBURVNUX0xERkxBR1MgKz0gLWxtCisKKyMKKyMgVEFSR0VUUyBhcmUgbWFrZSB0YXJnZXRzIGluIHRoZSBNYWtlZmlsZSwgdG8gYmUgZXhlY3V0ZWQgZm9yIHRoaXMgZ2l2ZW4KKyMgb3BlcmF0aW5nIHN5c3RlbS4KKyMKK2V4cG9ydCBUQVJHRVRTCSAgICA9CSQoUEpMSUJfTElCKSAkKFBKTElCX1NPTkFNRSkgJChURVNUX0VYRSkKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvb3MtcnRlbXMubWFrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvb3MtcnRlbXMubWFrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYTgxZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9vcy1ydGVtcy5tYWsKQEAgLTAsMCArMSw0NiBAQAorIworIyBQSkxJQiBPUyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBSVEVNUworIworIyBUaGFua3MgWmV0cm9uLCBJbmMuIGFuZCBQaGlsIFRvcnJlIDxwdG9ycmVAemV0cm9uLmNvbT4gZm9yIGRvbmF0aW5nIFBKTElCCisjIHBvcnQgdG8gUlRFTVMuCisjCisKKyMKKyMgUEpMSUJfT0JKUyBzcGVjaWZpZWQgaGVyZSBhcmUgb2JqZWN0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIFBKTElCCisjICh0aGUgbGlicmFyeSkgZm9yIHRoaXMgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbS4gT2JqZWN0IGZpbGVzIGNvbW1vbiAKKyMgdG8gYWxsIG9wZXJhdGluZyBzeXN0ZW1zIHNob3VsZCBnbyBpbiBNYWtlZmlsZSBpbnN0ZWFkLgorIworZXhwb3J0IFBKTElCX09CSlMgKz0gCWFkZHJfcmVzb2x2X3NvY2subyBndWlkX3NpbXBsZS5vIFwKKwkJCWxvZ193cml0ZXJfc3Rkb3V0Lm8gb3NfY29yZV91bml4Lm8gXAorCQkJb3NfZXJyb3JfdW5peC5vIG9zX3RpbWVfdW5peC5vIFwKKwkJCW9zX3RpbWVzdGFtcF9jb21tb24ubyBvc190aW1lc3RhbXBfcG9zaXgubyBcCisJCQlwb29sX3BvbGljeV9tYWxsb2MubyBzb2NrX2JzZC5vIHNvY2tfc2VsZWN0Lm8KKworZXhwb3J0IFBKTElCX09CSlMgKz0gaW9xdWV1ZV9zZWxlY3QubyAKK2V4cG9ydCBQSkxJQl9PQkpTICs9IGZpbGVfYWNjZXNzX3VuaXN0ZC5vIGZpbGVfaW9fYW5zaS5vCisKKyMKKyMgVEVTVF9PQkpTIGFyZSBvcGVyYXRpbmcgc3lzdGVtIHNwZWNpZmljIG9iamVjdCBmaWxlcyB0byBiZSBpbmNsdWRlZCBpbgorIyB0aGUgdGVzdCBhcHBsaWNhdGlvbi4KKyMKK2V4cG9ydCBURVNUX09CSlMgKz0JbWFpbl9ydGVtcy5vCisKKyMKKyMgUlRFTVNfTElCUkFSWV9QQVRIIHBvaW50cyB0byB0aGUgaW5zdGFsbGVkIFJURU1TIGxpYnJhcmllcyBmb3IgdGhlCisjIGRlc2lyZWQgdGFyZ2V0LiAgcGpsaWItdGVzdCBjYW4ndCBsaW5rIHdpdGhvdXQgdGhpcy4KKyMKK2V4cG9ydCBSVEVNU19MSUJSQVJZX1BBVEggOj0gJChSVEVNU19MSUJSQVJZX1BBVEgpCisKKyMKKyMgQWRkaXRpb25hbCBMREZMQUdTIGZvciBwamxpYi10ZXN0CisjCitleHBvcnQgVEVTVF9MREZMQUdTICs9IAorCisjCisjIFRBUkdFVFMgYXJlIG1ha2UgdGFyZ2V0cyBpbiB0aGUgTWFrZWZpbGUsIHRvIGJlIGV4ZWN1dGVkIGZvciB0aGlzIGdpdmVuCisjIG9wZXJhdGluZyBzeXN0ZW0uCisjCitleHBvcnQgVEFSR0VUUwkgICAgPQkkKFBKTElCX0xJQikgJChURVNUX0VYRSkKKworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLXN1bm9zLm1hayBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLXN1bm9zLm1hawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWE2NThkCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvb3Mtc3Vub3MubWFrCkBAIC0wLDAgKzEsMzYgQEAKKyMKKyMgUEpMSUIgT1Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgU3VuT1MgdGFyZ2V0LiAKKyMKKworIworIyBQSkxJQl9PQkpTIHNwZWNpZmllZCBoZXJlIGFyZSBvYmplY3QgZmlsZXMgdG8gYmUgaW5jbHVkZWQgaW4gUEpMSUIKKyMgKHRoZSBsaWJyYXJ5KSBmb3IgdGhpcyBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtLiBPYmplY3QgZmlsZXMgY29tbW9uIAorIyB0byBhbGwgb3BlcmF0aW5nIHN5c3RlbXMgc2hvdWxkIGdvIGluIE1ha2VmaWxlIGluc3RlYWQuCisjCitleHBvcnQgUEpMSUJfT0JKUyArPSAJYWRkcl9yZXNvbHZfc29jay5vIGZpbGVfYWNjZXNzX3VuaXN0ZC5vIFwKKwkJCWZpbGVfaW9fYW5zaS5vIGd1aWRfc2ltcGxlLm8gXAorCQkJbG9nX3dyaXRlcl9zdGRvdXQubyBvc19jb3JlX3VuaXgubyBcCisJCQlvc19lcnJvcl91bml4Lm8gb3NfdGltZV91bml4Lm8gXAorCQkJb3NfdGltZXN0YW1wX2NvbW1vbi5vIG9zX3RpbWVzdGFtcF9wb3NpeC5vIFwKKwkJCXBvb2xfcG9saWN5X21hbGxvYy5vIHNvY2tfYnNkLm8gc29ja19zZWxlY3QubworCitleHBvcnQgUEpMSUJfT0JKUyArPSBpb3F1ZXVlX3NlbGVjdC5vIAorI2V4cG9ydCBQSkxJQl9PQkpTICs9IGlvcXVldWVfZXBvbGwubworCisjCisjIFRFU1RfT0JKUyBhcmUgb3BlcmF0aW5nIHN5c3RlbSBzcGVjaWZpYyBvYmplY3QgZmlsZXMgdG8gYmUgaW5jbHVkZWQgaW4KKyMgdGhlIHRlc3QgYXBwbGljYXRpb24uCisjCitleHBvcnQgVEVTVF9PQkpTICs9CW1haW4ubworCisjCisjIEFkZGl0aW9uYWwgTERGTEFHUyBmb3IgcGpsaWItdGVzdAorIworZXhwb3J0IFRFU1RfTERGTEFHUyArPSAtbG0KKworIworIyBUQVJHRVRTIGFyZSBtYWtlIHRhcmdldHMgaW4gdGhlIE1ha2VmaWxlLCB0byBiZSBleGVjdXRlZCBmb3IgdGhpcyBnaXZlbgorIyBvcGVyYXRpbmcgc3lzdGVtLgorIworZXhwb3J0IFRBUkdFVFMJICAgID0JJChQSkxJQl9MSUIpICQoUEpMSUJfU09OQU1FKSAkKFRFU1RfRVhFKQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9vcy13aW4zMi5tYWsgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9vcy13aW4zMi5tYWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlM2M4ZQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL29zLXdpbjMyLm1hawpAQCAtMCwwICsxLDMzIEBACisjCisjIE9TIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIFdpbjMyIE9TIHRhcmdldC4gCisjCisKKyMKKyMgUEpMSUJfT0JKUyBzcGVjaWZpZWQgaGVyZSBhcmUgb2JqZWN0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIFBKTElCCisjICh0aGUgbGlicmFyeSkgZm9yIHRoaXMgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbS4gT2JqZWN0IGZpbGVzIGNvbW1vbiAKKyMgdG8gYWxsIG9wZXJhdGluZyBzeXN0ZW1zIHNob3VsZCBnbyBpbiBNYWtlZmlsZSBpbnN0ZWFkLgorIworZXhwb3J0IFBKTElCX09CSlMgKz0gCWFkZHJfcmVzb2x2X3NvY2subyBndWlkX3dpbjMyLm8gIFwKKwkJCWxvZ193cml0ZXJfc3Rkb3V0Lm8gb3NfY29yZV93aW4zMi5vIFwKKwkJCW9zX2Vycm9yX3dpbjMyLm8gb3NfdGltZV9ic2QubyBvc190aW1lc3RhbXBfY29tbW9uLm8gXAorCQkJb3NfdGltZXN0YW1wX3dpbjMyLm8gXAorCQkJcG9vbF9wb2xpY3lfbWFsbG9jLm8gc29ja19ic2QubyBzb2NrX3NlbGVjdC5vCisKKyNleHBvcnQgUEpMSUJfT0JKUyArPQlpb3F1ZXVlX3dpbm50Lm8KK2V4cG9ydCBQSkxJQl9PQkpTICs9CWlvcXVldWVfc2VsZWN0Lm8KKworZXhwb3J0IFBKTElCX09CSlMgKz0JZmlsZV9pb193aW4zMi5vIGZpbGVfYWNjZXNzX3dpbjMyLm8KKyNleHBvcnQgUEpMSUJfT0JKUyArPQlmaWxlX2lvX2Fuc2kubworCisjCisjIFRFU1RfT0JKUyBhcmUgb3BlcmF0aW5nIHN5c3RlbSBzcGVjaWZpYyBvYmplY3QgZmlsZXMgdG8gYmUgaW5jbHVkZWQgaW4KKyMgdGhlIHRlc3QgYXBwbGljYXRpb24uCisjCitleHBvcnQgVEVTVF9PQkpTICs9CW1haW4ubworCisjCisjIFRBUkdFVFMgYXJlIG1ha2UgdGFyZ2V0cyBpbiB0aGUgTWFrZWZpbGUsIHRvIGJlIGV4ZWN1dGVkIGZvciB0aGlzIGdpdmVuCisjIG9wZXJhdGluZyBzeXN0ZW0uCisjCitleHBvcnQgVEFSR0VUUwkgICAgPQkkKFBKTElCX0xJQikgJChURVNUX0VYRSkKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvcGpsaWIudmNwcm9qIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvcGpsaWIudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMjE3YTAKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9wamxpYi52Y3Byb2oKQEAgLTAsMCArMSwxNTE3NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjguMDAiDQorCU5hbWU9InBqbGliIg0KKwlQcm9qZWN0R1VJRD0ie0RBMEUwM0VELTUzQTctNDA1MC04QTg1LTkwNTQxQzU1MDlGOH0iDQorCVJvb3ROYW1lc3BhY2U9InBqbGliIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IlNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkvPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iV2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkvPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iV2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJLz4NCisJPC9QbGF0Zm9ybXM+DQorCTxUb29sRmlsZXM+DQorCTwvVG9vbEZpbGVzPg0KKwk8Q29uZmlndXJhdGlvbnM+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd2luMzItY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtMjAwMy1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTIwMDNwcGMtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtMjAwMy1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTIwMDNzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdpbjY0LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd2luMzItcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtMjAwMy1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd20yMDAzcHBjLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtMjAwMy1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd20yMDAzc3AtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdpbjY0LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd2luMzItY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWctU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtZGVidWctc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTIwMDMtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd20yMDAzcHBjLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWctU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd20yMDAzLWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtMjAwM3NwLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdpbjY0LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtcmVsZWFzZS1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13aW4zMi1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtcmVsZWFzZS1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTIwMDMtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtMjAwM3BwYy12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtMjAwMy1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd20yMDAzc3AtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd2luNjQtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdpbjMyLWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTIwMDMtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd20yMDAzcHBjLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWctRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTIwMDMtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd20yMDAzc3AtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13aW42NC1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtcmVsZWFzZS1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdpbjMyLXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2Utc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTIwMDMtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtMjAwM3BwYy12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2Utc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTIwMDMtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtMjAwM3NwLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2Utc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13aW42NC1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd202LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtNnN0ZC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNi1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTZwcm8tdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd202LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTZzdGQtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNi1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd202cHJvLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd202LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtNnN0ZC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtZGVidWctc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTYtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd202cHJvLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd202LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTZzdGQtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd202LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTZwcm8tdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNi1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTZzdGQtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTYtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd202cHJvLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtcmVsZWFzZS1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNi1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfTElCOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlwkKFByb2plY3ROYW1lKS0kKFRhcmdldENQVSktd202c3RkLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2Utc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTYtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtNnByby12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtNXBwYy12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNS1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTVzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtcmVsZWFzZS1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTUtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtNXBwYy12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTVzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNS1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTVwcGMtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtNXNwLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTVwcGMtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5saWIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTVzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtZGVidWctZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtNXBwYy12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNS1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTVzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2Utc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTUtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0xJQjsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcJChQcm9qZWN0TmFtZSktJChUYXJnZXRDUFUpLXdtNXBwYy12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9MSUI7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCisJCQkJT3V0cHV0RmlsZT0iLi5cbGliXCQoUHJvamVjdE5hbWUpLSQoVGFyZ2V0Q1BVKS13bTVzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmxpYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxhY3RpdmVzb2NrLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcYWRkcl9yZXNvbHZfc29jay5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGFycmF5LmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcY29uZmlnLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcY3R5cGUuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxlcnJuby5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGV4Y2VwdC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGZpZm9idWYuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxmaWxlX2FjY2Vzc193aW4zMi5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGZpbGVfaW9fYW5zaS5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGZpbGVfaW9fd2luMzIuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxndWlkLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcZ3VpZF93aW4zMi5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGhhc2guYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxpb3F1ZXVlX2NvbW1vbl9hYnMuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxpb3F1ZXVlX2NvbW1vbl9hYnMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxpb3F1ZXVlX3NlbGVjdC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGlvcXVldWVfd2lubnQuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxpcF9oZWxwZXJfd2luMzIuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxsaXN0LmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcbG9jay5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGxvZy5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGxvZ193cml0ZXJfc3Rkb3V0LmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcb3NfY29yZV93aW4zMi5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXG9zX2Vycm9yX3dpbjMyLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcb3NfaW5mby5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXG9zX3RpbWVfd2luMzIuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxvc190aW1lc3RhbXBfY29tbW9uLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcb3NfdGltZXN0YW1wX3dpbjMyLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpccG9vbC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXHBvb2xfYnVmLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpccG9vbF9jYWNoaW5nLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpccG9vbF9kYmcuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxwb29sX3BvbGljeV9tYWxsb2MuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxyYW5kLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpccmJ0cmVlLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcc29ja19ic2QuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxzb2NrX2NvbW1vbi5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXHNvY2tfcW9zX2JzZC5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXHNvY2tfcW9zX2NvbW1vbi5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXHNvY2tfcW9zX2R1bW15LmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcc29ja19xb3Nfd20uYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxzb2NrX3NlbGVjdC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXHNzbF9zb2NrX2NvbW1vbi5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXHNzbF9zb2NrX2R1bXAuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxzc2xfc29ja19vc3NsLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcc3RyaW5nLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcdGltZXIuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalx0eXBlcy5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXHVuaWNvZGVfd2luMzIuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsdGVyDQorCQkJCU5hbWU9Ik90aGVyIFRhcmdldHMiDQorCQkJCT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGFkZHJfcmVzb2x2X2xpbnV4X2tlcm5lbC5jIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxndWlkX3NpbXBsZS5jIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxpb3F1ZXVlX2R1bW15LmMiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXGlvcXVldWVfZXBvbGwuYyINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcaXBfaGVscGVyX2dlbmVyaWMuYyINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcbG9nX3dyaXRlcl9wcmludGsuYyINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcb3NfY29yZV9saW51eF9rZXJuZWwuYyINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcb3NfY29yZV91bml4LmMiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXG9zX2Vycm9yX2xpbnV4X2tlcm5lbC5jIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxvc19lcnJvcl91bml4LmMiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXG9zX3RpbWVfbGludXhfa2VybmVsLmMiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXG9zX3RpbWVzdGFtcF9saW51eC5jIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwalxvc190aW1lc3RhbXBfbGludXhfa2VybmVsLmMiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqXHBvb2xfcG9saWN5X2ttYWxsb2MuYyINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcc29ja19saW51eF9rZXJuZWwuYyINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpcc3ltYm9scy5jIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJPC9GaWx0ZXI+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxhcnJheS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxhc3NlcnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcY29uZmlnLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjdHlwZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxkb3h5Z2VuLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGVxdWV1ZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxlcnJuby5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxleGNlcHQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGd1aWQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcaGFzaC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxsaXN0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGxvY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcbG9nLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXG1hdGguaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcb3MuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpsaWIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpccG9vbC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxyYW5kLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXHJidHJlZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxzb2NrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXHNvY2tfcW9zLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXHNzbF9zb2NrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXHN0cmluZy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalx0aW1lci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalx0eXBlcy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalx1bmljb2RlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJjb21wYXQiDQorCQkJCT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcbWFsbG9jLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGNvbXBhdFxyYW5kLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcc3RkZmlsZWlvLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxjb21wYXRcdGltZS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQk8L0ZpbHRlcj4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IklubGluZSBGaWxlcyINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5jbHVkZVxwalxwb29sX2kuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9wamxpYl9zYW1wbGVzLm1hayBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL3BqbGliX3NhbXBsZXMubWFrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MjVkMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9wamxpYl9zYW1wbGVzLm1hawpAQCAtMCwwICsxLDM2IEBACisKK09VVERJUj0uXG91dHB1dFxwamxpYi1zYW1wbGVzLWkzODYtd2luMzItJChWQyktJChNT0RFKQorCitTUkNESVI9Li4vc3JjL3BqbGliLXNhbXBsZXMKKworU0FNUExFUz0kKE9VVERJUikvZXhjZXB0LmV4ZSBcCisJICAgICQoT1VURElSKS9sb2cuZXhlIFwKKwkJJChPVVRESVIpL2xpc3QuZXhlIFwKKworIUlGICIkKE1PREUpIiA9PSAiZGVidWciCitNT0RFX0NGTEFHUz0vTVRkCishRUxTRQorTU9ERV9DRkxBR1M9L01UCishRU5ESUYKKworQ0ZMQUdTPS9ub2xvZ28gL1c0ICQoTU9ERV9DRkxBR1MpIC9EUEpfV0lOMzI9MSAvRFBKX01fSTM4Nj0xIC9JLi4vaW5jbHVkZQorCitQSkxJQj0uLi9saWIvcGpsaWItaTM4Ni13aW4zMi0kKFZDKS0kKE1PREUpLmxpYgorCitERVBFTkQ9JChQSkxJQikKK0xJQlM9bmV0YXBpMzIubGliIG1zd3NvY2subGliIHdzMl8zMi5saWIgb2xlMzIubGliIGFkdmFwaTMyLmxpYgorQ0w9Y2wuZXhlCisKK2FsbDogIiQoT1VURElSKSIgJChTQU1QTEVTKQorCiskKFNBTVBMRVMpOiAiJChTUkNESVIpLyQoQEIpLmMiICQoREVQRU5EKQorCQkkKENMKSAvRmUkQCBcCisJCS9GbyQoQFIpLm9iaiBcCisJCSQoQ0ZMQUdTKSBcCisJCSQqKiAkKExJQlMpCisKKyIkKE9VVERJUikiIDoKKwkJQElGIE5PVCBFWElTVCAiJChPVVRESVIpIiBNS0RJUiAiJChPVVRESVIpIgorCitjbGVhbiA6CisJCUBJRiBFWElTVCAiJChPVVRESVIpIiBERUwgL1EgIiQoT1VURElSKVwqLioiICYmIFJNRElSICIkKE9VVERJUikiCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9wamxpYl90ZXN0LnZjcHJvaiBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL3BqbGliX3Rlc3QudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NzYzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9wamxpYl90ZXN0LnZjcHJvagpAQCAtMCwwICsxLDc0NjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI4LjAwIg0KKwlOYW1lPSJwamxpYl90ZXN0Ig0KKwlQcm9qZWN0R1VJRD0iezZBQzNFRjYxLTVBOUUtNEY0My1BODA5LTVCMkZEMUE0M0IxNn0iDQorCVJvb3ROYW1lc3BhY2U9InBqbGliX3Rlc3QiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IlBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkvPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iU21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkvPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0ieDY0Ig0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkvPg0KKwk8L1BsYXRmb3Jtcz4NCisJPFRvb2xGaWxlcz4NCisJPC9Ub29sRmlsZXM+DQorCTxDb25maWd1cmF0aW9ucz4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtZGVidWctc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13aW4zMi1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRTsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJuZXRhcGkzMi5saWIgbXN3c29jay5saWIgd3MyXzMyLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBvbGVhdXQzMi5saWIgb2xlMzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktJChQbGF0Zm9ybU5hbWUpLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd20yMDAzLWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLXdtMjAwM3BwYy12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd20yMDAzLWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLXdtMjAwM3NwLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd2luNjQtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im5ldGFwaTMyLmxpYiBtc3dzb2NrLmxpYiB3czJfMzIubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIG9sZWF1dDMyLmxpYiBvbGUzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS0kKFBsYXRmb3JtTmFtZSktdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd2luMzItcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im5ldGFwaTMyLmxpYiBtc3dzb2NrLmxpYiB3czJfMzIubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIG9sZWF1dDMyLmxpYiBvbGUzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS0kKFBsYXRmb3JtTmFtZSktdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtMjAwMy1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd20yMDAzcHBjLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtMjAwMy1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd20yMDAzc3AtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdpbjY0LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEU7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibmV0YXBpMzIubGliIG1zd3NvY2subGliIHdzMl8zMi5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgb2xlYXV0MzIubGliIG9sZTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLSQoUGxhdGZvcm1OYW1lKS12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdpbjMyLWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im5ldGFwaTMyLmxpYiBtc3dzb2NrLmxpYiB3czJfMzIubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIG9sZWF1dDMyLmxpYiBvbGUzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS0kKFBsYXRmb3JtTmFtZSktdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd20yMDAzLWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLXdtMjAwM3BwYy12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtMjAwMy1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTIwMDNzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtZGVidWctc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13aW42NC1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEU7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibmV0YXBpMzIubGliIG1zd3NvY2subGliIHdzMl8zMi5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgb2xlYXV0MzIubGliIG9sZTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLSQoUGxhdGZvcm1OYW1lKS12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdpbjMyLXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRTsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJuZXRhcGkzMi5saWIgbXN3c29jay5saWIgd3MyXzMyLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBvbGVhdXQzMi5saWIgb2xlMzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktJChQbGF0Zm9ybU5hbWUpLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtMjAwMy1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd20yMDAzcHBjLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd20yMDAzLXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTIwMDNzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtcmVsZWFzZS1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13aW42NC1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im5ldGFwaTMyLmxpYiBtc3dzb2NrLmxpYiB3czJfMzIubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIG9sZWF1dDMyLmxpYiBvbGUzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS0kKFBsYXRmb3JtTmFtZSktdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdpbjMyLWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFOyINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im5ldGFwaTMyLmxpYiBtc3dzb2NrLmxpYiB3czJfMzIubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIG9sZWF1dDMyLmxpYiBvbGUzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS0kKFBsYXRmb3JtTmFtZSktdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTIwMDMtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd20yMDAzcHBjLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWctRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTIwMDMtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd20yMDAzc3AtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13aW42NC1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEU7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibmV0YXBpMzIubGliIG1zd3NvY2subGliIHdzMl8zMi5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgb2xlYXV0MzIubGliIG9sZTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLSQoUGxhdGZvcm1OYW1lKS12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2Utc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13aW4zMi1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEU7Ig0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibmV0YXBpMzIubGliIG1zd3NvY2subGliIHdzMl8zMi5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgb2xlYXV0MzIubGliIG9sZTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLSQoUGxhdGZvcm1OYW1lKS12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd20yMDAzLXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTIwMDNwcGMtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd20yMDAzLXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTIwMDNzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd2luNjQtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRTsiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJuZXRhcGkzMi5saWIgbXN3c29jay5saWIgd3MyXzMyLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBvbGVhdXQzMi5saWIgb2xlMzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktJChQbGF0Zm9ybU5hbWUpLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtZGVidWctc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTYtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd202c3RkLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd202LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLXdtNnByby12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLXdtNXBwYy12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNS1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTVzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtcmVsZWFzZS1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTYtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLXdtNnN0ZC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd202LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTZwcm8tdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTVwcGMtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNS1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd201c3AtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtZGVidWctc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTYtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd202c3RkLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNi1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTZwcm8tdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtZGVidWctc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTUtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd201cHBjLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNS1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTVzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNi1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd202c3RkLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNi1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd202cHJvLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTVwcGMtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2UtZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd201LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTVzcC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtZGVidWctZHluYW1pYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd202LWNvbW1vbi1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLXdtNnN0ZC12YyQoVlNWZXIpLSQoQ29uZmlndXJhdGlvbk5hbWUpLmV4ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NvZGVTaWduVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPERlcGxveW1lbnRUb29sDQorCQkJCUZvcmNlRGlydHk9Ii0xIg0KKwkJCQlSZW1vdGVEaXJlY3Rvcnk9IiINCisJCQkJUmVnaXN0ZXJPdXRwdXQ9IjAiDQorCQkJCUFkZGl0aW9uYWxGaWxlcz0iIg0KKwkJCS8+DQorCQkJPERlYnVnZ2VyVG9vbA0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNi1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTZwcm8tdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LWRlYnVnLWR5bmFtaWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNS1jb21tb24tZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTVwcGMtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1kZWJ1Zy1keW5hbWljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTUtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd201c3AtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC1yZWxlYXNlLXN0YXRpYy1kZWZhdWx0cy52c3Byb3BzOy4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtd202LXJlbGVhc2UtZGVmYXVsdHMudnNwcm9wcyINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJQ2hhcmFjdGVyU2V0PSIxIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCUV4ZWN1dGlvbkJ1Y2tldD0iNyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vaW5jbHVkZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9Ii4uXGJpblxwamxpYi10ZXN0LSQoVGFyZ2V0Q1BVKS13bTZzdGQtdmMkKFZTVmVyKS0kKENvbmZpZ3VyYXRpb25OYW1lKS5leGUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDb2RlU2lnblRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxEZXBsb3ltZW50VG9vbA0KKwkJCQlGb3JjZURpcnR5PSItMSINCisJCQkJUmVtb3RlRGlyZWN0b3J5PSIiDQorCQkJCVJlZ2lzdGVyT3V0cHV0PSIwIg0KKwkJCQlBZGRpdGlvbmFsRmlsZXM9IiINCisJCQkvPg0KKwkJCTxEZWJ1Z2dlclRvb2wNCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtcmVsZWFzZS1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNi1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd202cHJvLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXGJ1aWxkXHZzXHBqcHJvamVjdC12czgtcmVsZWFzZS1zdGF0aWMtZGVmYXVsdHMudnNwcm9wczsuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXdtNS1yZWxlYXNlLWRlZmF1bHRzLnZzcHJvcHMiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCUNoYXJhY3RlclNldD0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlFeGVjdXRpb25CdWNrZXQ9IjciDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uL2luY2x1ZGUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlxiaW5ccGpsaWItdGVzdC0kKFRhcmdldENQVSktd201cHBjLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxidWlsZFx2c1xwanByb2plY3QtdnM4LXJlbGVhc2Utc3RhdGljLWRlZmF1bHRzLnZzcHJvcHM7Li5cLi5cYnVpbGRcdnNccGpwcm9qZWN0LXZzOC13bTUtcmVsZWFzZS1kZWZhdWx0cy52c3Byb3BzIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlDaGFyYWN0ZXJTZXQ9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRXhlY3V0aW9uQnVja2V0PSI3Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi9pbmNsdWRlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iLi5cYmluXHBqbGliLXRlc3QtJChUYXJnZXRDUFUpLXdtNXNwLXZjJChWU1ZlciktJChDb25maWd1cmF0aW9uTmFtZSkuZXhlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ29kZVNpZ25Ub29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8RGVwbG95bWVudFRvb2wNCisJCQkJRm9yY2VEaXJ0eT0iLTEiDQorCQkJCVJlbW90ZURpcmVjdG9yeT0iIg0KKwkJCQlSZWdpc3Rlck91dHB1dD0iMCINCisJCQkJQWRkaXRpb25hbEZpbGVzPSIiDQorCQkJLz4NCisJCQk8RGVidWdnZXJUb29sDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJPC9Db25maWd1cmF0aW9ucz4NCisJPFJlZmVyZW5jZXM+DQorCTwvUmVmZXJlbmNlcz4NCisJPEZpbGVzPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcYWN0aXZlc29jay5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcYXRvbWljLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFxlY2hvX2NsdC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcZXJybm8uYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwamxpYi10ZXN0XGV4Y2VwdGlvbi5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcZmlmb2J1Zi5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcZmlsZS5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcaGFzaF90ZXN0LmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFxpb3FfcGVyZi5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcaW9xX3RjcC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcaW9xX3VkcC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcaW9xX3VucmVnLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFxsaXN0LmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFxtYWluLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFxtYWluX21vZC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFBvY2tldCBQQyAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFNtYXJ0cGhvbmUgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xQb2NrZXQgUEMgMjAwMyAoQVJNVjQpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8U21hcnRwaG9uZSAyMDAzIChBUk1WNCkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8UG9ja2V0IFBDIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xTbWFydHBob25lIDIwMDMgKEFSTVY0KSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBTdGFuZGFyZCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbmRvd3MgTW9iaWxlIDUuMCBTbWFydHBob25lIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNiBQcm9mZXNzaW9uYWwgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luZG93cyBNb2JpbGUgNS4wIFBvY2tldCBQQyBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFByb2Zlc3Npb25hbCBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW5kb3dzIE1vYmlsZSA2IFN0YW5kYXJkIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbmRvd3MgTW9iaWxlIDUuMCBQb2NrZXQgUEMgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luZG93cyBNb2JpbGUgNS4wIFNtYXJ0cGhvbmUgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgU3RhbmRhcmQgU0RLIChBUk1WNEkpIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbmRvd3MgTW9iaWxlIDYgUHJvZmVzc2lvbmFsIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgUG9ja2V0IFBDIFNESyAoQVJNVjRJKSINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW5kb3dzIE1vYmlsZSA1LjAgU21hcnRwaG9uZSBTREsgKEFSTVY0SSkiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcbWFpbl93aW4zMi5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcbXV0ZXguYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwamxpYi10ZXN0XG9zLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFxwb29sLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFxwb29sX3BlcmYuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwamxpYi10ZXN0XHJhbmQuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwamxpYi10ZXN0XHJidHJlZS5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3Rcc2VsZWN0LmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFxzbGVlcC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3Rcc29jay5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3Rcc29ja19wZXJmLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFxzc2xfc29jay5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3Rcc3RyaW5nLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFx0aHJlYWQuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwamxpYi10ZXN0XHRpbWVyLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFx0aW1lc3RhbXAuYyINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xwamxpYi10ZXN0XHVkcF9lY2hvX3Nydl9pb3F1ZXVlLmMiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtRHluYW1pY3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFx1ZHBfZWNob19zcnZfc3luYy5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXHBqbGliLXRlc3RcdXRpbC5jIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnLVN0YXRpY3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWctU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlLUR5bmFtaWN8eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Zy1EeW5hbWljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZS1TdGF0aWN8V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2UtU3RhdGljfHg2NCINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJPC9GaWxlcz4NCisJPEdsb2JhbHM+DQorCTwvR2xvYmFscz4NCis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvcHJpdmtleS5wZW0gYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC9wcml2a2V5LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGM0YjRlCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvcHJpdmtleS5wZW0KQEAgLTAsMCArMSwxNSBAQAorLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQorTUlJQ1hnSUJBQUtCZ1FESTlUMFBmKzFnS09UT0FHRXBaNDgxUTZ4Zm01dno2bjErNnVkeHpRdGZQS2xRclBENQoreDVpbTJ1M3RteTZBQnhaZVk1dENkZWlrQlBpR2xjNWJSSVJuZzZLTThraWRrZzNnRWh3aFJVeEhDTVdibUJwaworejdyRkVSZi9wV0FPQ3FZQ2l5MVJUOFFySytYT0ZvRmRKaGRGODVVUERFVXcrcEhFc1lldFREczlSUUlEQVFBQgorQW9HQUdWKzF4UVkvSDd3cUg4UzJmL2JlZ3pnM1JKOHVVdDhSMTN1cm01ZnJUcXduS05PZFhieVJEc2huOEc5Kworc0pXMGdsaUxXeG51TlArWHJjNnVqcUdaSWd1Sy95QXhKM0xwckFOMkF5MWxXMk9OeVpOTXF1QmVJWTVUeGh5eQorU25VN1UrTlFZZ0EzK3c5VDdPN1lRNTc1VFREbTJncmk1NThqSXg4dDU1V285c1VDUVFEdGpmR1ozc1lYd3B4UgorTXZ0ZHRmd0R4U0toZjZnbFQ2ZG43LzM3S0lUQlpYRnk2RWIvdEhyRUVVdXdSNDZnMzB2VGQySkVsQ0IrUUV4dQorNHNaRHQ4MTNBa0VBMkkvV1hkR1ZSWHRIelZpdmYzQW5xV3lYZnJmQUFYbEJtRWtnUHlJUHdFMStteGVOeGtVNworVFJuME1PcUFmYlFXNCtHUklZQ0tTQkxvZFJuUnEyaUtJd0pCQUpMWWE4RHlOUUg3Q3lZbW5id1FBdmxSbzFheAorMHY4OWZmNkNIRDVsamFyL1NtSDlzK1hkYXdaSXFzRU5ldDEzS3loTlpER0FYNVdycVpQaUd5MUJNWUVDUVFDMQorRlJFYXdmVWZkRVpGM3JKZ3pWZGN4QUNwWk55WVh0d0tpcHI4TDI4Y1RiQmYzd0lkbUNaT0FqVzk4VmdmeEVhZgorcGkzRTVjYTdIWlJpMW9RTDRBNGhBa0VBNWtvSENRWWwrNVBEamJMdHhsMFZ5VkNwbVQ5QnJjWjk5TVMrWkVhVworMitIcEtJaFhyRUZ4ZVBRYVdiQ2FXN2dqS21LVXdDMHFxdTBtb2VkcUpDM216Zz09CistLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvd2luY2UtZXZjNC9wamxpYl90ZXN0X3dpbmNlLnZjcCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL3dpbmNlLWV2YzQvcGpsaWJfdGVzdF93aW5jZS52Y3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVlNjlhNwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL3dpbmNlLWV2YzQvcGpsaWJfdGVzdF93aW5jZS52Y3AKQEAgLTAsMCArMSwzOTcyMyBAQAorIyBNaWNyb3NvZnQgZU1iZWRkZWQgVmlzdWFsIFRvb2xzIFByb2plY3QgRmlsZSAtIE5hbWU9InBqbGliX3Rlc3Rfd2luY2UiIC0gUGFja2FnZSBPd25lcj08ND4NCisjIE1pY3Jvc29mdCBlTWJlZGRlZCBWaXN1YWwgVG9vbHMgR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDINCisjICoqIERPIE5PVCBFRElUICoqDQorDQorIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBNSVBTSVZfRlApIEFwcGxpY2F0aW9uIiAweDkyMDENCisjIFRBUkdUWVBFICJXaW4zMiAoV0NFIHg4NikgQXBwbGljYXRpb24iIDB4ODMwMQ0KKyMgVEFSR1RZUEUgIldpbjMyIChXQ0UgQVJNVjQpIEFwcGxpY2F0aW9uIiAweGEzMDENCisjIFRBUkdUWVBFICJXaW4zMiAoV0NFIE1JUFMxNikgQXBwbGljYXRpb24iIDB4ODkwMQ0KKyMgVEFSR1RZUEUgIldpbjMyIChXQ0UgU0gzKSBBcHBsaWNhdGlvbiIgMHg4MTAxDQorIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBBUk1WNEkpIEFwcGxpY2F0aW9uIiAweGE1MDENCisjIFRBUkdUWVBFICJXaW4zMiAoV0NFIFNINCkgQXBwbGljYXRpb24iIDB4ODYwMQ0KKyMgVEFSR1RZUEUgIldpbjMyIChXQ0UgTUlQU0lJX0ZQKSBBcHBsaWNhdGlvbiIgMHhhMjAxDQorIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBlbXVsYXRvcikgQXBwbGljYXRpb24iIDB4YTYwMQ0KKyMgVEFSR1RZUEUgIldpbjMyIChXQ0UgTUlQU0lWKSBBcHBsaWNhdGlvbiIgMHg5NjAxDQorIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBBUk1WNFQpIEFwcGxpY2F0aW9uIiAweGE0MDENCisjIFRBUkdUWVBFICJXaW4zMiAoV0NFIE1JUFNJSSkgQXBwbGljYXRpb24iIDB4YTEwMQ0KKw0KK0NGRz1wamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnDQorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJwamxpYl90ZXN0X3dpbmNlLnZjbiIuDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJwamxpYl90ZXN0X3dpbmNlLnZjbiIgQ0ZHPSJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTSUlfRlApIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIE1JUFNJSV9GUCkgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTSUkpIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIE1JUFNJSSkgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBTSDQpIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFNINCkgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBTSDMpIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFNIMykgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTSVYpIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIE1JUFNJVikgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIGVtdWxhdG9yKSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIGVtdWxhdG9yKSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIEFSTVY0SSkgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNVjRJKSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIE1JUFNJVl9GUCkgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgTUlQU0lWX0ZQKSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNVjQpIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNVjQpIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgTUlQUzE2KSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTMTYpIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNVjRUKSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBBUk1WNFQpIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgeDg2KSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSB4ODYpIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSANCisNCisjIEJlZ2luIFByb2plY3QNCisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KKyMgUFJPUCBTY2NfUHJvak5hbWUgIiINCisjIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KKyMgUFJPUCBBVExfUHJvamVjdCAyDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lJX0ZQUmVsIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lJX0ZQUmVsIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAie0Q4QUM4NTZDLUIyMTMtNDg5NS05RTgzLTlFQzUxQTU1MjAxRX0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJSV9GUFJlbCINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSUlfRlBSZWwiDQorIyBQUk9QIENQVV9JRCAie0Q4QUM4NTZDLUIyMTMtNDg5NS05RTgzLTlFQzUxQTU1MjAxRX0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorUlNDPXJjLmV4ZQ0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiTkRFQlVHIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kICJSNDAwMCIgL2QgIk1JUFNJSSIgL2QgIk1JUFNJSV9GUCIgL3INCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJOREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgIlI0MDAwIiAvZCAiTUlQU0lJIiAvZCAiTUlQU0lJX0ZQIiAvcg0KK0NQUD1jbG1pcHMuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCAiUjQwMDAiIC9EICJNSVBTSUkiIC9EICJNSVBTSUlfRlAiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiTkRFQlVHIiAvWVggL1FNbWlwczIgL1FNRlBFLSAvTzIgL00kKENFQ3J0TVQpIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9JICIuLi8uLi9pbmNsdWRlIiAvRCAiTUlQUyIgL0QgIl9NSVBTXyIgL0QgIlI0MDAwIiAvRCAiTUlQU0lJIiAvRCAiTUlQU0lJX0ZQIiAvRCAiTkRFQlVHIiAvRCBQSl9XSU4zMl9XSU5DRT0xIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL1lYIC9RTW1pcHMyIC9RTUZQRS0gL08yIC9NJChDRUNydE1UKSAvYw0KK01UTD1taWRsLmV4ZQ0KKyMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KKyMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOk1JUFMNCisjIEFERCBMSU5LMzIgd2luc29jay5saWIgd3MyLmxpYiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOk1JUFMNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJSV9GUERiZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJSV9GUERiZyINCisjIFBST1AgQkFTRSBDUFVfSUQgIntEOEFDODU2Qy1CMjEzLTQ4OTUtOUU4My05RUM1MUE1NTIwMUV9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSUlfRlBEYmciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lJX0ZQRGJnIg0KKyMgUFJPUCBDUFVfSUQgIntEOEFDODU2Qy1CMjEzLTQ4OTUtOUU4My05RUM1MUE1NTIwMUV9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIkRFQlVHIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kICJSNDAwMCIgL2QgIk1JUFNJSSIgL2QgIk1JUFNJSV9GUCIgL3INCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCAiUjQwMDAiIC9kICJNSVBTSUkiIC9kICJNSVBTSUlfRlAiIC9yDQorQ1BQPWNsbWlwcy5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJSNDAwMCIgL0QgIk1JUFNJSSIgL0QgIk1JUFNJSV9GUCIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL1FNbWlwczIgL1FNRlBFLSAvTSQoQ0VDcnRNVERlYnVnKSAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9JICIuLi8uLi9pbmNsdWRlIiAvRCAiREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCAiUjQwMDAiIC9EICJNSVBTSUkiIC9EICJNSVBTSUlfRlAiIC9EIFBKX1dJTjMyX1dJTkNFPTEgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL1FNbWlwczIgL1FNRlBFLSAvTSQoQ0VDcnRNVERlYnVnKSAvYw0KK01UTD1taWRsLmV4ZQ0KKyMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KKyMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9kZWJ1ZyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpNSVBTDQorIyBBREQgTElOSzMyIHdpbnNvY2subGliIHdzMi5saWIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6TUlQUw0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSUlSZWwiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSUlSZWwiDQorIyBQUk9QIEJBU0UgQ1BVX0lEICJ7Njg5RERDNjQtOUQ5RC0xMUQ1LTk2RjgtMDAyMDc4MDJDMDFDfSINCisjIFBST1AgQkFTRSBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lJUmVsIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJSVJlbCINCisjIFBST1AgQ1BVX0lEICJ7Njg5RERDNjQtOUQ5RC0xMUQ1LTk2RjgtMDAyMDc4MDJDMDFDfSINCisjIFBST1AgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitSU0M9cmMuZXhlDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJOREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgIlI0MDAwIiAvZCAiTUlQU0lJIiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCAiUjQwMDAiIC9kICJNSVBTSUkiIC9yDQorQ1BQPWNsbWlwcy5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJSNDAwMCIgL0QgIk1JUFNJSSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJOREVCVUciIC9ZWCAvUU1taXBzMiAvUU1GUEUgL08yIC9NJChDRUNydE1UKSAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJSNDAwMCIgL0QgIk1JUFNJSSIgL0QgIk5ERUJVRyIgL0QgUEpfV0lOMzJfV0lOQ0U9MSAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9ZWCAvUU1taXBzMiAvUU1GUEUgL08yIC9NJChDRUNydE1UKSAvYw0KK01UTD1taWRsLmV4ZQ0KKyMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KKyMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOk1JUFMNCisjIEFERCBMSU5LMzIgd2luc29jay5saWIgd3MyLmxpYiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOk1JUFMNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJSURiZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJSURiZyINCisjIFBST1AgQkFTRSBDUFVfSUQgIns2ODlEREM2NC05RDlELTExRDUtOTZGOC0wMDIwNzgwMkMwMUN9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSUlEYmciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lJRGJnIg0KKyMgUFJPUCBDUFVfSUQgIns2ODlEREM2NC05RDlELTExRDUtOTZGOC0wMDIwNzgwMkMwMUN9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIkRFQlVHIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kICJSNDAwMCIgL2QgIk1JUFNJSSIgL3INCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCAiUjQwMDAiIC9kICJNSVBTSUkiIC9yDQorQ1BQPWNsbWlwcy5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJSNDAwMCIgL0QgIk1JUFNJSSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL1FNbWlwczIgL1FNRlBFIC9NJChDRUNydE1URGVidWcpIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9aaSAvT2QgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJSNDAwMCIgL0QgIk1JUFNJSSIgL0QgUEpfV0lOMzJfV0lOQ0U9MSAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9ZWCAvUU1taXBzMiAvUU1GUEUgL00kKENFQ3J0TVREZWJ1ZykgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6TUlQUw0KKyMgQUREIExJTkszMiB3aW5zb2NrLmxpYiB3czIubGliIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL2RlYnVnIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOk1JUFMNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfU0g0UmVsIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfU0g0UmVsIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAie0Q2NTE5MDIxLTcxMEYtMTFEMy05OUYyLTAwMTA1QTBERjA5OX0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X1NINFJlbCINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9TSDRSZWwiDQorIyBQUk9QIENQVV9JRCAie0Q2NTE5MDIxLTcxMEYtMTFEMy05OUYyLTAwMTA1QTBERjA5OX0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorUlNDPXJjLmV4ZQ0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiTkRFQlVHIiAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIlNIeCIgL2QgIlNINCIgL2QgIl9TSDRfIiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIk5ERUJVRyIgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJTSHgiIC9kICJTSDQiIC9kICJfU0g0XyIgL3INCitDUFA9c2hjbC5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlNIeCIgL0QgIlNINCIgL0QgIl9TSDRfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIk5ERUJVRyIgL1lYIC9Rc2g0IC9PMiAvTSQoQ0VDcnRNVCkgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJTSHgiIC9EICJTSDQiIC9EICJfU0g0XyIgL0QgIk5ERUJVRyIgL0QgUEpfV0lOMzJfV0lOQ0U9MSAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9ZWCAvUXNoNCAvTzIgL00kKENFQ3J0TVQpIC9jDQorTVRMPW1pZGwuZXhlDQorIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJTkszMj1saW5rLmV4ZQ0KKyMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6U0g0DQorIyBBREQgTElOSzMyIHdpbnNvY2subGliIHdzMi5saWIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpTSDQNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X1NINERiZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X1NINERiZyINCisjIFBST1AgQkFTRSBDUFVfSUQgIntENjUxOTAyMS03MTBGLTExRDMtOTlGMi0wMDEwNUEwREYwOTl9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9TSDREYmciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfU0g0RGJnIg0KKyMgUFJPUCBDUFVfSUQgIntENjUxOTAyMS03MTBGLTExRDMtOTlGMi0wMDEwNUEwREYwOTl9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIkRFQlVHIiAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIlNIeCIgL2QgIlNINCIgL2QgIl9TSDRfIiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIkRFQlVHIiAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIlNIeCIgL2QgIlNINCIgL2QgIl9TSDRfIiAvcg0KK0NQUD1zaGNsLmV4ZQ0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9aaSAvT2QgL0QgIkRFQlVHIiAvRCAiU0h4IiAvRCAiU0g0IiAvRCAiX1NINF8iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL1lYIC9Rc2g0IC9NJChDRUNydE1URGVidWcpIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9aaSAvT2QgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJERUJVRyIgL0QgIlNIeCIgL0QgIlNINCIgL0QgIl9TSDRfIiAvRCBQSl9XSU4zMl9XSU5DRT0xIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL1lYIC9Rc2g0IC9NJChDRUNydE1URGVidWcpIC9jDQorTVRMPW1pZGwuZXhlDQorIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJTkszMj1saW5rLmV4ZQ0KKyMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL2RlYnVnIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOlNINA0KKyMgQUREIExJTkszMiB3aW5zb2NrLmxpYiB3czIubGliIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL2RlYnVnIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOlNINA0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9TSDNSZWwiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9TSDNSZWwiDQorIyBQUk9QIEJBU0UgQ1BVX0lEICJ7RDY1MTkwMjAtNzEwRi0xMUQzLTk5RjItMDAxMDVBMERGMDk5fSINCisjIFBST1AgQkFTRSBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfU0gzUmVsIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X1NIM1JlbCINCisjIFBST1AgQ1BVX0lEICJ7RDY1MTkwMjAtNzEwRi0xMUQzLTk5RjItMDAxMDVBMERGMDk5fSINCisjIFBST1AgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitSU0M9cmMuZXhlDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJOREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9yDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiTkRFQlVHIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIlNIeCIgL2QgIlNIMyIgL2QgIl9TSDNfIiAvcg0KK0NQUD1zaGNsLmV4ZQ0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiU0h4IiAvRCAiU0gzIiAvRCAiX1NIM18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiTkRFQlVHIiAvWVggL08yIC9NJChDRUNydE1UKSAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIlNIeCIgL0QgIlNIMyIgL0QgIl9TSDNfIiAvRCAiTkRFQlVHIiAvRCBQSl9XSU4zMl9XSU5DRT0xIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL1lYIC9PMiAvTSQoQ0VDcnRNVCkgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpTSDMgL2FsaWduOjQwOTYNCisjIEFERCBMSU5LMzIgd2luc29jay5saWIgd3MyLmxpYiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOlNIMyAvYWxpZ246NDA5Ng0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfU0gzRGJnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfU0gzRGJnIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAie0Q2NTE5MDIwLTcxMEYtMTFEMy05OUYyLTAwMTA1QTBERjA5OX0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X1NIM0RiZyINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9TSDNEYmciDQorIyBQUk9QIENQVV9JRCAie0Q2NTE5MDIwLTcxMEYtMTFEMy05OUYyLTAwMTA1QTBERjA5OX0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorUlNDPXJjLmV4ZQ0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9yDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9yDQorQ1BQPXNoY2wuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvRCAiREVCVUciIC9EICJTSHgiIC9EICJTSDMiIC9EICJfU0gzXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL00kKENFQ3J0TVREZWJ1ZykgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkRFQlVHIiAvRCAiU0h4IiAvRCAiU0gzIiAvRCAiX1NIM18iIC9EIFBKX1dJTjMyX1dJTkNFPTEgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL00kKENFQ3J0TVREZWJ1ZykgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6U0gzIC9hbGlnbjo0MDk2DQorIyBBREQgTElOSzMyIHdpbnNvY2subGliIHdzMi5saWIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6U0gzIC9hbGlnbjo0MDk2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJVlJlbCINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJVlJlbCINCisjIFBST1AgQkFTRSBDUFVfSUQgInswQjJGRTUyNC0yNkM1LTQxOTQtOENFRi1CMTU4MkRFQjVBOTh9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSVZSZWwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lWUmVsIg0KKyMgUFJPUCBDUFVfSUQgInswQjJGRTUyNC0yNkM1LTQxOTQtOENFRi1CMTU4MkRFQjVBOTh9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvcg0KK0NQUD1jbG1pcHMuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCAiX01JUFM2NCIgL0QgIlI0MDAwIiAvRCAiTUlQU0lWIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIk5ERUJVRyIgL1lYIC9RTW1pcHM0IC9RTW4zMiAvUU1GUEUgL08yIC9NJChDRUNydE1UKSAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJfTUlQUzY0IiAvRCAiUjQwMDAiIC9EICJNSVBTSVYiIC9EICJOREVCVUciIC9EIFBKX1dJTjMyX1dJTkNFPTEgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL1FNbWlwczQgL1FNbjMyIC9RTUZQRSAvTzIgL00kKENFQ3J0TVQpIC9jDQorTVRMPW1pZGwuZXhlDQorIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJTkszMj1saW5rLmV4ZQ0KKyMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6TUlQU0ZQVQ0KKyMgQUREIExJTkszMiB3aW5zb2NrLmxpYiB3czIubGliIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6TUlQU0ZQVQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lWRGJnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lWRGJnIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAiezBCMkZFNTI0LTI2QzUtNDE5NC04Q0VGLUIxNTgyREVCNUE5OH0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJVkRiZyINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSVZEYmciDQorIyBQUk9QIENQVV9JRCAiezBCMkZFNTI0LTI2QzUtNDE5NC04Q0VGLUIxNTgyREVCNUE5OH0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorUlNDPXJjLmV4ZQ0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL3INCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvcg0KK0NQUD1jbG1pcHMuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvRCAiREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCAiX01JUFM2NCIgL0QgIlI0MDAwIiAvRCAiTUlQU0lWIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9ZWCAvUU1taXBzNCAvUU1uMzIgL1FNRlBFIC9NJChDRUNydE1URGVidWcpIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9aaSAvT2QgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJfTUlQUzY0IiAvRCAiUjQwMDAiIC9EICJNSVBTSVYiIC9EIFBKX1dJTjMyX1dJTkNFPTEgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL1FNbWlwczQgL1FNbjMyIC9RTUZQRSAvTSQoQ0VDcnRNVERlYnVnKSAvYw0KK01UTD1taWRsLmV4ZQ0KKyMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KKyMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9kZWJ1ZyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpNSVBTRlBVDQorIyBBREQgTElOSzMyIHdpbnNvY2subGliIHdzMi5saWIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6TUlQU0ZQVQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X2VtdWxhdG9yUmVsIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfZW11bGF0b3JSZWwiDQorIyBQUk9QIEJBU0UgQ1BVX0lEICJ7MzJFNTIwMDMtNDAzRS00NDJELUJFNDgtREUxMEY4QzYxMzFEfSINCisjIFBST1AgQkFTRSBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfZW11bGF0b3JSZWwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfZW11bGF0b3JSZWwiDQorIyBQUk9QIENQVV9JRCAiezMyRTUyMDAzLTQwM0UtNDQyRC1CRTQ4LURFMTBGOEM2MTMxRH0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorUlNDPXJjLmV4ZQ0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiTkRFQlVHIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIl9YODZfIiAvZCAieDg2IiAvZCAiX2kzODZfIiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJfWDg2XyIgL2QgIng4NiIgL2QgIl9pMzg2XyIgL3INCitDUFA9Y2wuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJfaTM4Nl8iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiaV8zODZfIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiX1g4Nl8iIC9EICJ4ODYiIC9EICJOREVCVUciIC9ZWCAvR3M4MTkyIC9HRiAvTzIgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJfaTM4Nl8iIC9EICJpXzM4Nl8iIC9EICJfWDg2XyIgL0QgIng4NiIgL0QgIk5ERUJVRyIgL0QgUEpfV0lOMzJfV0lOQ0U9MSAvRCBQSl9NX0kzODY9MSAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9ZWCAvR3M4MTkyIC9HRiAvTzIgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliICQoQ0V4ODZDb3JlbGliYykgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9ub2RlZmF1bHRsaWI6Ik9MRE5BTUVTLmxpYiIgL25vZGVmYXVsdGxpYjokKENFTm9EZWZhdWx0TGliKSAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOklYODYNCisjIEFERCBMSU5LMzIgJChDRXg4NkNvcmVsaWJjKSB3aW5zb2NrLmxpYiB3czIubGliIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL25vZGVmYXVsdGxpYjoiT0xETkFNRVMubGliIiAvbm9kZWZhdWx0bGliOiQoQ0VOb0RlZmF1bHRMaWIpIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6SVg4Ng0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9lbXVsYXRvckRiZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X2VtdWxhdG9yRGJnIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAiezMyRTUyMDAzLTQwM0UtNDQyRC1CRTQ4LURFMTBGOEM2MTMxRH0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X2VtdWxhdG9yRGJnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X2VtdWxhdG9yRGJnIg0KKyMgUFJPUCBDUFVfSUQgInszMkU1MjAwMy00MDNFLTQ0MkQtQkU0OC1ERTEwRjhDNjEzMUR9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiJChDZVBsYXRmb3JtKSIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJERUJVRyIgL2QgIl9YODZfIiAvZCAieDg2IiAvZCAiX2kzODZfIiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCAiJChDZVBsYXRmb3JtKSIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJERUJVRyIgL2QgIl9YODZfIiAvZCAieDg2IiAvZCAiX2kzODZfIiAvcg0KK0NQUD1jbC5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9EICJERUJVRyIgL0QgIl9pMzg2XyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiaV8zODZfIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiX1g4Nl8iIC9EICJ4ODYiIC9ZWCAvR3M4MTkyIC9HRiAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9JICIuLi8uLi9pbmNsdWRlIiAvRCAiREVCVUciIC9EICJfaTM4Nl8iIC9EICJpXzM4Nl8iIC9EICJfWDg2XyIgL0QgIng4NiIgL0QgUEpfV0lOMzJfV0lOQ0U9MSAvRCBQSl9NX0kzODY9MSAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9GUiAvWVggL0dzODE5MiAvR0YgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliICQoQ0V4ODZDb3JlbGliYykgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9kZWJ1ZyAvbm9kZWZhdWx0bGliOiJPTEROQU1FUy5saWIiIC9ub2RlZmF1bHRsaWI6JChDRU5vRGVmYXVsdExpYikgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpJWDg2DQorIyBBREQgTElOSzMyICQoQ0V4ODZDb3JlbGliYykgd2luc29jay5saWIgd3MyLmxpYiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9kZWJ1ZyAvbm9kZWZhdWx0bGliOiJPTEROQU1FUy5saWIiIC9ub2RlZmF1bHRsaWI6JChDRU5vRGVmYXVsdExpYikgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpJWDg2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0SVJlbCINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0SVJlbCINCisjIFBST1AgQkFTRSBDUFVfSUQgIntEQzcwRjQzMC1FNzhCLTQ5NEYtQTlENS02MkFEQzU2NDQzQjh9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9BUk1WNElSZWwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfQVJNVjRJUmVsIg0KKyMgUFJPUCBDUFVfSUQgIntEQzcwRjQzMC1FNzhCLTQ5NEYtQTlENS02MkFEQzU2NDQzQjh9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJUSFVNQiIgL2QgIl9USFVNQl8iIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgIkFSTVY0SSIgL3INCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJOREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiVEhVTUIiIC9kICJfVEhVTUJfIiAvZCAiQVJNIiAvZCAiX0FSTV8iIC9kICJBUk1WNEkiIC9yDQorQ1BQPWNsYXJtLmV4ZQ0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICJBUk0iIC9EICJfQVJNXyIgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJBUk1WNEkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiTkRFQlVHIiAvWVggL1FSYXJjaDRUIC9RUmludGVyd29yay1yZXR1cm4gL08yIC9NJChDRUNydE1UKSAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCAiQVJNVjRJIiAvRCAiTkRFQlVHIiAvRCBQSl9XSU4zMl9XSU5DRT0xIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL1lYIC9RUmFyY2g0VCAvUVJpbnRlcndvcmstcmV0dXJuIC9PMiAvTSQoQ0VDcnRNVCkgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpUSFVNQg0KKyMgQUREIExJTkszMiB3aW5zb2NrLmxpYiB3czIubGliIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6VEhVTUINCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0SURiZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0SURiZyINCisjIFBST1AgQkFTRSBDUFVfSUQgIntEQzcwRjQzMC1FNzhCLTQ5NEYtQTlENS02MkFEQzU2NDQzQjh9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9BUk1WNElEYmciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfQVJNVjRJRGJnIg0KKyMgUFJPUCBDUFVfSUQgIntEQzcwRjQzMC1FNzhCLTQ5NEYtQTlENS02MkFEQzU2NDQzQjh9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIkRFQlVHIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIlRIVU1CIiAvZCAiX1RIVU1CXyIgL2QgIkFSTSIgL2QgIl9BUk1fIiAvZCAiQVJNVjRJIiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIkRFQlVHIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIlRIVU1CIiAvZCAiX1RIVU1CXyIgL2QgIkFSTSIgL2QgIl9BUk1fIiAvZCAiQVJNVjRJIiAvcg0KK0NQUD1jbGFybS5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9EICJERUJVRyIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCAiQVJNVjRJIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9ZWCAvUVJhcmNoNFQgL1FSaW50ZXJ3b3JrLXJldHVybiAvTSQoQ0VDcnRNVERlYnVnKSAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9JICIuLi8uLi9pbmNsdWRlIiAvRCAiREVCVUciIC9EICJBUk0iIC9EICJfQVJNXyIgL0QgIkFSTVY0SSIgL0QgUEpfV0lOMzJfV0lOQ0U9MSAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9ZWCAvUVJhcmNoNFQgL1FSaW50ZXJ3b3JrLXJldHVybiAvTSQoQ0VDcnRNVERlYnVnKSAvYw0KK01UTD1taWRsLmV4ZQ0KKyMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KKyMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9kZWJ1ZyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpUSFVNQg0KKyMgQUREIExJTkszMiB3aW5zb2NrLmxpYiB3czIubGliIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL2RlYnVnIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOlRIVU1CDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJVl9GUFJlbCINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJVl9GUFJlbCINCisjIFBST1AgQkFTRSBDUFVfSUQgInswNDZBNDMwRC03NzcwLTQ4QUItODlCNS0yNEMyRDMwMEIwM0Z9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSVZfRlBSZWwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lWX0ZQUmVsIg0KKyMgUFJPUCBDUFVfSUQgInswNDZBNDMwRC03NzcwLTQ4QUItODlCNS0yNEMyRDMwMEIwM0Z9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvcg0KK0NQUD1jbG1pcHMuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCAiX01JUFM2NCIgL0QgIlI0MDAwIiAvRCAiTUlQU0lWIiAvRCAiTUlQU0lWX0ZQIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIk5ERUJVRyIgL1lYIC9RTW1pcHM0IC9RTW4zMiAvUU1GUEUtIC9PMiAvTSQoQ0VDcnRNVCkgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCAiX01JUFM2NCIgL0QgIlI0MDAwIiAvRCAiTUlQU0lWIiAvRCAiTUlQU0lWX0ZQIiAvRCAiTkRFQlVHIiAvRCBQSl9XSU4zMl9XSU5DRT0xIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL1lYIC9RTW1pcHM0IC9RTW4zMiAvUU1GUEUtIC9PMiAvTSQoQ0VDcnRNVCkgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpNSVBTRlBVDQorIyBBREQgTElOSzMyIHdpbnNvY2subGliIHdzMi5saWIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpNSVBTRlBVDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSVZfRlBEYmciDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTSVZfRlBEYmciDQorIyBQUk9QIEJBU0UgQ1BVX0lEICJ7MDQ2QTQzMEQtNzc3MC00OEFCLTg5QjUtMjRDMkQzMDBCMDNGfSINCisjIFBST1AgQkFTRSBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQU0lWX0ZQRGJnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFNJVl9GUERiZyINCisjIFBST1AgQ1BVX0lEICJ7MDQ2QTQzMEQtNzc3MC00OEFCLTg5QjUtMjRDMkQzMDBCMDNGfSINCisjIFBST1AgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitSU0M9cmMuZXhlDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIkRFQlVHIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9yDQorQ1BQPWNsbWlwcy5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJfTUlQUzY0IiAvRCAiUjQwMDAiIC9EICJNSVBTSVYiIC9EICJNSVBTSVZfRlAiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL1lYIC9RTW1pcHM0IC9RTW4zMiAvUU1GUEUtIC9NJChDRUNydE1URGVidWcpIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9aaSAvT2QgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJfTUlQUzY0IiAvRCAiUjQwMDAiIC9EICJNSVBTSVYiIC9EICJNSVBTSVZfRlAiIC9EIFBKX1dJTjMyX1dJTkNFPTEgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL1FNbWlwczQgL1FNbjMyIC9RTUZQRS0gL00kKENFQ3J0TVREZWJ1ZykgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6TUlQU0ZQVQ0KKyMgQUREIExJTkszMiB3aW5zb2NrLmxpYiB3czIubGliIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL2RlYnVnIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOk1JUFNGUFUNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9BUk1WNFJlbCINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0UmVsIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAie0VDQkVBNDNELUNEN0ItNDg1Mi1BRDU1LUQ0MjI3QjVENjI0Qn0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0UmVsIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0UmVsIg0KKyMgUFJPUCBDUFVfSUQgIntFQ0JFQTQzRC1DRDdCLTQ4NTItQUQ1NS1ENDIyN0I1RDYyNEJ9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIk5ERUJVRyIgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgIkFSTVY0IiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIk5ERUJVRyIgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgIkFSTVY0IiAvcg0KK0NQUD1jbGFybS5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCAiQVJNVjQiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiTkRFQlVHIiAvWVggL08yIC9NJChDRUNydE1UKSAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCAiQVJNVjQiIC9EICJOREVCVUciIC9EIFBKX1dJTjMyX1dJTkNFPTEgL0QgUEpfTV9BUk1WND0xIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL1lYIC9PMiAvTSQoQ0VDcnRNVCkgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvYWxpZ246IjQwOTYiIC9NQUNISU5FOkFSTQ0KKyMgQUREIExJTkszMiB3aW5zb2NrLmxpYiB3czIubGliIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL2FsaWduOiI0MDk2IiAvTUFDSElORTpBUk0NCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfQVJNVjREYmciDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9BUk1WNERiZyINCisjIFBST1AgQkFTRSBDUFVfSUQgIntFQ0JFQTQzRC1DRDdCLTQ4NTItQUQ1NS1ENDIyN0I1RDYyNEJ9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9BUk1WNERiZyINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9BUk1WNERiZyINCisjIFBST1AgQ1BVX0lEICJ7RUNCRUE0M0QtQ0Q3Qi00ODUyLUFENTUtRDQyMjdCNUQ2MjRCfSINCisjIFBST1AgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitSU0M9cmMuZXhlDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJERUJVRyIgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgIkFSTVY0IiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIkRFQlVHIiAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIkFSTSIgL2QgIl9BUk1fIiAvZCAiQVJNVjQiIC9yDQorQ1BQPWNsYXJtLmV4ZQ0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9aaSAvT2QgL0QgIkRFQlVHIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EICJBUk1WNCIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL00kKENFQ3J0TVREZWJ1ZykgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkRFQlVHIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EICJBUk1WNCIgL0QgUEpfV0lOMzJfV0lOQ0U9MSAvRCBQSl9NX0FSTVY0PTEgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRlIgL1lYIC9NJChDRUNydE1URGVidWcpIC9jDQorTVRMPW1pZGwuZXhlDQorIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJTkszMj1saW5rLmV4ZQ0KKyMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL2RlYnVnIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9hbGlnbjoiNDA5NiIgL01BQ0hJTkU6QVJNDQorIyBBREQgTElOSzMyIHdpbnNvY2subGliIHdzMi5saWIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL2FsaWduOiI0MDk2IiAvTUFDSElORTpBUk0NCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQUzE2UmVsIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQUzE2UmVsIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAie0Q2NTE5MDEzLTcxMEYtMTFEMy05OUYyLTAwMTA1QTBERjA5OX0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFMxNlJlbCINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTMTZSZWwiDQorIyBQUk9QIENQVV9JRCAie0Q2NTE5MDEzLTcxMEYtMTFEMy05OUYyLTAwMTA1QTBERjA5OX0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorUlNDPXJjLmV4ZQ0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiTUlQUzE2U1VQUE9SVCIgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCAiUjQwMDAiIC9kICJNSVBTSUkiIC9kICJNSVBTMTYiIC9yDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiTUlQUzE2U1VQUE9SVCIgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCAiUjQwMDAiIC9kICJNSVBTSUkiIC9kICJNSVBTMTYiIC9yDQorQ1BQPWNsbWlwcy5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJSNDAwMCIgL0QgIk1JUFNJSSIgL0QgIk1JUFMxNiIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJOREVCVUciIC9EICJfTUlQUzE2XyIgL0QgIk1JUFMxNlNVUFBPUlQiIC9ZWCAvUU1taXBzMTYgL08yIC9NJChDRUNydE1UKSAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJSNDAwMCIgL0QgIk1JUFNJSSIgL0QgIk1JUFMxNiIgL0QgIk5ERUJVRyIgL0QgIl9NSVBTMTZfIiAvRCAiTUlQUzE2U1VQUE9SVCIgL0QgUEpfV0lOMzJfV0lOQ0U9MSAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9ZWCAvUU1taXBzMTYgL08yIC9NJChDRUNydE1UKSAvYw0KK01UTD1taWRsLmV4ZQ0KKyMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KKyMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOk1JUFMxNiAvQUxJR046NDA5Ng0KKyMgQUREIExJTkszMiB3aW5zb2NrLmxpYiB3czIubGliIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6TUlQUzE2IC9BTElHTjo0MDk2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTMTZEYmciDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9NSVBTMTZEYmciDQorIyBQUk9QIEJBU0UgQ1BVX0lEICJ7RDY1MTkwMTMtNzEwRi0xMUQzLTk5RjItMDAxMDVBMERGMDk5fSINCisjIFBST1AgQkFTRSBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfTUlQUzE2RGJnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X01JUFMxNkRiZyINCisjIFBST1AgQ1BVX0lEICJ7RDY1MTkwMTMtNzEwRi0xMUQzLTk5RjItMDAxMDVBMERGMDk5fSINCisjIFBST1AgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitSU0M9cmMuZXhlDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJNSVBTMTZTVVBQT1JUIiAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgIlI0MDAwIiAvZCAiTUlQU0lJIiAvZCAiTUlQUzE2IiAvcg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIk1JUFMxNlNVUFBPUlQiIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCAiUjQwMDAiIC9kICJNSVBTSUkiIC9kICJNSVBTMTYiIC9yDQorQ1BQPWNsbWlwcy5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJSNDAwMCIgL0QgIk1JUFNJSSIgL0QgIk1JUFMxNiIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiX01JUFMxNl8iIC9EICJNSVBTMTZTVVBQT1JUIiAvWVggL1FNbWlwczE2IC9NJChDRUNydE1URGVidWcpIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9aaSAvT2QgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EICJSNDAwMCIgL0QgIk1JUFNJSSIgL0QgIk1JUFMxNiIgL0QgIl9NSVBTMTZfIiAvRCAiTUlQUzE2U1VQUE9SVCIgL0QgUEpfV0lOMzJfV0lOQ0U9MSAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9ZWCAvUU1taXBzMTYgL00kKENFQ3J0TVREZWJ1ZykgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6TUlQUzE2IC9BTElHTjo0MDk2DQorIyBBREQgTElOSzMyIHdpbnNvY2subGliIHdzMi5saWIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6TUlQUzE2IC9BTElHTjo0MDk2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0VFJlbCINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0VFJlbCINCisjIFBST1AgQkFTRSBDUFVfSUQgIntGNTIzMTZBOS0zQjdDLTRGRTctQTY3Ri02ODM1MEI0MTI0MER9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9BUk1WNFRSZWwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfQVJNVjRUUmVsIg0KKyMgUFJPUCBDUFVfSUQgIntGNTIzMTZBOS0zQjdDLTRGRTctQTY3Ri02ODM1MEI0MTI0MER9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIk5ERUJVRyIgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kICJUSFVNQiIgL2QgIl9USFVNQl8iIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgIkFSTVY0VCIgL3INCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJOREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiVEhVTUIiIC9kICJfVEhVTUJfIiAvZCAiQVJNIiAvZCAiX0FSTV8iIC9kICJBUk1WNFQiIC9yDQorQ1BQPWNsdGh1bWIuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlRIVU1CIiAvRCAiX1RIVU1CXyIgL0QgIkFSTVY0VCIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJOREVCVUciIC9ZWCAvUVJhcmNoNFQgL1FSaW50ZXJ3b3JrLXJldHVybiAvTzIgL00kKENFQ3J0TVQpIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9JICIuLi8uLi9pbmNsdWRlIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EICJUSFVNQiIgL0QgIl9USFVNQl8iIC9EICJBUk1WNFQiIC9EICJOREVCVUciIC9EIFBKX1dJTjMyX1dJTkNFPTEgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL1FSYXJjaDRUIC9RUmludGVyd29yay1yZXR1cm4gL08yIC9NJChDRUNydE1UKSAvYw0KK01UTD1taWRsLmV4ZQ0KKyMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KKyMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9NQUNISU5FOlRIVU1CDQorIyBBREQgTElOSzMyIHdpbnNvY2subGliIHdzMi5saWIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpUSFVNQg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfQVJNVjRURGJnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfQVJNVjRURGJnIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAie0Y1MjMxNkE5LTNCN0MtNEZFNy1BNjdGLTY4MzUwQjQxMjQwRH0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X0FSTVY0VERiZyINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9BUk1WNFREYmciDQorIyBQUk9QIENQVV9JRCAie0Y1MjMxNkE5LTNCN0MtNEZFNy1BNjdGLTY4MzUwQjQxMjQwRH0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorUlNDPXJjLmV4ZQ0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiVEhVTUIiIC9kICJfVEhVTUJfIiAvZCAiQVJNIiAvZCAiX0FSTV8iIC9kICJBUk1WNFQiIC9yDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiVEhVTUIiIC9kICJfVEhVTUJfIiAvZCAiQVJNIiAvZCAiX0FSTV8iIC9kICJBUk1WNFQiIC9yDQorQ1BQPWNsdGh1bWIuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvRCAiREVCVUciIC9EICJUSFVNQiIgL0QgIl9USFVNQl8iIC9EICJBUk1WNFQiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL1FSYXJjaDRUIC9RUmludGVyd29yay1yZXR1cm4gL00kKENFQ3J0TVREZWJ1ZykgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkRFQlVHIiAvRCAiVEhVTUIiIC9EICJfVEhVTUJfIiAvRCAiQVJNVjRUIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EIFBKX1dJTjMyX1dJTkNFPTEgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL1FSYXJjaDRUIC9RUmludGVyd29yay1yZXR1cm4gL00kKENFQ3J0TVREZWJ1ZykgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvZGVidWcgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6VEhVTUINCisjIEFERCBMSU5LMzIgd2luc29jay5saWIgd3MyLmxpYiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9kZWJ1ZyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpUSFVNQg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9YODZSZWwiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9YODZSZWwiDQorIyBQUk9QIEJBU0UgQ1BVX0lEICJ7RDY1MThGRjMtNzEwRi0xMUQzLTk5RjItMDAxMDVBMERGMDk5fSINCisjIFBST1AgQkFTRSBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfWDg2UmVsIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X1g4NlJlbCINCisjIFBST1AgQ1BVX0lEICJ7RDY1MThGRjMtNzEwRi0xMUQzLTk5RjItMDAxMDVBMERGMDk5fSINCisjIFBST1AgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitSU0M9cmMuZXhlDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJOREVCVUciIC9kICIkKENlUGxhdGZvcm0pIiAvZCAiX1g4Nl8iIC9kICJ4ODYiIC9kICJfaTM4Nl8iIC9yDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiTkRFQlVHIiAvZCAiJChDZVBsYXRmb3JtKSIgL2QgIl9YODZfIiAvZCAieDg2IiAvZCAiX2kzODZfIiAvcg0KK0NQUD1jbC5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIl9pMzg2XyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJpXzM4Nl8iIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJfWDg2XyIgL0QgIng4NiIgL0QgIk5ERUJVRyIgL1lYIC9HczgxOTIgL0dGIC9PMiAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIl9pMzg2XyIgL0QgImlfMzg2XyIgL0QgIl9YODZfIiAvRCAieDg2IiAvRCAiTkRFQlVHIiAvRCBQSl9XSU4zMl9XSU5DRT0xIC9EIFBKX01fSTM4Nj0xIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL1lYIC9HczgxOTIgL0dGIC9PMiAvYw0KK01UTD1taWRsLmV4ZQ0KKyMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KKyMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgJChDRXg4NkNvcmVsaWJjKSAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2VudHJ5OiJXaW5NYWluQ1JUU3RhcnR1cCIgL25vZGVmYXVsdGxpYjoiT0xETkFNRVMubGliIiAvbm9kZWZhdWx0bGliOiQoQ0VOb0RlZmF1bHRMaWIpIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL01BQ0hJTkU6SVg4Ng0KKyMgQUREIExJTkszMiAkKENFeDg2Q29yZWxpYmMpIHdpbnNvY2subGliIHdzMi5saWIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZW50cnk6Ildpbk1haW5DUlRTdGFydHVwIiAvbm9kZWZhdWx0bGliOiJPTEROQU1FUy5saWIiIC9ub2RlZmF1bHRsaWI6JChDRU5vRGVmYXVsdExpYikgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpJWDg2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9YODZEYmciDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfdGVzdF9YODZEYmciDQorIyBQUk9QIEJBU0UgQ1BVX0lEICJ7RDY1MThGRjMtNzEwRi0xMUQzLTk5RjItMDAxMDVBMERGMDk5fSINCisjIFBST1AgQkFTRSBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX3Rlc3RfWDg2RGJnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl90ZXN0X1g4NkRiZyINCisjIFBST1AgQ1BVX0lEICJ7RDY1MThGRjMtNzEwRi0xMUQzLTk5RjItMDAxMDVBMERGMDk5fSINCisjIFBST1AgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitSU0M9cmMuZXhlDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiREVCVUciIC9kICJfWDg2XyIgL2QgIng4NiIgL2QgIl9pMzg2XyIgL3INCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgIiQoQ2VQbGF0Zm9ybSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiREVCVUciIC9kICJfWDg2XyIgL2QgIng4NiIgL2QgIl9pMzg2XyIgL3INCitDUFA9Y2wuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvRCAiREVCVUciIC9EICJfaTM4Nl8iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgImlfMzg2XyIgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIl9YODZfIiAvRCAieDg2IiAvWVggL0dzODE5MiAvR0YgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkRFQlVHIiAvRCAiX2kzODZfIiAvRCAiaV8zODZfIiAvRCAiX1g4Nl8iIC9EICJ4ODYiIC9EIFBKX1dJTjMyX1dJTkNFPTEgL0QgUEpfTV9JMzg2PTEgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvWVggL0dzODE5MiAvR0YgL2MNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliICQoQ0V4ODZDb3JlbGliYykgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9kZWJ1ZyAvbm9kZWZhdWx0bGliOiJPTEROQU1FUy5saWIiIC9ub2RlZmF1bHRsaWI6JChDRU5vRGVmYXVsdExpYikgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpJWDg2DQorIyBBREQgTElOSzMyIHdpbnNvY2subGliIHdzMi5saWIgJChDRXg4NkNvcmVsaWJjKSBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9lbnRyeToiV2luTWFpbkNSVFN0YXJ0dXAiIC9kZWJ1ZyAvbm9kZWZhdWx0bGliOiJPTEROQU1FUy5saWIiIC9ub2RlZmF1bHRsaWI6JChDRU5vRGVmYXVsdExpYikgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvTUFDSElORTpJWDg2DQorDQorIUVORElGIA0KKw0KKyMgQmVnaW4gVGFyZ2V0DQorDQorIyBOYW1lICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorIyBOYW1lICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKyMgTmFtZSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKyMgTmFtZSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisjIE5hbWUgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisjIE5hbWUgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorIyBOYW1lICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorIyBOYW1lICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKyMgTmFtZSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKyMgTmFtZSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisjIE5hbWUgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKyMgTmFtZSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKyMgTmFtZSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKyMgTmFtZSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisjIE5hbWUgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisjIE5hbWUgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorIyBOYW1lICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisjIE5hbWUgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisjIE5hbWUgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisjIE5hbWUgInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorIyBOYW1lICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorIyBOYW1lICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKyMgTmFtZSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKyMgTmFtZSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisjIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiDQorDQorIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XGF0b21pYy5jIg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIERlYnVnIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSINCisNCitERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgUmVsZWFzZSINCisNCitERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQVRPTUk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0FUT01JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9BVE9NST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XGVjaG9fY2x0LmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FQ0hPXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRUNIT189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0VDSE9fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3RcZXJybm8uYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFxleGNlcHRpb24uYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFxmaWZvYnVmLmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3RcZmlsZS5jIg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XGhhc2hfdGVzdC5jIg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIERlYnVnIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFxpb3FfcGVyZi5jIg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9JT1FfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XGlvcV90Y3AuYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9UPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1Q9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFxpb3FfdWRwLmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RX1U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9VPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3RcaW9xX3VucmVnLmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1VOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1VOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9VTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9VTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1VOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1VOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1VOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9VTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9VTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9VTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RX1VOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RX1VOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9JT1FfVU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUV9VTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUV9VTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFxsaXN0LmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3RcbWFpbi5jIg0KK0RFUF9DUFBfTUFJTl89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01BSU5fPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisjIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XG1haW5fd2luMzIuYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCitERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisNCitERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KK0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCitERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTUFJTl9XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NQUlOX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX01BSU5fVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XG11dGV4LmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9NVVRFWD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfTVVURVg9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX01VVEVYPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3Rcb3MuYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgUmVsZWFzZSINCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgUmVsZWFzZSINCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3RccG9vbC5jIg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XHBvb2xfcGVyZi5jIg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbWFsbG9jLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbWFsbG9jLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbWFsbG9jLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbWFsbG9jLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbWFsbG9jLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbWFsbG9jLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFxyYW5kLmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgUmVsZWFzZSINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XHJidHJlZS5jIg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgUmVsZWFzZSINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybXY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9wb3dlcnBjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1feDg2XzY0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XHNlbGVjdC5jIg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIERlYnVnIg0KKw0KK0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KK0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NFTEVDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TRUxFQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfU0VMRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3Rcc2xlZXAuYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NMRUVQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TTEVFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfU0xFRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFxzb2NrLmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwalxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFxzb2NrX3BlcmYuYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TT0NLX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS19QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3Rcc3RyaW5nLmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9URVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEVTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1RFU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3RcdGhyZWFkLmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USFJFQT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVEhSRUE9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1RIUkVBPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3RcdGltZXIuYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFx0aW1lc3RhbXAuYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1RJTUVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVElNRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVElNRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgRGVidWciDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfVElNRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1RJTUVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVElNRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgRGVidWciDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVElNRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVElNRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9USU1FUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5cc3JjXHBqbGliLXRlc3RcdWRwX2VjaG9fc3J2X2lvcXVldWUuYyINCisNCishSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUlfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVl9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFMxNikgUmVsZWFzZSINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1VEUF9FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0U9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFx1ZHBfZWNob19zcnZfc3luYy5jIg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSUkpIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSINCisNCitERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVYpIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIERlYnVnIg0KKw0KK0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1VEUF9FQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVURQX0VDPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9VRFBfRUM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fcG93ZXJwYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3g4Nl82NC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxzcmNccGpsaWItdGVzdFx1dGlsLmMiDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJX0ZQKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSV9GUCkgRGVidWciDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJSSkgRGVidWciDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorTk9ERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3Rlc3Rfd2luY2UgLSBXaW4zMiAoV0NFIE1JUFNJVikgRGVidWciDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTSVZfRlApIFJlbGVhc2UiDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQU0lWX0ZQKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBNSVBTMTYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgTUlQUzE2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCJcDQorCQ0KK05PREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl90ZXN0X3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VVElMXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpsaWItdGVzdFx0ZXN0LmgiXA0KKwkNCitOT0RFUF9DUFBfVVRJTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfdGVzdF93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1VUSUxfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtdjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3Bvd2VycGMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV94ODZfNjQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqbGliLXRlc3RcdGVzdC5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBFbmQgR3JvdXANCisjIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiDQorDQorIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIg0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXHNyY1xwamxpYi10ZXN0XHRlc3QuaCINCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgRW5kIEdyb3VwDQorIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiDQorDQorIyBQUk9QIERlZmF1bHRfRmlsdGVyICJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorIyBFbmQgR3JvdXANCisjIEVuZCBUYXJnZXQNCisjIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvd2luY2UtZXZjNC9wamxpYl93aW5jZS52Y3AgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC93aW5jZS1ldmM0L3BqbGliX3dpbmNlLnZjcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzljYWRlCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvYnVpbGQvd2luY2UtZXZjNC9wamxpYl93aW5jZS52Y3AKQEAgLTAsMCArMSwxNTM2MSBAQAorIyBNaWNyb3NvZnQgZU1iZWRkZWQgVmlzdWFsIFRvb2xzIFByb2plY3QgRmlsZSAtIE5hbWU9InBqbGliX3dpbmNlIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQorIyBNaWNyb3NvZnQgZU1iZWRkZWQgVmlzdWFsIFRvb2xzIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAyDQorIyAqKiBETyBOT1QgRURJVCAqKg0KKw0KKyMgVEFSR1RZUEUgIldpbjMyIChXQ0UgeDg2KSBTdGF0aWMgTGlicmFyeSIgMHg4MzA0DQorIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBBUk1WNCkgU3RhdGljIExpYnJhcnkiIDB4YTMwNA0KKyMgVEFSR1RZUEUgIldpbjMyIChXQ0UgQVJNVjRJKSBTdGF0aWMgTGlicmFyeSIgMHhhNTA0DQorIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBlbXVsYXRvcikgU3RhdGljIExpYnJhcnkiIDB4YTYwNA0KKyMgVEFSR1RZUEUgIldpbjMyIChXQ0UgQVJNVjRUKSBTdGF0aWMgTGlicmFyeSIgMHhhNDA0DQorDQorQ0ZHPXBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnDQorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJwamxpYl93aW5jZS52Y24iLg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQorIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCishTUVTU0FHRSANCishTUVTU0FHRSBOTUFLRSAvZiAicGpsaWJfd2luY2UudmNuIiBDRkc9InBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBlbXVsYXRvcikgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgZW11bGF0b3IpIFN0YXRpYyBMaWJyYXJ5IikNCishTUVTU0FHRSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIEFSTVY0SSkgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIEFSTVY0SSkgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBBUk1WNCkgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNVjQpIFN0YXRpYyBMaWJyYXJ5IikNCishTUVTU0FHRSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIEFSTVY0VCkgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIEFSTVY0VCkgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgeDg2KSBTdGF0aWMgTGlicmFyeSIpDQorIU1FU1NBR0UgInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgeDg2KSBTdGF0aWMgTGlicmFyeSIpDQorIU1FU1NBR0UgDQorDQorIyBCZWdpbiBQcm9qZWN0DQorIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCisjIFBST1AgU2NjX1Byb2pOYW1lICIiDQorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCisjIFBST1AgQVRMX1Byb2plY3QgMg0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl9lbXVsYXRvclJlbCINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl9lbXVsYXRvclJlbCINCisjIFBST1AgQkFTRSBDUFVfSUQgInszMkU1MjAwMy00MDNFLTQ0MkQtQkU0OC1ERTEwRjhDNjEzMUR9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfZW11bGF0b3JSZWwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX2VtdWxhdG9yUmVsIg0KKyMgUFJPUCBDUFVfSUQgInszMkU1MjAwMy00MDNFLTQ0MkQtQkU0OC1ERTEwRjhDNjEzMUR9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitDUFA9Y2wuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJfaTM4Nl8iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiX1g4Nl8iIC9EICJ4ODYiIC9EICJOREVCVUciIC9EICJfTElCIiAvWVggL0dzODE5MiAvR0YgL08yIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9JICIuLi8uLi9pbmNsdWRlIiAvRCAiTkRFQlVHIiAvRCAiX2kzODZfIiAvRCAiX1g4Nl8iIC9EICJ4ODYiIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIl9MSUIiIC9ZWCAvR3M4MTkyIC9HRiAvTzIgL2MNCisjIFNVQlRSQUNUIENQUCAvRnINCitMSUIzMj1saW5rLmV4ZSAtbGliDQorIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQorIyBBREQgTElCMzIgL25vbG9nbw0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX2VtdWxhdG9yRGJnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX2VtdWxhdG9yRGJnIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAiezMyRTUyMDAzLTQwM0UtNDQyRC1CRTQ4LURFMTBGOEM2MTMxRH0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl9lbXVsYXRvckRiZyINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfZW11bGF0b3JEYmciDQorIyBQUk9QIENQVV9JRCAiezMyRTUyMDAzLTQwM0UtNDQyRC1CRTQ4LURFMTBGOEM2MTMxRH0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK0NQUD1jbC5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9EICJERUJVRyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJfaTM4Nl8iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiX1g4Nl8iIC9EICJ4ODYiIC9EICJfTElCIiAvWVggL0dzODE5MiAvR0YgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkRFQlVHIiAvRCAiX2kzODZfIiAvRCAiX1g4Nl8iIC9EICJ4ODYiIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIl9MSUIiIC9ZWCAvR3M4MTkyIC9HRiAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9Gcg0KK0xJQjMyPWxpbmsuZXhlIC1saWINCisjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCisjIEFERCBMSUIzMiAvbm9sb2dvDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfQVJNVjRJUmVsIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX0FSTVY0SVJlbCINCisjIFBST1AgQkFTRSBDUFVfSUQgIntEQzcwRjQzMC1FNzhCLTQ5NEYtQTlENS02MkFEQzU2NDQzQjh9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfQVJNVjRJUmVsIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl9BUk1WNElSZWwiDQorIyBQUk9QIENQVV9JRCAie0RDNzBGNDMwLUU3OEItNDk0Ri1BOUQ1LTYyQURDNTY0NDNCOH0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK0NQUD1jbGFybS5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiQVJNVjRJIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIk5ERUJVRyIgL0QgIl9MSUIiIC9ZWCAvUVJhcmNoNFQgL1FSaW50ZXJ3b3JrLXJldHVybiAvTzIgL00kKENFQ3J0TVQpIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9JICIuLi8uLi9pbmNsdWRlIiAvRCAiQVJNVjRJIiAvRCAiTkRFQlVHIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIl9MSUIiIC9ZWCAvUVJhcmNoNFQgL1FSaW50ZXJ3b3JrLXJldHVybiAvTzIgL00kKENFQ3J0TVQpIC9jDQorIyBTVUJUUkFDVCBDUFAgL0ZyDQorTElCMzI9bGluay5leGUgLWxpYg0KKyMgQUREIEJBU0UgTElCMzIgL25vbG9nbw0KKyMgQUREIExJQjMyIC9ub2xvZ28NCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfQVJNVjRJRGJnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX0FSTVY0SURiZyINCisjIFBST1AgQkFTRSBDUFVfSUQgIntEQzcwRjQzMC1FNzhCLTQ5NEYtQTlENS02MkFEQzU2NDQzQjh9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfQVJNVjRJRGJnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl9BUk1WNElEYmciDQorIyBQUk9QIENQVV9JRCAie0RDNzBGNDMwLUU3OEItNDk0Ri1BOUQ1LTYyQURDNTY0NDNCOH0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK0NQUD1jbGFybS5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9EICJERUJVRyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIkFSTVY0SSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJfTElCIiAvWVggL1FSYXJjaDRUIC9RUmludGVyd29yay1yZXR1cm4gL00kKENFQ3J0TVREZWJ1ZykgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkRFQlVHIiAvRCAiQVJNVjRJIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIl9MSUIiIC9ZWCAvUVJhcmNoNFQgL1FSaW50ZXJ3b3JrLXJldHVybiAvTSQoQ0VDcnRNVERlYnVnKSAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9Gcg0KK0xJQjMyPWxpbmsuZXhlIC1saWINCisjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCisjIEFERCBMSUIzMiAvbm9sb2dvDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl9BUk1WNFJlbCINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl9BUk1WNFJlbCINCisjIFBST1AgQkFTRSBDUFVfSUQgIntFQ0JFQTQzRC1DRDdCLTQ4NTItQUQ1NS1ENDIyN0I1RDYyNEJ9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfQVJNVjRSZWwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX0FSTVY0UmVsIg0KKyMgUFJPUCBDUFVfSUQgIntFQ0JFQTQzRC1DRDdCLTQ4NTItQUQ1NS1ENDIyN0I1RDYyNEJ9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitDUFA9Y2xhcm0uZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EICJOREVCVUciIC9EICJBUk0iIC9EICJfQVJNXyIgL0QgIkFSTVY0IiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIl9MSUIiIC9ZWCAvTzIgL00kKENFQ3J0TVQpIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9PeHQgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJOREVCVUciIC9EICJBUk1WNCIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJfTElCIiAvWVggL00kKENFQ3J0TVQpIC9jDQorIyBTVUJUUkFDVCBDUFAgL0ZyDQorTElCMzI9bGluay5leGUgLWxpYg0KKyMgQUREIEJBU0UgTElCMzIgL25vbG9nbw0KKyMgQUREIExJQjMyIC9ub2xvZ28NCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl9BUk1WNERiZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl9BUk1WNERiZyINCisjIFBST1AgQkFTRSBDUFVfSUQgIntFQ0JFQTQzRC1DRDdCLTQ4NTItQUQ1NS1ENDIyN0I1RDYyNEJ9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfQVJNVjREYmciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX0FSTVY0RGJnIg0KKyMgUFJPUCBDUFVfSUQgIntFQ0JFQTQzRC1DRDdCLTQ4NTItQUQ1NS1ENDIyN0I1RDYyNEJ9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitDUFA9Y2xhcm0uZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvRCAiREVCVUciIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EICJBUk1WNCIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJfTElCIiAvWVggL00kKENFQ3J0TVREZWJ1ZykgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkRFQlVHIiAvRCAiQVJNVjQiIC9EICJBUk0iIC9EICJfQVJNXyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiX0xJQiIgL1lYIC9NJChDRUNydE1URGVidWcpIC9jDQorIyBTVUJUUkFDVCBDUFAgL0ZyDQorTElCMzI9bGluay5leGUgLWxpYg0KKyMgQUREIEJBU0UgTElCMzIgL25vbG9nbw0KKyMgQUREIExJQjMyIC9ub2xvZ28NCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl9BUk1WNFRSZWwiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfQVJNVjRUUmVsIg0KKyMgUFJPUCBCQVNFIENQVV9JRCAie0Y1MjMxNkE5LTNCN0MtNEZFNy1BNjdGLTY4MzUwQjQxMjQwRH0iDQorIyBQUk9QIEJBU0UgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBPdXRwdXRfRGlyICIuL291dHB1dC9wamxpYl9BUk1WNFRSZWwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX0FSTVY0VFJlbCINCisjIFBST1AgQ1BVX0lEICJ7RjUyMzE2QTktM0I3Qy00RkU3LUE2N0YtNjgzNTBCNDEyNDBEfSINCisjIFBST1AgUGxhdGZvcm1fSUQgIns4QTlBMkY4MC02ODg3LTExRDMtODQyRS0wMDUwMDQ4NDhDQkF9Ig0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorQ1BQPWNsdGh1bWIuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlRIVU1CIiAvRCAiX1RIVU1CXyIgL0QgIkFSTVY0VCIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJOREVCVUciIC9EICJfTElCIiAvWVggL1FSYXJjaDRUIC9RUmludGVyd29yay1yZXR1cm4gL08yIC9NJChDRUNydE1UKSAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIlRIVU1CIiAvRCAiX1RIVU1CXyIgL0QgIkFSTVY0VCIgL0QgIk5ERUJVRyIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJfTElCIiAvWVggL1FSYXJjaDRUIC9RUmludGVyd29yay1yZXR1cm4gL08yIC9NJChDRUNydE1UKSAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9Gcg0KK0xJQjMyPWxpbmsuZXhlIC1saWINCisjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCisjIEFERCBMSUIzMiAvbm9sb2dvDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX0FSTVY0VERiZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl9BUk1WNFREYmciDQorIyBQUk9QIEJBU0UgQ1BVX0lEICJ7RjUyMzE2QTktM0I3Qy00RkU3LUE2N0YtNjgzNTBCNDEyNDBEfSINCisjIFBST1AgQkFTRSBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX0FSTVY0VERiZyINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfQVJNVjRURGJnIg0KKyMgUFJPUCBDUFVfSUQgIntGNTIzMTZBOS0zQjdDLTRGRTctQTY3Ri02ODM1MEI0MTI0MER9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitDUFA9Y2x0aHVtYi5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvWmkgL09kIC9EICJERUJVRyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIlRIVU1CIiAvRCAiX1RIVU1CXyIgL0QgIkFSTVY0VCIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJfTElCIiAvWVggL1FSYXJjaDRUIC9RUmludGVyd29yay1yZXR1cm4gL00kKENFQ3J0TVREZWJ1ZykgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvSSAiLi4vLi4vaW5jbHVkZSIgL0QgIkRFQlVHIiAvRCAiVEhVTUIiIC9EICJfVEhVTUJfIiAvRCAiQVJNVjRUIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIl9MSUIiIC9ZWCAvUVJhcmNoNFQgL1FSaW50ZXJ3b3JrLXJldHVybiAvTSQoQ0VDcnRNVERlYnVnKSAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9Gcg0KK0xJQjMyPWxpbmsuZXhlIC1saWINCisjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCisjIEFERCBMSUIzMiAvbm9sb2dvDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfWDg2UmVsIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIi4vb3V0cHV0L3BqbGliX1g4NlJlbCINCisjIFBST1AgQkFTRSBDUFVfSUQgIntENjUxOEZGMy03MTBGLTExRDMtOTlGMi0wMDEwNUEwREYwOTl9Ig0KKyMgUFJPUCBCQVNFIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiLi9vdXRwdXQvcGpsaWJfWDg2UmVsIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl9YODZSZWwiDQorIyBQUk9QIENQVV9JRCAie0Q2NTE4RkYzLTcxMEYtMTFEMy05OUYyLTAwMTA1QTBERjA5OX0iDQorIyBQUk9QIFBsYXRmb3JtX0lEICJ7OEE5QTJGODAtNjg4Ny0xMUQzLTg0MkUtMDA1MDA0ODQ4Q0JBfSINCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KK0NQUD1jbC5leGUNCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgIl9pMzg2XyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJfWDg2XyIgL0QgIng4NiIgL0QgIk5ERUJVRyIgL0QgIl9MSUIiIC9ZWCAvR3M4MTkyIC9HRiAvTzIgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJOREVCVUciIC9EICJfaTM4Nl8iIC9EICJfWDg2XyIgL0QgIng4NiIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ2VQbGF0Zm9ybSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiX0xJQiIgL1lYIC9HczgxOTIgL0dGIC9PMiAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9Gcg0KK0xJQjMyPWxpbmsuZXhlIC1saWINCisjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCisjIEFERCBMSUIzMiAvbm9sb2dvDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX1g4NkRiZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICIuL291dHB1dC9wamxpYl9YODZEYmciDQorIyBQUk9QIEJBU0UgQ1BVX0lEICJ7RDY1MThGRjMtNzEwRi0xMUQzLTk5RjItMDAxMDVBMERGMDk5fSINCisjIFBST1AgQkFTRSBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIE91dHB1dF9EaXIgIi4vb3V0cHV0L3BqbGliX1g4NkRiZyINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi9vdXRwdXQvcGpsaWJfWDg2RGJnIg0KKyMgUFJPUCBDUFVfSUQgIntENjUxOEZGMy03MTBGLTExRDMtOTlGMi0wMDEwNUEwREYwOTl9Ig0KKyMgUFJPUCBQbGF0Zm9ybV9JRCAiezhBOUEyRjgwLTY4ODctMTFEMy04NDJFLTAwNTAwNDg0OENCQX0iDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitDUFA9Y2wuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL1ppIC9PZCAvRCAiREVCVUciIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENlUGxhdGZvcm0pIiAvRCAiX2kzODZfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIl9YODZfIiAvRCAieDg2IiAvRCAiX0xJQiIgL1lYIC9HczgxOTIgL0dGIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9aaSAvT2QgL0kgIi4uLy4uL2luY2x1ZGUiIC9EICJERUJVRyIgL0QgIl9pMzg2XyIgL0QgIl9YODZfIiAvRCAieDg2IiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDZVBsYXRmb3JtKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX1VOSUNPREUiIC9EICJfTElCIiAvWVggL0dzODE5MiAvR0YgL2MNCisjIFNVQlRSQUNUIENQUCAvRnINCitMSUIzMj1saW5rLmV4ZSAtbGliDQorIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQorIyBBREQgTElCMzIgL25vbG9nbw0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KKw0KKyFFTkRJRiANCisNCisjIEJlZ2luIFRhcmdldA0KKw0KKyMgTmFtZSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKyMgTmFtZSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisjIE5hbWUgInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorIyBOYW1lICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisjIE5hbWUgInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisjIE5hbWUgInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorIyBOYW1lICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKyMgTmFtZSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorIyBOYW1lICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKyMgTmFtZSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KKw0KKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxhY3RpdmVzb2NrLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9BQ1RJVj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0FDVElWPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQUNUSVY9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfQUNUSVY9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0FDVElWPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfQUNUSVY9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9BQ1RJVj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9BQ1RJVj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0FDVElWPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0FDVElWPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXGFkZHJfcmVzb2x2X3NvY2suYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX0FERFJfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9BRERSXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfQUREUl89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9BRERSXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfQUREUl89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9BRERSXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfQUREUl89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQUREUl89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9BRERSXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfQUREUl89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQUREUl89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0FERFJfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfQUREUl89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0FERFJfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9BRERSXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfQUREUl89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9BRERSXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXGFycmF5LmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9BUlJBWT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfQVJSQVk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0FSUkFZPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQVJSQVk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0FSUkFZPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfQVJSQVk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0FSUkFZPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0FSUkFZPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfQVJSQVk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0FSUkFZPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0FSUkFZPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9BUlJBWT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0FSUkFZPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9BUlJBWT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQVJSQVk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0FSUkFZPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfQVJSQVk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxjb25maWcuYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX0NPTkZJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0NPTkZJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0NPTkZJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9DT05GST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0NPTkZJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0NPTkZJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfQ09ORkk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQ09ORkk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0NPTkZJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0NPTkZJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9DT05GST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxjdHlwZS5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfQ1RZUEU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0NUWVBFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9DVFlQRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0NUWVBFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0NUWVBFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9DVFlQRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9DVFlQRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9DVFlQRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0NUWVBFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9DVFlQRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0NUWVBFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxlcnJuby5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfRVJSTk89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9FUlJOTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0VSUk5PPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpcZXhjZXB0LmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9FWENFUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0VYQ0VQPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfRVhDRVA9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxmaWZvYnVmLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJRk9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUZPQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklGT0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpcZmlsZV9hY2Nlc3Nfd2luMzIuYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklMRV89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUxFXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJTEVfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpcZmlsZV9pb193aW4zMi5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfRklMRV9JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJTEVfST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9GSUxFX0k9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0ZJTEVfST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9GSUxFX0k9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9GSUxFX0k9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx1bmljb2RlLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklMRV9JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0ZJTEVfST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfRklMRV9JPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXGd1aWQuYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX0dVSURfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9HVUlEXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfR1VJRF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9HVUlEXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfR1VJRF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9HVUlEXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfR1VJRF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfR1VJRF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9HVUlEXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfR1VJRF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfR1VJRF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0dVSURfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfR1VJRF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0dVSURfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9HVUlEXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfR1VJRF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9HVUlEXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXGd1aWRfc2ltcGxlLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9HVUlEX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9HVUlEX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0dVSURfUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0dVSURfUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0dVSURfUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0dVSURfUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0dVSURfUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9HVUlEX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9HVUlEX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9HVUlEX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfR1VJRF9TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfR1VJRF9TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfR1VJRF9TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfR1VJRF9TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9HVUlEX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9HVUlEX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9HVUlEX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxoYXNoLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9IQVNIXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0hBU0hfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfSEFTSF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxpb3F1ZXVlX2NvbW1vbl9hYnMuYw0KKyMgUFJPUCBFeGNsdWRlX0Zyb21fQnVpbGQgMQ0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpcaW9xdWV1ZV9jb21tb25fYWJzLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXGlvcXVldWVfc2VsZWN0LmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JT1FVRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5cc3JjXHBqXGlvcXVldWVfY29tbW9uX2Ficy5jIlwNCisJIi4uXC4uXHNyY1xwalxpb3F1ZXVlX2NvbW1vbl9hYnMuaCJcDQorCQ0KK05PREVQX0NQUF9JT1FVRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RVUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwalxpb3F1ZXVlX2NvbW1vbl9hYnMuYyJcDQorCSIuLlwuLlxzcmNccGpcaW9xdWV1ZV9jb21tb25fYWJzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUVVFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpcaW9xdWV1ZV9jb21tb25fYWJzLmMiXA0KKwkiLi5cLi5cc3JjXHBqXGlvcXVldWVfY29tbW9uX2Ficy5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUVVFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RVUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwalxpb3F1ZXVlX2NvbW1vbl9hYnMuYyJcDQorCSIuLlwuLlxzcmNccGpcaW9xdWV1ZV9jb21tb25fYWJzLmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RVUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSU9RVUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwalxpb3F1ZXVlX2NvbW1vbl9hYnMuYyJcDQorCSIuLlwuLlxzcmNccGpcaW9xdWV1ZV9jb21tb25fYWJzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0lPUVVFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpcaW9xdWV1ZV9jb21tb25fYWJzLmMiXA0KKwkiLi5cLi5cc3JjXHBqXGlvcXVldWVfY29tbW9uX2Ficy5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUVVFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUVVFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpcaW9xdWV1ZV9jb21tb25fYWJzLmMiXA0KKwkiLi5cLi5cc3JjXHBqXGlvcXVldWVfY29tbW9uX2Ficy5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUVVFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RVUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXHNyY1xwalxpb3F1ZXVlX2NvbW1vbl9hYnMuYyJcDQorCSIuLlwuLlxzcmNccGpcaW9xdWV1ZV9jb21tb25fYWJzLmgiXA0KKwkNCitOT0RFUF9DUFBfSU9RVUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0lPUVVFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxzcmNccGpcaW9xdWV1ZV9jb21tb25fYWJzLmMiXA0KKwkiLi5cLi5cc3JjXHBqXGlvcXVldWVfY29tbW9uX2Ficy5oIlwNCisJDQorTk9ERVBfQ1BQX0lPUVVFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfSU9RVUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqXGlvcXVldWVfY29tbW9uX2Ficy5jIlwNCisJIi4uXC4uXHNyY1xwalxpb3F1ZXVlX2NvbW1vbl9hYnMuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXGlwX2hlbHBlcl93aW4zMi5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSVBfSEU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KK05PREVQX0NQUF9JUF9IRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLlxwZXhwb3J0LmgiXA0KKwkiLlxwaGxwYXBpLmgiXA0KKwkiLlxwdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfSVBfSEU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorTk9ERVBfQ1BQX0lQX0hFPVwNCisJIi5ccGV4cG9ydC5oIlwNCisJIi5ccGhscGFwaS5oIlwNCisJIi5ccHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lQX0hFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCitOT0RFUF9DUFBfSVBfSEU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi5ccGV4cG9ydC5oIlwNCisJIi5ccGhscGFwaS5oIlwNCisJIi5ccHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9JUF9IRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorTk9ERVBfQ1BQX0lQX0hFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuXHBleHBvcnQuaCJcDQorCSIuXHBobHBhcGkuaCJcDQorCSIuXHB0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0lQX0hFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KK05PREVQX0NQUF9JUF9IRT1cDQorCSIuXHBleHBvcnQuaCJcDQorCSIuXHBobHBhcGkuaCJcDQorCSIuXHB0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9JUF9IRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorTk9ERVBfQ1BQX0lQX0hFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuXHBleHBvcnQuaCJcDQorCSIuXHBobHBhcGkuaCJcDQorCSIuXHB0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9JUF9IRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorTk9ERVBfQ1BQX0lQX0hFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuXHBleHBvcnQuaCJcDQorCSIuXHBobHBhcGkuaCJcDQorCSIuXHB0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfSVBfSEU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KK05PREVQX0NQUF9JUF9IRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLlxwZXhwb3J0LmgiXA0KKwkiLlxwaGxwYXBpLmgiXA0KKwkiLlxwdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfSVBfSEU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KK05PREVQX0NQUF9JUF9IRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLlxwZXhwb3J0LmgiXA0KKwkiLlxwaGxwYXBpLmgiXA0KKwkiLlxwdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0lQX0hFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorTk9ERVBfQ1BQX0lQX0hFPVwNCisJIi5ccGV4cG9ydC5oIlwNCisJIi5ccGhscGFwaS5oIlwNCisJIi5ccHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxsaXN0LmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0xJU1RfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MSVNUXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfTElTVF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpcbG9jay5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTE9DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0xPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9MT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX0xPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9MT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0xPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9MT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX0xPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9MT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfTE9DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9MT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfTE9DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX0xPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9MT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0xPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpcbG9nLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MT0dfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfTE9HX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0xPR19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTE9HX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0xPR19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfTE9HX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0xPR19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0xPR19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfTE9HX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0xPR19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0xPR19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9MT0dfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0xPR19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9MT0dfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTE9HX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX0xPR19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfTE9HX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxsb2dfd3JpdGVyX3N0ZG91dC5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfTE9HX1c9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRmaWxlaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX0xPR19XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGZpbGVpby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MT0dfVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGZpbGVpby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX0xPR19XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkZmlsZWlvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX0xPR19XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGZpbGVpby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9MT0dfVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGZpbGVpby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9MT0dfVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MT0dfVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGZpbGVpby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX0xPR19XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkZmlsZWlvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9MT0dfVz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGZpbGVpby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX0xPR19XPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRmaWxlaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxvc19jb3JlX3dpbjMyLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9PU19DTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX09TX0NPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9PU19DTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqXG9zX3J3bXV0ZXguYyJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfT1NfQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9PU19DTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX09TX0NPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfT1NfQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfT1NfQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwalxvc19yd211dGV4LmMiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX09TX0NPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfT1NfQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfT1NfQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9PU19DTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX09TX0NPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfT1NfQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX0NPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfT1NfQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9PU19DTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCSIuLlwuLlxzcmNccGpcb3NfcndtdXRleC5jIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpcb3NfZXJyb3Jfd2luMzIuYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX0VSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX09TX0VSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9PU19FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX0VSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX09TX0VSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfT1NfRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfT1NfRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfT1NfRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9PU19FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9PU19FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9PU19FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9PU19FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX09TX0VSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX09TX0VSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9PU19FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9PU19FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX09TX0VSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpcb3NfdGltZV93aW4zMi5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfT1NfVEk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9PU19UST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX1RJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX09TX1RJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9PU19UST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX09TX1RJPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfT1NfVEk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfT1NfVEk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfT1NfVEk9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9PU19UST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9PU19UST1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXG9zX3RpbWVzdGFtcF9jb21tb24uYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX1RJTT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfT1NfVElNPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9PU19USU09XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9PU19USU09XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfT1NfVElNPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9PU19USU09XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfT1NfVElNPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX1RJTT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX09TX1RJTT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfT1NfVElNPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfT1NfVElNPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxvc190aW1lc3RhbXBfd2luMzIuYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX1RJTUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9PU19USU1FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX1RJTUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfT1NfVElNRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfT1NfVElNRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9PU19USU1FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9PU19USU1FPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX1RJTUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfT1NfVElNRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX09TX1RJTUU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfT1NfVElNRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxwb29sLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpccG9vbF9idWYuYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfQj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9CPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MX0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9QT09MX0I9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxwb29sX2NhY2hpbmcuYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9QT09MX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUE9PTF9DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9QT09MX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxwb29sX3BvbGljeV9tYWxsb2MuYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJIi4uXC4uXHNyY1xwalxwb29sX3NpZ25hdHVyZS5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbWFsbG9jLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkiLi5cLi5cc3JjXHBqXHBvb2xfc2lnbmF0dXJlLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9QT09MX1A9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1BPT0xfUD1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtYWxsb2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfUE9PTF9QPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbWFsbG9jLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVORElGIA0KKw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzcmNccGpccmFuZC5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9SQU5EXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkFORF89XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1JBTkRfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXHJidHJlZS5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfUkJUUkU9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9SQlRSRT1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyINCisNCitERVBfQ1BQX1JCVFJFPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxzb2NrX2JzZC5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfU09DS189XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9TT0NLXz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXHNvY2tfY29tbW9uLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TT0NLX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc29ja2V0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfQz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNFQpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS19DPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TT0NLX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9TT0NLX0M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxzb2NrX3NlbGVjdC5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS19TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfU09DS19TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9TT0NLX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU09DS19TPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NPQ0tfUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NPQ0tfUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9TT0NLX1M9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzb2NrZXQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalxzdHJpbmcuYw0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgUmVsZWFzZSINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBEZWJ1ZyINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhY3RpdmVzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG1hdGguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgRGVidWciDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgRGVidWciDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiDQorDQorREVQX0NQUF9TVFJJTj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1NUUklOPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfU1RSSU49XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalx0aW1lci5jDQorDQorIUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIERlYnVnIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhZGRyX3Jlc29sdi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXJyYXkuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcaGlnaF9wcmVjaXNpb24uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0ZGFyZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjdHlwZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGV4Y2VwdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlmb2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9hY2Nlc3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfaW8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGd1aWQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGhhc2guaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlvcXVldWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGlwX2hlbHBlci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2cuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2FsdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmFuZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccmJ0cmVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzb2NrX3NlbGVjdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx1bmljb2RlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwamxpYi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIFJlbGVhc2UiDQorDQorREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFjdGl2ZXNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbWF0aC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0KSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsb2NrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1RJTUVSPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdGltZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfVElNRVI9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9USU1FUj1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cc3JjXHBqXHR5cGVzLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9UWVBFUz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIGVtdWxhdG9yKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RZUEVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRJKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVFlQRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNEkpIERlYnVnIg0KKw0KK0RFUF9DUFBfVFlQRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1RZUEVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2FybWNjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfY29kZXcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2NlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX213Y2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfZGFyd2lub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3J0ZW1zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zeW1iaWFuLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGVfc2FtcGxlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfVFlQRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1RZUEVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0VCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1RZUEVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1RZUEVTPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVFlQRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXG9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIg0KKw0KK0RFUF9DUFBfVFlQRVM9XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCisNCishRU5ESUYgDQorDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNyY1xwalx1bmljb2RlX3dpbjMyLmMNCisNCishSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgZW11bGF0b3IpIFJlbGVhc2UiDQorDQorREVQX0NQUF9VTklDTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9VTklDTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBlbXVsYXRvcikgRGVidWciDQorDQorREVQX0NQUF9VTklDTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfYXJtY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19jb2Rldy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXdjYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2F1dG8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19kYXJ3aW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcnRlbXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N5bWJpYW4uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2V0am1wLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RkYXJnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZV9zYW1wbGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZXhjZXB0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWZvYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2FjY2Vzcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZmlsZV9pby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcZ3VpZC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaGFzaC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaW9xdWV1ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcaXBfaGVscGVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxvZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYWx0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2J1Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYW5kLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxyYnRyZWUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2suaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHNvY2tfc2VsZWN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0aW1lci5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHVuaWNvZGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqbGliLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgUmVsZWFzZSINCisNCitERVBfQ1BQX1VOSUNPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1VOSUNPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIEFSTVY0SSkgRGVidWciDQorDQorREVQX0NQUF9VTklDTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGFzc2VydC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2djYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FscGhhLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9pMzg2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9tNjhrLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9zcGFyYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXhfa2VybmVsLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfcGFsbW9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3Vub3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc2l6ZV90LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxsaXN0X2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2wuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmdfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdHlwZXMuaCJcDQorCQ0KK05PREVQX0NQUF9VTklDTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2FybS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx2c3ByaW50Zi5oIlwNCisJDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBqbGliX3dpbmNlIC0gV2luMzIgKFdDRSBBUk1WNCkgUmVsZWFzZSINCisNCitERVBfQ1BQX1VOSUNPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19hcm1jYy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX2NvZGV3LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGNjX21zdmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19td2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hdXRvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfYXV0by5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfc3ltYmlhbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzZXRqbXAuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxtYXRoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjQpIERlYnVnIg0KKw0KK0RFUF9DUFBfVU5JQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfVU5JQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBSZWxlYXNlIg0KKw0KK0RFUF9DUFBfVU5JQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hbHBoYS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fbTY4ay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fc3BhcmMuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2xpbnV4X2tlcm5lbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3BhbG1vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbGlzdF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHR5cGVzLmgiXA0KKwkNCitOT0RFUF9DUFBfVU5JQ089XA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm0uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzcHJpbnRmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaCJcDQorCQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJwamxpYl93aW5jZSAtIFdpbjMyIChXQ0UgQVJNVjRUKSBEZWJ1ZyINCisNCitERVBfQ1BQX1VOSUNPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1VOSUNPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSINCisNCitERVBfQ1BQX1VOSUNPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYWxwaGEuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX2kzODYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX202OGsuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxtX3NwYXJjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19zdW5vcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzJfd2luY2UuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzaXplX3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxzdHJpbmcuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZ19pLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJDQorTk9ERVBfQ1BQX1VOSUNPPVwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1fYXJtLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcc3ByaW50Zi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHZzcHJpbnRmLmgiXA0KKwkNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAicGpsaWJfd2luY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciDQorDQorREVQX0NQUF9VTklDTz1cDQorCSIuLlwuLlxpbmNsdWRlXHBqXGFkZHJfcmVzb2x2LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxhcnJheS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcYXNzZXJ0LmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfZ2NjLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcY2NfbXN2Yy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGN0eXBlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcZXJybm8uaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxoaWdoX3ByZWNpc2lvbi5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX2Rhcndpbm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3NfbGludXguaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19saW51eF9rZXJuZWwuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19wYWxtb3MuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc19ydGVtcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3N1bm9zLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb21wYXRcb3Nfd2luMzIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxvc193aW4zMl93aW5jZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY29uZmlnLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxjb25maWdfc2l0ZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxleGNlcHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxndWlkLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxoYXNoLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcbG9nLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxvcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbC5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpccG9vbF9hbHQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalxwb29sX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJhbmQuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29jay5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaCJcDQorCSIuLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgiXA0KKwkiLi5cLi5caW5jbHVkZVxwalx0eXBlcy5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oIlwNCisJIi4uXC4uXGluY2x1ZGVccGpsaWIuaCJcDQorCQ0KKw0KKyFFTkRJRiANCisNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgRW5kIEdyb3VwDQorIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KKw0KKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCINCisjIEJlZ2luIEdyb3VwICJjb21wYXQiDQorDQorIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxhc3NlcnQuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19nY2MuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxjY19tc3ZjLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxjb21wYXRcY3R5cGUuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxlcnJuby5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY29tcGF0XGhpZ2hfcHJlY2lzaW9uLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxjb21wYXRcbV9hcm12NC5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1faTM4Ni5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG1hbGxvYy5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY29tcGF0XG9zX3dpbjMyX3dpbmNlLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxjb21wYXRccmFuZC5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNldGptcC5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNpemVfdC5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNvY2tldC5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY29tcGF0XHNwcmludGYuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRhcmcuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdGRmaWxlaW8uaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFxzdHJpbmcuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbXBhdFx0aW1lLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxjb21wYXRcdnNwcmludGYuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBFbmQgR3JvdXANCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcYWN0aXZlc29jay5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcYWRkcl9yZXNvbHYuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGFycmF5LmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxhc3NlcnQuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbmZpZy5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY29uZmlnX3NpdGUuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGNvbmZpZ19zaXRlX3NhbXBsZS5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcY3R5cGUuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGRveHlnZW4uaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGVycm5vLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxleGNlcHQuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGZpZm9idWYuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGZpbGVfYWNjZXNzLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxmaWxlX2lvLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxndWlkLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxoYXNoLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxpb3F1ZXVlLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxpcF9oZWxwZXIuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGxpc3QuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXGxpc3RfaS5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcbG9jay5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcbG9nLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxtYXRoLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxvcy5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpsaWIuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXHBvb2wuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXHBvb2xfYnVmLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalxwb29sX2kuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXHJhbmQuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXHJidHJlZS5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcc29jay5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcc29ja19zZWxlY3QuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXHN0cmluZy5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcc3RyaW5nX2kuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxpbmNsdWRlXHBqXHRpbWVyLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5caW5jbHVkZVxwalx0eXBlcy5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGluY2x1ZGVccGpcdW5pY29kZS5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBHcm91cA0KKyMgRW5kIFRhcmdldA0KKyMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC93aW5jZS1ldmM0L3BqbGliX3dpbmNlLnZjdyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2J1aWxkL3dpbmNlLWV2YzQvcGpsaWJfd2luY2UudmN3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYTM1YzMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9idWlsZC93aW5jZS1ldmM0L3BqbGliX3dpbmNlLnZjdwpAQCAtMCwwICsxLDQ0IEBACitNaWNyb3NvZnQgZU1iZWRkZWQgVmlzdWFsIFRvb2xzIFdvcmtzcGFjZSBGaWxlLCBGb3JtYXQgVmVyc2lvbiA0LjAwDQorIyBXQVJOSU5HOiBETyBOT1QgRURJVCBPUiBERUxFVEUgVEhJUyBXT1JLU1BBQ0UgRklMRSENCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorUHJvamVjdDogInBqbGliX3Rlc3Rfd2luY2UiPSIuXHBqbGliX3Rlc3Rfd2luY2UudmNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQorDQorUGFja2FnZT08NT4NCit7e3sNCit9fX0NCisNCitQYWNrYWdlPTw0Pg0KK3t7ew0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBwamxpYl93aW5jZQ0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorfX19DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KK1Byb2plY3Q6ICJwamxpYl93aW5jZSI9Ii5ccGpsaWJfd2luY2UudmNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQorDQorUGFja2FnZT08NT4NCit7e3sNCit9fX0NCisNCitQYWNrYWdlPTw0Pg0KK3t7ew0KK319fQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCitHbG9iYWw6DQorDQorUGFja2FnZT08NT4NCit7e3sNCit9fX0NCisNCitQYWNrYWdlPTwzPg0KK3t7ew0KK319fQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9kb2NzL2RveHlnZW4uY2ZnIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvZG9jcy9kb3h5Z2VuLmNmZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjhiN2IzCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvZG9jcy9kb3h5Z2VuLmNmZwpAQCAtMCwwICsxLDEwNTIgQEAKKyMgRG94eWZpbGUgMS4zLXJjMw0KKw0KKyMgVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgc2V0dGluZ3MgdG8gYmUgdXNlZCBieSB0aGUgZG9jdW1lbnRhdGlvbiBzeXN0ZW0NCisjIGRveHlnZW4gKHd3dy5kb3h5Z2VuLm9yZykgZm9yIGEgcHJvamVjdA0KKyMNCisjIEFsbCB0ZXh0IGFmdGVyIGEgaGFzaCAoIykgaXMgY29uc2lkZXJlZCBhIGNvbW1lbnQgYW5kIHdpbGwgYmUgaWdub3JlZA0KKyMgVGhlIGZvcm1hdCBpczoNCisjICAgICAgIFRBRyA9IHZhbHVlIFt2YWx1ZSwgLi4uXQ0KKyMgRm9yIGxpc3RzIGl0ZW1zIGNhbiBhbHNvIGJlIGFwcGVuZGVkIHVzaW5nOg0KKyMgICAgICAgVEFHICs9IHZhbHVlIFt2YWx1ZSwgLi4uXQ0KKyMgVmFsdWVzIHRoYXQgY29udGFpbiBzcGFjZXMgc2hvdWxkIGJlIHBsYWNlZCBiZXR3ZWVuIHF1b3RlcyAoIiAiKQ0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEdlbmVyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgVGhlIFBST0pFQ1RfTkFNRSB0YWcgaXMgYSBzaW5nbGUgd29yZCAob3IgYSBzZXF1ZW5jZSBvZiB3b3JkcyBzdXJyb3VuZGVkIA0KKyMgYnkgcXVvdGVzKSB0aGF0IHNob3VsZCBpZGVudGlmeSB0aGUgcHJvamVjdC4NCisNCitQUk9KRUNUX05BTUUgICAgICAgICAgID0gICJQSkxJQiBSZWZlcmVuY2UiDQorDQorIyBUaGUgUFJPSkVDVF9OVU1CRVIgdGFnIGNhbiBiZSB1c2VkIHRvIGVudGVyIGEgcHJvamVjdCBvciByZXZpc2lvbiBudW1iZXIuIA0KKyMgVGhpcyBjb3VsZCBiZSBoYW5keSBmb3IgYXJjaGl2aW5nIHRoZSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBvciANCisjIGlmIHNvbWUgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBpcyB1c2VkLg0KKw0KK1BST0pFQ1RfTlVNQkVSICAgICAgICAgPSAkKFBKX1ZFUlNJT04pDQorDQorIyBUaGUgT1VUUFVUX0RJUkVDVE9SWSB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIA0KKyMgYmFzZSBwYXRoIHdoZXJlIHRoZSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiB3aWxsIGJlIHB1dC4gDQorIyBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCwgaXQgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gDQorIyB3aGVyZSBkb3h5Z2VuIHdhcyBzdGFydGVkLiBJZiBsZWZ0IGJsYW5rIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQuDQorDQorT1VUUFVUX0RJUkVDVE9SWSAgICAgICA9IGRvY3MvJChQSl9WRVJTSU9OKQ0KKw0KKyMgVGhlIE9VVFBVVF9MQU5HVUFHRSB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBsYW5ndWFnZSBpbiB3aGljaCBhbGwgDQorIyBkb2N1bWVudGF0aW9uIGdlbmVyYXRlZCBieSBkb3h5Z2VuIGlzIHdyaXR0ZW4uIERveHlnZW4gd2lsbCB1c2UgdGhpcyANCisjIGluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGFsbCBjb25zdGFudCBvdXRwdXQgaW4gdGhlIHByb3BlciBsYW5ndWFnZS4gDQorIyBUaGUgZGVmYXVsdCBsYW5ndWFnZSBpcyBFbmdsaXNoLCBvdGhlciBzdXBwb3J0ZWQgbGFuZ3VhZ2VzIGFyZTogDQorIyBCcmF6aWxpYW4sIENhdGFsYW4sIENoaW5lc2UsIENoaW5lc2UtVHJhZGl0aW9uYWwsIENyb2F0aWFuLCBDemVjaCwgRGFuaXNoLCBEdXRjaCwgDQorIyBGaW5uaXNoLCBGcmVuY2gsIEdlcm1hbiwgR3JlZWssIEh1bmdhcmlhbiwgSXRhbGlhbiwgSmFwYW5lc2UsIEphcGFuZXNlLWVuIA0KKyMgKEphcGFuZXNlIHdpdGggZW5nbGlzaCBtZXNzYWdlcyksIEtvcmVhbiwgTm9yd2VnaWFuLCBQb2xpc2gsIFBvcnR1Z3Vlc2UsIA0KKyMgUm9tYW5pYW4sIFJ1c3NpYW4sIFNlcmJpYW4sIFNsb3ZhaywgU2xvdmVuZSwgU3BhbmlzaCwgU3dlZGlzaCBhbmQgVWtyYWluaWFuLg0KKw0KK09VVFBVVF9MQU5HVUFHRSAgICAgICAgPSBFbmdsaXNoDQorDQorIyBJZiB0aGUgRVhUUkFDVF9BTEwgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGFzc3VtZSBhbGwgZW50aXRpZXMgaW4gDQorIyBkb2N1bWVudGF0aW9uIGFyZSBkb2N1bWVudGVkLCBldmVuIGlmIG5vIGRvY3VtZW50YXRpb24gd2FzIGF2YWlsYWJsZS4gDQorIyBQcml2YXRlIGNsYXNzIG1lbWJlcnMgYW5kIHN0YXRpYyBmaWxlIG1lbWJlcnMgd2lsbCBiZSBoaWRkZW4gdW5sZXNzIA0KKyMgdGhlIEVYVFJBQ1RfUFJJVkFURSBhbmQgRVhUUkFDVF9TVEFUSUMgdGFncyBhcmUgc2V0IHRvIFlFUw0KKw0KK0VYVFJBQ1RfQUxMICAgICAgICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIEVYVFJBQ1RfUFJJVkFURSB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgcHJpdmF0ZSBtZW1iZXJzIG9mIGEgY2xhc3MgDQorIyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLg0KKw0KK0VYVFJBQ1RfUFJJVkFURSAgICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIEVYVFJBQ1RfU1RBVElDIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBzdGF0aWMgbWVtYmVycyBvZiBhIGZpbGUgDQorIyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLg0KKw0KK0VYVFJBQ1RfU1RBVElDICAgICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIEVYVFJBQ1RfTE9DQUxfQ0xBU1NFUyB0YWcgaXMgc2V0IHRvIFlFUyBjbGFzc2VzIChhbmQgc3RydWN0cykgDQorIyBkZWZpbmVkIGxvY2FsbHkgaW4gc291cmNlIGZpbGVzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uIA0KKyMgSWYgc2V0IHRvIE5PIG9ubHkgY2xhc3NlcyBkZWZpbmVkIGluIGhlYWRlciBmaWxlcyBhcmUgaW5jbHVkZWQuDQorDQorRVhUUkFDVF9MT0NBTF9DTEFTU0VTICA9IFlFUw0KKw0KKyMgSWYgdGhlIEhJREVfVU5ET0NfTUVNQkVSUyB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxsIGhpZGUgYWxsIA0KKyMgdW5kb2N1bWVudGVkIG1lbWJlcnMgb2YgZG9jdW1lbnRlZCBjbGFzc2VzLCBmaWxlcyBvciBuYW1lc3BhY2VzLiANCisjIElmIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIHRoZXNlIG1lbWJlcnMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgDQorIyB2YXJpb3VzIG92ZXJ2aWV3cywgYnV0IG5vIGRvY3VtZW50YXRpb24gc2VjdGlvbiBpcyBnZW5lcmF0ZWQuIA0KKyMgVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBpZiBFWFRSQUNUX0FMTCBpcyBlbmFibGVkLg0KKw0KK0hJREVfVU5ET0NfTUVNQkVSUyAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIEhJREVfVU5ET0NfQ0xBU1NFUyB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxsIGhpZGUgYWxsIA0KKyMgdW5kb2N1bWVudGVkIGNsYXNzZXMgdGhhdCBhcmUgbm9ybWFsbHkgdmlzaWJsZSBpbiB0aGUgY2xhc3MgaGllcmFyY2h5LiANCisjIElmIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIHRoZXNlIGNsYXNzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHZhcmlvdXMgDQorIyBvdmVydmlld3MuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QgaWYgRVhUUkFDVF9BTEwgaXMgZW5hYmxlZC4NCisNCitISURFX1VORE9DX0NMQVNTRVMgICAgID0gTk8NCisNCisjIElmIHRoZSBISURFX0ZSSUVORF9DT01QT1VORFMgdGFnIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCBoaWRlIGFsbCANCisjIGZyaWVuZCAoY2xhc3N8c3RydWN0fHVuaW9uKSBkZWNsYXJhdGlvbnMuIA0KKyMgSWYgc2V0IHRvIE5PICh0aGUgZGVmYXVsdCkgdGhlc2UgZGVjbGFyYXRpb25zIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIA0KKyMgZG9jdW1lbnRhdGlvbi4NCisNCitISURFX0ZSSUVORF9DT01QT1VORFMgID0gTk8NCisNCisjIElmIHRoZSBISURFX0lOX0JPRFlfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxsIGhpZGUgYW55IA0KKyMgZG9jdW1lbnRhdGlvbiBibG9ja3MgZm91bmQgaW5zaWRlIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24uIA0KKyMgSWYgc2V0IHRvIE5PICh0aGUgZGVmYXVsdCkgdGhlc2UgYmxvY2tzIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIA0KKyMgZnVuY3Rpb24ncyBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIGJsb2NrLg0KKw0KK0hJREVfSU5fQk9EWV9ET0NTICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIEJSSUVGX01FTUJFUl9ERVNDIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIA0KKyMgaW5jbHVkZSBicmllZiBtZW1iZXIgZGVzY3JpcHRpb25zIGFmdGVyIHRoZSBtZW1iZXJzIHRoYXQgYXJlIGxpc3RlZCBpbiANCisjIHRoZSBmaWxlIGFuZCBjbGFzcyBkb2N1bWVudGF0aW9uIChzaW1pbGFyIHRvIEphdmFEb2MpLiANCisjIFNldCB0byBOTyB0byBkaXNhYmxlIHRoaXMuDQorDQorQlJJRUZfTUVNQkVSX0RFU0MgICAgICA9IFlFUw0KKw0KKyMgSWYgdGhlIFJFUEVBVF9CUklFRiB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIERveHlnZW4gd2lsbCBwcmVwZW5kIA0KKyMgdGhlIGJyaWVmIGRlc2NyaXB0aW9uIG9mIGEgbWVtYmVyIG9yIGZ1bmN0aW9uIGJlZm9yZSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uIA0KKyMgTm90ZTogaWYgYm90aCBISURFX1VORE9DX01FTUJFUlMgYW5kIEJSSUVGX01FTUJFUl9ERVNDIGFyZSBzZXQgdG8gTk8sIHRoZSANCisjIGJyaWVmIGRlc2NyaXB0aW9ucyB3aWxsIGJlIGNvbXBsZXRlbHkgc3VwcHJlc3NlZC4NCisNCitSRVBFQVRfQlJJRUYgICAgICAgICAgID0gWUVTDQorDQorIyBJZiB0aGUgQUxXQVlTX0RFVEFJTEVEX1NFQyBhbmQgUkVQRUFUX0JSSUVGIHRhZ3MgYXJlIGJvdGggc2V0IHRvIFlFUyB0aGVuIA0KKyMgRG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZGV0YWlsZWQgc2VjdGlvbiBldmVuIGlmIHRoZXJlIGlzIG9ubHkgYSBicmllZiANCisjIGRlc2NyaXB0aW9uLg0KKw0KK0FMV0FZU19ERVRBSUxFRF9TRUMgICAgPSBOTw0KKw0KKyMgSWYgdGhlIElOTElORV9JTkhFUklURURfTUVNQiB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIHNob3cgYWxsIGluaGVyaXRlZCANCisjIG1lbWJlcnMgb2YgYSBjbGFzcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGNsYXNzIGFzIGlmIHRob3NlIG1lbWJlcnMgd2VyZSANCisjIG9yZGluYXJ5IGNsYXNzIG1lbWJlcnMuIENvbnN0cnVjdG9ycywgZGVzdHJ1Y3RvcnMgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3JzIG9mIA0KKyMgdGhlIGJhc2UgY2xhc3NlcyB3aWxsIG5vdCBiZSBzaG93bi4NCisNCitJTkxJTkVfSU5IRVJJVEVEX01FTUIgID0gTk8NCisNCisjIElmIHRoZSBGVUxMX1BBVEhfTkFNRVMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIHdpbGwgcHJlcGVuZCB0aGUgZnVsbCANCisjIHBhdGggYmVmb3JlIGZpbGVzIG5hbWUgaW4gdGhlIGZpbGUgbGlzdCBhbmQgaW4gdGhlIGhlYWRlciBmaWxlcy4gSWYgc2V0IA0KKyMgdG8gTk8gdGhlIHNob3J0ZXN0IHBhdGggdGhhdCBtYWtlcyB0aGUgZmlsZSBuYW1lIHVuaXF1ZSB3aWxsIGJlIHVzZWQuDQorDQorRlVMTF9QQVRIX05BTUVTICAgICAgICA9IE5PDQorDQorIyBJZiB0aGUgRlVMTF9QQVRIX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gdGhlIFNUUklQX0ZST01fUEFUSCB0YWcgDQorIyBjYW4gYmUgdXNlZCB0byBzdHJpcCBhIHVzZXIgZGVmaW5lZCBwYXJ0IG9mIHRoZSBwYXRoLiBTdHJpcHBpbmcgaXMgDQorIyBvbmx5IGRvbmUgaWYgb25lIG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5ncyBtYXRjaGVzIHRoZSBsZWZ0LWhhbmQgcGFydCBvZiANCisjIHRoZSBwYXRoLiBJdCBpcyBhbGxvd2VkIHRvIHVzZSByZWxhdGl2ZSBwYXRocyBpbiB0aGUgYXJndW1lbnQgbGlzdC4NCisNCitTVFJJUF9GUk9NX1BBVEggICAgICAgID0gImM6XHByb2plY3RccGpwcm9qZWN0Ig0KKw0KKyMgVGhlIElOVEVSTkFMX0RPQ1MgdGFnIGRldGVybWluZXMgaWYgZG9jdW1lbnRhdGlvbiANCisjIHRoYXQgaXMgdHlwZWQgYWZ0ZXIgYSBcaW50ZXJuYWwgY29tbWFuZCBpcyBpbmNsdWRlZC4gSWYgdGhlIHRhZyBpcyBzZXQgDQorIyB0byBOTyAodGhlIGRlZmF1bHQpIHRoZW4gdGhlIGRvY3VtZW50YXRpb24gd2lsbCBiZSBleGNsdWRlZC4gDQorIyBTZXQgaXQgdG8gWUVTIHRvIGluY2x1ZGUgdGhlIGludGVybmFsIGRvY3VtZW50YXRpb24uDQorDQorSU5URVJOQUxfRE9DUyAgICAgICAgICA9IE5PDQorDQorIyBJZiB0aGUgQ0FTRV9TRU5TRV9OQU1FUyB0YWcgaXMgc2V0IHRvIE5PIHRoZW4gRG94eWdlbiB3aWxsIG9ubHkgZ2VuZXJhdGUgDQorIyBmaWxlIG5hbWVzIGluIGxvd2VyIGNhc2UgbGV0dGVycy4gSWYgc2V0IHRvIFlFUyB1cHBlciBjYXNlIGxldHRlcnMgYXJlIGFsc28gDQorIyBhbGxvd2VkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSBjbGFzc2VzIG9yIGZpbGVzIHdob3NlIG5hbWVzIG9ubHkgZGlmZmVyIA0KKyMgaW4gY2FzZSBhbmQgaWYgeW91ciBmaWxlIHN5c3RlbSBzdXBwb3J0cyBjYXNlIHNlbnNpdGl2ZSBmaWxlIG5hbWVzLiBXaW5kb3dzIA0KKyMgdXNlcnMgYXJlIGFkdmljZWQgdG8gc2V0IHRoaXMgb3B0aW9uIHRvIE5PLg0KKw0KK0NBU0VfU0VOU0VfTkFNRVMgICAgICAgPSBZRVMNCisNCisjIElmIHRoZSBTSE9SVF9OQU1FUyB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGdlbmVyYXRlIG11Y2ggc2hvcnRlciANCisjIChidXQgbGVzcyByZWFkYWJsZSkgZmlsZSBuYW1lcy4gVGhpcyBjYW4gYmUgdXNlZnVsIGlzIHlvdXIgZmlsZSBzeXN0ZW1zIA0KKyMgZG9lc24ndCBzdXBwb3J0IGxvbmcgbmFtZXMgbGlrZSBvbiBET1MsIE1hYywgb3IgQ0QtUk9NLg0KKw0KK1NIT1JUX05BTUVTICAgICAgICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIEhJREVfU0NPUEVfTkFNRVMgdGFnIGlzIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIHRoZW4gRG94eWdlbiANCisjIHdpbGwgc2hvdyBtZW1iZXJzIHdpdGggdGhlaXIgZnVsbCBjbGFzcyBhbmQgbmFtZXNwYWNlIHNjb3BlcyBpbiB0aGUgDQorIyBkb2N1bWVudGF0aW9uLiBJZiBzZXQgdG8gWUVTIHRoZSBzY29wZSB3aWxsIGJlIGhpZGRlbi4NCisNCitISURFX1NDT1BFX05BTUVTICAgICAgID0gTk8NCisNCisjIElmIHRoZSBWRVJCQVRJTV9IRUFERVJTIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgdGhlbiBEb3h5Z2VuIA0KKyMgd2lsbCBnZW5lcmF0ZSBhIHZlcmJhdGltIGNvcHkgb2YgdGhlIGhlYWRlciBmaWxlIGZvciBlYWNoIGNsYXNzIGZvciANCisjIHdoaWNoIGFuIGluY2x1ZGUgaXMgc3BlY2lmaWVkLiBTZXQgdG8gTk8gdG8gZGlzYWJsZSB0aGlzLg0KKw0KK1ZFUkJBVElNX0hFQURFUlMgICAgICAgPSBZRVMNCisNCisjIElmIHRoZSBTSE9XX0lOQ0xVREVfRklMRVMgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSB0aGVuIERveHlnZW4gDQorIyB3aWxsIHB1dCBsaXN0IG9mIHRoZSBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBieSBhIGZpbGUgaW4gdGhlIGRvY3VtZW50YXRpb24gDQorIyBvZiB0aGF0IGZpbGUuDQorDQorU0hPV19JTkNMVURFX0ZJTEVTICAgICA9IE5PDQorDQorIyBJZiB0aGUgSkFWQURPQ19BVVRPQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIA0KKyMgd2lsbCBpbnRlcnByZXQgdGhlIGZpcnN0IGxpbmUgKHVudGlsIHRoZSBmaXJzdCBkb3QpIG9mIGEgSmF2YURvYy1zdHlsZSANCisjIGNvbW1lbnQgYXMgdGhlIGJyaWVmIGRlc2NyaXB0aW9uLiBJZiBzZXQgdG8gTk8sIHRoZSBKYXZhRG9jIA0KKyMgY29tbWVudHMgIHdpbGwgYmVoYXZlIGp1c3QgbGlrZSB0aGUgUXQtc3R5bGUgY29tbWVudHMgKHRodXMgcmVxdWlyaW5nIGFuIA0KKyMgZXhwbGljdCBAYnJpZWYgY29tbWFuZCBmb3IgYSBicmllZiBkZXNjcmlwdGlvbi4NCisNCitKQVZBRE9DX0FVVE9CUklFRiAgICAgID0gTk8NCisNCisjIFRoZSBNVUxUSUxJTkVfQ1BQX0lTX0JSSUVGIHRhZyBjYW4gYmUgc2V0IHRvIFlFUyB0byBtYWtlIERveHlnZW4gDQorIyB0cmVhdCBhIG11bHRpLWxpbmUgQysrIHNwZWNpYWwgY29tbWVudCBibG9jayAoaS5lLiBhIGJsb2NrIG9mIC8vISBvciAvLy8gDQorIyBjb21tZW50cykgYXMgYSBicmllZiBkZXNjcmlwdGlvbi4gVGhpcyB1c2VkIHRvIGJlIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4gDQorIyBUaGUgbmV3IGRlZmF1bHQgaXMgdG8gdHJlYXQgYSBtdWx0aS1saW5lIEMrKyBjb21tZW50IGJsb2NrIGFzIGEgZGV0YWlsZWQgDQorIyBkZXNjcmlwdGlvbi4gU2V0IHRoaXMgdGFnIHRvIFlFUyBpZiB5b3UgcHJlZmVyIHRoZSBvbGQgYmVoYXZpb3VyIGluc3RlYWQuDQorDQorTVVMVElMSU5FX0NQUF9JU19CUklFRiA9IE5PDQorDQorIyBJZiB0aGUgREVUQUlMU19BVF9UT1AgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIA0KKyMgd2lsbCBvdXRwdXQgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG5lYXIgdGhlIHRvcCwgbGlrZSBKYXZhRG9jLg0KKyMgSWYgc2V0IHRvIE5PLCB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gYXBwZWFycyBhZnRlciB0aGUgbWVtYmVyIA0KKyMgZG9jdW1lbnRhdGlvbi4NCisNCitERVRBSUxTX0FUX1RPUCAgICAgICAgID0gWUVTDQorDQorIyBJZiB0aGUgSU5IRVJJVF9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgdGhlbiBhbiB1bmRvY3VtZW50ZWQgDQorIyBtZW1iZXIgaW5oZXJpdHMgdGhlIGRvY3VtZW50YXRpb24gZnJvbSBhbnkgZG9jdW1lbnRlZCBtZW1iZXIgdGhhdCBpdCANCisjIHJlaW1wbGVtZW50cy4NCisNCitJTkhFUklUX0RPQ1MgICAgICAgICAgID0gWUVTDQorDQorIyBJZiB0aGUgSU5MSU5FX0lORk8gdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSB0aGVuIGEgdGFnIFtpbmxpbmVdIA0KKyMgaXMgaW5zZXJ0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIGlubGluZSBtZW1iZXJzLg0KKw0KK0lOTElORV9JTkZPICAgICAgICAgICAgPSBZRVMNCisNCisjIElmIHRoZSBTT1JUX01FTUJFUl9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgdGhlbiBkb3h5Z2VuIA0KKyMgd2lsbCBzb3J0IHRoZSAoZGV0YWlsZWQpIGRvY3VtZW50YXRpb24gb2YgZmlsZSBhbmQgY2xhc3MgbWVtYmVycyANCisjIGFscGhhYmV0aWNhbGx5IGJ5IG1lbWJlciBuYW1lLiBJZiBzZXQgdG8gTk8gdGhlIG1lbWJlcnMgd2lsbCBhcHBlYXIgaW4gDQorIyBkZWNsYXJhdGlvbiBvcmRlci4NCisNCitTT1JUX01FTUJFUl9ET0NTICAgICAgID0gWUVTDQorDQorIyBJZiBtZW1iZXIgZ3JvdXBpbmcgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIERJU1RSSUJVVEVfR1JPVVBfRE9DIA0KKyMgdGFnIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdlbiB3aWxsIHJldXNlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBmaXJzdCANCisjIG1lbWJlciBpbiB0aGUgZ3JvdXAgKGlmIGFueSkgZm9yIHRoZSBvdGhlciBtZW1iZXJzIG9mIHRoZSBncm91cC4gQnkgZGVmYXVsdCANCisjIGFsbCBtZW1iZXJzIG9mIGEgZ3JvdXAgbXVzdCBiZSBkb2N1bWVudGVkIGV4cGxpY2l0bHkuDQorDQorRElTVFJJQlVURV9HUk9VUF9ET0MgICA9IE5PDQorDQorIyBUaGUgVEFCX1NJWkUgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbnVtYmVyIG9mIHNwYWNlcyBpbiBhIHRhYi4gDQorIyBEb3h5Z2VuIHVzZXMgdGhpcyB2YWx1ZSB0byByZXBsYWNlIHRhYnMgYnkgc3BhY2VzIGluIGNvZGUgZnJhZ21lbnRzLg0KKw0KK1RBQl9TSVpFICAgICAgICAgICAgICAgPSA4DQorDQorIyBUaGUgR0VORVJBVEVfVE9ET0xJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoWUVTKSBvciANCisjIGRpc2FibGUgKE5PKSB0aGUgdG9kbyBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFx0b2RvIA0KKyMgY29tbWFuZHMgaW4gdGhlIGRvY3VtZW50YXRpb24uDQorDQorR0VORVJBVEVfVE9ET0xJU1QgICAgICA9IFlFUw0KKw0KKyMgVGhlIEdFTkVSQVRFX1RFU1RMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKFlFUykgb3IgDQorIyBkaXNhYmxlIChOTykgdGhlIHRlc3QgbGlzdC4gVGhpcyBsaXN0IGlzIGNyZWF0ZWQgYnkgcHV0dGluZyBcdGVzdCANCisjIGNvbW1hbmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLg0KKw0KK0dFTkVSQVRFX1RFU1RMSVNUICAgICAgPSBZRVMNCisNCisjIFRoZSBHRU5FUkFURV9CVUdMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKFlFUykgb3IgDQorIyBkaXNhYmxlIChOTykgdGhlIGJ1ZyBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFxidWcgDQorIyBjb21tYW5kcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4NCisNCitHRU5FUkFURV9CVUdMSVNUICAgICAgID0gWUVTDQorDQorIyBUaGUgR0VORVJBVEVfREVQUkVDQVRFRExJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoWUVTKSBvciANCisjIGRpc2FibGUgKE5PKSB0aGUgZGVwcmVjYXRlZCBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIA0KKyMgXGRlcHJlY2F0ZWQgY29tbWFuZHMgaW4gdGhlIGRvY3VtZW50YXRpb24uDQorDQorR0VORVJBVEVfREVQUkVDQVRFRExJU1Q9IFlFUw0KKw0KKyMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIG51bWJlciBvZiBhbGlhc2VzIHRoYXQgYWN0cyANCisjIGFzIGNvbW1hbmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLiBBbiBhbGlhcyBoYXMgdGhlIGZvcm0gIm5hbWU9dmFsdWUiLiANCisjIEZvciBleGFtcGxlIGFkZGluZyAic2lkZWVmZmVjdD1ccGFyIFNpZGUgRWZmZWN0czpcbiIgd2lsbCBhbGxvdyB5b3UgdG8gDQorIyBwdXQgdGhlIGNvbW1hbmQgXHNpZGVlZmZlY3QgKG9yIEBzaWRlZWZmZWN0KSBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgd2hpY2ggDQorIyB3aWxsIHJlc3VsdCBpbiBhIHVzZXIgZGVmaW5lZCBwYXJhZ3JhcGggd2l0aCBoZWFkaW5nICJTaWRlIEVmZmVjdHM6Ii4gDQorIyBZb3UgY2FuIHB1dCBcbidzIGluIHRoZSB2YWx1ZSBwYXJ0IG9mIGFuIGFsaWFzIHRvIGluc2VydCBuZXdsaW5lcy4NCisNCitBTElBU0VTICAgICAgICAgICAgICAgID0gDQorDQorIyBUaGUgRU5BQkxFRF9TRUNUSU9OUyB0YWcgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIGNvbmRpdGlvbmFsIA0KKyMgZG9jdW1lbnRhdGlvbiBzZWN0aW9ucywgbWFya2VkIGJ5IFxpZiBzZWN0aW9ubmFtZSAuLi4gXGVuZGlmLg0KKw0KK0VOQUJMRURfU0VDVElPTlMgICAgICAgPSANCisNCisjIFRoZSBNQVhfSU5JVElBTElaRVJfTElORVMgdGFnIGRldGVybWluZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIA0KKyMgdGhlIGluaXRpYWwgdmFsdWUgb2YgYSB2YXJpYWJsZSBvciBkZWZpbmUgY29uc2lzdCBvZiBmb3IgaXQgdG8gYXBwZWFyIGluIA0KKyMgdGhlIGRvY3VtZW50YXRpb24uIElmIHRoZSBpbml0aWFsaXplciBjb25zaXN0cyBvZiBtb3JlIGxpbmVzIHRoYW4gc3BlY2lmaWVkIA0KKyMgaGVyZSBpdCB3aWxsIGJlIGhpZGRlbi4gVXNlIGEgdmFsdWUgb2YgMCB0byBoaWRlIGluaXRpYWxpemVycyBjb21wbGV0ZWx5LiANCisjIFRoZSBhcHBlYXJhbmNlIG9mIHRoZSBpbml0aWFsaXplciBvZiBpbmRpdmlkdWFsIHZhcmlhYmxlcyBhbmQgZGVmaW5lcyBpbiB0aGUgDQorIyBkb2N1bWVudGF0aW9uIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIFxzaG93aW5pdGlhbGl6ZXIgb3IgXGhpZGVpbml0aWFsaXplciANCisjIGNvbW1hbmQgaW4gdGhlIGRvY3VtZW50YXRpb24gcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuDQorDQorTUFYX0lOSVRJQUxJWkVSX0xJTkVTICA9IDMwDQorDQorIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9GT1JfQyB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBDIHNvdXJjZXMgDQorIyBvbmx5LiBEb3h5Z2VuIHdpbGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyBtb3JlIHRhaWxvcmVkIGZvciBDLiANCisjIEZvciBpbnN0YW5jZSBzb21lIG9mIHRoZSBuYW1lcyB0aGF0IGFyZSB1c2VkIHdpbGwgYmUgZGlmZmVyZW50LiBUaGUgbGlzdCANCisjIG9mIGFsbCBtZW1iZXJzIHdpbGwgYmUgb21pdHRlZCwgZXRjLg0KKw0KK09QVElNSVpFX09VVFBVVF9GT1JfQyAgPSBZRVMNCisNCisjIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVUX0pBVkEgdGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2YgSmF2YSBzb3VyY2VzIA0KKyMgb25seS4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgbW9yZSB0YWlsb3JlZCBmb3IgSmF2YS4gDQorIyBGb3IgaW5zdGFuY2UgbmFtZXNwYWNlcyB3aWxsIGJlIHByZXNlbnRlZCBhcyBwYWNrYWdlcywgcXVhbGlmaWVkIHNjb3BlcyANCisjIHdpbGwgbG9vayBkaWZmZXJlbnQsIGV0Yy4NCisNCitPUFRJTUlaRV9PVVRQVVRfSkFWQSAgID0gTk8NCisNCisjIFNldCB0aGUgU0hPV19VU0VEX0ZJTEVTIHRhZyB0byBOTyB0byBkaXNhYmxlIHRoZSBsaXN0IG9mIGZpbGVzIGdlbmVyYXRlZCANCisjIGF0IHRoZSBib3R0b20gb2YgdGhlIGRvY3VtZW50YXRpb24gb2YgY2xhc3NlcyBhbmQgc3RydWN0cy4gSWYgc2V0IHRvIFlFUyB0aGUgDQorIyBsaXN0IHdpbGwgbWVudGlvbiB0aGUgZmlsZXMgdGhhdCB3ZXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGRvY3VtZW50YXRpb24uDQorDQorU0hPV19VU0VEX0ZJTEVTICAgICAgICA9IFlFUw0KK1RZUEVERUZfSElERVNfU1RSVUNUCT0gWUVTDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gd2FybmluZyBhbmQgcHJvZ3Jlc3MgbWVzc2FnZXMNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBUaGUgUVVJRVQgdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4gb24vb2ZmIHRoZSBtZXNzYWdlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgDQorIyBieSBkb3h5Z2VuLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIFlFUyBhbmQgTk8uIElmIGxlZnQgYmxhbmsgTk8gaXMgdXNlZC4NCisNCitRVUlFVCAgICAgICAgICAgICAgICAgID0gTk8NCisNCisjIFRoZSBXQVJOSU5HUyB0YWcgY2FuIGJlIHVzZWQgdG8gdHVybiBvbi9vZmYgdGhlIHdhcm5pbmcgbWVzc2FnZXMgdGhhdCBhcmUgDQorIyBnZW5lcmF0ZWQgYnkgZG94eWdlbi4gUG9zc2libGUgdmFsdWVzIGFyZSBZRVMgYW5kIE5PLiBJZiBsZWZ0IGJsYW5rIA0KKyMgTk8gaXMgdXNlZC4NCisNCitXQVJOSU5HUyAgICAgICAgICAgICAgID0gWUVTDQorDQorIyBJZiBXQVJOX0lGX1VORE9DVU1FTlRFRCBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSB3YXJuaW5ncyANCisjIGZvciB1bmRvY3VtZW50ZWQgbWVtYmVycy4gSWYgRVhUUkFDVF9BTEwgaXMgc2V0IHRvIFlFUyB0aGVuIHRoaXMgZmxhZyB3aWxsIA0KKyMgYXV0b21hdGljYWxseSBiZSBkaXNhYmxlZC4NCisNCitXQVJOX0lGX1VORE9DVU1FTlRFRCAgID0gWUVTDQorDQorIyBJZiBXQVJOX0lGX0RPQ19FUlJPUiBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgd2FybmluZ3MgZm9yIA0KKyMgcG90ZW50aWFsIGVycm9ycyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgc3VjaCBhcyBub3QgZG9jdW1lbnRpbmcgc29tZSANCisjIHBhcmFtZXRlcnMgaW4gYSBkb2N1bWVudGVkIGZ1bmN0aW9uLCBvciBkb2N1bWVudGluZyBwYXJhbWV0ZXJzIHRoYXQgDQorIyBkb24ndCBleGlzdCBvciB1c2luZyBtYXJrdXAgY29tbWFuZHMgd3JvbmdseS4NCisNCitXQVJOX0lGX0RPQ19FUlJPUiAgICAgID0gWUVTDQorDQorIyBUaGUgV0FSTl9GT1JNQVQgdGFnIGRldGVybWluZXMgdGhlIGZvcm1hdCBvZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IA0KKyMgZG94eWdlbiBjYW4gcHJvZHVjZS4gVGhlIHN0cmluZyBzaG91bGQgY29udGFpbiB0aGUgJGZpbGUsICRsaW5lLCBhbmQgJHRleHQgDQorIyB0YWdzLCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBmaWxlIGFuZCBsaW5lIG51bWJlciBmcm9tIHdoaWNoIHRoZSANCisjIHdhcm5pbmcgb3JpZ2luYXRlZCBhbmQgdGhlIHdhcm5pbmcgdGV4dC4NCisNCitXQVJOX0ZPUk1BVCAgICAgICAgICAgID0gIiRmaWxlOiRsaW5lOiAkdGV4dCINCisNCisjIFRoZSBXQVJOX0xPR0ZJTEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBmaWxlIHRvIHdoaWNoIHdhcm5pbmcgDQorIyBhbmQgZXJyb3IgbWVzc2FnZXMgc2hvdWxkIGJlIHdyaXR0ZW4uIElmIGxlZnQgYmxhbmsgdGhlIG91dHB1dCBpcyB3cml0dGVuIA0KKyMgdG8gc3RkZXJyLg0KKw0KK1dBUk5fTE9HRklMRSAgICAgICAgICAgPSANCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgaW5wdXQgZmlsZXMNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBUaGUgSU5QVVQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGVzIGFuZC9vciBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4gDQorIyBkb2N1bWVudGVkIHNvdXJjZSBmaWxlcy4gWW91IG1heSBlbnRlciBmaWxlIG5hbWVzIGxpa2UgIm15ZmlsZS5jcHAiIG9yIA0KKyMgZGlyZWN0b3JpZXMgbGlrZSAiL3Vzci9zcmMvbXlwcm9qZWN0Ii4gU2VwYXJhdGUgdGhlIGZpbGVzIG9yIGRpcmVjdG9yaWVzIA0KKyMgd2l0aCBzcGFjZXMuDQorDQorSU5QVVQgICAgICAgICAgICAgICAgICA9ICBpbmNsdWRlL3BqIHNyYy9wamxpYi1zYW1wbGVzIHNyYy9wamxpYi10ZXN0DQorDQorIyBJZiB0aGUgdmFsdWUgb2YgdGhlIElOUFVUIHRhZyBjb250YWlucyBkaXJlY3RvcmllcywgeW91IGNhbiB1c2UgdGhlIA0KKyMgRklMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB3aWxkY2FyZCBwYXR0ZXJuIChsaWtlICouY3BwIA0KKyMgYW5kICouaCkgdG8gZmlsdGVyIG91dCB0aGUgc291cmNlLWZpbGVzIGluIHRoZSBkaXJlY3Rvcmllcy4gSWYgbGVmdCANCisjIGJsYW5rIHRoZSBmb2xsb3dpbmcgcGF0dGVybnMgYXJlIHRlc3RlZDogDQorIyAqLmMgKi5jYyAqLmN4eCAqLmNwcCAqLmMrKyAqLmphdmEgKi5paSAqLml4eCAqLmlwcCAqLmkrKyAqLmlubCAqLmggKi5oaCAqLmh4eCAqLmhwcCANCisjICouaCsrICouaWRsICoub2RsDQorDQorRklMRV9QQVRURVJOUyAgICAgICAgICA9ICouaCAqLmMNCisNCisjIFRoZSBSRUNVUlNJVkUgdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4gc3BlY2lmeSB3aGV0aGVyIG9yIG5vdCBzdWJkaXJlY3RvcmllcyANCisjIHNob3VsZCBiZSBzZWFyY2hlZCBmb3IgaW5wdXQgZmlsZXMgYXMgd2VsbC4gUG9zc2libGUgdmFsdWVzIGFyZSBZRVMgYW5kIE5PLiANCisjIElmIGxlZnQgYmxhbmsgTk8gaXMgdXNlZC4NCisNCitSRUNVUlNJVkUgICAgICAgICAgICAgID0gWUVTDQorDQorIyBUaGUgRVhDTFVERSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBmaWxlcyBhbmQvb3IgZGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgDQorIyBleGNsdWRlZCBmcm9tIHRoZSBJTlBVVCBzb3VyY2UgZmlsZXMuIFRoaXMgd2F5IHlvdSBjYW4gZWFzaWx5IGV4Y2x1ZGUgYSANCisjIHN1YmRpcmVjdG9yeSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUgd2hvc2Ugcm9vdCBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgSU5QVVQgdGFnLg0KKw0KK0VYQ0xVREUgICAgICAgICAgICAgICAgPSANCisNCisjIFRoZSBFWENMVURFX1NZTUxJTktTIHRhZyBjYW4gYmUgdXNlZCBzZWxlY3Qgd2hldGhlciBvciBub3QgZmlsZXMgb3IgZGlyZWN0b3JpZXMgDQorIyB0aGF0IGFyZSBzeW1ib2xpYyBsaW5rcyAoYSBVbml4IGZpbGVzeXN0ZW0gZmVhdHVyZSkgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIGlucHV0Lg0KKw0KK0VYQ0xVREVfU1lNTElOS1MgICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIHZhbHVlIG9mIHRoZSBJTlBVVCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZSANCisjIEVYQ0xVREVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybnMgdG8gZXhjbHVkZSANCisjIGNlcnRhaW4gZmlsZXMgZnJvbSB0aG9zZSBkaXJlY3Rvcmllcy4NCisNCitFWENMVURFX1BBVFRFUk5TICAgICAgID0gIipfaS5oIiAiKi9jb21wYXQvKiIgIiovY29uZmlnX3NpdGUuaCINCisNCisjIFRoZSBFWEFNUExFX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZmlsZXMgb3IgDQorIyBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4gZXhhbXBsZSBjb2RlIGZyYWdtZW50cyB0aGF0IGFyZSBpbmNsdWRlZCAoc2VlIA0KKyMgdGhlIFxpbmNsdWRlIGNvbW1hbmQpLg0KKw0KK0VYQU1QTEVfUEFUSCAgICAgICAgICAgPSAuDQorDQorIyBJZiB0aGUgdmFsdWUgb2YgdGhlIEVYQU1QTEVfUEFUSCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZSANCisjIEVYQU1QTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybiAobGlrZSAqLmNwcCANCisjIGFuZCAqLmgpIHRvIGZpbHRlciBvdXQgdGhlIHNvdXJjZS1maWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuIElmIGxlZnQgDQorIyBibGFuayBhbGwgZmlsZXMgYXJlIGluY2x1ZGVkLg0KKw0KK0VYQU1QTEVfUEFUVEVSTlMgICAgICAgPSANCisNCisjIElmIHRoZSBFWEFNUExFX1JFQ1VSU0lWRSB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHN1YmRpcmVjdG9yaWVzIHdpbGwgYmUgDQorIyBzZWFyY2hlZCBmb3IgaW5wdXQgZmlsZXMgdG8gYmUgdXNlZCB3aXRoIHRoZSBcaW5jbHVkZSBvciBcZG9udGluY2x1ZGUgDQorIyBjb21tYW5kcyBpcnJlc3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9mIHRoZSBSRUNVUlNJVkUgdGFnLiANCisjIFBvc3NpYmxlIHZhbHVlcyBhcmUgWUVTIGFuZCBOTy4gSWYgbGVmdCBibGFuayBOTyBpcyB1c2VkLg0KKw0KK0VYQU1QTEVfUkVDVVJTSVZFICAgICAgPSBZRVMNCisNCisjIFRoZSBJTUFHRV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbGVzIG9yIA0KKyMgZGlyZWN0b3JpZXMgdGhhdCBjb250YWluIGltYWdlIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIChzZWUgDQorIyB0aGUgXGltYWdlIGNvbW1hbmQpLg0KKw0KK0lNQUdFX1BBVEggICAgICAgICAgICAgPSANCisNCisjIFRoZSBJTlBVVF9GSUxURVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcm9ncmFtIHRoYXQgZG94eWdlbiBzaG91bGQgDQorIyBpbnZva2UgdG8gZmlsdGVyIGZvciBlYWNoIGlucHV0IGZpbGUuIERveHlnZW4gd2lsbCBpbnZva2UgdGhlIGZpbHRlciBwcm9ncmFtIA0KKyMgYnkgZXhlY3V0aW5nICh2aWEgcG9wZW4oKSkgdGhlIGNvbW1hbmQgPGZpbHRlcj4gPGlucHV0LWZpbGU+LCB3aGVyZSA8ZmlsdGVyPiANCisjIGlzIHRoZSB2YWx1ZSBvZiB0aGUgSU5QVVRfRklMVEVSIHRhZywgYW5kIDxpbnB1dC1maWxlPiBpcyB0aGUgbmFtZSBvZiBhbiANCisjIGlucHV0IGZpbGUuIERveHlnZW4gd2lsbCB0aGVuIHVzZSB0aGUgb3V0cHV0IHRoYXQgdGhlIGZpbHRlciBwcm9ncmFtIHdyaXRlcyANCisjIHRvIHN0YW5kYXJkIG91dHB1dC4NCisNCitJTlBVVF9GSUxURVIgICAgICAgICAgID0gDQorDQorIyBJZiB0aGUgRklMVEVSX1NPVVJDRV9GSUxFUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIGlucHV0IGZpbHRlciAoaWYgc2V0IHVzaW5nIA0KKyMgSU5QVVRfRklMVEVSKSB3aWxsIGJlIHVzZWQgdG8gZmlsdGVyIHRoZSBpbnB1dCBmaWxlcyB3aGVuIHByb2R1Y2luZyBzb3VyY2UgDQorIyBmaWxlcyB0byBicm93c2UgKGkuZS4gd2hlbiBTT1VSQ0VfQlJPV1NFUiBpcyBzZXQgdG8gWUVTKS4NCisNCitGSUxURVJfU09VUkNFX0ZJTEVTICAgID0gTk8NCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBzb3VyY2UgYnJvd3NpbmcNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBJZiB0aGUgU09VUkNFX0JST1dTRVIgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBhIGxpc3Qgb2Ygc291cmNlIGZpbGVzIHdpbGwgDQorIyBiZSBnZW5lcmF0ZWQuIERvY3VtZW50ZWQgZW50aXRpZXMgd2lsbCBiZSBjcm9zcy1yZWZlcmVuY2VkIHdpdGggdGhlc2Ugc291cmNlcy4NCisNCitTT1VSQ0VfQlJPV1NFUiAgICAgICAgID0gTk8NCisNCisjIFNldHRpbmcgdGhlIElOTElORV9TT1VSQ0VTIHRhZyB0byBZRVMgd2lsbCBpbmNsdWRlIHRoZSBib2R5IA0KKyMgb2YgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudGF0aW9uLg0KKw0KK0lOTElORV9TT1VSQ0VTICAgICAgICAgPSBOTw0KKw0KKyMgU2V0dGluZyB0aGUgU1RSSVBfQ09ERV9DT01NRU5UUyB0YWcgdG8gWUVTICh0aGUgZGVmYXVsdCkgd2lsbCBpbnN0cnVjdCANCisjIGRveHlnZW4gdG8gaGlkZSBhbnkgc3BlY2lhbCBjb21tZW50IGJsb2NrcyBmcm9tIGdlbmVyYXRlZCBzb3VyY2UgY29kZSANCisjIGZyYWdtZW50cy4gTm9ybWFsIEMgYW5kIEMrKyBjb21tZW50cyB3aWxsIGFsd2F5cyByZW1haW4gdmlzaWJsZS4NCisNCitTVFJJUF9DT0RFX0NPTU1FTlRTICAgID0gWUVTDQorDQorIyBJZiB0aGUgUkVGRVJFTkNFRF9CWV9SRUxBVElPTiB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIA0KKyMgdGhlbiBmb3IgZWFjaCBkb2N1bWVudGVkIGZ1bmN0aW9uIGFsbCBkb2N1bWVudGVkIA0KKyMgZnVuY3Rpb25zIHJlZmVyZW5jaW5nIGl0IHdpbGwgYmUgbGlzdGVkLg0KKw0KK1JFRkVSRU5DRURfQllfUkVMQVRJT04gPSBZRVMNCisNCisjIElmIHRoZSBSRUZFUkVOQ0VTX1JFTEFUSU9OIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgDQorIyB0aGVuIGZvciBlYWNoIGRvY3VtZW50ZWQgZnVuY3Rpb24gYWxsIGRvY3VtZW50ZWQgZW50aXRpZXMgDQorIyBjYWxsZWQvdXNlZCBieSB0aGF0IGZ1bmN0aW9uIHdpbGwgYmUgbGlzdGVkLg0KKw0KK1JFRkVSRU5DRVNfUkVMQVRJT04gICAgPSBZRVMNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgYWxwaGFiZXRpY2FsIGNsYXNzIGluZGV4DQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgSWYgdGhlIEFMUEhBQkVUSUNBTF9JTkRFWCB0YWcgaXMgc2V0IHRvIFlFUywgYW4gYWxwaGFiZXRpY2FsIGluZGV4IA0KKyMgb2YgYWxsIGNvbXBvdW5kcyB3aWxsIGJlIGdlbmVyYXRlZC4gRW5hYmxlIHRoaXMgaWYgdGhlIHByb2plY3QgDQorIyBjb250YWlucyBhIGxvdCBvZiBjbGFzc2VzLCBzdHJ1Y3RzLCB1bmlvbnMgb3IgaW50ZXJmYWNlcy4NCisNCitBTFBIQUJFVElDQUxfSU5ERVggICAgID0gTk8NCisNCisjIElmIHRoZSBhbHBoYWJldGljYWwgaW5kZXggaXMgZW5hYmxlZCAoc2VlIEFMUEhBQkVUSUNBTF9JTkRFWCkgdGhlbiANCisjIHRoZSBDT0xTX0lOX0FMUEhBX0lOREVYIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY29sdW1ucyANCisjIGluIHdoaWNoIHRoaXMgbGlzdCB3aWxsIGJlIHNwbGl0IChjYW4gYmUgYSBudW1iZXIgaW4gdGhlIHJhbmdlIFsxLi4yMF0pDQorDQorQ09MU19JTl9BTFBIQV9JTkRFWCAgICA9IDUNCisNCisjIEluIGNhc2UgYWxsIGNsYXNzZXMgaW4gYSBwcm9qZWN0IHN0YXJ0IHdpdGggYSBjb21tb24gcHJlZml4LCBhbGwgDQorIyBjbGFzc2VzIHdpbGwgYmUgcHV0IHVuZGVyIHRoZSBzYW1lIGhlYWRlciBpbiB0aGUgYWxwaGFiZXRpY2FsIGluZGV4LiANCisjIFRoZSBJR05PUkVfUFJFRklYIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHByZWZpeGVzIHRoYXQgDQorIyBzaG91bGQgYmUgaWdub3JlZCB3aGlsZSBnZW5lcmF0aW5nIHRoZSBpbmRleCBoZWFkZXJzLg0KKw0KK0lHTk9SRV9QUkVGSVggICAgICAgICAgPSANCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgSFRNTCBvdXRwdXQNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBJZiB0aGUgR0VORVJBVEVfSFRNTCB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIERveHlnZW4gd2lsbCANCisjIGdlbmVyYXRlIEhUTUwgb3V0cHV0Lg0KKw0KK0dFTkVSQVRFX0hUTUwgICAgICAgICAgPSBZRVMNCisNCisjIFRoZSBIVE1MX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBIVE1MIGRvY3Mgd2lsbCBiZSBwdXQuIA0KKyMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSANCisjIHB1dCBpbiBmcm9udCBvZiBpdC4gSWYgbGVmdCBibGFuayBgaHRtbCcgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHBhdGguDQorDQorSFRNTF9PVVRQVVQgICAgICAgICAgICA9IGh0bWwNCisNCisjIFRoZSBIVE1MX0ZJTEVfRVhURU5TSU9OIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlIGV4dGVuc2lvbiBmb3IgDQorIyBlYWNoIGdlbmVyYXRlZCBIVE1MIHBhZ2UgKGZvciBleGFtcGxlOiAuaHRtLC5waHAsLmFzcCkuIElmIGl0IGlzIGxlZnQgYmxhbmsgDQorIyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgZmlsZXMgd2l0aCAuaHRtbCBleHRlbnNpb24uDQorDQorSFRNTF9GSUxFX0VYVEVOU0lPTiAgICA9IC5odG0NCisNCisjIFRoZSBIVE1MX0hFQURFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHBlcnNvbmFsIEhUTUwgaGVhZGVyIGZvciANCisjIGVhY2ggZ2VuZXJhdGVkIEhUTUwgcGFnZS4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSANCisjIHN0YW5kYXJkIGhlYWRlci4NCisNCitIVE1MX0hFQURFUiAgICAgICAgICAgID0gZG9jcy9oZWFkZXIuaHRtbA0KKw0KKyMgVGhlIEhUTUxfRk9PVEVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcGVyc29uYWwgSFRNTCBmb290ZXIgZm9yIA0KKyMgZWFjaCBnZW5lcmF0ZWQgSFRNTCBwYWdlLiBJZiBpdCBpcyBsZWZ0IGJsYW5rIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIA0KKyMgc3RhbmRhcmQgZm9vdGVyLg0KKw0KK0hUTUxfRk9PVEVSICAgICAgICAgICAgPSBkb2NzL2Zvb3Rlci5odG1sDQorDQorIyBUaGUgSFRNTF9TVFlMRVNIRUVUIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgdXNlciBkZWZpbmVkIGNhc2NhZGluZyANCisjIHN0eWxlIHNoZWV0IHRoYXQgaXMgdXNlZCBieSBlYWNoIEhUTUwgcGFnZS4gSXQgY2FuIGJlIHVzZWQgdG8gDQorIyBmaW5lLXR1bmUgdGhlIGxvb2sgb2YgdGhlIEhUTUwgb3V0cHV0LiBJZiB0aGUgdGFnIGlzIGxlZnQgYmxhbmsgZG94eWdlbiANCisjIHdpbGwgZ2VuZXJhdGUgYSBkZWZhdWx0IHN0eWxlIHNoZWV0DQorDQorSFRNTF9TVFlMRVNIRUVUICAgICAgICA9IGRvY3MvZG94eWdlbi5jc3MNCisNCisjIElmIHRoZSBIVE1MX0FMSUdOX01FTUJFUlMgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBtZW1iZXJzIG9mIGNsYXNzZXMsIA0KKyMgZmlsZXMgb3IgbmFtZXNwYWNlcyB3aWxsIGJlIGFsaWduZWQgaW4gSFRNTCB1c2luZyB0YWJsZXMuIElmIHNldCB0byANCisjIE5PIGEgYnVsbGV0IGxpc3Qgd2lsbCBiZSB1c2VkLg0KKw0KK0hUTUxfQUxJR05fTUVNQkVSUyAgICAgPSBZRVMNCisNCisjIElmIHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlFUywgYWRkaXRpb25hbCBpbmRleCBmaWxlcyANCisjIHdpbGwgYmUgZ2VuZXJhdGVkIHRoYXQgY2FuIGJlIHVzZWQgYXMgaW5wdXQgZm9yIHRvb2xzIGxpa2UgdGhlIA0KKyMgTWljcm9zb2Z0IEhUTUwgaGVscCB3b3Jrc2hvcCB0byBnZW5lcmF0ZSBhIGNvbXByZXNzZWQgSFRNTCBoZWxwIGZpbGUgKC5jaG0pIA0KKyMgb2YgdGhlIGdlbmVyYXRlZCBIVE1MIGRvY3VtZW50YXRpb24uDQorDQorR0VORVJBVEVfSFRNTEhFTFAgICAgICA9IE5PDQorDQorIyBJZiB0aGUgR0VORVJBVEVfSFRNTEhFTFAgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBDSE1fRklMRSB0YWcgY2FuIA0KKyMgYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlIG5hbWUgb2YgdGhlIHJlc3VsdGluZyAuY2htIGZpbGUuIFlvdSANCisjIGNhbiBhZGQgYSBwYXRoIGluIGZyb250IG9mIHRoZSBmaWxlIGlmIHRoZSByZXN1bHQgc2hvdWxkIG5vdCBiZSANCisjIHdyaXR0ZW4gdG8gdGhlIGh0bWwgb3V0cHV0IGRpci4NCisNCitDSE1fRklMRSAgICAgICAgICAgICAgID0gDQorDQorIyBJZiB0aGUgR0VORVJBVEVfSFRNTEhFTFAgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBISENfTE9DQVRJT04gdGFnIGNhbiANCisjIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gKGFic29sdXRlIHBhdGggaW5jbHVkaW5nIGZpbGUgbmFtZSkgb2YgDQorIyB0aGUgSFRNTCBoZWxwIGNvbXBpbGVyIChoaGMuZXhlKS4gSWYgbm9uIGVtcHR5IGRveHlnZW4gd2lsbCB0cnkgdG8gcnVuIA0KKyMgdGhlIGh0bWwgaGVscCBjb21waWxlciBvbiB0aGUgZ2VuZXJhdGVkIGluZGV4LmhocC4NCisNCitISENfTE9DQVRJT04gICAgICAgICAgID0gDQorDQorIyBJZiB0aGUgR0VORVJBVEVfSFRNTEhFTFAgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBHRU5FUkFURV9DSEkgZmxhZyANCisjIGNvbnRyb2xzIGlmIGEgc2VwYXJhdGUgLmNoaSBpbmRleCBmaWxlIGlzIGdlbmVyYXRlZCAoWUVTKSBvciB0aGF0IA0KKyMgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBtYXN0ZXIgLmNobSBmaWxlIChOTykuDQorDQorR0VORVJBVEVfQ0hJICAgICAgICAgICA9IE5PDQorDQorIyBJZiB0aGUgR0VORVJBVEVfSFRNTEhFTFAgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBCSU5BUllfVE9DIGZsYWcgDQorIyBjb250cm9scyB3aGV0aGVyIGEgYmluYXJ5IHRhYmxlIG9mIGNvbnRlbnRzIGlzIGdlbmVyYXRlZCAoWUVTKSBvciBhIA0KKyMgbm9ybWFsIHRhYmxlIG9mIGNvbnRlbnRzIChOTykgaW4gdGhlIC5jaG0gZmlsZS4NCisNCitCSU5BUllfVE9DICAgICAgICAgICAgID0gTk8NCisNCisjIFRoZSBUT0NfRVhQQU5EIGZsYWcgY2FuIGJlIHNldCB0byBZRVMgdG8gYWRkIGV4dHJhIGl0ZW1zIGZvciBncm91cCBtZW1iZXJzIA0KKyMgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBIdG1sIGhlbHAgZG9jdW1lbnRhdGlvbiBhbmQgdG8gdGhlIHRyZWUgdmlldy4NCisNCitUT0NfRVhQQU5EICAgICAgICAgICAgID0gTk8NCisNCisjIFRoZSBESVNBQkxFX0lOREVYIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUgY29uZGVuc2VkIGluZGV4IGF0IA0KKyMgdG9wIG9mIGVhY2ggSFRNTCBwYWdlLiBUaGUgdmFsdWUgTk8gKHRoZSBkZWZhdWx0KSBlbmFibGVzIHRoZSBpbmRleCBhbmQgDQorIyB0aGUgdmFsdWUgWUVTIGRpc2FibGVzIGl0Lg0KKw0KK0RJU0FCTEVfSU5ERVggICAgICAgICAgPSBOTw0KKw0KKyMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBudW1iZXIgb2YgZW51bSB2YWx1ZXMgKHJhbmdlIFsxLi4yMF0pIA0KKyMgdGhhdCBkb3h5Z2VuIHdpbGwgZ3JvdXAgb24gb25lIGxpbmUgaW4gdGhlIGdlbmVyYXRlZCBIVE1MIGRvY3VtZW50YXRpb24uDQorDQorRU5VTV9WQUxVRVNfUEVSX0xJTkUgICA9IDQNCisNCisjIElmIHRoZSBHRU5FUkFURV9UUkVFVklFVyB0YWcgaXMgc2V0IHRvIFlFUywgYSBzaWRlIHBhbmVsIHdpbGwgYmUNCisjIGdlbmVyYXRlZCBjb250YWluaW5nIGEgdHJlZS1saWtlIGluZGV4IHN0cnVjdHVyZSAoanVzdCBsaWtlIHRoZSBvbmUgdGhhdCANCisjIGlzIGdlbmVyYXRlZCBmb3IgSFRNTCBIZWxwKS4gRm9yIHRoaXMgdG8gd29yayBhIGJyb3dzZXIgdGhhdCBzdXBwb3J0cyANCisjIEphdmFTY3JpcHQsIERIVE1MLCBDU1MgYW5kIGZyYW1lcyBpcyByZXF1aXJlZCAoZm9yIGluc3RhbmNlIE1vemlsbGEsIA0KKyMgTmV0c2NhcGUgNi4wKywgSW50ZXJuZXQgZXhwbG9yZXIgNS4wKywgb3IgS29ucXVlcm9yKS4gV2luZG93cyB1c2VycyBhcmUgDQorIyBwcm9iYWJseSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBIVE1MIGhlbHAgZmVhdHVyZS4NCisNCitHRU5FUkFURV9UUkVFVklFVyAgICAgID0gTk8NCisNCisjIElmIHRoZSB0cmVldmlldyBpcyBlbmFibGVkIChzZWUgR0VORVJBVEVfVFJFRVZJRVcpIHRoZW4gdGhpcyB0YWcgY2FuIGJlIA0KKyMgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwgd2lkdGggKGluIHBpeGVscykgb2YgdGhlIGZyYW1lIGluIHdoaWNoIHRoZSB0cmVlIA0KKyMgaXMgc2hvd24uDQorDQorVFJFRVZJRVdfV0lEVEggICAgICAgICA9IDI1MA0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBMYVRlWCBvdXRwdXQNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBJZiB0aGUgR0VORVJBVEVfTEFURVggdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgDQorIyBnZW5lcmF0ZSBMYXRleCBvdXRwdXQuDQorDQorR0VORVJBVEVfTEFURVggICAgICAgICA9IFlFUw0KKw0KKyMgVGhlIExBVEVYX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBMYVRlWCBkb2NzIHdpbGwgYmUgcHV0LiANCisjIElmIGEgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUgDQorIyBwdXQgaW4gZnJvbnQgb2YgaXQuIElmIGxlZnQgYmxhbmsgYGxhdGV4JyB3aWxsIGJlIHVzZWQgYXMgdGhlIGRlZmF1bHQgcGF0aC4NCisNCitMQVRFWF9PVVRQVVQgICAgICAgICAgID0gbGF0ZXgNCisNCisjIFRoZSBMQVRFWF9DTURfTkFNRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgTGFUZVggY29tbWFuZCBuYW1lIHRvIGJlIA0KKyMgaW52b2tlZC4gSWYgbGVmdCBibGFuayBgbGF0ZXgnIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBjb21tYW5kIG5hbWUuDQorDQorTEFURVhfQ01EX05BTUUgICAgICAgICA9IGxhdGV4DQorDQorIyBUaGUgTUFLRUlOREVYX0NNRF9OQU1FIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBjb21tYW5kIG5hbWUgdG8gDQorIyBnZW5lcmF0ZSBpbmRleCBmb3IgTGFUZVguIElmIGxlZnQgYmxhbmsgYG1ha2VpbmRleCcgd2lsbCBiZSB1c2VkIGFzIHRoZSANCisjIGRlZmF1bHQgY29tbWFuZCBuYW1lLg0KKw0KK01BS0VJTkRFWF9DTURfTkFNRSAgICAgPSBtYWtlaW5kZXgNCisNCisjIElmIHRoZSBDT01QQUNUX0xBVEVYIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gZ2VuZXJhdGVzIG1vcmUgY29tcGFjdCANCisjIExhVGVYIGRvY3VtZW50cy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBzbWFsbCBwcm9qZWN0cyBhbmQgbWF5IGhlbHAgdG8gDQorIyBzYXZlIHNvbWUgdHJlZXMgaW4gZ2VuZXJhbC4NCisNCitDT01QQUNUX0xBVEVYICAgICAgICAgID0gTk8NCisNCisjIFRoZSBQQVBFUl9UWVBFIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIHBhcGVyIHR5cGUgdGhhdCBpcyB1c2VkIA0KKyMgYnkgdGhlIHByaW50ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6IGE0LCBhNHdpZGUsIGxldHRlciwgbGVnYWwgYW5kIA0KKyMgZXhlY3V0aXZlLiBJZiBsZWZ0IGJsYW5rIGE0d2lkZSB3aWxsIGJlIHVzZWQuDQorDQorUEFQRVJfVFlQRSAgICAgICAgICAgICA9IGE0d2lkZQ0KKw0KKyMgVGhlIEVYVFJBX1BBQ0tBR0VTIHRhZyBjYW4gYmUgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBuYW1lcyBvZiBMYVRlWCANCisjIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBMYVRlWCBvdXRwdXQuDQorDQorRVhUUkFfUEFDS0FHRVMgICAgICAgICA9IA0KKw0KKyMgVGhlIExBVEVYX0hFQURFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHBlcnNvbmFsIExhVGVYIGhlYWRlciBmb3IgDQorIyB0aGUgZ2VuZXJhdGVkIGxhdGV4IGRvY3VtZW50LiBUaGUgaGVhZGVyIHNob3VsZCBjb250YWluIGV2ZXJ5dGhpbmcgdW50aWwgDQorIyB0aGUgZmlyc3QgY2hhcHRlci4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSANCisjIHN0YW5kYXJkIGhlYWRlci4gTm90aWNlOiBvbmx5IHVzZSB0aGlzIHRhZyBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchDQorDQorTEFURVhfSEVBREVSICAgICAgICAgICA9IA0KKw0KKyMgSWYgdGhlIFBERl9IWVBFUkxJTktTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgTGFUZVggdGhhdCBpcyBnZW5lcmF0ZWQgDQorIyBpcyBwcmVwYXJlZCBmb3IgY29udmVyc2lvbiB0byBwZGYgKHVzaW5nIHBzMnBkZikuIFRoZSBwZGYgZmlsZSB3aWxsIA0KKyMgY29udGFpbiBsaW5rcyAoanVzdCBsaWtlIHRoZSBIVE1MIG91dHB1dCkgaW5zdGVhZCBvZiBwYWdlIHJlZmVyZW5jZXMgDQorIyBUaGlzIG1ha2VzIHRoZSBvdXRwdXQgc3VpdGFibGUgZm9yIG9ubGluZSBicm93c2luZyB1c2luZyBhIHBkZiB2aWV3ZXIuDQorDQorUERGX0hZUEVSTElOS1MgICAgICAgICA9IFlFUw0KKw0KKyMgSWYgdGhlIFVTRV9QREZMQVRFWCB0YWcgaXMgc2V0IHRvIFlFUywgcGRmbGF0ZXggd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgDQorIyBwbGFpbiBsYXRleCBpbiB0aGUgZ2VuZXJhdGVkIE1ha2VmaWxlLiBTZXQgdGhpcyBvcHRpb24gdG8gWUVTIHRvIGdldCBhIA0KKyMgaGlnaGVyIHF1YWxpdHkgUERGIGRvY3VtZW50YXRpb24uDQorDQorVVNFX1BERkxBVEVYICAgICAgICAgICA9IFlFUw0KKw0KKyMgSWYgdGhlIExBVEVYX0JBVENITU9ERSB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGFkZCB0aGUgXFxiYXRjaG1vZGUuIA0KKyMgY29tbWFuZCB0byB0aGUgZ2VuZXJhdGVkIExhVGVYIGZpbGVzLiBUaGlzIHdpbGwgaW5zdHJ1Y3QgTGFUZVggdG8ga2VlcCANCisjIHJ1bm5pbmcgaWYgZXJyb3JzIG9jY3VyLCBpbnN0ZWFkIG9mIGFza2luZyB0aGUgdXNlciBmb3IgaGVscC4gDQorIyBUaGlzIG9wdGlvbiBpcyBhbHNvIHVzZWQgd2hlbiBnZW5lcmF0aW5nIGZvcm11bGFzIGluIEhUTUwuDQorDQorTEFURVhfQkFUQ0hNT0RFICAgICAgICA9IE5PDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFJURiBvdXRwdXQNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBJZiB0aGUgR0VORVJBVEVfUlRGIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gd2lsbCBnZW5lcmF0ZSBSVEYgb3V0cHV0IA0KKyMgVGhlIFJURiBvdXRwdXQgaXMgb3B0aW1pc2VkIGZvciBXb3JkIDk3IGFuZCBtYXkgbm90IGxvb2sgdmVyeSBwcmV0dHkgd2l0aCANCisjIG90aGVyIFJURiByZWFkZXJzIG9yIGVkaXRvcnMuDQorDQorR0VORVJBVEVfUlRGICAgICAgICAgICA9IE5PDQorDQorIyBUaGUgUlRGX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBSVEYgZG9jcyB3aWxsIGJlIHB1dC4gDQorIyBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIA0KKyMgcHV0IGluIGZyb250IG9mIGl0LiBJZiBsZWZ0IGJsYW5rIGBydGYnIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBwYXRoLg0KKw0KK1JURl9PVVRQVVQgICAgICAgICAgICAgPSBydGYNCisNCisjIElmIHRoZSBDT01QQUNUX1JURiB0YWcgaXMgc2V0IHRvIFlFUyBEb3h5Z2VuIGdlbmVyYXRlcyBtb3JlIGNvbXBhY3QgDQorIyBSVEYgZG9jdW1lbnRzLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9yIHNtYWxsIHByb2plY3RzIGFuZCBtYXkgaGVscCB0byANCisjIHNhdmUgc29tZSB0cmVlcyBpbiBnZW5lcmFsLg0KKw0KK0NPTVBBQ1RfUlRGICAgICAgICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIFJURl9IWVBFUkxJTktTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgUlRGIHRoYXQgaXMgZ2VuZXJhdGVkIA0KKyMgd2lsbCBjb250YWluIGh5cGVybGluayBmaWVsZHMuIFRoZSBSVEYgZmlsZSB3aWxsIA0KKyMgY29udGFpbiBsaW5rcyAoanVzdCBsaWtlIHRoZSBIVE1MIG91dHB1dCkgaW5zdGVhZCBvZiBwYWdlIHJlZmVyZW5jZXMuIA0KKyMgVGhpcyBtYWtlcyB0aGUgb3V0cHV0IHN1aXRhYmxlIGZvciBvbmxpbmUgYnJvd3NpbmcgdXNpbmcgV09SRCBvciBvdGhlciANCisjIHByb2dyYW1zIHdoaWNoIHN1cHBvcnQgdGhvc2UgZmllbGRzLiANCisjIE5vdGU6IHdvcmRwYWQgKHdyaXRlKSBhbmQgb3RoZXJzIGRvIG5vdCBzdXBwb3J0IGxpbmtzLg0KKw0KK1JURl9IWVBFUkxJTktTICAgICAgICAgPSBOTw0KKw0KKyMgTG9hZCBzdHlsZXNoZWV0IGRlZmluaXRpb25zIGZyb20gZmlsZS4gU3ludGF4IGlzIHNpbWlsYXIgdG8gZG94eWdlbidzIA0KKyMgY29uZmlnIGZpbGUsIGkuZS4gYSBzZXJpZXMgb2YgYXNzaWdtZW50cy4gWW91IG9ubHkgaGF2ZSB0byBwcm92aWRlIA0KKyMgcmVwbGFjZW1lbnRzLCBtaXNzaW5nIGRlZmluaXRpb25zIGFyZSBzZXQgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZS4NCisNCitSVEZfU1RZTEVTSEVFVF9GSUxFICAgID0gDQorDQorIyBTZXQgb3B0aW9uYWwgdmFyaWFibGVzIHVzZWQgaW4gdGhlIGdlbmVyYXRpb24gb2YgYW4gcnRmIGRvY3VtZW50LiANCisjIFN5bnRheCBpcyBzaW1pbGFyIHRvIGRveHlnZW4ncyBjb25maWcgZmlsZS4NCisNCitSVEZfRVhURU5TSU9OU19GSUxFICAgID0gDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIG1hbiBwYWdlIG91dHB1dA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIElmIHRoZSBHRU5FUkFURV9NQU4gdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgDQorIyBnZW5lcmF0ZSBtYW4gcGFnZXMNCisNCitHRU5FUkFURV9NQU4gICAgICAgICAgID0gTk8NCisNCisjIFRoZSBNQU5fT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIG1hbiBwYWdlcyB3aWxsIGJlIHB1dC4gDQorIyBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIA0KKyMgcHV0IGluIGZyb250IG9mIGl0LiBJZiBsZWZ0IGJsYW5rIGBtYW4nIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBwYXRoLg0KKw0KK01BTl9PVVRQVVQgICAgICAgICAgICAgPSBtYW4NCisNCisjIFRoZSBNQU5fRVhURU5TSU9OIHRhZyBkZXRlcm1pbmVzIHRoZSBleHRlbnNpb24gdGhhdCBpcyBhZGRlZCB0byANCisjIHRoZSBnZW5lcmF0ZWQgbWFuIHBhZ2VzIChkZWZhdWx0IGlzIHRoZSBzdWJyb3V0aW5lJ3Mgc2VjdGlvbiAuMykNCisNCitNQU5fRVhURU5TSU9OICAgICAgICAgID0gLjMNCisNCisjIElmIHRoZSBNQU5fTElOS1MgdGFnIGlzIHNldCB0byBZRVMgYW5kIERveHlnZW4gZ2VuZXJhdGVzIG1hbiBvdXRwdXQsIA0KKyMgdGhlbiBpdCB3aWxsIGdlbmVyYXRlIG9uZSBhZGRpdGlvbmFsIG1hbiBmaWxlIGZvciBlYWNoIGVudGl0eSANCisjIGRvY3VtZW50ZWQgaW4gdGhlIHJlYWwgbWFuIHBhZ2UocykuIFRoZXNlIGFkZGl0aW9uYWwgZmlsZXMgDQorIyBvbmx5IHNvdXJjZSB0aGUgcmVhbCBtYW4gcGFnZSwgYnV0IHdpdGhvdXQgdGhlbSB0aGUgbWFuIGNvbW1hbmQgDQorIyB3b3VsZCBiZSB1bmFibGUgdG8gZmluZCB0aGUgY29ycmVjdCBwYWdlLiBUaGUgZGVmYXVsdCBpcyBOTy4NCisNCitNQU5fTElOS1MgICAgICAgICAgICAgID0gTk8NCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgWE1MIG91dHB1dA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIElmIHRoZSBHRU5FUkFURV9YTUwgdGFnIGlzIHNldCB0byBZRVMgRG94eWdlbiB3aWxsIA0KKyMgZ2VuZXJhdGUgYW4gWE1MIGZpbGUgdGhhdCBjYXB0dXJlcyB0aGUgc3RydWN0dXJlIG9mIA0KKyMgdGhlIGNvZGUgaW5jbHVkaW5nIGFsbCBkb2N1bWVudGF0aW9uLiBOb3RlIHRoYXQgdGhpcyANCisjIGZlYXR1cmUgaXMgc3RpbGwgZXhwZXJpbWVudGFsIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSANCisjIG1vbWVudC4NCisNCitHRU5FUkFURV9YTUwgICAgICAgICAgID0gTk8NCisNCisjIFRoZSBYTUxfU0NIRU1BIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIFhNTCBzY2hlbWEsIA0KKyMgd2hpY2ggY2FuIGJlIHVzZWQgYnkgYSB2YWxpZGF0aW5nIFhNTCBwYXJzZXIgdG8gY2hlY2sgdGhlIA0KKyMgc3ludGF4IG9mIHRoZSBYTUwgZmlsZXMuDQorDQorWE1MX1NDSEVNQSAgICAgICAgICAgICA9IA0KKw0KKyMgVGhlIFhNTF9EVEQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYW4gWE1MIERURCwgDQorIyB3aGljaCBjYW4gYmUgdXNlZCBieSBhIHZhbGlkYXRpbmcgWE1MIHBhcnNlciB0byBjaGVjayB0aGUgDQorIyBzeW50YXggb2YgdGhlIFhNTCBmaWxlcy4NCisNCitYTUxfRFREICAgICAgICAgICAgICAgID0gDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXV0b0dlbiBEZWZpbml0aW9ucyBvdXRwdXQNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBJZiB0aGUgR0VORVJBVEVfQVVUT0dFTl9ERUYgdGFnIGlzIHNldCB0byBZRVMgRG94eWdlbiB3aWxsIA0KKyMgZ2VuZXJhdGUgYW4gQXV0b0dlbiBEZWZpbml0aW9ucyAoc2VlIGF1dG9nZW4uc2YubmV0KSBmaWxlIA0KKyMgdGhhdCBjYXB0dXJlcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb2RlIGluY2x1ZGluZyBhbGwgDQorIyBkb2N1bWVudGF0aW9uLiBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlzIHN0aWxsIGV4cGVyaW1lbnRhbCANCisjIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSBtb21lbnQuDQorDQorR0VORVJBVEVfQVVUT0dFTl9ERUYgICA9IE5PDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFBlcmwgbW9kdWxlIG91dHB1dA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIElmIHRoZSBHRU5FUkFURV9QRVJMTU9EIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gd2lsbCANCisjIGdlbmVyYXRlIGEgUGVybCBtb2R1bGUgZmlsZSB0aGF0IGNhcHR1cmVzIHRoZSBzdHJ1Y3R1cmUgb2YgDQorIyB0aGUgY29kZSBpbmNsdWRpbmcgYWxsIGRvY3VtZW50YXRpb24uIE5vdGUgdGhhdCB0aGlzIA0KKyMgZmVhdHVyZSBpcyBzdGlsbCBleHBlcmltZW50YWwgYW5kIGluY29tcGxldGUgYXQgdGhlIA0KKyMgbW9tZW50Lg0KKw0KK0dFTkVSQVRFX1BFUkxNT0QgICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIFBFUkxNT0RfTEFURVggdGFnIGlzIHNldCB0byBZRVMgRG94eWdlbiB3aWxsIGdlbmVyYXRlIA0KKyMgdGhlIG5lY2Vzc2FyeSBNYWtlZmlsZSBydWxlcywgUGVybCBzY3JpcHRzIGFuZCBMYVRlWCBjb2RlIHRvIGJlIGFibGUgDQorIyB0byBnZW5lcmF0ZSBQREYgYW5kIERWSSBvdXRwdXQgZnJvbSB0aGUgUGVybCBtb2R1bGUgb3V0cHV0Lg0KKw0KK1BFUkxNT0RfTEFURVggICAgICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIFBFUkxNT0RfUFJFVFRZIHRhZyBpcyBzZXQgdG8gWUVTIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQgd2lsbCBiZSANCisjIG5pY2VseSBmb3JtYXR0ZWQgc28gaXQgY2FuIGJlIHBhcnNlZCBieSBhIGh1bWFuIHJlYWRlci4gIFRoaXMgaXMgdXNlZnVsIA0KKyMgaWYgeW91IHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGlzIGdvaW5nIG9uLiAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoaXMgDQorIyB0YWcgaXMgc2V0IHRvIE5PIHRoZSBzaXplIG9mIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQgd2lsbCBiZSBtdWNoIHNtYWxsZXIgDQorIyBhbmQgUGVybCB3aWxsIHBhcnNlIGl0IGp1c3QgdGhlIHNhbWUuDQorDQorUEVSTE1PRF9QUkVUVFkgICAgICAgICA9IFlFUw0KKw0KKyMgVGhlIG5hbWVzIG9mIHRoZSBtYWtlIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJhdGVkIGRveHlydWxlcy5tYWtlIGZpbGUgDQorIyBhcmUgcHJlZml4ZWQgd2l0aCB0aGUgc3RyaW5nIGNvbnRhaW5lZCBpbiBQRVJMTU9EX01BS0VWQVJfUFJFRklYLiANCisjIFRoaXMgaXMgdXNlZnVsIHNvIGRpZmZlcmVudCBkb3h5cnVsZXMubWFrZSBmaWxlcyBpbmNsdWRlZCBieSB0aGUgc2FtZSANCisjIE1ha2VmaWxlIGRvbid0IG92ZXJ3cml0ZSBlYWNoIG90aGVyJ3MgdmFyaWFibGVzLg0KKw0KK1BFUkxNT0RfTUFLRVZBUl9QUkVGSVggPSANCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgcHJlcHJvY2Vzc29yICAgDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgSWYgdGhlIEVOQUJMRV9QUkVQUk9DRVNTSU5HIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIA0KKyMgZXZhbHVhdGUgYWxsIEMtcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgZm91bmQgaW4gdGhlIHNvdXJjZXMgYW5kIGluY2x1ZGUgDQorIyBmaWxlcy4NCisNCitFTkFCTEVfUFJFUFJPQ0VTU0lORyAgID0gWUVTDQorDQorIyBJZiB0aGUgTUFDUk9fRVhQQU5TSU9OIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gd2lsbCBleHBhbmQgYWxsIG1hY3JvIA0KKyMgbmFtZXMgaW4gdGhlIHNvdXJjZSBjb2RlLiBJZiBzZXQgdG8gTk8gKHRoZSBkZWZhdWx0KSBvbmx5IGNvbmRpdGlvbmFsIA0KKyMgY29tcGlsYXRpb24gd2lsbCBiZSBwZXJmb3JtZWQuIE1hY3JvIGV4cGFuc2lvbiBjYW4gYmUgZG9uZSBpbiBhIGNvbnRyb2xsZWQgDQorIyB3YXkgYnkgc2V0dGluZyBFWFBBTkRfT05MWV9QUkVERUYgdG8gWUVTLg0KKw0KK01BQ1JPX0VYUEFOU0lPTiAgICAgICAgPSBZRVMNCisNCisjIElmIHRoZSBFWFBBTkRfT05MWV9QUkVERUYgYW5kIE1BQ1JPX0VYUEFOU0lPTiB0YWdzIGFyZSBib3RoIHNldCB0byBZRVMgDQorIyB0aGVuIHRoZSBtYWNybyBleHBhbnNpb24gaXMgbGltaXRlZCB0byB0aGUgbWFjcm9zIHNwZWNpZmllZCB3aXRoIHRoZSANCisjIFBSRURFRklORUQgYW5kIEVYUEFORF9BU19QUkVERUZJTkVEIHRhZ3MuDQorDQorRVhQQU5EX09OTFlfUFJFREVGICAgICA9IE5PDQorDQorIyBJZiB0aGUgU0VBUkNIX0lOQ0xVREVTIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgdGhlIGluY2x1ZGVzIGZpbGVzIA0KKyMgaW4gdGhlIElOQ0xVREVfUEFUSCAoc2VlIGJlbG93KSB3aWxsIGJlIHNlYXJjaCBpZiBhICNpbmNsdWRlIGlzIGZvdW5kLg0KKw0KK1NFQVJDSF9JTkNMVURFUyAgICAgICAgPSBZRVMNCisNCisjIFRoZSBJTkNMVURFX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgdGhhdCANCisjIGNvbnRhaW4gaW5jbHVkZSBmaWxlcyB0aGF0IGFyZSBub3QgaW5wdXQgZmlsZXMgYnV0IHNob3VsZCBiZSBwcm9jZXNzZWQgYnkgDQorIyB0aGUgcHJlcHJvY2Vzc29yLg0KKw0KK0lOQ0xVREVfUEFUSCAgICAgICAgICAgPSANCisNCisjIFlvdSBjYW4gdXNlIHRoZSBJTkNMVURFX0ZJTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgDQorIyBwYXR0ZXJucyAobGlrZSAqLmggYW5kICouaHBwKSB0byBmaWx0ZXIgb3V0IHRoZSBoZWFkZXItZmlsZXMgaW4gdGhlIA0KKyMgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmssIHRoZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0aCBGSUxFX1BBVFRFUk5TIHdpbGwgDQorIyBiZSB1c2VkLg0KKw0KK0lOQ0xVREVfRklMRV9QQVRURVJOUyAgPSANCisNCisjIFRoZSBQUkVERUZJTkVEIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIG1hY3JvIG5hbWVzIHRoYXQgDQorIyBhcmUgZGVmaW5lZCBiZWZvcmUgdGhlIHByZXByb2Nlc3NvciBpcyBzdGFydGVkIChzaW1pbGFyIHRvIHRoZSAtRCBvcHRpb24gb2YgDQorIyBnY2MpLiBUaGUgYXJndW1lbnQgb2YgdGhlIHRhZyBpcyBhIGxpc3Qgb2YgbWFjcm9zIG9mIHRoZSBmb3JtOiBuYW1lIA0KKyMgb3IgbmFtZT1kZWZpbml0aW9uIChubyBzcGFjZXMpLiBJZiB0aGUgZGVmaW5pdGlvbiBhbmQgdGhlID0gYXJlIA0KKyMgb21pdHRlZCA9MSBpcyBhc3N1bWVkLg0KKw0KK1BSRURFRklORUQgICAgICAgICAgICAgPSBQSl9ERUNMKHgpPXggUEpfREVGKHgpPXggUEpfSURFQ0woeCk9eCBcDQorCQkJIFBKX0lERUYoeCk9eCBQSl9JTkxJTkUoeCk9eCBcDQorCQkJIFBKX0RFQ0xfREFUQSh4KT14IFwNCisJCQkgUEpfREVDTF9OT19SRVRVUk4oeCk9eCBcDQorCQkJIFBKX05PX1JFVFVSTj14IFwNCisJCQkgUEpfSEFTX0hJR0hfUkVTX1RJTUVSPTEgXA0KKwkJCSBQSl9MT0dfTUFYX0xFVkVMPTQgXA0KKwkJCSBQSl9IQVNfU0VNQVBIT1JFPTEgXA0KKwkJCSBQSl9IQVNfRVZFTlRfT0JKPTEgXA0KKwkJCSBQSl9IQVNfVENQPTENCisNCisjIElmIHRoZSBNQUNST19FWFBBTlNJT04gYW5kIEVYUEFORF9PTkxZX1BSRURFRiB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gDQorIyB0aGlzIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbGlzdCBvZiBtYWNybyBuYW1lcyB0aGF0IHNob3VsZCBiZSBleHBhbmRlZC4gDQorIyBUaGUgbWFjcm8gZGVmaW5pdGlvbiB0aGF0IGlzIGZvdW5kIGluIHRoZSBzb3VyY2VzIHdpbGwgYmUgdXNlZC4gDQorIyBVc2UgdGhlIFBSRURFRklORUQgdGFnIGlmIHlvdSB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBtYWNybyBkZWZpbml0aW9uLg0KKw0KK0VYUEFORF9BU19ERUZJTkVEICAgICAgPSANCisNCisjIElmIHRoZSBTS0lQX0ZVTkNUSU9OX01BQ1JPUyB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIHRoZW4gDQorIyBkb3h5Z2VuJ3MgcHJlcHJvY2Vzc29yIHdpbGwgcmVtb3ZlIGFsbCBmdW5jdGlvbi1saWtlIG1hY3JvcyB0aGF0IGFyZSBhbG9uZSANCisjIG9uIGEgbGluZSwgaGF2ZSBhbiBhbGwgdXBwZXJjYXNlIG5hbWUsIGFuZCBkbyBub3QgZW5kIHdpdGggYSBzZW1pY29sb24uIFN1Y2ggDQorIyBmdW5jdGlvbiBtYWNyb3MgYXJlIHR5cGljYWxseSB1c2VkIGZvciBib2lsZXItcGxhdGUgY29kZSwgYW5kIHdpbGwgY29uZnVzZSB0aGUgDQorIyBwYXJzZXIgaWYgbm90IHJlbW92ZWQuDQorDQorU0tJUF9GVU5DVElPTl9NQUNST1MgICA9IFlFUw0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvbmZpZ3VyYXRpb246OmFkZHRpb25zIHJlbGF0ZWQgdG8gZXh0ZXJuYWwgcmVmZXJlbmNlcyAgIA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIFRoZSBUQUdGSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB0YWdmaWxlcy4NCisNCitUQUdGSUxFUyAgICAgICAgICAgICAgID0gDQorDQorIyBXaGVuIGEgZmlsZSBuYW1lIGlzIHNwZWNpZmllZCBhZnRlciBHRU5FUkFURV9UQUdGSUxFLCBkb3h5Z2VuIHdpbGwgY3JlYXRlIA0KKyMgYSB0YWcgZmlsZSB0aGF0IGlzIGJhc2VkIG9uIHRoZSBpbnB1dCBmaWxlcyBpdCByZWFkcy4NCisNCitHRU5FUkFURV9UQUdGSUxFICAgICAgID0gZG9jcy9wamxpYi50YWcNCisNCisjIElmIHRoZSBBTExFWFRFUk5BTFMgdGFnIGlzIHNldCB0byBZRVMgYWxsIGV4dGVybmFsIGNsYXNzZXMgd2lsbCBiZSBsaXN0ZWQgDQorIyBpbiB0aGUgY2xhc3MgaW5kZXguIElmIHNldCB0byBOTyBvbmx5IHRoZSBpbmhlcml0ZWQgZXh0ZXJuYWwgY2xhc3NlcyANCisjIHdpbGwgYmUgbGlzdGVkLg0KKw0KK0FMTEVYVEVSTkFMUyAgICAgICAgICAgPSBOTw0KKw0KKyMgSWYgdGhlIEVYVEVSTkFMX0dST1VQUyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgZXh0ZXJuYWwgZ3JvdXBzIHdpbGwgYmUgbGlzdGVkIA0KKyMgaW4gdGhlIG1vZHVsZXMgaW5kZXguIElmIHNldCB0byBOTywgb25seSB0aGUgY3VycmVudCBwcm9qZWN0J3MgZ3JvdXBzIHdpbGwgDQorIyBiZSBsaXN0ZWQuDQorDQorRVhURVJOQUxfR1JPVVBTICAgICAgICA9IFlFUw0KKw0KKyMgVGhlIFBFUkxfUEFUSCBzaG91bGQgYmUgdGhlIGFic29sdXRlIHBhdGggYW5kIG5hbWUgb2YgdGhlIHBlcmwgc2NyaXB0IA0KKyMgaW50ZXJwcmV0ZXIgKGkuZS4gdGhlIHJlc3VsdCBvZiBgd2hpY2ggcGVybCcpLg0KKw0KKyNQRVJMX1BBVEggICAgICAgICAgICAgID0gL3Vzci9iaW4vcGVybA0KK1BFUkxfUEFUSCAgICAgICAgICAgICAgPSAvYy9QZXJsL2Jpbi9wZXJsDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGRvdCB0b29sICAgDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgSWYgdGhlIENMQVNTX0RJQUdSQU1TIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIA0KKyMgZ2VuZXJhdGUgYSBpbmhlcml0YW5jZSBkaWFncmFtIChpbiBIdG1sLCBSVEYgYW5kIExhVGVYKSBmb3IgY2xhc3NlcyB3aXRoIGJhc2Ugb3IgDQorIyBzdXBlciBjbGFzc2VzLiBTZXR0aW5nIHRoZSB0YWcgdG8gTk8gdHVybnMgdGhlIGRpYWdyYW1zIG9mZi4gTm90ZSB0aGF0IHRoaXMgDQorIyBvcHRpb24gaXMgc3VwZXJjZWRlZCBieSB0aGUgSEFWRV9ET1Qgb3B0aW9uIGJlbG93LiBUaGlzIGlzIG9ubHkgYSBmYWxsYmFjay4gSXQgaXMgDQorIyByZWNvbW1lbmRlZCB0byBpbnN0YWxsIGFuZCB1c2UgZG90LCBzaW5jZSBpdCB5aWVsZCBtb3JlIHBvd2VyZnVsIGdyYXBocy4NCisNCitDTEFTU19ESUFHUkFNUyAgICAgICAgID0gTk8NCisNCisjIElmIHNldCB0byBZRVMsIHRoZSBpbmhlcml0YW5jZSBhbmQgY29sbGFib3JhdGlvbiBncmFwaHMgd2lsbCBoaWRlIA0KKyMgaW5oZXJpdGFuY2UgYW5kIHVzYWdlIHJlbGF0aW9ucyBpZiB0aGUgdGFyZ2V0IGlzIHVuZG9jdW1lbnRlZCANCisjIG9yIGlzIG5vdCBhIGNsYXNzLg0KKw0KK0hJREVfVU5ET0NfUkVMQVRJT05TICAgPSBZRVMNCisNCisjIElmIHlvdSBzZXQgdGhlIEhBVkVfRE9UIHRhZyB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgYXNzdW1lIHRoZSBkb3QgdG9vbCBpcyANCisjIGF2YWlsYWJsZSBmcm9tIHRoZSBwYXRoLiBUaGlzIHRvb2wgaXMgcGFydCBvZiBHcmFwaHZpeiwgYSBncmFwaCB2aXN1YWxpemF0aW9uIA0KKyMgdG9vbGtpdCBmcm9tIEFUJlQgYW5kIEx1Y2VudCBCZWxsIExhYnMuIFRoZSBvdGhlciBvcHRpb25zIGluIHRoaXMgc2VjdGlvbiANCisjIGhhdmUgbm8gZWZmZWN0IGlmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBOTyAodGhlIGRlZmF1bHQpDQorDQorSEFWRV9ET1QgICAgICAgICAgICAgICA9IE5PDQorDQorIyBJZiB0aGUgQ0xBU1NfR1JBUEggYW5kIEhBVkVfRE9UIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIA0KKyMgd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgY2xhc3Mgc2hvd2luZyB0aGUgZGlyZWN0IGFuZCANCisjIGluZGlyZWN0IGluaGVyaXRhbmNlIHJlbGF0aW9ucy4gU2V0dGluZyB0aGlzIHRhZyB0byBZRVMgd2lsbCBmb3JjZSB0aGUgDQorIyB0aGUgQ0xBU1NfRElBR1JBTVMgdGFnIHRvIE5PLg0KKw0KK0NMQVNTX0dSQVBIICAgICAgICAgICAgPSBZRVMNCisNCisjIElmIHRoZSBDT0xMQUJPUkFUSU9OX0dSQVBIIGFuZCBIQVZFX0RPVCB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiANCisjIHdpbGwgZ2VuZXJhdGUgYSBncmFwaCBmb3IgZWFjaCBkb2N1bWVudGVkIGNsYXNzIHNob3dpbmcgdGhlIGRpcmVjdCBhbmQgDQorIyBpbmRpcmVjdCBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbmNpZXMgKGluaGVyaXRhbmNlLCBjb250YWlubWVudCwgYW5kIA0KKyMgY2xhc3MgcmVmZXJlbmNlcyB2YXJpYWJsZXMpIG9mIHRoZSBjbGFzcyB3aXRoIG90aGVyIGRvY3VtZW50ZWQgY2xhc3Nlcy4NCisNCitDT0xMQUJPUkFUSU9OX0dSQVBIICAgID0gWUVTDQorDQorIyBJZiBzZXQgdG8gWUVTLCB0aGUgaW5oZXJpdGFuY2UgYW5kIGNvbGxhYm9yYXRpb24gZ3JhcGhzIHdpbGwgc2hvdyB0aGUgDQorIyByZWxhdGlvbnMgYmV0d2VlbiB0ZW1wbGF0ZXMgYW5kIHRoZWlyIGluc3RhbmNlcy4NCisNCitURU1QTEFURV9SRUxBVElPTlMgICAgID0gWUVTDQorDQorIyBJZiB0aGUgRU5BQkxFX1BSRVBST0NFU1NJTkcsIFNFQVJDSF9JTkNMVURFUywgSU5DTFVERV9HUkFQSCwgYW5kIEhBVkVfRE9UIA0KKyMgdGFncyBhcmUgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgDQorIyBmaWxlIHNob3dpbmcgdGhlIGRpcmVjdCBhbmQgaW5kaXJlY3QgaW5jbHVkZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGZpbGUgd2l0aCANCisjIG90aGVyIGRvY3VtZW50ZWQgZmlsZXMuDQorDQorSU5DTFVERV9HUkFQSCAgICAgICAgICA9IFlFUw0KKw0KKyMgSWYgdGhlIEVOQUJMRV9QUkVQUk9DRVNTSU5HLCBTRUFSQ0hfSU5DTFVERVMsIElOQ0xVREVEX0JZX0dSQVBILCBhbmQgDQorIyBIQVZFX0RPVCB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yIGVhY2ggDQorIyBkb2N1bWVudGVkIGhlYWRlciBmaWxlIHNob3dpbmcgdGhlIGRvY3VtZW50ZWQgZmlsZXMgdGhhdCBkaXJlY3RseSBvciANCisjIGluZGlyZWN0bHkgaW5jbHVkZSB0aGlzIGZpbGUuDQorDQorSU5DTFVERURfQllfR1JBUEggICAgICA9IFlFUw0KKw0KKyMgSWYgdGhlIEdSQVBISUNBTF9ISUVSQVJDSFkgYW5kIEhBVkVfRE9UIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIA0KKyMgd2lsbCBncmFwaGljYWwgaGllcmFyY2h5IG9mIGFsbCBjbGFzc2VzIGluc3RlYWQgb2YgYSB0ZXh0dWFsIG9uZS4NCisNCitHUkFQSElDQUxfSElFUkFSQ0hZICAgID0gWUVTDQorDQorIyBUaGUgRE9UX0lNQUdFX0ZPUk1BVCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBpbWFnZSBmb3JtYXQgb2YgdGhlIGltYWdlcyANCisjIGdlbmVyYXRlZCBieSBkb3QuIFBvc3NpYmxlIHZhbHVlcyBhcmUgcG5nLCBqcGcsIG9yIGdpZg0KKyMgSWYgbGVmdCBibGFuayBwbmcgd2lsbCBiZSB1c2VkLg0KKw0KK0RPVF9JTUFHRV9GT1JNQVQgICAgICAgPSBwbmcNCisNCisjIFRoZSB0YWcgRE9UX1BBVEggY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgcGF0aCB3aGVyZSB0aGUgZG90IHRvb2wgY2FuIGJlIA0KKyMgZm91bmQuIElmIGxlZnQgYmxhbmssIGl0IGlzIGFzc3VtZWQgdGhlIGRvdCB0b29sIGNhbiBiZSBmb3VuZCBvbiB0aGUgcGF0aC4NCisNCitET1RfUEFUSCAgICAgICAgICAgICAgID0gDQorDQorIyBUaGUgRE9URklMRV9ESVJTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzIHRoYXQgDQorIyBjb250YWluIGRvdCBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoc2VlIHRoZSANCisjIFxkb3RmaWxlIGNvbW1hbmQpLg0KKw0KK0RPVEZJTEVfRElSUyAgICAgICAgICAgPSANCisNCisjIFRoZSBNQVhfRE9UX0dSQVBIX1dJRFRIIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIG1heGltdW0gYWxsb3dlZCB3aWR0aCANCisjIChpbiBwaXhlbHMpIG9mIHRoZSBncmFwaHMgZ2VuZXJhdGVkIGJ5IGRvdC4gSWYgYSBncmFwaCBiZWNvbWVzIGxhcmdlciB0aGFuIA0KKyMgdGhpcyB2YWx1ZSwgZG94eWdlbiB3aWxsIHRyeSB0byB0cnVuY2F0ZSB0aGUgZ3JhcGgsIHNvIHRoYXQgaXQgZml0cyB3aXRoaW4gDQorIyB0aGUgc3BlY2lmaWVkIGNvbnN0cmFpbnQuIEJld2FyZSB0aGF0IG1vc3QgYnJvd3NlcnMgY2Fubm90IGNvcGUgd2l0aCB2ZXJ5IA0KKyMgbGFyZ2UgaW1hZ2VzLg0KKw0KK01BWF9ET1RfR1JBUEhfV0lEVEggICAgPSAxMDI0DQorDQorIyBUaGUgTUFYX0RPVF9HUkFQSF9IRUlHSFQgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSBhbGxvd3MgaGVpZ2h0IA0KKyMgKGluIHBpeGVscykgb2YgdGhlIGdyYXBocyBnZW5lcmF0ZWQgYnkgZG90LiBJZiBhIGdyYXBoIGJlY29tZXMgbGFyZ2VyIHRoYW4gDQorIyB0aGlzIHZhbHVlLCBkb3h5Z2VuIHdpbGwgdHJ5IHRvIHRydW5jYXRlIHRoZSBncmFwaCwgc28gdGhhdCBpdCBmaXRzIHdpdGhpbiANCisjIHRoZSBzcGVjaWZpZWQgY29uc3RyYWludC4gQmV3YXJlIHRoYXQgbW9zdCBicm93c2VycyBjYW5ub3QgY29wZSB3aXRoIHZlcnkgDQorIyBsYXJnZSBpbWFnZXMuDQorDQorTUFYX0RPVF9HUkFQSF9IRUlHSFQgICA9IDEwMjQNCisNCisjIElmIHRoZSBHRU5FUkFURV9MRUdFTkQgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgDQorIyBnZW5lcmF0ZSBhIGxlZ2VuZCBwYWdlIGV4cGxhaW5pbmcgdGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYm94ZXMgYW5kIA0KKyMgYXJyb3dzIGluIHRoZSBkb3QgZ2VuZXJhdGVkIGdyYXBocy4NCisNCitHRU5FUkFURV9MRUdFTkQgICAgICAgID0gWUVTDQorDQorIyBJZiB0aGUgRE9UX0NMRUFOVVAgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgDQorIyByZW1vdmUgdGhlIGludGVybWVkYXRlIGRvdCBmaWxlcyB0aGF0IGFyZSB1c2VkIHRvIGdlbmVyYXRlIA0KKyMgdGhlIHZhcmlvdXMgZ3JhcGhzLg0KKw0KK0RPVF9DTEVBTlVQICAgICAgICAgICAgPSBZRVMNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDb25maWd1cmF0aW9uOjphZGR0aW9ucyByZWxhdGVkIHRvIHRoZSBzZWFyY2ggZW5naW5lICAgDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgVGhlIFNFQVJDSEVOR0lORSB0YWcgc3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IGEgc2VhcmNoIGVuZ2luZSBzaG91bGQgYmUgDQorIyB1c2VkLiBJZiBzZXQgdG8gTk8gdGhlIHZhbHVlcyBvZiBhbGwgdGFncyBiZWxvdyB0aGlzIG9uZSB3aWxsIGJlIGlnbm9yZWQuDQorDQorU0VBUkNIRU5HSU5FICAgICAgICAgICA9IE5PDQorDQorIyBUaGUgQ0dJX05BTUUgdGFnIHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgQ0dJIHNjcmlwdCB0aGF0IA0KKyMgc3RhcnRzIHRoZSBzZWFyY2ggZW5naW5lIChkb3h5c2VhcmNoKSB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMuIA0KKyMgQSBzY3JpcHQgd2l0aCB0aGlzIG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgZG94eWdlbi4NCisNCisjQ0dJX05BTUUgICAgICAgICAgICAgICA9IHNlYXJjaC5jZ2kNCisNCisjIFRoZSBDR0lfVVJMIHRhZyBzaG91bGQgYmUgdGhlIGFic29sdXRlIFVSTCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSANCisjIGNnaSBiaW5hcmllcyBhcmUgbG9jYXRlZC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHlvdXIgaHR0cCBkYWVtb24gZm9yIA0KKyMgZGV0YWlscy4NCisNCisjQ0dJX1VSTCAgICAgICAgICAgICAgICA9IA0KKw0KKyMgVGhlIERPQ19VUkwgdGFnIHNob3VsZCBiZSB0aGUgYWJzb2x1dGUgVVJMIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIA0KKyMgZG9jdW1lbnRhdGlvbiBpcyBsb2NhdGVkLiBJZiBsZWZ0IGJsYW5rIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSANCisjIGRvY3VtZW50YXRpb24sIHdpdGggZmlsZTovLyBwcmVwZW5kZWQgdG8gaXQsIHdpbGwgYmUgdXNlZC4NCisNCisjRE9DX1VSTCAgICAgICAgICAgICAgICA9IA0KKw0KKyMgVGhlIERPQ19BQlNQQVRIIHRhZyBzaG91bGQgYmUgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgDQorIyBkb2N1bWVudGF0aW9uIGlzIGxvY2F0ZWQuIElmIGxlZnQgYmxhbmsgdGhlIGRpcmVjdG9yeSBvbiB0aGUgbG9jYWwgbWFjaGluZSANCisjIHdpbGwgYmUgdXNlZC4NCisNCisjRE9DX0FCU1BBVEggICAgICAgICAgICA9IA0KKw0KKyMgVGhlIEJJTl9BQlNQQVRIIHRhZyBtdXN0IHBvaW50IHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGRveHlzZWFyY2ggYmluYXJ5IA0KKyMgaXMgaW5zdGFsbGVkLg0KKw0KKyNCSU5fQUJTUEFUSCAgICAgICAgICAgID0gL3Vzci9sb2NhbC9iaW4vDQorDQorIyBUaGUgRVhUX0RPQ19QQVRIUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBwYXRocyB0byANCisjIGRvY3VtZW50YXRpb24gZ2VuZXJhdGVkIGZvciBvdGhlciBwcm9qZWN0cy4gVGhpcyBhbGxvd3MgZG94eXNlYXJjaCB0byBzZWFyY2ggDQorIyB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgcHJvamVjdHMgYXMgd2VsbC4NCisNCisjRVhUX0RPQ19QQVRIUyAgICAgICAgICA9IA0KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2RvY3MvZG94eWdlbi5jc3MgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9kb2NzL2RveHlnZW4uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNWMwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9kb2NzL2RveHlnZW4uY3NzCkBAIC0wLDAgKzEsMzA1IEBACitCT0RZLEgxLEgyLEgzLEg0LEg1LEg2LFAsQ0VOVEVSLFRELFRILFVMLERMLERJViB7CisJZm9udC1mYW1pbHk6IEdlbmV2YSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKK30KK0JPRFksVEQgeworICAgICAgIGZvbnQtc2l6ZTogODAlOworfQorQ09ERSB7CisJZm9udC1zaXplOiAxMjAlOworICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cit9CisuZnJhZ21lbnQsIHByZSB7CisJZm9udC1zaXplOiAxMTAlOworICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cit9CitIMSB7CisJdGV4dC1hbGlnbjogY2VudGVyOworICAgICAgIGZvbnQtc2l6ZTogMjQwJTsKK30KK0gyIHsKKyAgICAgICAJZm9udC1zaXplOiAyMDAlOworCW1hcmdpbi10b3AgICAgIDogNjBweDsKK30KK0gzIHsKKyAgICAgICBmb250LXNpemU6IDE2MCU7Cit9CitINCB7CisgICAgICAgZm9udC1zaXplOiAxMjAlOworfQorQ0FQVElPTiB7IGZvbnQtd2VpZ2h0OiBib2xkIH0KK0RJVi5xaW5kZXggeworCXdpZHRoOiAxMDAlOworCWJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7CisJYm9yZGVyOiAxcHggc29saWQgI2IwYjBiMDsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisJbWFyZ2luOiAycHg7CisJcGFkZGluZzogMnB4OworCWxpbmUtaGVpZ2h0OiAxNDAlOworfQorRElWLm5hdiB7CisJd2lkdGg6IDEwMCU7CisJYmFja2dyb3VuZC1jb2xvcjogI2VlZWVmZjsKKwlib3JkZXI6IDFweCBzb2xpZCAjYjBiMGIwOworCXRleHQtYWxpZ246IGNlbnRlcjsKKwltYXJnaW46IDJweDsKKwlwYWRkaW5nOiAycHg7CisJbGluZS1oZWlnaHQ6IDE0MCU7Cit9CitBLnFpbmRleCB7CisgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgICAgIGZvbnQtc2l6ZTogMTIwJTsKKyAgICAgICBjb2xvcjogIzFBNDE5RDsKK30KK0EucWluZGV4OnZpc2l0ZWQgeworICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICAgICBjb2xvcjogIzFBNDE5RAorfQorQS5xaW5kZXg6aG92ZXIgeworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGZmOworfQorQS5xaW5kZXhITCB7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWZvbnQtd2VpZ2h0OiBib2xkOworCWJhY2tncm91bmQtY29sb3I6ICM2NjY2Y2M7CisJY29sb3I6ICNmZmZmZmY7CisJYm9yZGVyOiAxcHggZG91YmxlICM5Mjk1QzI7Cit9CitBLnFpbmRleEhMOmhvdmVyIHsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJYmFja2dyb3VuZC1jb2xvcjogIzY2NjZjYzsKKwljb2xvcjogI2ZmZmZmZjsKK30KK0EucWluZGV4SEw6dmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzY2NjZjYzsgY29sb3I6ICNmZmZmZmYgfQorQS5lbCB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IGJvbGQgfQorQS5lbFJlZiB7IGZvbnQtd2VpZ2h0OiBib2xkIH0KK0EuY29kZTpsaW5rIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzAwMDBGRjsgfQorQS5jb2RlOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjMDAwMEZGfQorQS5jb2RlUmVmOmxpbmsgeyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzAwMDBGRn0KK0EuY29kZVJlZjp2aXNpdGVkIHsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICMwMDAwRkZ9CitBOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmZmIH0KK0RMLmVsIHsgbWFyZ2luLWxlZnQ6IC0xY20gfQorUFJFLmZyYWdtZW50IHsKKwlib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDOworCWJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CisJbWFyZ2luLXRvcDogNHB4OworCW1hcmdpbi1ib3R0b206IDRweDsKKwltYXJnaW4tbGVmdDogMnB4OworCW1hcmdpbi1yaWdodDogOHB4OworCXBhZGRpbmctbGVmdDogNnB4OworCXBhZGRpbmctcmlnaHQ6IDZweDsKKwlwYWRkaW5nLXRvcDogNHB4OworCXBhZGRpbmctYm90dG9tOiA0cHg7Cit9CitESVYuYWggeyBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjZmZmZmZmOyBtYXJnaW4tYm90dG9tOiAzcHg7IG1hcmdpbi10b3A6IDNweCB9CitURC5tZCB7IGJhY2tncm91bmQtY29sb3I6ICNGNEY0RkI7IGZvbnQtd2VpZ2h0OiBib2xkOyB9CitURC5tZFByZWZpeCB7CisgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0Y0RjRGQjsKKyAgICAgICBjb2xvcjogIzYwNjA2MDsKKwlmb250LXNpemU6IDgwJTsKK30KK1RELm1kbmFtZTEgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEZCOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICM2MDIwMjA7IH0KK1RELm1kbmFtZSB7IGJhY2tncm91bmQtY29sb3I6ICNGNEY0RkI7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogIzYwMjAyMDsgd2lkdGg6IDYwMHB4OyB9CitESVYuZ3JvdXBIZWFkZXIgeworICAgICAgIG1hcmdpbi1sZWZ0OiAxNnB4OworICAgICAgIG1hcmdpbi10b3A6IDEycHg7CisgICAgICAgbWFyZ2luLWJvdHRvbTogNnB4OworICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorRElWLmdyb3VwVGV4dCB7IG1hcmdpbi1sZWZ0OiAxNnB4OyBmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtc2l6ZTogOTAlIH0KK0JPRFkgeworCWJhY2tncm91bmQ6IHdoaXRlOworCWNvbG9yOiBibGFjazsKKwltYXJnaW4tcmlnaHQ6IDIwcHg7CisJbWFyZ2luLWxlZnQ6IDIwcHg7Cit9CitURC5pbmRleGtleSB7CisJYmFja2dyb3VuZC1jb2xvcjogI2VlZWVmZjsKKwlmb250LXdlaWdodDogYm9sZDsKKwlwYWRkaW5nLXJpZ2h0ICA6IDEwcHg7CisJcGFkZGluZy10b3AgICAgOiAycHg7CisJcGFkZGluZy1sZWZ0ICAgOiAxMHB4OworCXBhZGRpbmctYm90dG9tIDogMnB4OworCW1hcmdpbi1sZWZ0ICAgIDogMHB4OworCW1hcmdpbi1yaWdodCAgIDogMHB4OworCW1hcmdpbi10b3AgICAgIDogMnB4OworCW1hcmdpbi1ib3R0b20gIDogMnB4OworCWJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7Cit9CitURC5pbmRleHZhbHVlIHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWZmOworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwlwYWRkaW5nLXJpZ2h0ICA6IDEwcHg7CisJcGFkZGluZy10b3AgICAgOiAycHg7CisJcGFkZGluZy1sZWZ0ICAgOiAxMHB4OworCXBhZGRpbmctYm90dG9tIDogMnB4OworCW1hcmdpbi1sZWZ0ICAgIDogMHB4OworCW1hcmdpbi1yaWdodCAgIDogMHB4OworCW1hcmdpbi10b3AgICAgIDogMnB4OworCW1hcmdpbi1ib3R0b20gIDogMnB4OworCWJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7Cit9CitUUi5tZW1saXN0IHsKKyAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7IAorfQorUC5mb3JtdWxhRHNwIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9CitJTUcuZm9ybXVsYURzcCB7IH0KK0lNRy5mb3JtdWxhSW5sIHsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQorU1BBTi5rZXl3b3JkICAgICAgIHsgY29sb3I6ICMwMDgwMDAgfQorU1BBTi5rZXl3b3JkdHlwZSAgIHsgY29sb3I6ICM2MDQwMjAgfQorU1BBTi5rZXl3b3JkZmxvdyAgIHsgY29sb3I6ICNlMDgwMDAgfQorU1BBTi5jb21tZW50ICAgICAgIHsgY29sb3I6ICM4MDAwMDAgfQorU1BBTi5wcmVwcm9jZXNzb3IgIHsgY29sb3I6ICM4MDYwMjAgfQorU1BBTi5zdHJpbmdsaXRlcmFsIHsgY29sb3I6ICMwMDIwODAgfQorU1BBTi5jaGFybGl0ZXJhbCAgIHsgY29sb3I6ICMwMDgwODAgfQorLm1kVGFibGUgeworCWJvcmRlcjogMXB4IHNvbGlkICM4Njg2ODY7CisJYmFja2dyb3VuZC1jb2xvcjogI0Y0RjRGQjsKK30KKy5tZFJvdyB7CisJcGFkZGluZzogOHB4IDEwcHg7Cit9CisubWRlc2NMZWZ0IHsKKyAgICAgICBwYWRkaW5nOiAwcHggOHB4IDRweCA4cHg7CisJZm9udC1zaXplOiA4MCU7CisJZm9udC1zdHlsZTogaXRhbGljOworCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CisJYm9yZGVyLXRvcDogMXB4IG5vbmUgI0UwRTBFMDsKKwlib3JkZXItcmlnaHQ6IDFweCBub25lICNFMEUwRTA7CisJYm9yZGVyLWJvdHRvbTogMXB4IG5vbmUgI0UwRTBFMDsKKwlib3JkZXItbGVmdDogMXB4IG5vbmUgI0UwRTBFMDsKKwltYXJnaW46IDBweDsKK30KKy5tZGVzY1JpZ2h0IHsKKyAgICAgICBwYWRkaW5nOiAwcHggOHB4IDRweCA4cHg7CisJZm9udC1zaXplOiA4MCU7CisJZm9udC1zdHlsZTogaXRhbGljOworCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CisJYm9yZGVyLXRvcDogMXB4IG5vbmUgI0UwRTBFMDsKKwlib3JkZXItcmlnaHQ6IDFweCBub25lICNFMEUwRTA7CisJYm9yZGVyLWJvdHRvbTogMXB4IG5vbmUgI0UwRTBFMDsKKwlib3JkZXItbGVmdDogMXB4IG5vbmUgI0UwRTBFMDsKKwltYXJnaW46IDBweDsKK30KKy5tZW1JdGVtTGVmdCB7CisJcGFkZGluZzogMXB4IDBweCAwcHggOHB4OworCW1hcmdpbjogNHB4OworCWJvcmRlci10b3Atd2lkdGg6IDFweDsKKwlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKKwlib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7CisJYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKKwlib3JkZXItdG9wLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1yaWdodC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItYm90dG9tLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1sZWZ0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci10b3Atc3R5bGU6IHNvbGlkOworCWJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKKwlib3JkZXItYm90dG9tLXN0eWxlOiBub25lOworCWJvcmRlci1sZWZ0LXN0eWxlOiBub25lOworCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CisJZm9udC1zaXplOiA4MCU7Cit9CisubWVtSXRlbVJpZ2h0IHsKKwlwYWRkaW5nOiAxcHggOHB4IDBweCA4cHg7CisJbWFyZ2luOiA0cHg7CisJYm9yZGVyLXRvcC13aWR0aDogMXB4OworCWJvcmRlci1yaWdodC13aWR0aDogMXB4OworCWJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKKwlib3JkZXItbGVmdC13aWR0aDogMXB4OworCWJvcmRlci10b3AtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXJpZ2h0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1ib3R0b20tY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWxlZnQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7CisJYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOworCWJvcmRlci1ib3R0b20tc3R5bGU6IG5vbmU7CisJYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7CisJYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKKwlmb250LXNpemU6IDgwJTsKK30KKy5tZW1UZW1wbEl0ZW1MZWZ0IHsKKwlwYWRkaW5nOiAxcHggMHB4IDBweCA4cHg7CisJbWFyZ2luOiA0cHg7CisJYm9yZGVyLXRvcC13aWR0aDogMXB4OworCWJvcmRlci1yaWdodC13aWR0aDogMXB4OworCWJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKKwlib3JkZXItbGVmdC13aWR0aDogMXB4OworCWJvcmRlci10b3AtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXJpZ2h0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1ib3R0b20tY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWxlZnQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXRvcC1zdHlsZTogbm9uZTsKKwlib3JkZXItcmlnaHQtc3R5bGU6IG5vbmU7CisJYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsKKwlib3JkZXItbGVmdC1zdHlsZTogbm9uZTsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOworCWZvbnQtc2l6ZTogODAlOworfQorLm1lbVRlbXBsSXRlbVJpZ2h0IHsKKwlwYWRkaW5nOiAxcHggOHB4IDBweCA4cHg7CisJbWFyZ2luOiA0cHg7CisJYm9yZGVyLXRvcC13aWR0aDogMXB4OworCWJvcmRlci1yaWdodC13aWR0aDogMXB4OworCWJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKKwlib3JkZXItbGVmdC13aWR0aDogMXB4OworCWJvcmRlci10b3AtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXJpZ2h0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1ib3R0b20tY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWxlZnQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXRvcC1zdHlsZTogbm9uZTsKKwlib3JkZXItcmlnaHQtc3R5bGU6IG5vbmU7CisJYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsKKwlib3JkZXItbGVmdC1zdHlsZTogbm9uZTsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOworCWZvbnQtc2l6ZTogODAlOworfQorLm1lbVRlbXBsUGFyYW1zIHsKKwlwYWRkaW5nOiAxcHggMHB4IDBweCA4cHg7CisJbWFyZ2luOiA0cHg7CisJYm9yZGVyLXRvcC13aWR0aDogMXB4OworCWJvcmRlci1yaWdodC13aWR0aDogMXB4OworCWJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKKwlib3JkZXItbGVmdC13aWR0aDogMXB4OworCWJvcmRlci10b3AtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXJpZ2h0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1ib3R0b20tY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWxlZnQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7CisJYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOworCWJvcmRlci1ib3R0b20tc3R5bGU6IG5vbmU7CisJYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7CisgICAgICAgY29sb3I6ICM2MDYwNjA7CisJYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKKwlmb250LXNpemU6IDgwJTsKK30KKy5zZWFyY2ggICAgIHsgY29sb3I6ICMwMDMzOTk7CisgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorRk9STS5zZWFyY2ggeworICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7CisgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDBweDsKK30KK0lOUFVULnNlYXJjaCB7IGZvbnQtc2l6ZTogNzUlOworICAgICAgICAgICAgICAgY29sb3I6ICMwMDAwODA7CisgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOworICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVmZjsKK30KK1RELnRpbnkgICAgICB7IGZvbnQtc2l6ZTogNzUlOworfQorYSB7CisJY29sb3I6ICMyNTJFNzg7Cit9CithOnZpc2l0ZWQgeworCWNvbG9yOiAjM0QyMTg1OworfQorLmRpcnRhYiB7IHBhZGRpbmc6IDRweDsKKyAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNiMGIwYjA7Cit9CitUSC5kaXJ0YWIgeyBiYWNrZ3JvdW5kOiAjZWVlZWZmOworICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CitIUiB7IGhlaWdodDogMXB4OworICAgICBib3JkZXI6IG5vbmU7CisgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKK30KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2RvY3MvZm9vdGVyLmh0bWwgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9kb2NzL2Zvb3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNzU5YjAKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9kb2NzL2Zvb3Rlci5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxwPiZuYnNwOzwvcD4NCis8aHI+PGNlbnRlcj4NCitQSkxJQiBPcGVuIFNvdXJjZSwgaGlnaCBwZXJmb3JtYW5jZSwgc21hbGwgZm9vdHByaW50LCBhbmQgdmVyeSB2ZXJ5IHBvcnRhYmxlIGZyYW1ld29yazxicj4NCitDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSBUZWx1dSBJbmMuDQorPC9jZW50ZXI+DQorDQorDQorPCEtLSNpbmNsdWRlIHZpcnR1YWw9Ii9mb290ZXIuaHRtbCIgLS0+DQorDQorPC9CT0RZPg0KKzwvSFRNTD4NCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9kb2NzL2hlYWRlci5odG1sIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvZG9jcy9oZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGRiM2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvZG9jcy9oZWFkZXIuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPg0KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+DQorPHRpdGxlPiR0aXRsZSAoJHByb2plY3RudW1iZXIpPC90aXRsZT4NCis8bGluayBocmVmPSIvc3R5bGUvc3R5bGUuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4NCis8L2hlYWQ+PGJvZHk+DQorCTwhLS0jaW5jbHVkZSB2aXJ0dWFsPSIvaGVhZGVyLmh0bWwiIC0tPg0KKwk8cD48QSBIUkVGPSIvIj5Ib21lPC9BPiAtLSZndDsgPEEgSFJFRj0iL2RvY3MuaHRtIj5Eb2N1bWVudGF0aW9uczwvQT4gLS0mZ3Q7IFBKTElCIFJlZmVyZW5jZTwvcD4NCisNCisNCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvZmlsZS5ocHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvZmlsZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3ZGVmYwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy9maWxlLmhwcApAQCAtMCwwICsxLDE4OCBAQAorLyogJElkOiBmaWxlLmhwcCAyMzk0IDIwMDgtMTItMjMgMTc6Mjc6NTNaIGJlbm55bHAgJCAgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpQUF9GSUxFX0hQUF9fCisjZGVmaW5lIF9fUEpQUF9GSUxFX0hQUF9fCisKKyNpbmNsdWRlIDxwai9maWxlX2lvLmg+CisjaW5jbHVkZSA8cGovZmlsZV9hY2Nlc3MuaD4KKyNpbmNsdWRlIDxwaisrL3R5cGVzLmhwcD4KKyNpbmNsdWRlIDxwaisrL3Bvb2wuaHBwPgorCisvLworLy8gRmlsZSBBUEkuCisvLworY2xhc3MgUGpfRmlsZV9BUEkKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIENoZWNrIGZpbGUgZXhpc3RhbmNlLgorICAgIC8vCisgICAgc3RhdGljIGJvb2wgZmlsZV9leGlzdHMoY29uc3QgY2hhciAqZmlsZW5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gcGpfZmlsZV9leGlzdHMoZmlsZW5hbWUpICE9IDA7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgZmlsZSBzaXplLgorICAgIC8vCisgICAgc3RhdGljIHBqX29mZl90IGZpbGVfc2l6ZShjb25zdCBjaGFyICpmaWxlbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBwal9maWxlX3NpemUoZmlsZW5hbWUpOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVsZXRlIGZpbGUuCisgICAgLy8KKyAgICBzdGF0aWMgcGpfc3RhdHVzX3QgZmlsZV9kZWxldGUoY29uc3QgY2hhciAqZmlsZW5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gcGpfZmlsZV9kZWxldGUoZmlsZW5hbWUpOworICAgIH0KKworICAgIC8vCisgICAgLy8gTW92ZS9yZW5hbWUgZmlsZS4KKyAgICAvLworICAgIHN0YXRpYyBwal9zdGF0dXNfdCBmaWxlX21vdmUoY29uc3QgY2hhciAqb2xkbmFtZSwgY29uc3QgY2hhciAqbmV3bmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBwal9maWxlX21vdmUob2xkbmFtZSwgbmV3bmFtZSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgc3RhdC4KKyAgICAvLworICAgIHN0YXRpYyBwal9zdGF0dXNfdCBmaWxlX3N0YXQoY29uc3QgY2hhciAqZmlsZW5hbWUsIHBqX2ZpbGVfc3RhdCAqYnVmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBqX2ZpbGVfZ2V0c3RhdChmaWxlbmFtZSwgYnVmKTsKKyAgICB9Cit9OworCisKKy8vCisvLyBGaWxlLgorLy8KK2NsYXNzIFBqX0ZpbGUgOiBwdWJsaWMgUGpfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBPZmZzZXQgdHlwZSB0byBiZSB1c2VkIGluIHNldHBvcy4KKyAgICAvLworICAgIGVudW0gT2Zmc2V0X1R5cGUKKyAgICB7CisgICAgICAgIFBKX1NFRUtfU0VUID0gUEpfU0VFS19TRVQsCisgICAgICAgIFBKX1NFRUtfQ1VSID0gUEpfU0VFS19DVVIsCisgICAgICAgIFBKX1NFRUtfRU5EID0gUEpfU0VFS19FTkQsCisgICAgfTsKKworICAgIC8vCisgICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3Rvci4KKyAgICAvLworICAgIFBqX0ZpbGUoKQorICAgICAgICA6IGhuZF8oMCkKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgYW5kIG9wZW4gYSBmaWxlLgorICAgIC8vCisgICAgUGpfRmlsZShQal9Qb29sICpwb29sLCBjb25zdCBjaGFyICpmaWxlbmFtZSwKKyAgICAgICAgICAgIHVuc2lnbmVkIGFjY2VzcyA9IFBKX09fUkRPTkxZKQorICAgIDogaG5kXyhOVUxMKQorICAgIHsKKyAgICAgICAgb3Blbihwb29sLCBmaWxlbmFtZSwgYWNjZXNzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERlc3RydWN0b3IgY2xvc2VzIHRoZSBmaWxlLgorICAgIC8vCisgICAgflBqX0ZpbGUoKQorICAgIHsKKyAgICAgICAgY2xvc2UoKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE9wZW4gYSBmaWxlLgorICAgIC8vCisgICAgcGpfc3RhdHVzX3Qgb3BlbihQal9Qb29sICpwb29sLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhY2Nlc3MgPSBQSl9PX1JET05MWSApCisgICAgeworICAgICAgICBjbG9zZSgpOworICAgICAgICByZXR1cm4gcGpfZmlsZV9vcGVuKHBvb2wtPnBvb2xfKCksIGZpbGVuYW1lLCBhY2Nlc3MsICZobmRfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENsb3NlIGEgZmlsZS4KKyAgICAvLworICAgIHZvaWQgY2xvc2UoKQorICAgIHsKKyAgICAgICAgaWYgKGhuZF8gIT0gMCkgeworICAgICAgICAgICAgcGpfZmlsZV9jbG9zZShobmRfKTsKKyAgICAgICAgICAgIGhuZF8gPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBXcml0ZSBkYXRhLgorICAgIC8vCisgICAgcGpfc3NpemVfdCB3cml0ZShjb25zdCB2b2lkICpidWZmLCBwal9zaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIHBqX3NzaXplX3QgYnl0ZXMgPSBzaXplOworICAgICAgICBpZiAocGpfZmlsZV93cml0ZShobmRfLCBidWZmLCAmYnl0ZXMpICE9IFBKX1NVQ0NFU1MpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBieXRlczsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFJlYWQgZGF0YS4KKyAgICAvLworICAgIHBqX3NzaXplX3QgcmVhZCh2b2lkICpidWYsIHBqX3NpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgcGpfc3NpemVfdCBieXRlcyA9IHNpemU7CisgICAgICAgIGlmIChwal9maWxlX3JlYWQoaG5kXywgYnVmLCAmYnl0ZXMpICE9IFBKX1NVQ0NFU1MpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBieXRlczsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFNldCBmaWxlIHBvc2l0aW9uLgorICAgIC8vCisgICAgcGpfc3RhdHVzX3Qgc2V0cG9zKHBqX29mZl90IG9mZnNldCwgT2Zmc2V0X1R5cGUgd2hlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBqX2ZpbGVfc2V0cG9zKGhuZF8sIG9mZnNldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW51bSBwal9maWxlX3NlZWtfdHlwZSl3aGVuY2UpOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IGZpbGUgcG9zaXRpb24uCisgICAgLy8KKyAgICBwal9vZmZfdCBnZXRwb3MoKQorICAgIHsKKyAgICAgICAgcGpfb2ZmX3QgcG9zOworICAgICAgICBpZiAocGpfZmlsZV9nZXRwb3MoaG5kXywgJnBvcykgIT0gUEpfU1VDQ0VTUykKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIHBvczsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgcGpfb3NoYW5kbGVfdCBobmRfOworfTsKKworCisKKyNlbmRpZiAgLyogX19QSlBQX0ZJTEVfSFBQX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL2hhc2guaHBwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL2hhc2guaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YjBhOWEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvaGFzaC5ocHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qICRJZDogaGFzaC5ocHAgMjM5NCAyMDA4LTEyLTIzIDE3OjI3OjUzWiBiZW5ueWxwICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpQUF9IQVNIX0hQUF9fCisjZGVmaW5lIF9fUEpQUF9IQVNIX0hQUF9fCisKKyNpbmNsdWRlIDxwaisrL3R5cGVzLmhwcD4KKyNpbmNsdWRlIDxwaisrL3Bvb2wuaHBwPgorI2luY2x1ZGUgPHBqL2hhc2guaD4KKworLy8KKy8vIEhhc2ggdGFibGUuCisvLworY2xhc3MgUGpfSGFzaF9UYWJsZSA6IHB1YmxpYyBQal9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIEhhc2ggdGFibGUgaXRlcmF0b3IuCisgICAgLy8KKyAgICBjbGFzcyBpdGVyYXRvcgorICAgIHsKKyAgICBwdWJsaWM6CisJaXRlcmF0b3IoKSAKKyAgICAgICAgeworICAgICAgICB9CisJZXhwbGljaXQgaXRlcmF0b3IocGpfaGFzaF90YWJsZV90ICpoLCBwal9oYXNoX2l0ZXJhdG9yX3QgKmkpIAorICAgICAgICA6IGh0XyhoKSwgaXRfKGkpIAorICAgICAgICB7CisgICAgICAgIH0KKwlpdGVyYXRvcihjb25zdCBpdGVyYXRvciAmcmhzKSAKKyAgICAgICAgOiBodF8ocmhzLmh0XyksIGl0XyhyaHMuaXRfKSAKKyAgICAgICAgeworICAgICAgICB9CisJdm9pZCBvcGVyYXRvcisrKCkgCisgICAgICAgIHsgCisgICAgICAgICAgICBpdF8gPSBwal9oYXNoX25leHQoaHRfLCBpdF8pOyAKKyAgICAgICAgfQorCWJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciAmcmhzKSAKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHJldHVybiBodF8gPT0gcmhzLmh0XyAmJiBpdF8gPT0gcmhzLml0XzsgCisgICAgICAgIH0KKwlpdGVyYXRvciAmIG9wZXJhdG9yPShjb25zdCBpdGVyYXRvciAmcmhzKSAKKyAgICAgICAgeyAKKyAgICAgICAgICAgIGh0Xz1yaHMuaHRfOyBpdF89cmhzLml0XzsgCisgICAgICAgICAgICByZXR1cm4gKnRoaXM7IAorICAgICAgICB9CisgICAgcHJpdmF0ZToKKwlwal9oYXNoX3RhYmxlX3QgKmh0XzsKKwlwal9oYXNoX2l0ZXJhdG9yX3QgaXRfdmFsXzsKKwlwal9oYXNoX2l0ZXJhdG9yX3QgKml0XzsKKworCWZyaWVuZCBjbGFzcyBQal9IYXNoX1RhYmxlOworICAgIH07CisKKyAgICAvLworICAgIC8vIENvbnN0cnVjdCBoYXNoIHRhYmxlLgorICAgIC8vCisgICAgUGpfSGFzaF9UYWJsZShQal9Qb29sICpwb29sLCB1bnNpZ25lZCBzaXplKQorICAgIHsKKwl0YWJsZV8gPSBwal9oYXNoX2NyZWF0ZShwb29sLT5wb29sXygpLCBzaXplKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERlc3Ryb3kgaGFzaCB0YWJsZS4KKyAgICAvLworICAgIH5Qal9IYXNoX1RhYmxlKCkKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDYWxjdWxhdGUgaGFzaCB2YWx1ZS4KKyAgICAvLworICAgIHN0YXRpYyBwal91aW50MzJfdCBjYWxjKCBwal91aW50MzJfdCBpbml0aWFsX2h2YWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICprZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBrZXlsZW4gPSBQSl9IQVNIX0tFWV9TVFJJTkcpCisgICAgeworCXJldHVybiBwal9oYXNoX2NhbGMoaW5pdGlhbF9odmFsLCBrZXksIGtleWxlbik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBSZXR1cm4gcGpsaWIgY29tcGF0aWJsZSBoYXNoIHRhYmxlIG9iamVjdC4KKyAgICAvLworICAgIHBqX2hhc2hfdGFibGVfdCAqcGpfaGFzaF90YWJsZV90XygpCisgICAgeworCXJldHVybiB0YWJsZV87CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS4KKyAgICAvLworICAgIHZvaWQgKmdldChjb25zdCB2b2lkICprZXksIHVuc2lnbmVkIGtleWxlbiA9IFBKX0hBU0hfS0VZX1NUUklORykKKyAgICB7CisJcmV0dXJuIHBqX2hhc2hfZ2V0KHRhYmxlXywga2V5LCBrZXlsZW4pOworICAgIH0KKworICAgIC8vCisgICAgLy8gQXNzb2NpYXRlIGEgdmFsdWUgd2l0aCBhIGtleS4KKyAgICAvLyBTZXQgdGhlIHZhbHVlIHRvIE5VTEwgdG8gZGVsZXRlIHRoZSBrZXkgZnJvbSB0aGUgaGFzaCB0YWJsZS4KKyAgICAvLworICAgIHZvaWQgc2V0KFBqX1Bvb2wgKnBvb2wsIAorICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmtleSwgCisgICAgICAgICAgICAgdm9pZCAqdmFsdWUsCisgICAgICAgICAgICAgdW5zaWduZWQga2V5bGVuID0gUEpfSEFTSF9LRVlfU1RSSU5HKQorICAgIHsKKwlwal9oYXNoX3NldChwb29sLT5wb29sXygpLCB0YWJsZV8sIGtleSwga2V5bGVuLCB2YWx1ZSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBoYXNoIHRhYmxlLgorICAgIC8vCisgICAgdW5zaWduZWQgY291bnQoKQorICAgIHsKKwlyZXR1cm4gcGpfaGFzaF9jb3VudCh0YWJsZV8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gSXRlcmF0ZSBoYXNoIHRhYmxlLgorICAgIC8vCisgICAgaXRlcmF0b3IgYmVnaW4oKQorICAgIHsKKwlpdGVyYXRvciBpdCh0YWJsZV8sIE5VTEwpOworCWl0Lml0XyA9IHBqX2hhc2hfZmlyc3QodGFibGVfLCAmaXQuaXRfdmFsXyk7CisJcmV0dXJuIGl0OworICAgIH0KKworICAgIC8vCisgICAgLy8gRW5kIG9mIGl0ZW1zLgorICAgIC8vCisgICAgaXRlcmF0b3IgZW5kKCkKKyAgICB7CisJcmV0dXJuIGl0ZXJhdG9yKHRhYmxlXywgTlVMTCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHBqX2hhc2hfdGFibGVfdCAqdGFibGVfOworfTsKKworCisjZW5kaWYJLyogX19QSlBQX0hBU0hfSFBQX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL2xpc3QuaHBwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL2xpc3QuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MjE3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvbGlzdC5ocHAKQEAgLTAsMCArMSwzNTIgQEAKKy8qICRJZDogbGlzdC5ocHAgMjM5NCAyMDA4LTEyLTIzIDE3OjI3OjUzWiBiZW5ueWxwICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpQUF9MSVNUX0hQUF9fCisjZGVmaW5lIF9fUEpQUF9MSVNUX0hQUF9fCisKKyNpbmNsdWRlIDxwai9saXN0Lmg+CisjaW5jbHVkZSA8cGorKy9wb29sLmhwcD4KKworCisvLworLy8gTGlua2VkLWxpc3QuCisvLworLy8gTm90ZToKKy8vICBMaXN0X05vZGUgbXVzdCBoYXZlIHB1YmxpYyBtZW1iZXIgbmV4dCBhbmQgcHJldi4gTm9ybWFsbHkKKy8vICBpdCB3aWxsIGJlIGRlY2xhcmVkIGxpa2U6CisvLworLy8gIHN0cnVjdCBteV9ub2RlCisvLyAgeworLy8gICAgICBQSl9ERUNMX0xJU1RfTUVNQkVSKHN0cnVjdCBteV9ub2RlKTsKKy8vICAgICAgLi4KKy8vICB9OworLy8KKy8vCit0ZW1wbGF0ZSA8Y2xhc3MgTGlzdF9Ob2RlPgorY2xhc3MgUGpfTGlzdCA6IHB1YmxpYyBQal9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIExpc3QgY29uc3RfaXRlcmF0b3IuCisgICAgLy8KKyAgICBjbGFzcyBjb25zdF9pdGVyYXRvcgorICAgIHsKKyAgICBwdWJsaWM6CisJY29uc3RfaXRlcmF0b3IoKSAKKyAgICAgICAgICAgIDogbm9kZV8oTlVMTCkgCisgICAgICAgIHt9CisJY29uc3RfaXRlcmF0b3IoY29uc3QgTGlzdF9Ob2RlICpuZCkgCisgICAgICAgICAgICA6IG5vZGVfKChMaXN0X05vZGUqKW5kKSAKKyAgICAgICAge30KKwljb25zdCBMaXN0X05vZGUgKiBvcGVyYXRvciAqKCkgCisgICAgICAgIHsgCisgICAgICAgICAgICByZXR1cm4gbm9kZV87IAorICAgICAgICB9CisJY29uc3QgTGlzdF9Ob2RlICogb3BlcmF0b3IgLT4gKCkgCisgICAgICAgIHsgCisgICAgICAgICAgICByZXR1cm4gbm9kZV87IAorICAgICAgICB9CisJY29uc3RfaXRlcmF0b3Igb3BlcmF0b3IrKygpIAorICAgICAgICB7IAorICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKChjb25zdCBMaXN0X05vZGUgKilub2RlXy0+bmV4dCk7IAorICAgICAgICB9CisJYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJhdG9yICZyaHMpIAorICAgICAgICB7IAorICAgICAgICAgICAgcmV0dXJuIG5vZGVfID09IHJocy5ub2RlXzsgCisgICAgICAgIH0KKwlib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3IgJnJocykgCisgICAgICAgIHsgCisgICAgICAgICAgICByZXR1cm4gbm9kZV8gIT0gcmhzLm5vZGVfOyAKKyAgICAgICAgfQorCisgICAgcHJvdGVjdGVkOgorCUxpc3RfTm9kZSAqbm9kZV87CisgICAgfTsKKworICAgIC8vCisgICAgLy8gTGlzdCBpdGVyYXRvci4KKyAgICAvLworICAgIGNsYXNzIGl0ZXJhdG9yIDogcHVibGljIGNvbnN0X2l0ZXJhdG9yCisgICAgeworICAgIHB1YmxpYzoKKwlpdGVyYXRvcigpIAorICAgICAgICB7fQorCWl0ZXJhdG9yKExpc3RfTm9kZSAqbmQpIAorICAgICAgICAgICAgOiBjb25zdF9pdGVyYXRvcihuZCkgCisgICAgICAgIHt9CisJTGlzdF9Ob2RlICogb3BlcmF0b3IgKigpIAorICAgICAgICB7IAorICAgICAgICAgICAgcmV0dXJuIG5vZGVfOyAKKyAgICAgICAgfQorCUxpc3RfTm9kZSAqIG9wZXJhdG9yIC0+ICgpIAorICAgICAgICB7IAorICAgICAgICAgICAgcmV0dXJuIG5vZGVfOyAKKyAgICAgICAgfQorCWl0ZXJhdG9yIG9wZXJhdG9yKysoKSAKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigoTGlzdF9Ob2RlKilub2RlXy0+bmV4dCk7IAorICAgICAgICB9CisJYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yICZyaHMpIAorICAgICAgICB7IAorICAgICAgICAgICAgcmV0dXJuIG5vZGVfID09IHJocy5ub2RlXzsgCisgICAgICAgIH0KKwlib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3IgJnJocykgCisgICAgICAgIHsgCisgICAgICAgICAgICByZXR1cm4gbm9kZV8gIT0gcmhzLm5vZGVfOyAKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLworICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IuCisgICAgLy8KKyAgICBQal9MaXN0KCkgCisgICAgeyAKKyAgICAgICAgcGpfbGlzdF9pbml0KCZyb290Xyk7IAorICAgICAgICBpZiAoMCkgY29tcGlsZXRlc3QoKTsgCisgICAgfQorCisgICAgLy8KKyAgICAvLyBZb3UgY2FuIGNhc3QgUGpfTGlzdCB0byBwal9saXN0CisgICAgLy8KKyAgICBvcGVyYXRvciBwal9saXN0JigpCisgICAgeworCXJldHVybiAocGpfbGlzdCYpcm9vdF87CisgICAgfQorICAgIG9wZXJhdG9yIGNvbnN0IHBqX2xpc3QmKCkKKyAgICB7CisJcmV0dXJuIChjb25zdCBwal9saXN0Jilyb290XzsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFlvdSBjYW4gY2FzdCBQal9MaXN0IHRvIHBqX2xpc3QqIHRvbworICAgIC8vCisgICAgb3BlcmF0b3IgcGpfbGlzdCooKQorICAgIHsKKwlyZXR1cm4gKHBqX2xpc3QqKSZyb290XzsKKyAgICB9CisgICAgb3BlcmF0b3IgY29uc3QgcGpfbGlzdCooKQorICAgIHsKKwlyZXR1cm4gKGNvbnN0IHBqX2xpc3QqKSZyb290XzsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENoZWNrIGlmIGxpc3QgaXMgZW1wdHkuCisgICAgLy8gCisgICAgYm9vbCBlbXB0eSgpIGNvbnN0CisgICAgeworCXJldHVybiBwal9saXN0X2VtcHR5KCZyb290Xyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgZmlyc3QgZWxlbWVudC4KKyAgICAvLworICAgIGl0ZXJhdG9yIGJlZ2luKCkKKyAgICB7CisJcmV0dXJuIGl0ZXJhdG9yKHJvb3RfLm5leHQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IGZpcnN0IGVsZW1lbnQuCisgICAgLy8KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0CisgICAgeworCXJldHVybiBjb25zdF9pdGVyYXRvcihyb290Xy5uZXh0KTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCBlbmQtb2YtZWxlbWVudAorICAgIC8vCisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QKKyAgICB7CisJcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKChMaXN0X05vZGUqKSZyb290Xyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgZW5kLW9mLWVsZW1lbnQKKyAgICAvLworICAgIGl0ZXJhdG9yIGVuZCgpCisgICAgeworCXJldHVybiBpdGVyYXRvcigoTGlzdF9Ob2RlKikmcm9vdF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gSW5zZXJ0IG5vZGUuCisgICAgLy8KKyAgICB2b2lkIGluc2VydF9iZWZvcmUgKGl0ZXJhdG9yICZwb3MsIExpc3RfTm9kZSAqbm9kZSkKKyAgICB7CisJcGpfbGlzdF9pbnNlcnRfYmVmb3JlKCAqcG9zLCBub2RlICk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBJbnNlcnQgbm9kZS4KKyAgICAvLworICAgIHZvaWQgaW5zZXJ0X2FmdGVyKGl0ZXJhdG9yICZwb3MsIExpc3RfTm9kZSAqbm9kZSkKKyAgICB7CisJcGpfbGlzdF9pbnNlcnRfYWZ0ZXIoKnBvcywgbm9kZSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBNZXJnZSBsaXN0LgorICAgIC8vCisgICAgdm9pZCBtZXJnZV9maXJzdChMaXN0X05vZGUgKmxpc3QyKQorICAgIHsKKwlwal9saXN0X21lcmdlX2ZpcnN0KCZyb290XywgbGlzdDIpOworICAgIH0KKworICAgIC8vCisgICAgLy8gTWVyZ2UgbGlzdC4KKyAgICAvLworICAgIHZvaWQgbWVyZ2VfbGFzdChQal9MaXN0ICpsaXN0KQorICAgIHsKKwlwal9saXN0X21lcmdlX2xhc3QoJnJvb3RfLCAmbGlzdC0+cm9vdF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gSW5zZXJ0IGxpc3QuCisgICAgLy8KKyAgICB2b2lkIGluc2VydF9ub2Rlc19iZWZvcmUoaXRlcmF0b3IgJnBvcywgUGpfTGlzdCAqbGlzdDIpCisgICAgeworCXBqX2xpc3RfaW5zZXJ0X25vZGVzX2JlZm9yZSgqcG9zLCAmbGlzdDItPnJvb3RfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEluc2VydCBsaXN0LgorICAgIC8vCisgICAgdm9pZCBpbnNlcnRfbm9kZXNfYWZ0ZXIoaXRlcmF0b3IgJnBvcywgUGpfTGlzdCAqbGlzdDIpCisgICAgeworCXBqX2xpc3RfaW5zZXJ0X25vZGVzX2FmdGVyKCpwb3MsICZsaXN0Mi0+cm9vdF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gRXJhc2UgYW4gZWxlbWVudC4KKyAgICAvLworICAgIHZvaWQgZXJhc2UoaXRlcmF0b3IgJml0KQorICAgIHsKKwlwal9saXN0X2VyYXNlKCppdCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgZmlyc3QgZWxlbWVudC4KKyAgICAvLworICAgIExpc3RfTm9kZSAqZnJvbnQoKQorICAgIHsKKwlyZXR1cm4gcm9vdF8ubmV4dDsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCBmaXJzdCBlbGVtZW50LgorICAgIC8vCisgICAgY29uc3QgTGlzdF9Ob2RlICpmcm9udCgpIGNvbnN0CisgICAgeworCXJldHVybiByb290Xy5uZXh0OworICAgIH0KKworICAgIC8vCisgICAgLy8gUmVtb3ZlIGZpcnN0IGVsZW1lbnQuCisgICAgLy8KKyAgICB2b2lkIHBvcF9mcm9udCgpCisgICAgeworCXBqX2xpc3RfZXJhc2Uocm9vdF8ubmV4dCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgbGFzdCBlbGVtZW50LgorICAgIC8vCisgICAgTGlzdF9Ob2RlICpiYWNrKCkKKyAgICB7CisJcmV0dXJuIHJvb3RfLnByZXY7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgbGFzdCBlbGVtZW50LgorICAgIC8vCisgICAgY29uc3QgTGlzdF9Ob2RlICpiYWNrKCkgY29uc3QKKyAgICB7CisJcmV0dXJuIHJvb3RfLnByZXY7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBSZW1vdmUgbGFzdCBlbGVtZW50LgorICAgIC8vCisgICAgdm9pZCBwb3BfYmFjaygpCisgICAgeworCXBqX2xpc3RfZXJhc2Uocm9vdF8ucHJldik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBGaW5kIGEgbm9kZS4KKyAgICAvLworICAgIGl0ZXJhdG9yIGZpbmQoTGlzdF9Ob2RlICpub2RlKQorICAgIHsKKwlMaXN0X05vZGUgKm4gPSBwal9saXN0X2ZpbmRfbm9kZSgmcm9vdF8sIG5vZGUpOworCXJldHVybiBuID8gaXRlcmF0b3IobikgOiBlbmQoKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEZpbmQgYSBub2RlLgorICAgIC8vCisgICAgY29uc3RfaXRlcmF0b3IgZmluZChMaXN0X05vZGUgKm5vZGUpIGNvbnN0CisgICAgeworCUxpc3RfTm9kZSAqbiA9IHBqX2xpc3RfZmluZF9ub2RlKCZyb290Xywgbm9kZSk7CisJcmV0dXJuIG4gPyBjb25zdF9pdGVyYXRvcihuKSA6IGVuZCgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gSW5zZXJ0IGEgbm9kZSBpbiB0aGUgYmFjay4KKyAgICAvLworICAgIHZvaWQgcHVzaF9iYWNrKExpc3RfTm9kZSAqbm9kZSkKKyAgICB7CisJcGpfbGlzdF9pbnNlcnRfYWZ0ZXIocm9vdF8ucHJldiwgbm9kZSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBJbnNlcnQgYSBub2RlIGluIHRoZSBmcm9udC4KKyAgICAvLworICAgIHZvaWQgcHVzaF9mcm9udChMaXN0X05vZGUgKm5vZGUpCisgICAgeworCXBqX2xpc3RfaW5zZXJ0X2JlZm9yZShyb290Xy5uZXh0LCBub2RlKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFJlbW92ZSBhbGwgZWxlbWVudHMuCisgICAgLy8KKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisJcm9vdF8ubmV4dCA9ICZyb290XzsKKwlyb290Xy5wcmV2ID0gJnJvb3RfOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgUm9vdE5vZGUKKyAgICB7CisJUEpfREVDTF9MSVNUX01FTUJFUihMaXN0X05vZGUpOworICAgIH0gcm9vdF87CisKKyAgICB2b2lkIGNvbXBpbGV0ZXN0KCkKKyAgICB7CisJLy8gSWYgeW91IHNlZSBlcnJvciBpbiB0aGlzIGxpbmUsIAorCS8vIGl0J3MgYmVjYXVzZSBMaXN0X05vZGUgaXMgbm90IGRlcml2ZWQgZnJvbSBQal9MaXN0X05vZGUuCisJTGlzdF9Ob2RlICpuID0gKExpc3RfTm9kZSopMDsKKwluID0gKExpc3RfTm9kZSAqKW4tPm5leHQ7IG4gPSAoTGlzdF9Ob2RlICopbi0+cHJldjsKKyAgICB9Cit9OworCisKKyNlbmRpZgkvKiBfX1BKUFBfTElTVF9IUFBfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvbG9jay5ocHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvbG9jay5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM3NzlhNgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy9sb2NrLmhwcApAQCAtMCwwICsxLDE0OSBAQAorLyogJElkOiBsb2NrLmhwcCAyMzk0IDIwMDgtMTItMjMgMTc6Mjc6NTNaIGJlbm55bHAgJCAgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpQUF9MT0NLX0hQUF9fCisjZGVmaW5lIF9fUEpQUF9MT0NLX0hQUF9fCisKKyNpbmNsdWRlIDxwaisrL3R5cGVzLmhwcD4KKyNpbmNsdWRlIDxwai9sb2NrLmg+CisjaW5jbHVkZSA8cGorKy9wb29sLmhwcD4KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBMb2NrIG9iamVjdC4KKy8vCitjbGFzcyBQal9Mb2NrIDogcHVibGljIFBqX09iamVjdAoreworcHVibGljOgorICAgIC8vCisgICAgLy8gQ29uc3RydWN0b3IuCisgICAgLy8KKyAgICBleHBsaWNpdCBQal9Mb2NrKHBqX2xvY2tfdCAqbG9jaykKKyAgICAgICAgOiBsb2NrXyhsb2NrKQorICAgIHsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERlc3RydWN0b3IuCisgICAgLy8KKyAgICB+UGpfTG9jaygpCisgICAgeworICAgICAgICBpZiAobG9ja18pCisgICAgICAgICAgICBwal9sb2NrX2Rlc3Ryb3kobG9ja18pOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHBqbGliIGNvbXBhdGlibGUgbG9jayBvYmplY3QuCisgICAgLy8KKyAgICBwal9sb2NrX3QgKnBqX2xvY2tfdF8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvY2tfOworICAgIH0KKworICAgIC8vCisgICAgLy8gYWNxdWlyZSBsb2NrLgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgYWNxdWlyZSgpCisgICAgeworICAgICAgICByZXR1cm4gcGpfbG9ja19hY3F1aXJlKGxvY2tfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIHJlbGVhc2UgbG9jaywuCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCByZWxlYXNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBwal9sb2NrX3JlbGVhc2UobG9ja18pOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHBqX2xvY2tfdCAqbG9ja187Cit9OworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gTnVsbCBsb2NrIG9iamVjdC4KKy8vCitjbGFzcyBQal9OdWxsX0xvY2sgOiBwdWJsaWMgUGpfTG9jaworeworcHVibGljOgorICAgIC8vCisgICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3Rvci4KKyAgICAvLworICAgIGV4cGxpY2l0IFBqX051bGxfTG9jayhQal9Qb29sICpwb29sLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCkKKyAgICAgICAgOiBQal9Mb2NrKE5VTEwpCisgICAgeworICAgICAgICBwal9sb2NrX2NyZWF0ZV9udWxsX211dGV4KHBvb2wtPnBvb2xfKCksIG5hbWUsICZsb2NrXyk7CisgICAgfQorfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBTaW1wbGUgbXV0ZXggbG9jayBvYmplY3QuCisvLworY2xhc3MgUGpfU2ltcGxlX011dGV4X0xvY2sgOiBwdWJsaWMgUGpfTG9jaworeworcHVibGljOgorICAgIC8vCisgICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3Rvci4KKyAgICAvLworICAgIGV4cGxpY2l0IFBqX1NpbXBsZV9NdXRleF9Mb2NrKFBqX1Bvb2wgKnBvb2wsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKQorICAgICAgICA6IFBqX0xvY2soTlVMTCkKKyAgICB7CisgICAgICAgIHBqX2xvY2tfY3JlYXRlX3NpbXBsZV9tdXRleChwb29sLT5wb29sXygpLCBuYW1lLCAmbG9ja18pOworICAgIH0KK307CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUmVjdXJzaXZlIG11dGV4IGxvY2sgb2JqZWN0LgorLy8KK2NsYXNzIFBqX1JlY3Vyc2l2ZV9NdXRleF9Mb2NrIDogcHVibGljIFBqX0xvY2sKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IuCisgICAgLy8KKyAgICBleHBsaWNpdCBQal9SZWN1cnNpdmVfTXV0ZXhfTG9jayhQal9Qb29sICpwb29sLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCkKKyAgICAgICAgOiBQal9Mb2NrKE5VTEwpCisgICAgeworICAgICAgICBwal9sb2NrX2NyZWF0ZV9yZWN1cnNpdmVfbXV0ZXgocG9vbC0+cG9vbF8oKSwgbmFtZSwgJmxvY2tfKTsKKyAgICB9Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFNlbWFwaG9yZSBsb2NrIG9iamVjdC4KKy8vCitjbGFzcyBQal9TZW1hcGhvcmVfTG9jayA6IHB1YmxpYyBQal9Mb2NrCit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgIC8vCisgICAgZXhwbGljaXQgUGpfU2VtYXBob3JlX0xvY2soUGpfUG9vbCAqcG9vbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWF4PVBKX01BWElOVDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluaXRpYWw9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lPU5VTEwpCisgICAgICAgIDogUGpfTG9jayhOVUxMKQorICAgIHsKKyAgICAgICAgcGpfbG9ja19jcmVhdGVfc2VtYXBob3JlKHBvb2wtPnBvb2xfKCksIG5hbWUsIGluaXRpYWwsIG1heCwgJmxvY2tfKTsKKyAgICB9Cit9OworCisKKworI2VuZGlmCS8qIF9fUEpQUF9MT0NLX0hQUF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy9vcy5ocHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvb3MuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjODdmMzEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvb3MuaHBwCkBAIC0wLDAgKzEsODcwIEBACisvKiAkSWQ6IG9zLmhwcCAyMzk0IDIwMDgtMTItMjMgMTc6Mjc6NTNaIGJlbm55bHAgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSlBQX09TX0hQUF9fCisjZGVmaW5lIF9fUEpQUF9PU19IUFBfXworCisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwaisrL3R5cGVzLmhwcD4KKyNpbmNsdWRlIDxwaisrL3Bvb2wuaHBwPgorCitjbGFzcyBQal9UaHJlYWQ7CisKKy8vCisvLyBUaHJlYWQgQVBJLgorLy8KK2NsYXNzIFBqX1RocmVhZF9BUEkKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIENyZWF0ZSBhIHRocmVhZC4KKyAgICAvLworICAgIHN0YXRpYyBwal9zdGF0dXNfdCBjcmVhdGUoIFBqX1Bvb2wgKnBvb2wsIHBqX3RocmVhZF90ICoqdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3RocmVhZF9wcm9jICpwcm9jLCB2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxhZ3MgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NpemVfdCBzdGFja19zaXplID0gMCApCisgICAgeworICAgICAgICByZXR1cm4gcGpfdGhyZWFkX2NyZWF0ZShwb29sLT5wb29sXygpLCBuYW1lLCBwcm9jLCBhcmcsIHN0YWNrX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCB0aHJlYWQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gUmVnaXN0ZXIgYSB0aHJlYWQuCisgICAgLy8KKyAgICBzdGF0aWMgcGpfc3RhdHVzX3QgcmVnaXN0ZXJfdGhpc190aHJlYWQoIHBqX3RocmVhZF9kZXNjIGRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aHJlYWRfdCAqKnRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMICkKKyAgICB7CisgICAgICAgIHJldHVybiBwal90aHJlYWRfcmVnaXN0ZXIoIG5hbWUsIGRlc2MsIHRocmVhZCApOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IGN1cnJlbnQgdGhyZWFkLgorICAgIC8vIFdpbGwgcmV0dXJuIHBqX3RocmVhZF90IChzb3JyeSBmb2xrcywgbm90IFBqX1RocmVhZCkuCisgICAgLy8KKyAgICBzdGF0aWMgcGpfdGhyZWFkX3QgKnRoaXNfdGhyZWFkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBwal90aHJlYWRfdGhpcygpOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHRocmVhZCBuYW1lLgorICAgIC8vCisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmdldF9uYW1lKHBqX3RocmVhZF90ICp0aHJlYWQpCisgICAgeworICAgICAgICByZXR1cm4gcGpfdGhyZWFkX2dldF9uYW1lKHRocmVhZCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBSZXN1bWUgdGhyZWFkLgorICAgIC8vCisgICAgc3RhdGljIHBqX3N0YXR1c190IHJlc3VtZShwal90aHJlYWRfdCAqdGhyZWFkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBqX3RocmVhZF9yZXN1bWUodGhyZWFkKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFNsZWVwLgorICAgIC8vCisgICAgc3RhdGljIHBqX3N0YXR1c190IHNsZWVwKHVuc2lnbmVkIG1zZWMpCisgICAgeworCXJldHVybiBwal90aHJlYWRfc2xlZXAobXNlYyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBKb2luIHRoZSBzcGVjaWZpZWQgdGhyZWFkLgorICAgIC8vCisgICAgc3RhdGljIHBqX3N0YXR1c190IGpvaW4ocGpfdGhyZWFkX3QgKnRocmVhZCkKKyAgICB7CisgICAgICAgIHJldHVybiBwal90aHJlYWRfam9pbih0aHJlYWQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVzdHJveSB0aHJlYWQKKyAgICAvLworICAgIHN0YXRpYyBwal9zdGF0dXNfdCBkZXN0cm95KHBqX3RocmVhZF90ICp0aHJlYWQpCisgICAgeworICAgICAgICByZXR1cm4gcGpfdGhyZWFkX2Rlc3Ryb3kodGhyZWFkKTsKKyAgICB9Cit9OworCisKKworLy8KKy8vIFRocmVhZCBvYmplY3QuCisvLworLy8gSG93IHRvIHVzZToKKy8vICBEZXJpdmUgYSBjbGFzcyBmcm9tIHRoaXMgY2xhc3MsIHRoZW4gb3ZlcnJpZGUgbWFpbigpLgorLy8KK2NsYXNzIFBqX1RocmVhZCA6IHB1YmxpYyBQal9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICBlbnVtIEZsYWdzCisgICAgeworCUZMQUdfU1VTUEVOREVEID0gUEpfVEhSRUFEX1NVU1BFTkRFRAorICAgIH07CisKKyAgICAvLworICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IuCisgICAgLy8KKyAgICBQal9UaHJlYWQoKQorICAgICAgICA6IHRocmVhZF8oTlVMTCkKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cm95IHRocmVhZC4KKyAgICAvLworICAgIH5Qal9UaHJlYWQoKQorICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gVGhpcyBpcyB0aGUgbWFpbiB0aHJlYWQgZnVuY3Rpb24uCisgICAgLy8KKyAgICB2aXJ0dWFsIGludCBtYWluKCkgPSAwOworCisgICAgLy8KKyAgICAvLyBTdGFydCBhIHRocmVhZC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IGNyZWF0ZSggUGpfUG9vbCAqcG9vbCwgCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmbGFncyA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0aHJlYWRfbmFtZSA9IE5VTEwsCisJCQlwal9zaXplX3Qgc3RhY2tfc2l6ZSA9IFBKX1RIUkVBRF9ERUZBVUxUX1NUQUNLX1NJWkUpCisgICAgeworICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIHJldHVybiBQal9UaHJlYWRfQVBJOjpjcmVhdGUoIHBvb2wsICZ0aHJlYWRfLCAmdGhyZWFkX3Byb2MsIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCB0aHJlYWRfbmFtZSwgc3RhY2tfc2l6ZSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgcGpsaWIgY29tcGF0aWJsZSB0aHJlYWQgb2JqZWN0LgorICAgIC8vCisgICAgcGpfdGhyZWFkX3QgKnBqX3RocmVhZF90XygpCisgICAgeworCXJldHVybiB0aHJlYWRfOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHRocmVhZCBuYW1lLgorICAgIC8vCisgICAgY29uc3QgY2hhciAqZ2V0X25hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFBqX1RocmVhZF9BUEk6OmdldF9uYW1lKHRocmVhZF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gUmVzdW1lIGEgc3VzcGVuZGVkIHRocmVhZC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHJlc3VtZSgpCisgICAgeworICAgICAgICByZXR1cm4gUGpfVGhyZWFkX0FQSTo6cmVzdW1lKHRocmVhZF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gSm9pbiB0aGlzIHRocmVhZC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IGpvaW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFBqX1RocmVhZF9BUEk6OmpvaW4odGhyZWFkXyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cm95IHRocmVhZC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgaWYgKHRocmVhZF8pIHsKKyAgICAgICAgICAgIFBqX1RocmVhZF9BUEk6OmRlc3Ryb3kodGhyZWFkXyk7CisgICAgICAgICAgICB0aHJlYWRfID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworcHJvdGVjdGVkOgorICAgIHBqX3RocmVhZF90ICp0aHJlYWRfOworCisgICAgc3RhdGljIGludCBQSl9USFJFQURfRlVOQyB0aHJlYWRfcHJvYyh2b2lkICpvYmopCisgICAgeworICAgICAgICBQal9UaHJlYWQgKnRocmVhZF9jbGFzcyA9IChQal9UaHJlYWQqKW9iajsKKyAgICAgICAgcmV0dXJuIHRocmVhZF9jbGFzcy0+bWFpbigpOworICAgIH0KK307CisKKworLy8KKy8vIEV4dGVybmFsIFRocmVhZAorLy8gICh0aHJlYWRzIHRoYXQgd2VyZSBzdGFydGVkIGJ5IGV4dGVybmFsIG1lYW5zLCBpLmUuIG5vdCAKKy8vICAgd2l0aCBQal9UaHJlYWQ6OmNyZWF0ZSkuCisvLworLy8gVGhpcyBjbGFzcyB3aWxsIG5vcm1hbGx5IGJlIGRlZmluZWQgYXMgbG9jYWwgdmFyaWFibGUgaW4KKy8vIGV4dGVybmFsIHRocmVhZCdzIHN0YWNrLCBub3JtYWxseSBpbnNpZGUgdGhyZWFkJ3MgbWFpbiBwcm9jLgorLy8gQnV0IGJlIGF3YXJlIHRoYXQgdGhlIGhhbmRsZSB3aWxsIGJlIGRlc3Ryb3llZCBvbiBkZXN0cnVjdG9yIQorLy8KK2NsYXNzIFBqX0V4dGVybmFsX1RocmVhZCA6IHB1YmxpYyBQal9UaHJlYWQKK3sKK3B1YmxpYzoKKyAgICBQal9FeHRlcm5hbF9UaHJlYWQoKQorICAgIHsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFJlZ2lzdGVyIGV4dGVybmFsIHRocmVhZCBzbyB0aGF0IHBqbGliIGZ1bmN0aW9ucyBjYW4gd29yaworICAgIC8vIGluIHRoYXQgdGhyZWFkLgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgcmVnaXN0ZXJfdGhpc190aHJlYWQoIGNvbnN0IGNoYXIgKm5hbWU9TlVMTCApCisgICAgeworICAgICAgICByZXR1cm4gUGpfVGhyZWFkX0FQSTo6cmVnaXN0ZXJfdGhpc190aHJlYWQoZGVzY18sICZ0aHJlYWRfLG5hbWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBwal90aHJlYWRfZGVzYyBkZXNjXzsKK307CisKKworLy8KKy8vIFRocmVhZCBzcGVjaWZpYyBkYXRhL3RocmVhZCBsb2NhbCBzdG9yYWdlL1RMUy4KKy8vCitjbGFzcyBQal9UaHJlYWRfTG9jYWxfQVBJCit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBBbGxvY2F0ZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBpbmRleC4KKyAgICAvLworICAgIHN0YXRpYyBwal9zdGF0dXNfdCBhbGxvYyhsb25nICppbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBwal90aHJlYWRfbG9jYWxfYWxsb2MoaW5kZXgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gRnJlZSBUTFMgaW5kZXguCisgICAgLy8KKyAgICBzdGF0aWMgdm9pZCBmcmVlKGxvbmcgaW5kZXgpCisgICAgeworICAgICAgICBwal90aHJlYWRfbG9jYWxfZnJlZShpbmRleCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTZXQgdGhyZWFkIHNwZWNpZmljIGRhdGEuCisgICAgLy8KKyAgICBzdGF0aWMgcGpfc3RhdHVzX3Qgc2V0KGxvbmcgaW5kZXgsIHZvaWQgKnZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBqX3RocmVhZF9sb2NhbF9zZXQoaW5kZXgsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCB0aHJlYWQgc3BlY2lmaWMgZGF0YS4KKyAgICAvLworICAgIHN0YXRpYyB2b2lkICpnZXQobG9uZyBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBwal90aHJlYWRfbG9jYWxfZ2V0KGluZGV4KTsKKyAgICB9CisKK307CisKKy8vCisvLyBBdG9taWMgdmFyaWFibGUKKy8vCisvLyBIb3cgdG8gdXNlOgorLy8gICBQal9BdG9taWNfVmFyIHZhcihwb29sLCAwKTsKKy8vICAgdmFyLnNldCguLik7CisvLworY2xhc3MgUGpfQXRvbWljX1ZhciA6IHB1YmxpYyBQal9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IsIGluaXRpYWxpemUgdmFyaWFibGUgd2l0aCBOVUxMLgorICAgIC8vCisgICAgUGpfQXRvbWljX1ZhcigpCisgICAgICAgIDogdmFyXyhOVUxMKQorICAgIHsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbnN0cnVjdCBhdG9taWMgdmFyaWFibGUuCisgICAgLy8KKyAgICBQal9BdG9taWNfVmFyKFBqX1Bvb2wgKnBvb2wsIHBqX2F0b21pY192YWx1ZV90IHZhbHVlKQorICAgICAgICA6IHZhcl8oTlVMTCkKKyAgICB7CisgICAgICAgIGNyZWF0ZShwb29sLCB2YWx1ZSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cnVjdG9yLgorICAgIC8vCisgICAgflBqX0F0b21pY19WYXIoKQorICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ3JlYXRlIGF0b21pYyB2YXJpYWJsZS4KKyAgICAvLworICAgIHBqX3N0YXR1c190IGNyZWF0ZSggUGpfUG9vbCAqcG9vbCwgcGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUpCisgICAgeworICAgICAgICBkZXN0cm95KCk7CisJcmV0dXJuIHBqX2F0b21pY19jcmVhdGUocG9vbC0+cG9vbF8oKSwgdmFsdWUsICZ2YXJfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERlc3Ryb3kuCisgICAgLy8KKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgaWYgKHZhcl8pIHsKKyAgICAgICAgICAgIHBqX2F0b21pY19kZXN0cm95KHZhcl8pOworICAgICAgICAgICAgdmFyXyA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCBwamxpYiBjb21wYXRpYmxlIGF0b21pYyB2YXJpYWJsZS4KKyAgICAvLworICAgIHBqX2F0b21pY190ICpwal9hdG9taWNfdF8oKQorICAgIHsKKwlyZXR1cm4gdmFyXzsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFNldCB0aGUgdmFsdWUuCisgICAgLy8KKyAgICB2b2lkIHNldChwal9hdG9taWNfdmFsdWVfdCB2YWwpCisgICAgeworCXBqX2F0b21pY19zZXQodmFyXywgdmFsKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCB0aGUgdmFsdWUuCisgICAgLy8KKyAgICBwal9hdG9taWNfdmFsdWVfdCBnZXQoKQorICAgIHsKKwlyZXR1cm4gcGpfYXRvbWljX2dldCh2YXJfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEluY3JlbWVudC4KKyAgICAvLworICAgIHZvaWQgaW5jKCkKKyAgICB7CisJcGpfYXRvbWljX2luYyh2YXJfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEluY3JlbWVudCBhbmQgZ2V0IHRoZSByZXN1bHQuCisgICAgLy8KKyAgICBwal9hdG9taWNfdmFsdWVfdCBpbmNfYW5kX2dldCgpCisgICAgeworICAgICAgICByZXR1cm4gcGpfYXRvbWljX2luY19hbmRfZ2V0KHZhcl8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVjcmVtZW50LgorICAgIC8vCisgICAgdm9pZCBkZWMoKQorICAgIHsKKwlwal9hdG9taWNfZGVjKHZhcl8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVjcmVtZW50IGFuZCBnZXQgdGhlIHJlc3VsdC4KKyAgICAvLworICAgIHBqX2F0b21pY192YWx1ZV90IGRlY19hbmRfZ2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBwal9hdG9taWNfZGVjX2FuZF9nZXQodmFyXyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBBZGQgdGhlIHZhcmlhYmxlLgorICAgIC8vCisgICAgdm9pZCBhZGQocGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUpCisgICAgeworICAgICAgICBwal9hdG9taWNfYWRkKHZhcl8sIHZhbHVlKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEFkZCB0aGUgdmFyaWFibGUgYW5kIGdldCB0aGUgdmFsdWUuCisgICAgLy8KKyAgICBwal9hdG9taWNfdmFsdWVfdCBhZGRfYW5kX2dldChwal9hdG9taWNfdmFsdWVfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBwal9hdG9taWNfYWRkX2FuZF9nZXQodmFyXywgdmFsdWUgKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgcGpfYXRvbWljX3QgKnZhcl87Cit9OworCisKKy8vCisvLyBNdXRleAorLy8KK2NsYXNzIFBqX011dGV4IDogcHVibGljIFBqX09iamVjdAoreworcHVibGljOgorICAgIC8vCisgICAgLy8gTXV0ZXggdHlwZS4KKyAgICAvLworICAgIGVudW0gVHlwZQorICAgIHsKKwlERUZBVUxUID0gUEpfTVVURVhfREVGQVVMVCwKKwlTSU1QTEUgPSBQSl9NVVRFWF9TSU1QTEUsCisJUkVDVVJTRSA9IFBKX01VVEVYX1JFQ1VSU0UsCisgICAgfTsKKworICAgIC8vCisgICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3RvciB3aWxsIGNyZWF0ZSBkZWZhdWx0IG11dGV4LgorICAgIC8vCisgICAgZXhwbGljaXQgUGpfTXV0ZXgoUGpfUG9vbCAqcG9vbCwgVHlwZSB0eXBlID0gREVGQVVMVCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCkKKyAgICAgICAgOiBtdXRleF8oTlVMTCkKKyAgICB7CisgICAgICAgIGNyZWF0ZShwb29sLCB0eXBlLCBuYW1lKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERlc3RydWN0b3IuCisgICAgLy8KKyAgICB+UGpfTXV0ZXgoKQorICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ3JlYXRlIG11dGV4LgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgY3JlYXRlKCBQal9Qb29sICpwb29sLCBUeXBlIHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKQorICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworCXJldHVybiBwal9tdXRleF9jcmVhdGUoIHBvb2wtPnBvb2xfKCksIG5hbWUsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtdXRleF8gKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENyZWF0ZSBzaW1wbGUgbXV0ZXguCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBjcmVhdGVfc2ltcGxlKCBQal9Qb29sICpwb29sLGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShwb29sLCBTSU1QTEUsIG5hbWUpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ3JlYXRlIHJlY3Vyc2l2ZSBtdXRleC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IGNyZWF0ZV9yZWN1cnNpdmUoIFBqX1Bvb2wgKnBvb2wsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMICkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUocG9vbCwgUkVDVVJTRSwgbmFtZSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgcGpsaWIgY29tcGF0aWJsZSBtdXRleCBvYmplY3QuCisgICAgLy8KKyAgICBwal9tdXRleF90ICpwal9tdXRleF90XygpCisgICAgeworCXJldHVybiBtdXRleF87CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cm95IG11dGV4LgorICAgIC8vCisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIGlmIChtdXRleF8pIHsKKwkgICAgcGpfbXV0ZXhfZGVzdHJveShtdXRleF8pOworICAgICAgICAgICAgbXV0ZXhfID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vCisgICAgLy8gTG9jayBtdXRleC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IGFjcXVpcmUoKQorICAgIHsKKwlyZXR1cm4gcGpfbXV0ZXhfbG9jayhtdXRleF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gVW5sb2NrIG11dGV4LgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgcmVsZWFzZSgpCisgICAgeworCXJldHVybiBwal9tdXRleF91bmxvY2sobXV0ZXhfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFRyeSBsb2NraW5nIHRoZSBtdXRleC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHRyeWFjcXVpcmUoKQorICAgIHsKKwlyZXR1cm4gcGpfbXV0ZXhfdHJ5bG9jayhtdXRleF8pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBwal9tdXRleF90ICptdXRleF87Cit9OworCisKKy8vCisvLyBTZW1hcGhvcmUKKy8vCitjbGFzcyBQal9TZW1hcGhvcmUgOiBwdWJsaWMgUGpfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3Qgc2VtYXBob3JlCisgICAgLy8KKyAgICBQal9TZW1hcGhvcmUoUGpfUG9vbCAqcG9vbCwgdW5zaWduZWQgbWF4LAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbml0aWFsID0gMCwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpCisgICAgOiBzZW1fKE5VTEwpCisgICAgeworCWNyZWF0ZShwb29sLCBtYXgsIGluaXRpYWwsIG5hbWUpOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVzdHJ1Y3Rvci4KKyAgICAvLworICAgIH5Qal9TZW1hcGhvcmUoKQorICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ3JlYXRlIHNlbWFwaG9yZQorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgY3JlYXRlKCBQal9Qb29sICpwb29sLCB1bnNpZ25lZCBtYXgsCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbml0aWFsID0gMCwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwgKQorICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworCXJldHVybiBwal9zZW1fY3JlYXRlKCBwb29sLT5wb29sXygpLCBuYW1lLCBpbml0aWFsLCBtYXgsICZzZW1fKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERlc3Ryb3kgc2VtYXBob3JlLgorICAgIC8vCisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIGlmIChzZW1fKSB7CisgICAgICAgICAgICBwal9zZW1fZGVzdHJveShzZW1fKTsKKyAgICAgICAgICAgIHNlbV8gPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgcGpsaWIgY29tcGF0aWJsZSBzZW1hcGhvcmUgb2JqZWN0LgorICAgIC8vCisgICAgcGpfc2VtX3QgKnBqX3NlbV90XygpCisgICAgeworCXJldHVybiAocGpfc2VtX3QqKXRoaXM7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBXYWl0IHNlbWFwaG9yZS4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHdhaXQoKQorICAgIHsKKwlyZXR1cm4gcGpfc2VtX3dhaXQodGhpcy0+cGpfc2VtX3RfKCkpOworICAgIH0KKworICAgIC8vCisgICAgLy8gV2FpdCBzZW1hcGhvcmUuCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBhY3F1aXJlKCkKKyAgICB7CisJcmV0dXJuIHdhaXQoKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFRyeSB3YWl0IHNlbWFwaG9yZS4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHRyeXdhaXQoKQorICAgIHsKKwlyZXR1cm4gcGpfc2VtX3RyeXdhaXQodGhpcy0+cGpfc2VtX3RfKCkpOworICAgIH0KKworICAgIC8vCisgICAgLy8gVHJ5IHdhaXQgc2VtYXBob3JlLgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgdHJ5YWNxdWlyZSgpCisgICAgeworCXJldHVybiB0cnl3YWl0KCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBQb3N0IHNlbWFwaG9yZS4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHBvc3QoKQorICAgIHsKKwlyZXR1cm4gcGpfc2VtX3Bvc3QodGhpcy0+cGpfc2VtX3RfKCkpOworICAgIH0KKworICAgIC8vCisgICAgLy8gUG9zdCBzZW1hcGhvcmUuCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCByZWxlYXNlKCkKKyAgICB7CisJcmV0dXJuIHBvc3QoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgcGpfc2VtX3QgKnNlbV87Cit9OworCisKKy8vCisvLyBFdmVudCBvYmplY3QuCisvLworY2xhc3MgUGpfRXZlbnQKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIENvbnN0cnVjdCBldmVudCBvYmplY3QuCisgICAgLy8KKyAgICBQal9FdmVudCggUGpfUG9vbCAqcG9vbCwgYm9vbCBtYW51YWxfcmVzZXQgPSBmYWxzZSwKKyAgICAgICAgICAgICAgYm9vbCBpbml0aWFsID0gZmFsc2UsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMICkKKyAgICA6IGV2ZW50XyhOVUxMKQorICAgIHsKKyAgICAgICAgY3JlYXRlKHBvb2wsIG1hbnVhbF9yZXNldCwgaW5pdGlhbCwgbmFtZSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cnVjdG9yLgorICAgIC8vCisgICAgflBqX0V2ZW50KCkKKyAgICB7CisgICAgICAgIGRlc3Ryb3koKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENyZWF0ZSBldmVudCBvYmplY3QuCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBjcmVhdGUoIFBqX1Bvb2wgKnBvb2wsIGJvb2wgbWFudWFsX3Jlc2V0ID0gZmFsc2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbml0aWFsID0gZmFsc2UsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKQorICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworCXJldHVybiBwal9ldmVudF9jcmVhdGUocG9vbC0+cG9vbF8oKSwgbmFtZSwgbWFudWFsX3Jlc2V0LCBpbml0aWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZldmVudF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHBqbGliIGNvbXBhdGlibGUgZXZlbnQgb2JqZWN0LgorICAgIC8vCisgICAgcGpfZXZlbnRfdCAqcGpfZXZlbnRfdF8oKQorICAgIHsKKwlyZXR1cm4gZXZlbnRfOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVzdHJveSBldmVudCBvYmplY3QuCisgICAgLy8KKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50XykgeworCSAgICBwal9ldmVudF9kZXN0cm95KGV2ZW50Xyk7CisgICAgICAgICAgICBldmVudF8gPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBXYWl0LgorICAgIC8vCisgICAgcGpfc3RhdHVzX3Qgd2FpdCgpCisgICAgeworCXJldHVybiBwal9ldmVudF93YWl0KGV2ZW50Xyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBUcnkgd2FpdC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHRyeXdhaXQoKQorICAgIHsKKwlyZXR1cm4gcGpfZXZlbnRfdHJ5d2FpdChldmVudF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gU2V0IGV2ZW50IHN0YXRlIHRvIHNpZ25hbGxlZC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHNldCgpCisgICAgeworCXJldHVybiBwal9ldmVudF9zZXQodGhpcy0+cGpfZXZlbnRfdF8oKSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBSZWxlYXNlIG9uZSB3YWl0aW5nIHRocmVhZC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHB1bHNlKCkKKyAgICB7CisJcmV0dXJuIHBqX2V2ZW50X3B1bHNlKHRoaXMtPnBqX2V2ZW50X3RfKCkpOworICAgIH0KKworICAgIC8vCisgICAgLy8gU2V0IGEgbm9uLXNpZ25hbGxlZC4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHJlc2V0KCkKKyAgICB7CisJcmV0dXJuIHBqX2V2ZW50X3Jlc2V0KHRoaXMtPnBqX2V2ZW50X3RfKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBwal9ldmVudF90ICpldmVudF87Cit9OworCisvLworLy8gVGltZXN0YW1wCisvLworY2xhc3MgUGpfVGltZXN0YW1wCit7CitwdWJsaWM6CisgICAgcGpfc3RhdHVzX3QgZ2V0X3RpbWVzdGFtcCgpCisgICAgeworCXJldHVybiBwal9nZXRfdGltZXN0YW1wKCZ0c18pOworICAgIH0KKworICAgIFBqX1RpbWVzdGFtcCYgb3BlcmF0b3IgKz0gKGNvbnN0IFBqX1RpbWVzdGFtcCAmcmhzKQorICAgIHsKKwlwal9hZGRfdGltZXN0YW1wKCZ0c18sICZyaHMudHNfKTsKKwlyZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgUGpfVGltZXN0YW1wJiBvcGVyYXRvciAtPSAoY29uc3QgUGpfVGltZXN0YW1wICZyaHMpCisgICAgeworCXBqX3N1Yl90aW1lc3RhbXAoJnRzXywgJnJocy50c18pOworCXJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBQal9UaW1lX1ZhbCB0b190aW1lKCkgY29uc3QKKyAgICB7CisJUGpfVGltZXN0YW1wIHplcm87CisJcGpfbWVtc2V0KCZ6ZXJvLCAwLCBzaXplb2YoemVybykpOworCXJldHVybiBQal9UaW1lX1ZhbChwal9lbGFwc2VkX3RpbWUoJnplcm8udHNfLCAmdHNfKSk7CisgICAgfQorCisgICAgcGpfdWludDMyX3QgdG9fbXNlYygpIGNvbnN0CisgICAgeworCVBqX1RpbWVzdGFtcCB6ZXJvOworCXBqX21lbXNldCgmemVybywgMCwgc2l6ZW9mKHplcm8pKTsKKwlyZXR1cm4gcGpfZWxhcHNlZF9tc2VjKCZ6ZXJvLnRzXywgJnRzXyk7CisgICAgfQorCisgICAgcGpfdWludDMyX3QgdG9fdXNlYygpIGNvbnN0CisgICAgeworCVBqX1RpbWVzdGFtcCB6ZXJvOworCXBqX21lbXNldCgmemVybywgMCwgc2l6ZW9mKHplcm8pKTsKKwlyZXR1cm4gcGpfZWxhcHNlZF91c2VjKCZ6ZXJvLnRzXywgJnRzXyk7CisgICAgfQorCisgICAgcGpfdWludDMyX3QgdG9fbmFub3NlYygpIGNvbnN0CisgICAgeworCVBqX1RpbWVzdGFtcCB6ZXJvOworCXBqX21lbXNldCgmemVybywgMCwgc2l6ZW9mKHplcm8pKTsKKwlyZXR1cm4gcGpfZWxhcHNlZF9uYW5vc2VjKCZ6ZXJvLnRzXywgJnRzXyk7CisgICAgfQorCisgICAgcGpfdWludDMyX3QgdG9fY3ljbGUoKSBjb25zdAorICAgIHsKKwlQal9UaW1lc3RhbXAgemVybzsKKwlwal9tZW1zZXQoJnplcm8sIDAsIHNpemVvZih6ZXJvKSk7CisJcmV0dXJuIHBqX2VsYXBzZWRfY3ljbGUoJnplcm8udHNfLCAmdHNfKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgcGpfdGltZXN0YW1wICAgIHRzXzsKK307CisKKworLy8KKy8vIE9TIGFic3RyYWN0aW9uLgorLy8KK2NsYXNzIFBqX09TX0FQSQoreworcHVibGljOgorICAgIC8vCisgICAgLy8gR2V0IGN1cnJlbnQgdGltZS4KKyAgICAvLworICAgIHN0YXRpYyBwal9zdGF0dXNfdCBnZXR0aW1lb2ZkYXkoIFBqX1RpbWVfVmFsICp0diApCisgICAgeworCXJldHVybiBwal9nZXR0aW1lb2ZkYXkodHYpOworICAgIH0KKworICAgIC8vCisgICAgLy8gUGFyc2UgdG8gdGltZSBvZiBkYXkuCisgICAgLy8KKyAgICBzdGF0aWMgcGpfc3RhdHVzX3QgdGltZV9kZWNvZGUoIGNvbnN0IFBqX1RpbWVfVmFsICp0diwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9wYXJzZWRfdGltZSAqcHQgKQorICAgIHsKKwlyZXR1cm4gcGpfdGltZV9kZWNvZGUodHYsIHB0KTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFBhcnNlIGZyb20gdGltZSBvZiBkYXkuCisgICAgLy8KKyAgICBzdGF0aWMgcGpfc3RhdHVzX3QgdGltZV9lbmNvZGUoIGNvbnN0IHBqX3BhcnNlZF90aW1lICpwdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQal9UaW1lX1ZhbCAqdHYpCisgICAgeworCXJldHVybiBwal90aW1lX2VuY29kZShwdCwgdHYpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29udmVydCB0byBHTVQuCisgICAgLy8KKyAgICBzdGF0aWMgcGpfc3RhdHVzX3QgdGltZV9sb2NhbF90b19nbXQoIFBqX1RpbWVfVmFsICp0diApCisgICAgeworCXJldHVybiBwal90aW1lX2xvY2FsX3RvX2dtdCggdHYgKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbnZlcnQgdGltZSB0byBsb2NhbC4KKyAgICAvLworICAgIHN0YXRpYyBwal9zdGF0dXNfdCB0aW1lX2dtdF90b19sb2NhbCggUGpfVGltZV9WYWwgKnR2KSAKKyAgICB7CisJcmV0dXJuIHBqX3RpbWVfZ210X3RvX2xvY2FsKCB0diApOworICAgIH0KK307CisKKy8vCisvLyBUaW1ldmFsIGlubGluZXMuCisvLworaW5saW5lIHBqX3N0YXR1c190IFBqX1RpbWVfVmFsOjpnZXR0aW1lb2ZkYXkoKQoreworICAgIHJldHVybiBQal9PU19BUEk6OmdldHRpbWVvZmRheSh0aGlzKTsKK30KKworaW5saW5lIHBqX3BhcnNlZF90aW1lIFBqX1RpbWVfVmFsOjpkZWNvZGUoKQoreworICAgIHBqX3BhcnNlZF90aW1lIHB0OworICAgIFBqX09TX0FQSTo6dGltZV9kZWNvZGUodGhpcywgJnB0KTsKKyAgICByZXR1cm4gcHQ7Cit9CisKK2lubGluZSBwal9zdGF0dXNfdCBQal9UaW1lX1ZhbDo6ZW5jb2RlKGNvbnN0IHBqX3BhcnNlZF90aW1lICpwdCkKK3sKKyAgICByZXR1cm4gUGpfT1NfQVBJOjp0aW1lX2VuY29kZShwdCwgdGhpcyk7Cit9CisKK2lubGluZSBwal9zdGF0dXNfdCBQal9UaW1lX1ZhbDo6dG9fZ210KCkKK3sKKyAgICByZXR1cm4gUGpfT1NfQVBJOjp0aW1lX2xvY2FsX3RvX2dtdCh0aGlzKTsKK30KKworaW5saW5lIHBqX3N0YXR1c190IFBqX1RpbWVfVmFsOjp0b19sb2NhbCgpCit7CisgICAgcmV0dXJuIFBqX09TX0FQSTo6dGltZV9nbXRfdG9fbG9jYWwodGhpcyk7Cit9CisKKyNlbmRpZgkvKiBfX1BKUFBfT1NfSFBQX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3Bvb2wuaHBwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3Bvb2wuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MDBkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvcG9vbC5ocHAKQEAgLTAsMCArMSwyNzkgQEAKKy8qICRJZDogcG9vbC5ocHAgMjM5NCAyMDA4LTEyLTIzIDE3OjI3OjUzWiBiZW5ueWxwICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpQUF9QT09MX0hQUF9fCisjZGVmaW5lIF9fUEpQUF9QT09MX0hQUF9fCisKKyNpbmNsdWRlIDxwai9wb29sLmg+CisKK2NsYXNzIFBqX1Bvb2w7CitjbGFzcyBQal9DYWNoaW5nX1Bvb2w7CisKKy8vCisvLyBCYXNlIGNsYXNzIGZvciBhbGwgUGpsaWIgb2JqZWN0cworLy8KK2NsYXNzIFBqX09iamVjdAoreworcHVibGljOgorICAgIHZvaWQgKm9wZXJhdG9yIG5ldyh1bnNpZ25lZCBpbnQgY2xhc3Nfc2l6ZSwgUGpfUG9vbCAqcG9vbCk7CisgICAgdm9pZCAqb3BlcmF0b3IgbmV3KHVuc2lnbmVkIGludCBjbGFzc19zaXplLCBQal9Qb29sICZwb29sKTsKKworICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgUGpfUG9vbCopCisgICAgeworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqLCBQal9Qb29sJikKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBJbmxpbmUgaW1wbGVtZW50YXRpb25zIGF0IHRoZSBlbmQgb2YgdGhpcyBmaWxlLgorICAgIC8vCisKK3ByaXZhdGU6CisgICAgLy8gQ2FuIG5vdCB1c2Ugbm9ybWFsIG5ldyBvcGVyYXRvcjsgbXVzdCB1c2UgcG9vbC4KKyAgICAvLyBlLmcuOgorICAgIC8vICAgb2JqID0gbmV3KHBvb2wpIFBqX1RoZV9PYmplY3QocG9vbCwgLi4uKTsKKyAgICAvLworICAgIHZvaWQgKm9wZXJhdG9yIG5ldyh1bnNpZ25lZCBpbnQpCisgICAge30KK307CisKKworLy8KKy8vIFBvb2wuCisvLworY2xhc3MgUGpfUG9vbCA6IHB1YmxpYyBQal9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IsIGluaXRpYWxpemVzIGludGVybmFsIHBvb2wgdG8gTlVMTC4KKyAgICAvLyBBcHBsaWNhdGlvbiBtdXN0IGNhbGwgYXR0YWNoKCkgc29tZSB0aW1lIGxhdGVyLgorICAgIC8vCisgICAgUGpfUG9vbCgpCisgICAgICAgIDogcF8oTlVMTCkKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDcmVhdGUgcG9vbC4KKyAgICAvLworICAgIFBqX1Bvb2woUGpfQ2FjaGluZ19Qb29sICZjYWNoaW5nX3Bvb2wsCisgICAgICAgICAgICBwal9zaXplX3QgaW5pdGlhbF9zaXplLCAKKyAgICAgICAgICAgIHBqX3NpemVfdCBpbmNyZW1lbnRfc2l6ZSwgCisgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCwgCisgICAgICAgICAgICBwal9wb29sX2NhbGxiYWNrICpjYWxsYmFjayA9IE5VTEwpOworCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgZnJvbSBleGlzdGluZyBwb29sLgorICAgIC8vCisgICAgZXhwbGljaXQgUGpfUG9vbChwal9wb29sX3QgKnBvb2wpCisgICAgICAgIDogcF8ocG9vbCkKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBBdHRhY2ggZXhpc3RpbmcgcG9vbC4KKyAgICAvLworICAgIHZvaWQgYXR0YWNoKHBqX3Bvb2xfdCAqcG9vbCkKKyAgICB7CisgICAgICAgIHBfID0gcG9vbDsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERlc3RydWN0b3IuCisgICAgLy8KKyAgICAvLyBSZWxlYXNlIHBvb2wgYmFjayB0byBmYWN0b3J5LiBSZW1lbWJlcjogaWYgeW91IGRlbGV0ZSBwb29sLCB0aGVuIAorICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCBvYmplY3RzIHRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHRoaXMgcG9vbAorICAgIC8vIGhhdmUgYmVlbiBwcm9wZXJseSBkZXN0cm95ZWQuCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIHdoZXJlIEMrKyBpcyB0cmlja2llciB0aGFuIHBsYWluIEMhIQorICAgIC8vCisgICAgflBqX1Bvb2woKQorICAgIHsKKyAgICAgICAgaWYgKHBfKQorCSAgICBwal9wb29sX3JlbGVhc2UocF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IG5hbWUuCisgICAgLy8KKyAgICBjb25zdCBjaGFyICpnZXRvYmpuYW1lKCkgY29uc3QKKyAgICB7CisJcmV0dXJuIHBqX3Bvb2xfZ2V0b2JqbmFtZShwXyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBZb3UgY2FuIGNhc3QgUGpfUG9vbCB0byBwal9wb29sX3QqCisgICAgLy8KKyAgICBvcGVyYXRvciBwal9wb29sX3QqKCkKKyAgICB7CisJcmV0dXJuIHBfOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHBqbGliIGNvbXBhdGlibGUgcG9vbCBvYmplY3QuCisgICAgLy8KKyAgICBwal9wb29sX3QgKnBvb2xfKCkKKyAgICB7CisJcmV0dXJuIHBfOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHBqbGliIGNvbXBhdGlibGUgcG9vbCBvYmplY3QuCisgICAgLy8KKyAgICBjb25zdCBwal9wb29sX3QgKnBvb2xfKCkgY29uc3QKKyAgICB7CisJcmV0dXJuIHBfOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHBqbGliIGNvbXBhdGlibGUgcG9vbCBvYmplY3QuCisgICAgLy8KKyAgICBwal9wb29sX3QgKnBqX3Bvb2xfdF8oKQorICAgIHsKKwlyZXR1cm4gcF87CisgICAgfQorCisgICAgLy8KKyAgICAvLyBSZXNldCBwb29sLgorICAgIC8vCisgICAgdm9pZCByZXNldCgpCisgICAgeworCXBqX3Bvb2xfcmVzZXQocF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IGN1cnJlbnQgY2FwYWNpdHkuCisgICAgLy8KKyAgICBwal9zaXplX3QgZ2V0X2NhcGFjaXR5KCkKKyAgICB7CisJcGpfcG9vbF9nZXRfY2FwYWNpdHkocF8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IGN1cnJlbnQgdG90YWwgYnl0ZXMgYWxsb2NhdGVkIGZyb20gdGhlIHBvb2wuCisgICAgLy8KKyAgICBwal9zaXplX3QgZ2V0X3VzZWRfc2l6ZSgpCisgICAgeworCXBqX3Bvb2xfZ2V0X3VzZWRfc2l6ZShwXyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBBbGxvY2F0ZS4KKyAgICAvLworICAgIHZvaWQgKmFsbG9jKHBqX3NpemVfdCBzaXplKQorICAgIHsKKwlyZXR1cm4gcGpfcG9vbF9hbGxvYyhwXywgc2l6ZSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBBbGxvY2F0ZSBlbGVtZW50cyBhbmQgemVybyBmaWxsIHRoZSBtZW1vcnkuCisgICAgLy8KKyAgICB2b2lkICpjYWxsb2MocGpfc2l6ZV90IGNvdW50LCBwal9zaXplX3QgZWxlbSkKKyAgICB7CisJcmV0dXJuIHBqX3Bvb2xfY2FsbG9jKHBfLCBjb3VudCwgZWxlbSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBBbGxvY2F0ZSBhbmQgemVybyBmaWxsIG1lbW9yeS4KKyAgICAvLworICAgIHZvaWQgKnphbGxvYyhwal9zaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBwal9wb29sX3phbGxvYyhwXywgc2l6ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHBqX3Bvb2xfdCAqcF87Cit9OworCisKKy8vCisvLyBDYWNoaW5nIHBvb2wuCisvLworY2xhc3MgUGpfQ2FjaGluZ19Qb29sCit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgY2FjaGluZyBwb29sLgorICAgIC8vCisgICAgUGpfQ2FjaGluZ19Qb29sKCBwal9zaXplX3QgY2FjaGVfY2FwYWNpdHkgPSAwLAorCSAgICAgICAgICAgICBjb25zdCBwal9wb29sX2ZhY3RvcnlfcG9saWN5ICpwb2w9JnBqX3Bvb2xfZmFjdG9yeV9kZWZhdWx0X3BvbGljeSkKKyAgICB7CisJcGpfY2FjaGluZ19wb29sX2luaXQoJmNwXywgcG9sLCBjYWNoZV9jYXBhY2l0eSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cm95IGNhY2hpbmcgcG9vbC4KKyAgICAvLworICAgIH5Qal9DYWNoaW5nX1Bvb2woKQorICAgIHsKKwlwal9jYWNoaW5nX3Bvb2xfZGVzdHJveSgmY3BfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENyZWF0ZSBwb29sLgorICAgIC8vCisgICAgcGpfcG9vbF90ICpjcmVhdGVfcG9vbCggcGpfc2l6ZV90IGluaXRpYWxfc2l6ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc2l6ZV90IGluY3JlbWVudF9zaXplLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfcG9vbF9jYWxsYmFjayAqY2FsbGJhY2sgPSBOVUxMKQorICAgIHsKKwlyZXR1cm4gKHBqX3Bvb2xfdCopKCpjcF8uZmFjdG9yeS5jcmVhdGVfcG9vbCkoJmNwXy5mYWN0b3J5LCBuYW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbF9zaXplLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50X3NpemUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayk7CisgICAgfQorCitwcml2YXRlOgorICAgIHBqX2NhY2hpbmdfcG9vbCBjcF87Cit9OworCisvLworLy8gSW5saW5lcyBmb3IgUGpfT2JqZWN0CisvLworaW5saW5lIHZvaWQgKlBqX09iamVjdDo6b3BlcmF0b3IgbmV3KHVuc2lnbmVkIGludCBjbGFzc19zaXplLCBQal9Qb29sICpwb29sKQoreworICAgIHJldHVybiBwb29sLT5hbGxvYyhjbGFzc19zaXplKTsKK30KK2lubGluZSB2b2lkICpQal9PYmplY3Q6Om9wZXJhdG9yIG5ldyh1bnNpZ25lZCBpbnQgY2xhc3Nfc2l6ZSwgUGpfUG9vbCAmcG9vbCkKK3sKKyAgICByZXR1cm4gcG9vbC5hbGxvYyhjbGFzc19zaXplKTsKK30KKworLy8KKy8vIElubGluZXMgZm9yIFBqX1Bvb2wKKy8vCitpbmxpbmUgUGpfUG9vbDo6UGpfUG9vbCggUGpfQ2FjaGluZ19Qb29sICZjYWNoaW5nX3Bvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc2l6ZV90IGluaXRpYWxfc2l6ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc2l6ZV90IGluY3JlbWVudF9zaXplLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBwal9wb29sX2NhbGxiYWNrICpjYWxsYmFjaykKK3sKKyAgICBwXyA9IGNhY2hpbmdfcG9vbC5jcmVhdGVfcG9vbChpbml0aWFsX3NpemUsIGluY3JlbWVudF9zaXplLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKTsKK30KKworCisjZW5kaWYJLyogX19QSlBQX1BPT0xfSFBQX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3Byb2FjdG9yLmhwcCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy9wcm9hY3Rvci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UzMzU2NAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy9wcm9hY3Rvci5ocHAKQEAgLTAsMCArMSw1MTUgQEAKKy8qICRJZDogcHJvYWN0b3IuaHBwIDIzOTQgMjAwOC0xMi0yMyAxNzoyNzo1M1ogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKUFBfUFJPQUNUT1JfSFBQX18KKyNkZWZpbmUgX19QSlBQX1BST0FDVE9SX0hQUF9fCisKKyNpbmNsdWRlIDxwai9pb3F1ZXVlLmg+CisjaW5jbHVkZSA8cGorKy9wb29sLmhwcD4KKyNpbmNsdWRlIDxwaisrL3NvY2suaHBwPgorI2luY2x1ZGUgPHBqKysvdGltZXIuaHBwPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisKK2NsYXNzIFBqX1Byb2FjdG9yOworY2xhc3MgUGpfRXZlbnRfSGFuZGxlcjsKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEFzeW5jaHJvbm91cyBvcGVyYXRpb24ga2V5LgorLy8KKy8vIEFwcGxpY2F0aW9ucyBtYXkgaW5oZXJpYyB0aGlzIGNsYXNzIHRvIHB1dCB0aGVpciBhcHBsaWNhdGlvbgorLy8gc3BlY2lmaWMgZGF0YS4KKy8vCitjbGFzcyBQal9Bc3luY19PcCA6IHB1YmxpYyBwal9pb3F1ZXVlX29wX2tleV90Cit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3Qgd2l0aCBudWxsIGhhbmRsZXIuCisgICAgLy8gQXBwIG11c3QgY2FsbCBzZXRfaGFuZGxlcigpIGJlZm9yZSB1c2UuCisgICAgLy8KKyAgICBQal9Bc3luY19PcCgpCisgICAgICAgIDogaGFuZGxlcl8oTlVMTCkKKyAgICB7CisJcGpfaW9xdWV1ZV9vcF9rZXlfaW5pdCh0aGlzLCBzaXplb2YoKnRoaXMpKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbnN0cnVjdG9yLgorICAgIC8vCisgICAgZXhwbGljaXQgUGpfQXN5bmNfT3AoUGpfRXZlbnRfSGFuZGxlciAqaGFuZGxlcikKKyAgICAgICAgOiBoYW5kbGVyXyhoYW5kbGVyKQorICAgIHsKKwlwal9pb3F1ZXVlX29wX2tleV9pbml0KHRoaXMsIHNpemVvZigqdGhpcykpOworICAgIH0KKworICAgIC8vCisgICAgLy8gU2V0IGhhbmRsZXIuCisgICAgLy8KKyAgICB2b2lkIHNldF9oYW5kbGVyKFBqX0V2ZW50X0hhbmRsZXIgKmhhbmRsZXIpCisgICAgeworICAgICAgICBoYW5kbGVyXyA9IGhhbmRsZXI7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDaGVjayB3aGV0aGVyIG9wZXJhdGlvbiBpcyBzdGlsbCBwZW5kaW5nIGZvciB0aGlzIGtleS4KKyAgICAvLworICAgIGJvb2wgaXNfcGVuZGluZygpOworCisgICAgLy8KKyAgICAvLyBDYW5jZWwgdGhlIG9wZXJhdGlvbi4KKyAgICAvLworICAgIGJvb2wgY2FuY2VsKHBqX3NzaXplX3QgYnl0ZXNfc3RhdHVzPS1QSl9FQ0FOQ0VMTEVEKTsKKworcHJvdGVjdGVkOgorICAgIFBqX0V2ZW50X0hhbmRsZXIgKmhhbmRsZXJfOworfTsKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEV2ZW50IGhhbmRsZXIuCisvLworLy8gQXBwbGljYXRpb25zIHNob3VsZCBpbmhlcml0IHRoaXMgY2xhc3MgdG8gcmVjZWl2ZSB2YXJpb3VzIGV2ZW50CisvLyBub3RpZmljYXRpb25zLgorLy8KKy8vIEFwcGxpY2F0aW9ucyBzaG91bGQgaW1wbGVtZW50IGdldF9zb2NrZXRfaGFuZGxlKCkuCisvLworY2xhc3MgUGpfRXZlbnRfSGFuZGxlciA6IHB1YmxpYyBQal9PYmplY3QKK3sKKyAgICBmcmllbmQgY2xhc3MgUGpfUHJvYWN0b3I7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgIC8vCisgICAgUGpfRXZlbnRfSGFuZGxlcigpCisgICAgICAgIDoga2V5XyhOVUxMKQorICAgIHsKKyAgICAgICAgcGpfbWVtc2V0KCZ0aW1lcl8sIDAsIHNpemVvZih0aW1lcl8pKTsKKyAgICAgICAgdGltZXJfLnVzZXJfZGF0YSA9IHRoaXM7CisgICAgICAgIHRpbWVyXy5jYiA9ICZ0aW1lcl9jYWxsYmFjazsKKyAgICB9CisgICAgCisgICAgLy8KKyAgICAvLyBEZXN0cm95LgorICAgIC8vCisgICAgdmlydHVhbCB+UGpfRXZlbnRfSGFuZGxlcigpCisgICAgeworICAgICAgICB1bnJlZ2lzdGVyKCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBVbnJlZ2lzdGVyIHRoaXMgaGFuZGxlciBmcm9tIHRoZSBpb3F1ZXVlLgorICAgIC8vCisgICAgdm9pZCB1bnJlZ2lzdGVyKCkKKyAgICB7CisgICAgICAgIGlmIChrZXlfKSB7CisgICAgICAgICAgICBwal9pb3F1ZXVlX3VucmVnaXN0ZXIoa2V5Xyk7CisgICAgICAgICAgICBrZXlfID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHNvY2tldCBoYW5kbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMuCisgICAgLy8KKyAgICB2aXJ0dWFsIHBqX3NvY2tfdCBnZXRfc29ja2V0X2hhbmRsZSgpCisgICAgeworICAgICAgICByZXR1cm4gUEpfSU5WQUxJRF9TT0NLRVQ7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTdGFydCBhc3luYyByZWNlaXZlLgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgcmVjdiggUGpfQXN5bmNfT3AgKm9wX2tleSwgCisgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYnVmLCBwal9zc2l6ZV90ICpsZW4sIAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBqX2lvcXVldWVfcmVjdigga2V5Xywgb3Bfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGxlbiwgZmxhZ3MpOworICAgIH0KKworICAgIC8vCisgICAgLy8gU3RhcnQgYXN5bmMgcmVjdmZyb20oKQorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgcmVjdmZyb20oIFBqX0FzeW5jX09wICpvcF9rZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpidWYsIHBqX3NzaXplX3QgKmxlbiwgdW5zaWduZWQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBqX0luZXRfQWRkciAqYWRkcikKKyAgICB7CisgICAgICAgIGFkZHItPmFkZHJsZW5fID0gc2l6ZW9mKFBqX0luZXRfQWRkcik7CisgICAgICAgIHJldHVybiBwal9pb3F1ZXVlX3JlY3Zmcm9tKCBrZXlfLCBvcF9rZXksIGJ1ZiwgbGVuLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIsICZhZGRyLT5hZGRybGVuXyApOworICAgIH0KKworICAgIC8vCisgICAgLy8gU3RhcnQgYXN5bmMgc2VuZCgpCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBzZW5kKCBQal9Bc3luY19PcCAqb3Bfa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLCBwal9zc2l6ZV90ICpsZW4sIAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBqX2lvcXVldWVfc2VuZCgga2V5Xywgb3Bfa2V5LCBkYXRhLCBsZW4sIGZsYWdzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFN0YXJ0IGFzeW5jIHNlbmR0bygpCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBzZW5kdG8oIFBqX0FzeW5jX09wICpvcF9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLCBwal9zc2l6ZV90ICpsZW4sIHVuc2lnbmVkIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGpfSW5ldF9BZGRyICZhZGRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBqX2lvcXVldWVfc2VuZHRvKGtleV8sIG9wX2tleSwgZGF0YSwgbGVuLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyLCBzaXplb2YoYWRkcikpOworICAgIH0KKworI2lmIFBKX0hBU19UQ1AKKyAgICAvLworICAgIC8vIFN0YXJ0IGFzeW5jIGNvbm5lY3QoKQorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgY29ubmVjdChjb25zdCBQal9JbmV0X0FkZHIgJmFkZHIpCisgICAgeworICAgICAgICByZXR1cm4gcGpfaW9xdWV1ZV9jb25uZWN0KGtleV8sICZhZGRyLCBzaXplb2YoYWRkcikpOworICAgIH0KKworICAgIC8vCisgICAgLy8gU3RhcnQgYXN5bmMgYWNjZXB0KCkuCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBhY2NlcHQoIFBqX0FzeW5jX09wICpvcF9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICBQal9Tb2NrZXQgKnNvY2ssIAorICAgICAgICAgICAgICAgICAgICAgICAgUGpfSW5ldF9BZGRyICpsb2NhbCA9IE5VTEwsIAorICAgICAgICAgICAgICAgICAgICAgICAgUGpfSW5ldF9BZGRyICpyZW1vdGUgPSBOVUxMKQorICAgIHsKKyAgICAgICAgaW50ICphZGRybGVuID0gbG9jYWwgPyAmbG9jYWwtPmFkZHJsZW5fIDogTlVMTDsKKyAgICAgICAgcmV0dXJuIHBqX2lvcXVldWVfYWNjZXB0KCBrZXlfLCBvcF9rZXksICZzb2NrLT5zb2NrXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCwgcmVtb3RlLCBhZGRybGVuICk7CisgICAgfQorCisjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIC8vLy8vLy8vLy8vLy8vLy8vLworICAgIC8vIE92ZXJyaWRhYmxlcworICAgIC8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgLy8KKyAgICAvLyBUaW1lb3V0IGNhbGxiYWNrLgorICAgIC8vCisgICAgdmlydHVhbCB2b2lkIG9uX3RpbWVvdXQoaW50KSAKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPbiByZWFkIGNvbXBsZXRlIGNhbGxiYWNrLgorICAgIC8vCisgICAgdmlydHVhbCB2b2lkIG9uX3JlYWRfY29tcGxldGUoIFBqX0FzeW5jX09wKiwgcGpfc3NpemVfdCkgCisgICAgeworICAgIH0KKworICAgIC8vCisgICAgLy8gT24gd3JpdGUgY29tcGxldGUgY2FsbGJhY2suCisgICAgLy8KKyAgICB2aXJ0dWFsIHZvaWQgb25fd3JpdGVfY29tcGxldGUoIFBqX0FzeW5jX09wICosIHBqX3NzaXplX3QpIAorICAgIHsKKyAgICB9CisKKyNpZiBQSl9IQVNfVENQCisgICAgLy8KKyAgICAvLyBPbiBjb25uZWN0IGNvbXBsZXRlIGNhbGxiYWNrLgorICAgIC8vCisgICAgdmlydHVhbCB2b2lkIG9uX2Nvbm5lY3RfY29tcGxldGUocGpfc3RhdHVzX3QpIAorICAgIHsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE9uIG5ldyBjb25uZWN0aW9uIGNhbGxiYWNrLgorICAgIC8vCisgICAgdmlydHVhbCB2b2lkIG9uX2FjY2VwdF9jb21wbGV0ZSggUGpfQXN5bmNfT3AqLCBwal9zb2NrX3QsIHBqX3N0YXR1c190KSAKKyAgICB7CisgICAgfQorCisjZW5kaWYKKworCitwcml2YXRlOgorICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleV87CisgICAgcGpfdGltZXJfZW50cnkgICAgdGltZXJfOworCisgICAgZnJpZW5kIGNsYXNzIFBqX1Byb2FjdG9yOworICAgIGZyaWVuZCBjbGFzcyBQal9Bc3luY19PcDsKKworICAgIC8vCisgICAgLy8gU3RhdGljIHRpbWVyIGNhbGxiYWNrLgorICAgIC8vCisgICAgc3RhdGljIHZvaWQgdGltZXJfY2FsbGJhY2soIHBqX3RpbWVyX2hlYXBfdCosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGpfdGltZXJfZW50cnkgKmVudHJ5KQorICAgIHsKKyAgICAgICAgUGpfRXZlbnRfSGFuZGxlciAqaGFuZGxlciA9IAorICAgICAgICAgICAgKFBqX0V2ZW50X0hhbmRsZXIqKSBlbnRyeS0+dXNlcl9kYXRhOworCisgICAgICAgIGhhbmRsZXItPm9uX3RpbWVvdXQoZW50cnktPmlkKTsKKyAgICB9Cit9OworCitpbmxpbmUgYm9vbCBQal9Bc3luY19PcDo6aXNfcGVuZGluZygpCit7CisgICAgcmV0dXJuIHBqX2lvcXVldWVfaXNfcGVuZGluZyhoYW5kbGVyXy0+a2V5XywgdGhpcykgIT0gMDsKK30KKworaW5saW5lIGJvb2wgUGpfQXN5bmNfT3A6OmNhbmNlbChwal9zc2l6ZV90IGJ5dGVzX3N0YXR1cykKK3sKKyAgICByZXR1cm4gcGpfaW9xdWV1ZV9wb3N0X2NvbXBsZXRpb24oaGFuZGxlcl8tPmtleV8sIHRoaXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc19zdGF0dXMpID09IFBKX1NVQ0NFU1M7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUHJvYWN0b3IKKy8vCitjbGFzcyBQal9Qcm9hY3RvciA6IHB1YmxpYyBQal9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IsIGluaXRpYWxpemVzIHRvIE5VTEwuCisgICAgLy8KKyAgICBQal9Qcm9hY3RvcigpCisgICAgICAgIDogaW9xXyhOVUxMKSwgdGhfKE5VTEwpCisgICAgeworICAgICAgICBjYl8ub25fcmVhZF9jb21wbGV0ZSAgICA9ICZyZWFkX2NvbXBsZXRlX2NiOworICAgICAgICBjYl8ub25fd3JpdGVfY29tcGxldGUgICA9ICZ3cml0ZV9jb21wbGV0ZV9jYjsKKyAgICAgICAgY2JfLm9uX2FjY2VwdF9jb21wbGV0ZSAgPSAmYWNjZXB0X2NvbXBsZXRlX2NiOworICAgICAgICBjYl8ub25fY29ubmVjdF9jb21wbGV0ZSA9ICZjb25uZWN0X2NvbXBsZXRlX2NiOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29uc3RydWN0IHByb2FjdG9yLgorICAgIC8vCisgICAgUGpfUHJvYWN0b3IoIFBqX1Bvb2wgKnBvb2wsIHBqX3NpemVfdCBtYXhfZmQsCisgICAgICAgICAgICAgICAgIHBqX3NpemVfdCBtYXhfdGltZXJfZW50cmllcyApCisgICAgOiBpb3FfKE5VTEwpLCB0aF8oTlVMTCkKKyAgICB7CisgICAgICAgIGNiXy5vbl9yZWFkX2NvbXBsZXRlICAgID0gJnJlYWRfY29tcGxldGVfY2I7CisgICAgICAgIGNiXy5vbl93cml0ZV9jb21wbGV0ZSAgID0gJndyaXRlX2NvbXBsZXRlX2NiOworICAgICAgICBjYl8ub25fYWNjZXB0X2NvbXBsZXRlICA9ICZhY2NlcHRfY29tcGxldGVfY2I7CisgICAgICAgIGNiXy5vbl9jb25uZWN0X2NvbXBsZXRlID0gJmNvbm5lY3RfY29tcGxldGVfY2I7CisKKyAgICAgICAgY3JlYXRlKHBvb2wsIG1heF9mZCwgbWF4X3RpbWVyX2VudHJpZXMpOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVzdHJ1Y3Rvci4KKyAgICAvLworICAgIH5Qal9Qcm9hY3RvcigpCisgICAgeworICAgICAgICBkZXN0cm95KCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDcmVhdGUgcHJvYWN0b3IuCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBjcmVhdGUoIFBqX1Bvb2wgKnBvb2wsIHBqX3NpemVfdCBtYXhfZmQsIAorCQkJcGpfc2l6ZV90IHRpbWVyX2VudHJ5X2NvdW50KQorICAgIHsKKyAgICAgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgICAgIGRlc3Ryb3koKTsKKworICAgICAgICBzdGF0dXMgPSBwal9pb3F1ZXVlX2NyZWF0ZShwb29sLT5wb29sXygpLCBtYXhfZmQsICZpb3FfKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSAKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgIAorICAgICAgICBzdGF0dXMgPSBwal90aW1lcl9oZWFwX2NyZWF0ZShwb29sLT5wb29sXygpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfZW50cnlfY291bnQsICZ0aF8pOworICAgICAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIHBqX2lvcXVldWVfZGVzdHJveShpb3FfKTsKKyAgICAgICAgICAgIGlvcV8gPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cm95IHByb2FjdG9yLgorICAgIC8vCisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIGlmIChpb3FfKSB7CisgICAgICAgICAgICBwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xXyk7CisgICAgICAgICAgICBpb3FfID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhfKSB7CisgICAgICAgICAgICBwal90aW1lcl9oZWFwX2Rlc3Ryb3kodGhfKTsKKyAgICAgICAgICAgIHRoXyA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLworICAgIC8vIFJlZ2lzdGVyIGhhbmRsZXIuCisgICAgLy8gVGhpcyB3aWxsIGNhbGwgaGFuZGxlci0+Z2V0X3NvY2tldF9oYW5kbGUoKQorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgcmVnaXN0ZXJfc29ja2V0X2hhbmRsZXIoUGpfUG9vbCAqcG9vbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGpfRXZlbnRfSGFuZGxlciAqaGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiAgIHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayggcG9vbC0+cG9vbF8oKSwgaW9xXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLT5nZXRfc29ja2V0X2hhbmRsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIsICZjYl8sICZoYW5kbGVyLT5rZXlfICk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBVbnJlZ2lzdGVyIGhhbmRsZXIuCisgICAgLy8KKyAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX2hhbmRsZXIoUGpfRXZlbnRfSGFuZGxlciAqaGFuZGxlcikKKyAgICB7CisgICAgICAgIGlmIChoYW5kbGVyLT5rZXlfKSB7CisgICAgICAgICAgICBwal9pb3F1ZXVlX3VucmVnaXN0ZXIoIGhhbmRsZXItPmtleV8gKTsKKyAgICAgICAgICAgIGhhbmRsZXItPmtleV8gPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTY2hlZHVsZXIgdGltZXIuCisgICAgLy8KKyAgICBib29sIHNjaGVkdWxlX3RpbWVyKCBQal9FdmVudF9IYW5kbGVyICpoYW5kbGVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQal9UaW1lX1ZhbCAmZGVsYXksIAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZD0tMSkKKyAgICB7CisgICAgICAgIHJldHVybiBzY2hlZHVsZV90aW1lcih0aF8sIGhhbmRsZXIsIGRlbGF5LCBpZCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDYW5jZWwgdGltZXIuCisgICAgLy8KKyAgICBib29sIGNhbmNlbF90aW1lcihQal9FdmVudF9IYW5kbGVyICpoYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBqX3RpbWVyX2hlYXBfY2FuY2VsKHRoXywgJmhhbmRsZXItPnRpbWVyXykgPT0gMTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEhhbmRsZSBldmVudHMuCisgICAgLy8KKyAgICBpbnQgaGFuZGxlX2V2ZW50cyhQal9UaW1lX1ZhbCAqbWF4X3RpbWVvdXQpCisgICAgeworICAgICAgICBQal9UaW1lX1ZhbCB0aW1lb3V0KDAsIDApOworICAgICAgICBpbnQgdGltZXJfY291bnQ7CisKKyAgICAgICAgdGltZXJfY291bnQgPSBwal90aW1lcl9oZWFwX3BvbGwoIHRoXywgJnRpbWVvdXQgKTsKKworICAgICAgICBpZiAodGltZW91dC5nZXRfc2VjKCkgPCAwKSAKKyAgICAgICAgICAgIHRpbWVvdXQuc2VjID0gUEpfTUFYSU5UMzI7CisKKyAgICAgICAgLyogSWYgY2FsbGVyIHNwZWNpZmllcyBtYXhpbXVtIHRpbWUgdG8gd2FpdCwgdGhlbiBjb21wYXJlIHRoZSB2YWx1ZSAKKyAgICAgICAgICogd2l0aCB0aGUgdGltZW91dCB0byB3YWl0IGZyb20gdGltZXIsIGFuZCB1c2UgdGhlIG1pbmltdW0gdmFsdWUuCisgICAgICAgICAqLworICAgICAgICBpZiAobWF4X3RpbWVvdXQgJiYgdGltZW91dCA+PSAqbWF4X3RpbWVvdXQpIHsKKwkgICAgdGltZW91dCA9ICptYXhfdGltZW91dDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFBvbGwgZXZlbnRzIGluIGlvcXVldWUuICovCisgICAgICAgIGludCBpb3F1ZXVlX2NvdW50OworCisgICAgICAgIGlvcXVldWVfY291bnQgPSBwal9pb3F1ZXVlX3BvbGwoaW9xXywgJnRpbWVvdXQpOworICAgICAgICBpZiAoaW9xdWV1ZV9jb3VudCA8IDApCisJICAgIHJldHVybiBpb3F1ZXVlX2NvdW50OworCisgICAgICAgIHJldHVybiBpb3F1ZXVlX2NvdW50ICsgdGltZXJfY291bnQ7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgdGhlIGludGVybmFsIGlvcXVldWUgb2JqZWN0LgorICAgIC8vCisgICAgcGpfaW9xdWV1ZV90ICpnZXRfaW9fcXVldWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlvcV87CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHZXQgdGhlIGludGVybmFsIHRpbWVyIGhlYXAgb2JqZWN0LgorICAgIC8vCisgICAgcGpfdGltZXJfaGVhcF90ICpnZXRfdGltZXJfaGVhcCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhfOworICAgIH0KKworcHJpdmF0ZToKKyAgICBwal9pb3F1ZXVlX3QgKmlvcV87CisgICAgcGpfdGltZXJfaGVhcF90ICp0aF87CisgICAgcGpfaW9xdWV1ZV9jYWxsYmFjayBjYl87CisKKyAgICBzdGF0aWMgYm9vbCBzY2hlZHVsZV90aW1lciggcGpfdGltZXJfaGVhcF90ICp0aW1lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBqX0V2ZW50X0hhbmRsZXIgKmhhbmRsZXIsCisJCQkJY29uc3QgUGpfVGltZV9WYWwgJmRlbGF5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlkPS0xKQorICAgIHsKKyAgICAgICAgaGFuZGxlci0+dGltZXJfLmlkID0gaWQ7CisgICAgICAgIHJldHVybiBwal90aW1lcl9oZWFwX3NjaGVkdWxlKHRpbWVyLCAmaGFuZGxlci0+dGltZXJfLCAmZGVsYXkpID09IDA7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIFN0YXRpYyByZWFkIGNvbXBsZXRpb24gY2FsbGJhY2suCisgICAgLy8KKyAgICBzdGF0aWMgdm9pZCByZWFkX2NvbXBsZXRlX2NiKCBwal9pb3F1ZXVlX2tleV90ICprZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCBieXRlc19yZWFkKQorICAgIHsKKyAgICAgICAgUGpfRXZlbnRfSGFuZGxlciAqaGFuZGxlciA9IAorCSAgICAoUGpfRXZlbnRfSGFuZGxlciopIHBqX2lvcXVldWVfZ2V0X3VzZXJfZGF0YShrZXkpOworCisgICAgICAgIGhhbmRsZXItPm9uX3JlYWRfY29tcGxldGUoKFBqX0FzeW5jX09wKilvcF9rZXksIGJ5dGVzX3JlYWQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gU3RhdGljIHdyaXRlIGNvbXBsZXRpb24gY2FsbGJhY2suCisgICAgLy8KKyAgICBzdGF0aWMgdm9pZCB3cml0ZV9jb21wbGV0ZV9jYihwal9pb3F1ZXVlX2tleV90ICprZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zc2l6ZV90IGJ5dGVzX3NlbnQpCisgICAgeworICAgICAgICBQal9FdmVudF9IYW5kbGVyICpoYW5kbGVyID0gCisJICAgIChQal9FdmVudF9IYW5kbGVyKikgcGpfaW9xdWV1ZV9nZXRfdXNlcl9kYXRhKGtleSk7CisKKyAgICAgICAgaGFuZGxlci0+b25fd3JpdGVfY29tcGxldGUoKFBqX0FzeW5jX09wKilvcF9rZXksIGJ5dGVzX3NlbnQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gU3RhdGljIGFjY2VwdCBjb21wbGV0aW9uIGNhbGxiYWNrLgorICAgIC8vCisgICAgc3RhdGljIHZvaWQgYWNjZXB0X2NvbXBsZXRlX2NiKHBqX2lvcXVldWVfa2V5X3QgKmtleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc29ja190IG5ld19zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zdGF0dXNfdCBzdGF0dXMpCisgICAgeworICAgICAgICBQal9FdmVudF9IYW5kbGVyICpoYW5kbGVyID0gCisJICAgIChQal9FdmVudF9IYW5kbGVyKikgcGpfaW9xdWV1ZV9nZXRfdXNlcl9kYXRhKGtleSk7CisKKyAgICAgICAgaGFuZGxlci0+b25fYWNjZXB0X2NvbXBsZXRlKChQal9Bc3luY19PcCopb3Bfa2V5LCBuZXdfc29jaywgc3RhdHVzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFN0YXRpYyBjb25uZWN0IGNvbXBsZXRpb24gY2FsbGJhY2suCisgICAgLy8KKyAgICBzdGF0aWMgdm9pZCBjb25uZWN0X2NvbXBsZXRlX2NiKHBqX2lvcXVldWVfa2V5X3QgKmtleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zdGF0dXNfdCBzdGF0dXMpCisgICAgeworICAgICAgICBQal9FdmVudF9IYW5kbGVyICpoYW5kbGVyID0gCisJICAgIChQal9FdmVudF9IYW5kbGVyKikgcGpfaW9xdWV1ZV9nZXRfdXNlcl9kYXRhKGtleSk7CisKKyAgICAgICAgaGFuZGxlci0+b25fY29ubmVjdF9jb21wbGV0ZShzdGF0dXMpOworICAgIH0KKworfTsKKworI2VuZGlmCS8qIF9fUEpQUF9QUk9BQ1RPUl9IUFBfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvc2Nhbm5lci5ocHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvc2Nhbm5lci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNkZTZkOAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy9zY2FubmVyLmhwcApAQCAtMCwwICsxLDI0NiBAQAorLyogJElkOiBzY2FubmVyLmhwcCAyMzk0IDIwMDgtMTItMjMgMTc6Mjc6NTNaIGJlbm55bHAgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSlBQX1NDQU5ORVJfSFBQX18KKyNkZWZpbmUgX19QSlBQX1NDQU5ORVJfSFBQX18KKworI2luY2x1ZGUgPHBqbGliLXV0aWwvc2Nhbm5lci5oPgorI2luY2x1ZGUgPHBqKysvc3RyaW5nLmhwcD4KKworY2xhc3MgUGpfQ2lzOworY2xhc3MgUGpfQ2lzX0J1ZmZlcjsKK2NsYXNzIFBqX1NjYW5uZXI7CisKK2NsYXNzIFBqX0Npc19CdWZmZXIKK3sKKyAgICBmcmllbmQgY2xhc3MgUGpfQ2lzOworCitwdWJsaWM6CisgICAgUGpfQ2lzX0J1ZmZlcigpIAorICAgIHsgCisJcGpfY2lzX2J1Zl9pbml0KCZidWZfKTsgCisgICAgfQorCitwcml2YXRlOgorICAgIHBqX2Npc19idWZfdCBidWZfOworfTsKKworCitjbGFzcyBQal9DaXMKK3sKKyAgICBmcmllbmQgY2xhc3MgUGpfU2Nhbm5lcjsKKworcHVibGljOgorICAgIFBqX0NpcyhQal9DaXNfQnVmZmVyICpidWYpCisgICAgeworCXBqX2Npc19pbml0KCZidWYtPmJ1Zl8sICZjaXNfKTsKKyAgICB9CisKKyAgICBQal9DaXMoY29uc3QgUGpfQ2lzICZyaHMpCisgICAgeworCXBqX2Npc19kdXAoJmNpc18sIChwal9jaXNfdCopJnJocy5jaXNfKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZF9yYW5nZShpbnQgc3RhcnQsIGludCBlbmQpCisgICAgeworCXBqX2Npc19hZGRfcmFuZ2UoJmNpc18sIHN0YXJ0LCBlbmQpOworICAgIH0KKworICAgIHZvaWQgYWRkX2FscGhhKCkKKyAgICB7CisJcGpfY2lzX2FkZF9hbHBoYSgmY2lzXyk7CisgICAgfQorCisgICAgdm9pZCBhZGRfbnVtKCkKKyAgICB7CisJcGpfY2lzX2FkZF9udW0oJmNpc18pOworICAgIH0KKworICAgIHZvaWQgYWRkX3N0cihjb25zdCBjaGFyICpzdHIpCisgICAgeworCXBqX2Npc19hZGRfc3RyKCZjaXNfLCBzdHIpOworICAgIH0KKworICAgIHZvaWQgYWRkX2Npcyhjb25zdCBQal9DaXMgJnJocykKKyAgICB7CisJcGpfY2lzX2FkZF9jaXMoJmNpc18sICZyaHMuY2lzXyk7CisgICAgfQorCisgICAgdm9pZCBkZWxfcmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIHsKKwlwal9jaXNfZGVsX3JhbmdlKCZjaXNfLCBzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICB2b2lkIGRlbF9zdHIoY29uc3QgY2hhciAqc3RyKQorICAgIHsKKwlwal9jaXNfZGVsX3N0cigmY2lzXywgc3RyKTsKKyAgICB9CisKKyAgICB2b2lkIGludmVydCgpCisgICAgeworCXBqX2Npc19pbnZlcnQoJmNpc18pOworICAgIH0KKworICAgIGJvb2wgbWF0Y2goaW50IGMpIGNvbnN0CisgICAgeworCXJldHVybiBwal9jaXNfbWF0Y2goJmNpc18sIGMpICE9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIHBqX2Npc190IGNpc187Cit9OworCisKKworY2xhc3MgUGpfU2Nhbm5lcgoreworcHVibGljOgorICAgIFBqX1NjYW5uZXIoKSB7fQorCisgICAgZW51bQorICAgIHsKKwlTWU5UQVhfRVJST1IgPSAxMDEKKyAgICB9OworICAgIHN0YXRpYyB2b2lkIHN5bnRheF9lcnJvcl9oYW5kbGVyX3Rocm93X3BqKHBqX3NjYW5uZXIgKik7CisKKyAgICB0eXBlZGVmIHBqX3NjYW5fc3RhdGUgU3RhdGU7CisKKyAgICB2b2lkIGluaXQoY2hhciAqYnVmLCBpbnQgbGVuLCB1bnNpZ25lZCBvcHRpb25zPVBKX1NDQU5fQVVUT1NLSVBfV1MsIAorCSAgICAgIHBqX3N5bl9lcnJfZnVuY19wdHIgY2FsbGJhY2sgPSAmc3ludGF4X2Vycm9yX2hhbmRsZXJfdGhyb3dfcGopCisgICAgeworCXBqX3NjYW5faW5pdCgmc2Nhbm5lcl8sIGJ1ZiwgbGVuLCBvcHRpb25zLCBjYWxsYmFjayk7CisgICAgfQorCisgICAgdm9pZCBmaW5pKCkKKyAgICB7CisJcGpfc2Nhbl9maW5pKCZzY2FubmVyXyk7CisgICAgfQorCisgICAgaW50IGVvZigpIGNvbnN0CisgICAgeworCXJldHVybiBwal9zY2FuX2lzX2VvZigmc2Nhbm5lcl8pOworICAgIH0KKworICAgIGludCBwZWVrX2NoYXIoKSBjb25zdAorICAgIHsKKwlyZXR1cm4gKnNjYW5uZXJfLmN1cnB0cjsKKyAgICB9CisKKyAgICBpbnQgcGVlayhjb25zdCBQal9DaXMgKmNpcywgUGpfU3RyaW5nICpvdXQpCisgICAgeworCXJldHVybiBwal9zY2FuX3BlZWsoJnNjYW5uZXJfLCAgJmNpcy0+Y2lzXywgb3V0KTsKKyAgICB9CisKKyAgICBpbnQgcGVla19uKHBqX3NpemVfdCBsZW4sIFBqX1N0cmluZyAqb3V0KQorICAgIHsKKwlyZXR1cm4gcGpfc2Nhbl9wZWVrX24oJnNjYW5uZXJfLCBsZW4sIG91dCk7CisgICAgfQorCisgICAgaW50IHBlZWtfdW50aWwoY29uc3QgUGpfQ2lzICpjaXMsIFBqX1N0cmluZyAqb3V0KQorICAgIHsKKwlyZXR1cm4gcGpfc2Nhbl9wZWVrX3VudGlsKCZzY2FubmVyXywgJmNpcy0+Y2lzXywgb3V0KTsKKyAgICB9CisKKyAgICB2b2lkIGdldChjb25zdCBQal9DaXMgKmNpcywgUGpfU3RyaW5nICpvdXQpCisgICAgeworCXBqX3NjYW5fZ2V0KCZzY2FubmVyXywgJmNpcy0+Y2lzXywgb3V0KTsKKyAgICB9CisKKyAgICB2b2lkIGdldF9uKHVuc2lnbmVkIE4sIFBqX1N0cmluZyAqb3V0KQorICAgIHsKKwlwal9zY2FuX2dldF9uKCZzY2FubmVyXywgTiwgb3V0KTsKKyAgICB9CisKKyAgICBpbnQgZ2V0X2NoYXIoKQorICAgIHsKKwlyZXR1cm4gcGpfc2Nhbl9nZXRfY2hhcigmc2Nhbm5lcl8pOworICAgIH0KKworICAgIHZvaWQgZ2V0X3F1b3RlKGludCBiZWdpbl9xdW90ZSwgaW50IGVuZF9xdW90ZSwgUGpfU3RyaW5nICpvdXQpCisgICAgeworCXBqX3NjYW5fZ2V0X3F1b3RlKCZzY2FubmVyXywgYmVnaW5fcXVvdGUsIGVuZF9xdW90ZSwgb3V0KTsKKyAgICB9CisKKyAgICB2b2lkIGdldF9uZXdsaW5lKCkKKyAgICB7CisJcGpfc2Nhbl9nZXRfbmV3bGluZSgmc2Nhbm5lcl8pOworICAgIH0KKworICAgIHZvaWQgZ2V0X3VudGlsKGNvbnN0IFBqX0NpcyAqY2lzLCBQal9TdHJpbmcgKm91dCkKKyAgICB7CisJcGpfc2Nhbl9nZXRfdW50aWwoJnNjYW5uZXJfLCAmY2lzLT5jaXNfLCBvdXQpOworICAgIH0KKworICAgIHZvaWQgZ2V0X3VudGlsX2NoKGludCB1bnRpbF9jaCwgUGpfU3RyaW5nICpvdXQpCisgICAgeworCXBqX3NjYW5fZ2V0X3VudGlsX2NoKCZzY2FubmVyXywgdW50aWxfY2gsIG91dCk7CisgICAgfQorCisgICAgdm9pZCBnZXRfdW50aWxfY2hyKGNvbnN0IGNoYXIgKnNwZWMsIFBqX1N0cmluZyAqb3V0KQorICAgIHsKKwlwal9zY2FuX2dldF91bnRpbF9jaHIoJnNjYW5uZXJfLCBzcGVjLCBvdXQpOworICAgIH0KKworICAgIHZvaWQgYWR2YW5jZV9uKHVuc2lnbmVkIE4sIGJvb2wgc2tpcF93cz10cnVlKQorICAgIHsKKwlwal9zY2FuX2FkdmFuY2Vfbigmc2Nhbm5lcl8sIE4sIHNraXBfd3MpOworICAgIH0KKworICAgIGludCBzdHJjbXAoY29uc3QgY2hhciAqcywgaW50IGxlbikKKyAgICB7CisJcmV0dXJuIHBqX3NjYW5fc3RyY21wKCZzY2FubmVyXywgcywgbGVuKTsKKyAgICB9CisKKyAgICBpbnQgc3RyaWNtcChjb25zdCBjaGFyICpzLCBpbnQgbGVuKQorICAgIHsKKwlyZXR1cm4gcGpfc2Nhbl9zdHJpY21wKCZzY2FubmVyXywgcywgbGVuKTsKKyAgICB9CisKKyAgICB2b2lkIHNraXBfd3MoKQorICAgIHsKKwlwal9zY2FuX3NraXBfd2hpdGVzcGFjZSgmc2Nhbm5lcl8pOworICAgIH0KKworICAgIHZvaWQgc2F2ZV9zdGF0ZShTdGF0ZSAqc3RhdGUpIGNvbnN0CisgICAgeworCXBqX3NjYW5fc2F2ZV9zdGF0ZSgmc2Nhbm5lcl8sIHN0YXRlKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc3RvcmVfc3RhdGUoU3RhdGUgKnN0YXRlKQorICAgIHsKKwlwal9zY2FuX3Jlc3RvcmVfc3RhdGUoJnNjYW5uZXJfLCBzdGF0ZSk7CisgICAgfQorCisgICAgaW50IGdldF9wb3NfbGluZSgpIGNvbnN0CisgICAgeworCXJldHVybiBzY2FubmVyXy5saW5lOworICAgIH0KKworICAgIGludCBnZXRfcG9zX2NvbCgpIGNvbnN0CisgICAgeworCXJldHVybiBwal9zY2FuX2dldF9jb2woJnNjYW5uZXJfKTsKKyAgICB9CisKKworcHJpdmF0ZToKKyAgICBwal9zY2FubmVyIHNjYW5uZXJfOworfTsKKworI2VuZGlmCS8qIF9fUEpQUF9TQ0FOTkVSX0hQUF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy9zb2NrLmhwcCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy9zb2NrLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjJiNjdhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3NvY2suaHBwCkBAIC0wLDAgKzEsNDQ0IEBACisvKiAkSWQ6IHNvY2suaHBwIDIzOTQgMjAwOC0xMi0yMyAxNzoyNzo1M1ogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKUFBfU09DS19IUFBfXworI2RlZmluZSBfX1BKUFBfU09DS19IUFBfXworCisjaW5jbHVkZSA8cGovc29jay5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorCitjbGFzcyBQal9FdmVudF9IYW5kbGVyOworCisvLworLy8gQmFzZSBjbGFzcyBmb3IgYWRkcmVzcy4KKy8vCitjbGFzcyBQal9BZGRyCit7Cit9OworCisvLworLy8gSW50ZXJuZXQgYWRkcmVzcy4KKy8vCitjbGFzcyBQal9JbmV0X0FkZHIgOiBwdWJsaWMgcGpfc29ja2FkZHJfaW4sIHB1YmxpYyBQal9BZGRyCit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBHZXQgcG9ydCBudW1iZXIuCisgICAgLy8KKyAgICBwal91aW50MTZfdCBnZXRfcG9ydF9udW1iZXIoKSBjb25zdAorICAgIHsKKwlyZXR1cm4gcGpfc29ja2FkZHJfaW5fZ2V0X3BvcnQodGhpcyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTZXQgcG9ydCBudW1iZXIuCisgICAgLy8KKyAgICB2b2lkIHNldF9wb3J0X251bWJlcihwal91aW50MTZfdCBwb3J0KQorICAgIHsKKwlzaW5fZmFtaWx5ID0gUEpfQUZfSU5FVDsKKwlwal9zb2NrYWRkcl9pbl9zZXRfcG9ydCh0aGlzLCBwb3J0KTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCBJUCBhZGRyZXNzLgorICAgIC8vCisgICAgcGpfdWludDMyX3QgZ2V0X2lwX2FkZHJlc3MoKSBjb25zdAorICAgIHsKKwlyZXR1cm4gcGpfc29ja2FkZHJfaW5fZ2V0X2FkZHIodGhpcykuc19hZGRyOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IGFkZHJlc3Mgc3RyaW5nLgorICAgIC8vCisgICAgY29uc3QgY2hhciAqZ2V0X2FkZHJlc3MoKSBjb25zdAorICAgIHsKKwlyZXR1cm4gcGpfaW5ldF9udG9hKHNpbl9hZGRyKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFNldCBJUCBhZGRyZXNzLgorICAgIC8vCisgICAgdm9pZCBzZXRfaXBfYWRkcmVzcyhwal91aW50MzJfdCBhZGRyKQorICAgIHsKKwlzaW5fZmFtaWx5ID0gUEpfQUZfSU5FVDsKKwlwal9zb2NrYWRkcl9pbl9zZXRfYWRkcih0aGlzLCBhZGRyKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFNldCBhZGRyZXNzLgorICAgIC8vCisgICAgcGpfc3RhdHVzX3Qgc2V0X2FkZHJlc3MoY29uc3QgcGpfc3RyX3QgKmFkZHIpCisgICAgeworCXJldHVybiBwal9zb2NrYWRkcl9pbl9zZXRfc3RyX2FkZHIodGhpcywgYWRkcik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTZXQgYWRkcmVzcy4KKyAgICAvLworICAgIHBqX3N0YXR1c190IHNldF9hZGRyZXNzKGNvbnN0IGNoYXIgKmFkZHIpCisgICAgeworICAgICAgICBwal9zdHJfdCBzOworCXJldHVybiBwal9zb2NrYWRkcl9pbl9zZXRfc3RyX2FkZHIodGhpcywgcGpfY3N0cigmcywgYWRkcikpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29tcGFyZSBmb3IgZXF1YWxpdHkuCisgICAgLy8KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGpfSW5ldF9BZGRyICZyaHMpIGNvbnN0CisgICAgeworCXJldHVybiBzaW5fZmFtaWx5ID09IHJocy5zaW5fZmFtaWx5ICYmCisgICAgICAgICAgICAgICBzaW5fYWRkci5zX2FkZHIgPT0gcmhzLnNpbl9hZGRyLnNfYWRkciAmJgorICAgICAgICAgICAgICAgc2luX3BvcnQgPT0gcmhzLnNpbl9wb3J0OworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLworICAgIC8vIER1bW15IGxlbmd0aCB1c2VkIGluIHBqX2lvcXVldWVfcmVjdmZyb20oKSBldGMKKyAgICAvLworICAgIGZyaWVuZCBjbGFzcyBQal9FdmVudF9IYW5kbGVyOworICAgIGZyaWVuZCBjbGFzcyBQal9Tb2NrZXQ7CisgICAgZnJpZW5kIGNsYXNzIFBqX1NvY2tfU3RyZWFtOworICAgIGZyaWVuZCBjbGFzcyBQal9Tb2NrX0RncmFtOworCisgICAgaW50IGFkZHJsZW5fOworfTsKKworCisvLworLy8gU29ja2V0IGJhc2UgY2xhc3MuCisvLworLy8gTm90ZToKKy8vICBzb2NrZXQgd2lsbCBub3QgYXV0b21hdGljYWxseSBiZSBjbG9zZWQgb24gZGVzdHJ1Y3Rvci4KKy8vCitjbGFzcyBQal9Tb2NrZXQKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IuCisgICAgLy8KKyAgICBQal9Tb2NrZXQoKQorICAgICAgICA6IHNvY2tfKFBKX0lOVkFMSURfU09DS0VUKSAKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBJbml0aWFsaXplIGZyb20gYSBzb2NrZXQgaGFuZGxlLgorICAgIC8vCisgICAgZXhwbGljaXQgUGpfU29ja2V0KHBqX3NvY2tfdCBzb2NrKQorICAgICAgICA6IHNvY2tfKHNvY2spCisgICAgeworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29weSBjb25zdHJ1Y3Rvci4KKyAgICAvLworICAgIFBqX1NvY2tldChjb25zdCBQal9Tb2NrZXQgJnJocykgCisgICAgICAgIDogc29ja18ocmhzLnNvY2tfKSAKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cnVjdG9yIHdpbGwgbm90IGNsb3NlIHRoZSBzb2NrZXQuCisgICAgLy8gWW91IG11c3QgY2FsbCBjbG9zZSgpIGV4cGxpY2l0bHkuCisgICAgLy8KKyAgICB+UGpfU29ja2V0KCkKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTZXQgc29ja2V0IGhhbmRsZS4KKyAgICAvLworICAgIHZvaWQgc2V0X2hhbmRsZShwal9zb2NrX3Qgc29jaykKKyAgICB7CisJc29ja18gPSBzb2NrOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHNvY2tldCBoYW5kbGUuCisgICAgLy8KKyAgICBwal9zb2NrX3QgZ2V0X2hhbmRsZSgpIGNvbnN0CisgICAgeworCXJldHVybiBzb2NrXzsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCBzb2NrZXQgaGFuZGxlLgorICAgIC8vCisgICAgcGpfc29ja190JiBnZXRfaGFuZGxlKCkKKyAgICB7CisJcmV0dXJuIHNvY2tfOworICAgIH0KKworICAgIC8vCisgICAgLy8gU2VlIGlmIHRoZSBzb2NrZXQgaXMgdmFsaWQuCisgICAgLy8KKyAgICBib29sIGlzX3ZhbGlkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzb2NrXyAhPSBQSl9JTlZBTElEX1NPQ0tFVDsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENyZWF0ZSB0aGUgc29ja2V0LgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgY3JlYXRlKGludCBhZiwgaW50IHR5cGUsIGludCBwcm90bykKKyAgICB7CisJcmV0dXJuIHBqX3NvY2tfc29ja2V0KGFmLCB0eXBlLCBwcm90bywgJnNvY2tfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEJpbmQgc29ja2V0LgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgYmluZChjb25zdCBQal9JbmV0X0FkZHIgJmFkZHIpCisgICAgeworCXJldHVybiBwal9zb2NrX2JpbmQoc29ja18sICZhZGRyLCBzaXplb2YoUGpfSW5ldF9BZGRyKSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDbG9zZSBzb2NrZXQuCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBjbG9zZSgpCisgICAgeworCXBqX3NvY2tfY2xvc2Uoc29ja18pOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IHBlZXIgc29ja2V0IG5hbWUuCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBnZXRwZWVybmFtZShQal9JbmV0X0FkZHIgKmFkZHIpCisgICAgeworCXJldHVybiBwal9zb2NrX2dldHBlZXJuYW1lKHNvY2tfLCBhZGRyLCAmYWRkci0+YWRkcmxlbl8pOworICAgIH0KKworICAgIC8vCisgICAgLy8gZ2V0c29ja25hbWUKKyAgICAvLworICAgIHBqX3N0YXR1c190IGdldHNvY2tuYW1lKFBqX0luZXRfQWRkciAqYWRkcikKKyAgICB7CisJcmV0dXJuIHBqX3NvY2tfZ2V0c29ja25hbWUoc29ja18sIGFkZHIsICZhZGRyLT5hZGRybGVuXyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBnZXRzb2Nrb3B0LgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgZ2V0c29ja29wdChwal91aW50MTZfdCBsZXZlbCwgcGpfdWludDE2X3Qgb3B0bmFtZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvcHR2YWwsIGludCAqb3B0bGVuKQorICAgIHsKKwlyZXR1cm4gcGpfc29ja19nZXRzb2Nrb3B0KHNvY2tfLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pOworICAgIH0KKworICAgIC8vCisgICAgLy8gc2V0c29ja29wdAorICAgIC8vIAorICAgIHBqX3N0YXR1c190IHNldHNvY2tvcHQocGpfdWludDE2X3QgbGV2ZWwsIHBqX3VpbnQxNl90IG9wdG5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqb3B0dmFsLCBpbnQgb3B0bGVuKQorICAgIHsKKwlyZXR1cm4gcGpfc29ja19zZXRzb2Nrb3B0KHNvY2tfLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pOworICAgIH0KKworICAgIC8vCisgICAgLy8gcmVjZWl2ZSBkYXRhLgorICAgIC8vCisgICAgcGpfc3NpemVfdCByZWN2KHZvaWQgKmJ1ZiwgcGpfc2l6ZV90IGxlbiwgaW50IGZsYWcgPSAwKQorICAgIHsKKyAgICAgICAgcGpfc3NpemVfdCBieXRlcyA9IGxlbjsKKwlpZiAocGpfc29ja19yZWN2KHNvY2tfLCBidWYsICZieXRlcywgZmxhZykgIT0gUEpfU1VDQ0VTUykKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIGJ5dGVzOworICAgIH0KKworICAgIC8vCisgICAgLy8gc2VuZCBkYXRhLgorICAgIC8vCisgICAgcGpfc3NpemVfdCBzZW5kKGNvbnN0IHZvaWQgKmJ1ZiwgcGpfc3NpemVfdCBsZW4sIGludCBmbGFnID0gMCkKKyAgICB7CisgICAgICAgIHBqX3NzaXplX3QgYnl0ZXMgPSBsZW47CisJaWYgKHBqX3NvY2tfc2VuZChzb2NrXywgYnVmLCAmYnl0ZXMsIGZsYWcpICE9IFBKX1NVQ0NFU1MpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBieXRlczsKKyAgICB9CisKKyAgICAvLworICAgIC8vIGNvbm5lY3QuCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBjb25uZWN0KGNvbnN0IFBqX0luZXRfQWRkciAmYWRkcikKKyAgICB7CisJcmV0dXJuIHBqX3NvY2tfY29ubmVjdChzb2NrXywgJmFkZHIsIHNpemVvZihQal9JbmV0X0FkZHIpKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIGFzc2lnbm1lbnQuCisgICAgLy8KKyAgICBQal9Tb2NrZXQgJm9wZXJhdG9yPShjb25zdCBQal9Tb2NrZXQgJnJocykKKyAgICB7CisgICAgICAgIHNvY2tfID0gcmhzLnNvY2tfOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFBqX0V2ZW50X0hhbmRsZXI7CisgICAgcGpfc29ja190IHNvY2tfOworfTsKKworCisjaWYgUEpfSEFTX1RDUAorLy8KKy8vIFN0cmVhbSBzb2NrZXQuCisvLworY2xhc3MgUGpfU29ja19TdHJlYW0gOiBwdWJsaWMgUGpfU29ja2V0Cit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgIC8vCisgICAgUGpfU29ja19TdHJlYW0oKSAKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBJbml0aWFsaXplIGZyb20gYSBzb2NrZXQgaGFuZGxlLgorICAgIC8vCisgICAgZXhwbGljaXQgUGpfU29ja19TdHJlYW0ocGpfc29ja190IHNvY2spCisgICAgICAgIDogUGpfU29ja2V0KHNvY2spCisgICAgeworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29weSBjb25zdHJ1Y3Rvci4KKyAgICAvLworICAgIFBqX1NvY2tfU3RyZWFtKGNvbnN0IFBqX1NvY2tfU3RyZWFtICZyaHMpIDogUGpfU29ja2V0KHJocykgCisgICAgeworICAgIH0KKworICAgIC8vCisgICAgLy8gQXNzaWdubWVudC4KKyAgICAvLworICAgIFBqX1NvY2tfU3RyZWFtICZvcGVyYXRvcj0oY29uc3QgUGpfU29ja19TdHJlYW0gJnJocykgCisgICAgeyAKKyAgICAgICAgc29ja18gPSByaHMuc29ja187IAorICAgICAgICByZXR1cm4gKnRoaXM7IAorICAgIH0KKworICAgIC8vCisgICAgLy8gbGlzdGVuKCkKKyAgICAvLworICAgIHBqX3N0YXR1c190IGxpc3RlbihpbnQgYmFja2xvZyA9IDUpCisgICAgeworCXJldHVybiBwal9zb2NrX2xpc3Rlbihzb2NrXywgYmFja2xvZyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBibG9ja2luZyBhY2NlcHQoKQorICAgIC8vCisgICAgUGpfU29ja19TdHJlYW0gYWNjZXB0KFBqX0luZXRfQWRkciAqcmVtb3RlX2FkZHIgPSBOVUxMKQorICAgIHsKKyAgICAgICAgcGpfc29ja190IG5ld3NvY2s7CisgICAgICAgIGludCAqYWRkcmxlbiA9IHJlbW90ZV9hZGRyID8gJnJlbW90ZV9hZGRyLT5hZGRybGVuXyA6IE5VTEw7CisgICAgICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAgICAgCisgICAgICAgIHN0YXR1cyA9IHBqX3NvY2tfYWNjZXB0KHNvY2tfLCAmbmV3c29jaywgcmVtb3RlX2FkZHIsIGFkZHJsZW4pOworICAgICAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisgICAgICAgICAgICByZXR1cm4gUGpfU29ja19TdHJlYW0oLTEpOworCisgICAgICAgIHJldHVybiBQal9Tb2NrX1N0cmVhbShuZXdzb2NrKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIHNodXRkb3duKCkKKyAgICAvLworICAgIHBqX3N0YXR1c190IHNodXRkb3duKGludCBob3cgPSBQSl9TSFVUX1JEV1IpCisgICAgeworCXJldHVybiBwal9zb2NrX3NodXRkb3duKHNvY2tfLCBob3cpOworICAgIH0KKworfTsKKyNlbmRpZgorCisvLworLy8gRGF0YWdyYW0gc29ja2V0LgorLy8KK2NsYXNzIFBqX1NvY2tfRGdyYW0gOiBwdWJsaWMgUGpfU29ja2V0Cit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgIC8vCisgICAgUGpfU29ja19EZ3JhbSgpIAorICAgIHsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEluaXRpYWxpemUgZnJvbSBhIHNvY2tldCBoYW5kbGUuCisgICAgLy8KKyAgICBleHBsaWNpdCBQal9Tb2NrX0RncmFtKHBqX3NvY2tfdCBzb2NrKQorICAgICAgICA6IFBqX1NvY2tldChzb2NrKQorICAgIHsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvcHkgY29uc3RydWN0b3IuCisgICAgLy8KKyAgICBQal9Tb2NrX0RncmFtKGNvbnN0IFBqX1NvY2tfRGdyYW0gJnJocykgCisgICAgICAgIDogUGpfU29ja2V0KHJocykgCisgICAgeworICAgIH0KKworICAgIC8vCisgICAgLy8gQXNzaWdubWVudC4KKyAgICAvLworICAgIFBqX1NvY2tfRGdyYW0gJm9wZXJhdG9yPShjb25zdCBQal9Tb2NrX0RncmFtICZyaHMpIAorICAgIHsgCisgICAgICAgIFBqX1NvY2tldDo6b3BlcmF0b3IgPShyaHMpOworICAgICAgICByZXR1cm4gKnRoaXM7IAorICAgIH0KKworICAgIC8vCisgICAgLy8gcmVjdmZyb20oKQorICAgIC8vCisgICAgcGpfc3NpemVfdCByZWN2ZnJvbSggdm9pZCAqYnVmLCBwal9zaXplX3QgbGVuLCBpbnQgZmxhZyA9IDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgIFBqX0luZXRfQWRkciAqZnJvbWFkZHIgPSBOVUxMKQorICAgIHsKKyAgICAgICAgcGpfc3NpemVfdCBieXRlcyA9IGxlbjsKKyAgICAgICAgaW50ICphZGRybGVuID0gZnJvbWFkZHIgPyAmZnJvbWFkZHItPmFkZHJsZW5fIDogTlVMTDsKKwlpZiAocGpfc29ja19yZWN2ZnJvbSggc29ja18sIGJ1ZiwgJmJ5dGVzLCBmbGFnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21hZGRyLCBhZGRybGVuKSAhPSBQSl9TVUNDRVNTKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ5dGVzOworICAgIH0KKworICAgIC8vCisgICAgLy8gc2VuZHRvKCkKKyAgICAvLworICAgIHBqX3NzaXplX3Qgc2VuZHRvKCBjb25zdCB2b2lkICpidWYsIHBqX3NpemVfdCBsZW4sIGludCBmbGFnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGpfSW5ldF9BZGRyICZhZGRyKQorICAgIHsKKyAgICAgICAgcGpfc3NpemVfdCBieXRlcyA9IGxlbjsKKwlpZiAocGpfc29ja19zZW5kdG8oIHNvY2tfLCBidWYsICZieXRlcywgZmxhZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZHIsIHNpemVvZihwal9zb2NrYWRkcl9pbikpICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnl0ZXM7CisgICAgfQorfTsKKworCisjZW5kaWYJLyogX19QSlBQX1NPQ0tfSFBQX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3N0cmluZy5ocHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvc3RyaW5nLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzIxNjg1Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3N0cmluZy5ocHAKQEAgLTAsMCArMSw0NjggQEAKKy8qICRJZDogc3RyaW5nLmhwcCAyMzk0IDIwMDgtMTItMjMgMTc6Mjc6NTNaIGJlbm55bHAgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSlBQX1NUUklOR19IUFBfXworI2RlZmluZSBfX1BKUFBfU1RSSU5HX0hQUF9fCisKKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwaisrL3Bvb2wuaHBwPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorCisvLworLy8gU3RyaW5nIHdyYXBwZXIgY2xhc3MgZm9yIHBqX3N0cl90LgorLy8KK2NsYXNzIFBqX1N0cmluZyA6IHB1YmxpYyBwal9zdHJfdAoreworcHVibGljOgorICAgIC8vCisgICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3Rvci4KKyAgICAvLworICAgIFBqX1N0cmluZygpIAorICAgIHsgCisJcGpfYXNzZXJ0KHNpemVvZihQal9TdHJpbmcpID09IHNpemVvZihwal9zdHJfdCkpOworCXB0cj1OVUxMOyAKKyAgICAgICAgc2xlbj0wOyAKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbnN0cnVjdCB0aGUgYnVmZmVyIGZyb20gYSBjaGFyKiAodXNlIHdpdGggY2FyZSkKKyAgICAvLworICAgIFBqX1N0cmluZyhjaGFyICpzdHIpIAorICAgIHsgCisJc2V0KHN0cik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgZnJvbSBhIGNvbnN0IGNoYXIqLgorICAgIC8vCisgICAgUGpfU3RyaW5nKFBqX1Bvb2wgJnBvb2wsIGNvbnN0IGNoYXIgKnNyYykKKyAgICB7CisJc2V0KHBvb2wsIHNyYyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgZnJvbSBwal9zdHJfdCYuCisgICAgLy8KKyAgICBleHBsaWNpdCBQal9TdHJpbmcocGpfc3RyX3QgJnMpCisgICAgeworCXB0ciA9IHMucHRyOworCXNsZW4gPSBzLnNsZW47CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgZnJvbSBjb25zdCBwal9zdHJfdCYgKHVzZSB3aXRoIGNhcmUhKS4KKyAgICAvLworICAgIGV4cGxpY2l0IFBqX1N0cmluZyhjb25zdCBwal9zdHJfdCAmcykKKyAgICB7CisJcHRyID0gKGNoYXIqKXMucHRyOworCXNsZW4gPSBzLnNsZW47CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgYnkgY29weWluZyBmcm9tIGNvbnN0IHBqX3N0cl90Ki4KKyAgICAvLworICAgIFBqX1N0cmluZyhQal9Qb29sICZwb29sLCBjb25zdCBwal9zdHJfdCAqcykKKyAgICB7CisJc2V0KHBvb2wsIHMpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29uc3RydWN0IGJ5IGNvcHlpbmcgZnJvbSBQal9TdHJpbmcKKyAgICAvLworICAgIFBqX1N0cmluZyhQal9Qb29sICZwb29sLCBjb25zdCBQal9TdHJpbmcgJnJocykKKyAgICB7CisJc2V0KHBvb2wsIHJocyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgZnJvbSBhbm90aGVyIFBqX1N0cmluZywgdXNlIHdpdGggY2FyZSEKKyAgICAvLworICAgIGV4cGxpY2l0IFBqX1N0cmluZyhjb25zdCBQal9TdHJpbmcgJnJocykKKyAgICB7CisJcHRyID0gcmhzLnB0cjsKKwlzbGVuID0gcmhzLnNsZW47CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgZnJvbSBhIGNoYXIqIGFuZCBhIGxlbmd0aC4KKyAgICAvLworICAgIFBqX1N0cmluZyhjaGFyICpzdHIsIHBqX3NpemVfdCBsZW4pCisgICAgeworCXNldChzdHIsIGxlbik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgZnJvbSBwYWlyIG9mIHBvaW50ZXIuCisgICAgLy8KKyAgICBQal9TdHJpbmcoY2hhciAqYmVnaW4sIGNoYXIgKmVuZCkKKyAgICB7CisJcGpfc3Ryc2V0Myh0aGlzLCBiZWdpbiwgZW5kKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFlvdSBjYW4gY2FzdCBQal9TdHJpbmcgdG8gcGpfc3RyX3QqCisgICAgLy8KKyAgICBvcGVyYXRvciBwal9zdHJfdCooKQorICAgIHsKKwlyZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFlvdSBjYW4gY2FzdCBjb25zdCBQal9TdHJpbmcgdG8gY29uc3QgcGpfc3RyX3QqCisgICAgLy8KKyAgICBvcGVyYXRvciBjb25zdCBwal9zdHJfdCooKSBjb25zdAorICAgIHsKKwlyZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCisgICAgLy8KKyAgICBwal9zaXplX3QgbGVuZ3RoKCkgY29uc3QKKyAgICB7CisJcmV0dXJuIHBqX3N0cmxlbih0aGlzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCisgICAgLy8KKyAgICBwal9zaXplX3Qgc2l6ZSgpIGNvbnN0CisgICAgeworCXJldHVybiBsZW5ndGgoKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCB0aGUgc3RyaW5nIGJ1ZmZlci4KKyAgICAvLworICAgIGNvbnN0IGNoYXIgKmJ1ZigpIGNvbnN0CisgICAgeworCXJldHVybiBwdHI7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBJbml0aWFsaXplIGJ1ZmZlciBmcm9tIGNoYXIqLgorICAgIC8vCisgICAgdm9pZCBzZXQoY2hhciAqc3RyKQorICAgIHsKKwlwal9zdHJzZXQyKHRoaXMsIHN0cik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBJbml0aWFsaXplIGJ5IGNvcHlpbmcgZnJvbSBhIGNvbnN0IGNoYXIqLgorICAgIC8vCisgICAgdm9pZCBzZXQoUGpfUG9vbCAmcG9vbCwgY29uc3QgY2hhciAqcykKKyAgICB7CisJcGpfc3RyZHVwMihwb29sLCB0aGlzLCBzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEluaXRpYWxpemUgZnJvbSBwal9zdHJfdCouCisgICAgLy8KKyAgICB2b2lkIHNldChwal9zdHJfdCAqcykKKyAgICB7CisJcGpfc3RyYXNzaWduKHRoaXMsIHMpOworICAgIH0KKworICAgIC8vCisgICAgLy8gSW5pdGlhbGl6ZSBieSBjb3B5aW5nIGZyb20gY29uc3QgcGpfc3RyX3QqLgorICAgIC8vCisgICAgdm9pZCBzZXQoUGpfUG9vbCAmcG9vbCwgY29uc3QgcGpfc3RyX3QgKnMpCisgICAgeworCXBqX3N0cmR1cChwb29sLCB0aGlzLCBzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEluaXRpYWxpemUgZnJvbSBjaGFyKiBhbmQgbGVuZ3RoLgorICAgIC8vCisgICAgdm9pZCBzZXQoY2hhciAqc3RyLCBwal9zaXplX3QgbGVuKQorICAgIHsKKwlwal9zdHJzZXQodGhpcywgc3RyLCBsZW4pOworICAgIH0KKworICAgIC8vCisgICAgLy8gSW5pdGlhbGl6ZSBmcm9tIHBhaXIgb2YgcG9pbnRlcnMuCisgICAgLy8KKyAgICB2b2lkIHNldChjaGFyICpiZWdpbiwgY2hhciAqZW5kKQorICAgIHsKKwlwal9zdHJzZXQzKHRoaXMsIGJlZ2luLCBlbmQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gSW5pdGlhbGl6ZSBmcm9tIG90aGVyIFBqX1N0cmluZy4KKyAgICAvLworICAgIHZvaWQgc2V0KFBqX1N0cmluZyAmcmhzKQorICAgIHsKKwlwal9zdHJhc3NpZ24odGhpcywgJnJocyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBJbml0aWFsaXplIGJ5IGNvcHlpbmcgZnJvbSBhIFBqX1N0cmluZyouCisgICAgLy8KKyAgICB2b2lkIHNldChQal9Qb29sICZwb29sLCBjb25zdCBQal9TdHJpbmcgKnMpCisgICAgeworCXBqX3N0cmR1cChwb29sLCB0aGlzLCBzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEluaXRpYWxpemUgYnkgY29weWluZyBmcm9tIG90aGVyIFBqX1N0cmluZy4KKyAgICAvLworICAgIHZvaWQgc2V0KFBqX1Bvb2wgJnBvb2wsIGNvbnN0IFBqX1N0cmluZyAmcykKKyAgICB7CisJcGpfc3RyZHVwKHBvb2wsIHRoaXMsICZzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvcHkgdGhlIGNvbnRlbnRzIG9mIG90aGVyIHN0cmluZy4KKyAgICAvLworICAgIHZvaWQgc3RyY3B5KGNvbnN0IHBqX3N0cl90ICpzKQorICAgIHsKKwlwal9zdHJjcHkodGhpcywgcyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb3B5IHRoZSBjb250ZW50cyBvZiBvdGhlciBzdHJpbmcuCisgICAgLy8KKyAgICB2b2lkIHN0cmNweShjb25zdCBQal9TdHJpbmcgJnJocykKKyAgICB7CisJcGpfc3RyY3B5KHRoaXMsICZyaHMpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29weSB0aGUgY29udGVudHMgb2Ygb3RoZXIgc3RyaW5nLgorICAgIC8vCisgICAgdm9pZCBzdHJjcHkoY29uc3QgY2hhciAqcykKKyAgICB7CisJcGpfc3RyY3B5Mih0aGlzLCBzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgc3RyaW5nLgorICAgIC8vCisgICAgaW50IHN0cmNtcChjb25zdCBjaGFyICpzKSBjb25zdAorICAgIHsKKwlyZXR1cm4gcGpfc3RyY21wMih0aGlzLCBzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgc3RyaW5nLgorICAgIC8vCisgICAgaW50IHN0cmNtcChjb25zdCBwal9zdHJfdCAqcykgY29uc3QKKyAgICB7CisJcmV0dXJuIHBqX3N0cmNtcCh0aGlzLCBzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgc3RyaW5nLgorICAgIC8vCisgICAgaW50IHN0cmNtcChjb25zdCBQal9TdHJpbmcgJnJocykgY29uc3QKKyAgICB7CisJcmV0dXJuIHBqX3N0cmNtcCh0aGlzLCAmcmhzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgc3RyaW5nLgorICAgIC8vCisgICAgaW50IHN0cm5jbXAoY29uc3QgY2hhciAqcywgcGpfc2l6ZV90IGxlbikgY29uc3QKKyAgICB7CisJcmV0dXJuIHBqX3N0cm5jbXAyKHRoaXMsIHMsIGxlbik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb21wYXJlIHN0cmluZy4KKyAgICAvLworICAgIGludCBzdHJuY21wKGNvbnN0IHBqX3N0cl90ICpzLCBwal9zaXplX3QgbGVuKSBjb25zdAorICAgIHsKKwlyZXR1cm4gcGpfc3RybmNtcCh0aGlzLCBzLCBsZW4pOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29tcGFyZSBzdHJpbmcuCisgICAgLy8KKyAgICBpbnQgc3RybmNtcChjb25zdCBQal9TdHJpbmcgJnJocywgcGpfc2l6ZV90IGxlbikgY29uc3QKKyAgICB7CisJcmV0dXJuIHBqX3N0cm5jbXAodGhpcywgJnJocywgbGVuKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgc3RyaW5nLgorICAgIC8vCisgICAgaW50IHN0cmljbXAoY29uc3QgY2hhciAqcykgY29uc3QKKyAgICB7CisJcmV0dXJuIHBqX3N0cmljbXAyKHRoaXMsIHMpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29tcGFyZSBzdHJpbmcuCisgICAgLy8KKyAgICBpbnQgc3RyaWNtcChjb25zdCBwal9zdHJfdCAqcykgY29uc3QKKyAgICB7CisJcmV0dXJuIHBqX3N0cmljbXAodGhpcywgcyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb21wYXJlIHN0cmluZy4KKyAgICAvLworICAgIGludCBzdHJpY21wKGNvbnN0IFBqX1N0cmluZyAmcmhzKSBjb25zdAorICAgIHsKKwlyZXR1cm4gc3RyaWNtcCgmcmhzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgc3RyaW5nLgorICAgIC8vCisgICAgaW50IHN0cm5pY21wKGNvbnN0IGNoYXIgKnMsIHBqX3NpemVfdCBsZW4pIGNvbnN0CisgICAgeworCXJldHVybiBwal9zdHJuaWNtcDIodGhpcywgcywgbGVuKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgc3RyaW5nLgorICAgIC8vCisgICAgaW50IHN0cm5pY21wKGNvbnN0IHBqX3N0cl90ICpzLCBwal9zaXplX3QgbGVuKSBjb25zdAorICAgIHsKKwlyZXR1cm4gcGpfc3RybmljbXAodGhpcywgcywgbGVuKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgc3RyaW5nLgorICAgIC8vCisgICAgaW50IHN0cm5pY21wKGNvbnN0IFBqX1N0cmluZyAmcmhzLCBwal9zaXplX3QgbGVuKSBjb25zdAorICAgIHsKKwlyZXR1cm4gc3RybmljbXAoJnJocywgbGVuKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgY29udGVudHMgZm9yIGVxdWFsaXR5LgorICAgIC8vCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIgKnMpIGNvbnN0CisgICAgeworCXJldHVybiBzdHJjbXAocykgPT0gMDsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbXBhcmUgY29udGVudHMgZm9yIGVxdWFsaXR5LgorICAgIC8vCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBqX3N0cl90ICpzKSBjb25zdAorICAgIHsKKwlyZXR1cm4gc3RyY21wKHMpID09IDA7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb21wYXJlIGNvbnRlbnRzIGZvciBlcXVhbGl0eS4KKyAgICAvLworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQal9TdHJpbmcgJnJocykgY29uc3QKKyAgICB7CisJcmV0dXJuIHBqX3N0cmNtcCh0aGlzLCAmcmhzKSA9PSAwOworICAgIH0KKworICAgIC8vCisgICAgLy8gQXNzaWduIGZyb20gY2hhcioKKyAgICAvLworICAgIFBqX1N0cmluZyYgb3BlcmF0b3I9KGNoYXIgKnMpCisgICAgeworCXNldChzKTsKKwlyZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgLy8vCisgICAgLy8gQXNzaWduIGZyb20gYW5vdGhlciBQal9TdHJpbmcsIHVzZSB3aXRoIGNhcmUhCisgICAgLy8KKyAgICBQal9TdHJpbmcmIG9wZXJhdG9yPShjb25zdCBQal9TdHJpbmcgJnJocykKKyAgICB7CisJcHRyID0gcmhzLnB0cjsKKwlzbGVuID0gcmhzLnNsZW47CisJcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIC8vCisgICAgLy8gRmluZCBhIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLgorICAgIC8vCisgICAgY2hhciAqc3RyY2hyKGludCBjaHIpCisgICAgeworCXJldHVybiBwal9zdHJjaHIodGhpcywgY2hyKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEZpbmQgYSBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4KKyAgICAvLworICAgIGNoYXIgKmZpbmQoaW50IGNocikKKyAgICB7CisJcmV0dXJuIHN0cmNocihjaHIpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ29uY2F0ZW5hdGUgc3RyaW5nLgorICAgIC8vCisgICAgdm9pZCBzdHJjYXQoY29uc3QgUGpfU3RyaW5nICZyaHMpCisgICAgeworCXBqX3N0cmNhdCh0aGlzLCAmcmhzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIExlZnQgdHJpbS4KKyAgICAvLworICAgIHZvaWQgbHRyaW0oKQorICAgIHsKKwlwal9zdHJsdHJpbSh0aGlzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFJpZ2h0IHRyaW0uCisgICAgLy8KKyAgICB2b2lkIHJ0cmltKCkKKyAgICB7CisJcGpfc3RycnRyaW0odGhpcyk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBMZWZ0IGFuZCByaWdodCB0cmltLgorICAgIC8vCisgICAgdm9pZCB0cmltKCkKKyAgICB7CisJcGpfc3RydHJpbSh0aGlzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbnZlcnQgdG8gdW5zaWduZWQgbG9uZy4KKyAgICAvLworICAgIHVuc2lnbmVkIGxvbmcgdG9fdWxvbmcoKSBjb25zdAorICAgIHsKKwlyZXR1cm4gcGpfc3RydG91bCh0aGlzKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbnZlcnQgZnJvbSB1bnNpZ25lZCBsb25nLgorICAgIC8vCisgICAgdm9pZCBmcm9tX3Vsb25nKHVuc2lnbmVkIGxvbmcgdmFsdWUpCisgICAgeworICAgICAgICBzbGVuID0gcGpfdXRvYSh2YWx1ZSwgcHRyKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENvbnZlcnQgZnJvbSB1bnNpZ25lZCBsb25nIHdpdGggcGFkZGluZy4KKyAgICAvLworICAgIHZvaWQgZnJvbV91bG9uZ193aXRoX3BhZCh1bnNpZ25lZCBsb25nIHZhbHVlLCBpbnQgbWluX2RpZz0wLCBpbnQgcGFkPScgJykKKyAgICB7CisgICAgICAgIHNsZW4gPSBwal91dG9hX3BhZCh2YWx1ZSwgcHRyLCBtaW5fZGlnLCBwYWQpOworICAgIH0KKworfTsKKworI2VuZGlmCS8qIF9fUEpQUF9TVFJJTkdfSFBQX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3RpbWVyLmhwcCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy90aW1lci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZiYWU2OQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGorKy90aW1lci5ocHAKQEAgLTAsMCArMSwxOTggQEAKKy8qICRJZDogdGltZXIuaHBwIDIzOTQgMjAwOC0xMi0yMyAxNzoyNzo1M1ogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKUFBfVElNRVJfSFBQX18KKyNkZWZpbmUgX19QSlBQX1RJTUVSX0hQUF9fCisKKyNpbmNsdWRlIDxwai90aW1lci5oPgorI2luY2x1ZGUgPHBqKysvdHlwZXMuaHBwPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqKysvbG9jay5ocHA+CisKK2NsYXNzIFBqX1RpbWVyX0hlYXA7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gVGltZXIgZW50cnkuCisvLworLy8gSG93IHRvIHVzZToKKy8vICBEZXJpdmUgY2xhc3MgZnJvbSBQal9UaW1lcl9FbnRyeSBhbmQgb3ZlcnJpZGUgb25fdGltZW91dCgpLgorLy8gIFNjaGVkdWxlciB0aW1lciBpbiBQal9UaW1lcl9IZWFwLgorLy8KK2NsYXNzIFBqX1RpbWVyX0VudHJ5IDogcHVibGljIFBqX09iamVjdAoreworICAgIGZyaWVuZCBjbGFzcyBQal9UaW1lcl9IZWFwOworCitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgIC8vCisgICAgUGpfVGltZXJfRW50cnkoKSAKKyAgICB7IAorICAgICAgICBlbnRyeV8udXNlcl9kYXRhID0gdGhpczsKKyAgICAgICAgZW50cnlfLmNiID0gJnRpbWVyX2hlYXBfY2FsbGJhY2s7IAorICAgIH0KKworICAgIC8vCisgICAgLy8gRGVzdHJ1Y3RvciwgZG8gbm90aGluZy4KKyAgICAvLworICAgIH5Qal9UaW1lcl9FbnRyeSgpCisgICAgeworICAgIH0KKworICAgIC8vCisgICAgLy8gT3ZlcnJpZGUgdGhpcyB0byBnZXQgdGhlIHRpbWVvdXQgbm90aWZpY2F0aW9uLgorICAgIC8vCisgICAgdmlydHVhbCB2b2lkIG9uX3RpbWVvdXQoaW50IGlkKSA9IDA7CisKK3ByaXZhdGU6CisgICAgcGpfdGltZXJfZW50cnkgZW50cnlfOworCisgICAgc3RhdGljIHZvaWQgdGltZXJfaGVhcF9jYWxsYmFjayhwal90aW1lcl9oZWFwX3QqLCBwal90aW1lcl9lbnRyeSAqZSkKKyAgICB7CisgICAgICAgIFBqX1RpbWVyX0VudHJ5ICplbnRyeSA9IChQal9UaW1lcl9FbnRyeSopIGUtPnVzZXJfZGF0YTsKKyAgICAgICAgZW50cnktPm9uX3RpbWVvdXQoZS0+aWQpOworICAgIH0KKworfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBUaW1lciBoZWFwLgorLy8KK2NsYXNzIFBqX1RpbWVyX0hlYXAgOiBwdWJsaWMgUGpfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgIC8vCisgICAgUGpfVGltZXJfSGVhcCgpIAorICAgICAgICA6IGh0XyhOVUxMKSAKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgdGltZXIgaGVhcC4KKyAgICAvLworICAgIFBqX1RpbWVyX0hlYXAoUGpfUG9vbCAqcG9vbCwgcGpfc2l6ZV90IGluaXRpYWxfY291bnQpCisgICAgICAgIDogaHRfKE5VTEwpCisgICAgeworICAgICAgICBjcmVhdGUocG9vbCwgaW5pdGlhbF9jb3VudCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cnVjdG9yLgorICAgIC8vCisgICAgflBqX1RpbWVyX0hlYXAoKQorICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ3JlYXRlCisgICAgLy8gCisgICAgcGpfc3RhdHVzX3QgY3JlYXRlKFBqX1Bvb2wgKnBvb2wsIHBqX3NpemVfdCBpbml0aWFsX2NvdW50KQorICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworCXJldHVybiBwal90aW1lcl9oZWFwX2NyZWF0ZShwb29sLT5wb29sXygpLCBpbml0aWFsX2NvdW50LCAmaHRfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERlc3Ryb3kKKyAgICAvLworICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBpZiAoaHRfKSB7CisgICAgICAgICAgICBwal90aW1lcl9oZWFwX2Rlc3Ryb3koaHRfKTsKKyAgICAgICAgICAgIGh0XyA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCBwamxpYiBjb21wYXRpYmxlIHRpbWVyIGhlYXAgb2JqZWN0LgorICAgIC8vCisgICAgcGpfdGltZXJfaGVhcF90ICpnZXRfdGltZXJfaGVhcCgpCisgICAgeworCXJldHVybiBodF87CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTZXQgdGhlIGxvY2sgb2JqZWN0LgorICAgIC8vCisgICAgdm9pZCBzZXRfbG9jayggUGpfTG9jayAqbG9jaywgYm9vbCBhdXRvX2RlbGV0ZSApCisgICAgeworICAgICAgICBwal90aW1lcl9oZWFwX3NldF9sb2NrKCBodF8sIGxvY2stPnBqX2xvY2tfdF8oKSwgYXV0b19kZWxldGUpOworICAgIH0KKworICAgIC8vCisgICAgLy8gU2V0IG1heGltdW0gbnVtYmVyIG9mIHRpbWVkIG91dCBlbnRyaWVzIHRvIGJlIHByb2Nlc3NlZCBwZXIgcG9sbC4KKyAgICAvLworICAgIHVuc2lnbmVkIHNldF9tYXhfdGltZWRfb3V0X3Blcl9wb2xsKHVuc2lnbmVkIGNvdW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBqX3RpbWVyX2hlYXBfc2V0X21heF90aW1lZF9vdXRfcGVyX3BvbGwoaHRfLCBjb3VudCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTY2hlZHVsZSBhIHRpbWVyLgorICAgIC8vCisgICAgYm9vbCBzY2hlZHVsZSggUGpfVGltZXJfRW50cnkgKmVudCwgY29uc3QgUGpfVGltZV9WYWwgJmRlbGF5LAorICAgICAgICAgICAgICAgICAgIGludCBpZCkKKyAgICB7CisgICAgICAgIGVudC0+ZW50cnlfLmlkID0gaWQ7CisJcmV0dXJuIHBqX3RpbWVyX2hlYXBfc2NoZWR1bGUoaHRfLCAmZW50LT5lbnRyeV8sICZkZWxheSkgPT0gMDsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENhbmNlbCBhIHRpbWVyLgorICAgIC8vCisgICAgYm9vbCBjYW5jZWwoUGpfVGltZXJfRW50cnkgKmVudCkKKyAgICB7CisJcmV0dXJuIHBqX3RpbWVyX2hlYXBfY2FuY2VsKGh0XywgJmVudC0+ZW50cnlfKSA9PSAxOworICAgIH0KKworICAgIC8vCisgICAgLy8gR2V0IGN1cnJlbnQgbnVtYmVyIG9mIHRpbWVycworICAgIC8vCisgICAgcGpfc2l6ZV90IGNvdW50KCkKKyAgICB7CisJcmV0dXJuIHBqX3RpbWVyX2hlYXBfY291bnQoaHRfKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEdldCB0aGUgZWFybGllc3QgdGltZS4KKyAgICAvLyBSZXR1cm4gZmFsc2UgaWYgbm8gdGltZXIgaXMgZm91bmQuCisgICAgLy8KKyAgICBib29sIGVhcmxpZXN0X3RpbWUoUGpfVGltZV9WYWwgKnQpCisgICAgeworCXJldHVybiBwal90aW1lcl9oZWFwX2VhcmxpZXN0X3RpbWUoaHRfLCB0KSA9PSBQSl9TVUNDRVNTOworICAgIH0KKworICAgIC8vCisgICAgLy8gUG9sbCB0aGUgdGltZXIuCisgICAgLy8gUmV0dXJuIG51bWJlciBvZiB0aW1lZCBvdXQgZW50cmllcyBoYXMgYmVlbiBjYWxsZWQuCisgICAgLy8KKyAgICB1bnNpZ25lZCBwb2xsKFBqX1RpbWVfVmFsICpuZXh0X2RlbGF5ID0gTlVMTCkKKyAgICB7CisJcmV0dXJuIHBqX3RpbWVyX2hlYXBfcG9sbChodF8sIG5leHRfZGVsYXkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBwal90aW1lcl9oZWFwX3QgKmh0XzsKK307CisKKyNlbmRpZgkvKiBfX1BKUFBfVElNRVJfSFBQX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3RyZWUuaHBwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3RyZWUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjOTYzYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvdHJlZS5ocHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qICRJZDogdHJlZS5ocHAgMjM5NCAyMDA4LTEyLTIzIDE3OjI3OjUzWiBiZW5ueWxwICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpQUF9UUkVFX0hQUF9fCisjZGVmaW5lIF9fUEpQUF9UUkVFX0hQUF9fCisKKyNpbmNsdWRlIDxwai9yYnRyZWUuaD4KKworLy8KKy8vIFRyZWUuCisvLworY2xhc3MgUEpfVHJlZQoreworcHVibGljOgorICAgIHR5cGVkZWYgcGpfcmJ0cmVlX2NvbXAgQ29tcDsKKyAgICBjbGFzcyBpdGVyYXRvcjsKKyAgICBjbGFzcyByZXZlcnNlX2l0ZXJhdG9yOworCisgICAgY2xhc3MgTm9kZSA6IHByaXZhdGUgcGpfcmJ0cmVlX25vZGUKKyAgICB7CisJZnJpZW5kIGNsYXNzIFBKX1RyZWU7CisJZnJpZW5kIGNsYXNzIGl0ZXJhdG9yOworCWZyaWVuZCBjbGFzcyByZXZlcnNlX2l0ZXJhdG9yOworCisgICAgcHVibGljOgorCU5vZGUoKSB7fQorCWV4cGxpY2l0IE5vZGUodm9pZCAqZGF0YSkgeyB1c2VyX2RhdGEgPSBkYXRhOyB9CisJdm9pZCAgc2V0X3VzZXJfZGF0YSh2b2lkICpkYXRhKSB7IHVzZXJfZGF0YSA9IGRhdGE7IH0KKwl2b2lkICpnZXRfdXNlcl9kYXRhKCkgY29uc3QgeyByZXR1cm4gdXNlcl9kYXRhOyB9CisgICAgfTsKKworICAgIGNsYXNzIGl0ZXJhdG9yCisgICAgeworICAgIHB1YmxpYzoKKwlpdGVyYXRvcigpIHt9CisJaXRlcmF0b3IoY29uc3QgaXRlcmF0b3IgJnJocykgOiB0cl8ocmhzLnRyXyksIG5kXyhyaHMubmRfKSB7fQorCWl0ZXJhdG9yKHBqX3JidHJlZSAqdHIsIHBqX3JidHJlZV9ub2RlICpuZCkgOiB0cl8odHIpLCBuZF8obmQpIHt9CisJTm9kZSAqb3BlcmF0b3IqKCkgeyByZXR1cm4gKE5vZGUqKW5kXzsgfQorCWJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciAmcmhzKSBjb25zdCB7IHJldHVybiB0cl89PXJocy50cl8gJiYgbmRfPT1yaHMubmRfOyB9CisJaXRlcmF0b3IgJm9wZXJhdG9yPShjb25zdCBpdGVyYXRvciAmcmhzKSB7IHRyXz1yaHMudHJfOyBuZF89cmhzLm5kXzsgcmV0dXJuICp0aGlzOyB9CisJdm9pZCBvcGVyYXRvcisrKCkgeyBuZF89cGpfcmJ0cmVlX25leHQodHJfLCBuZF8pOyB9CisJdm9pZCBvcGVyYXRvci0tKCkgeyBuZF89cGpfcmJ0cmVlX3ByZXYodHJfLCBuZF8pOyB9CisgICAgcHJvdGVjdGVkOgorCXBqX3JidHJlZSAqdHJfOworCXBqX3JidHJlZV9ub2RlICpuZF87CisgICAgfTsKKworICAgIGNsYXNzIHJldmVyc2VfaXRlcmF0b3IgOiBwdWJsaWMgaXRlcmF0b3IKKyAgICB7CisgICAgcHVibGljOgorCXJldmVyc2VfaXRlcmF0b3IoKSB7fQorCXJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2ZXJzZV9pdGVyYXRvciAmaXQpIDogaXRlcmF0b3IoaXQpIHt9CisJcmV2ZXJzZV9pdGVyYXRvcihwal9yYnRyZWUgKnQsIHBqX3JidHJlZV9ub2RlICpuKSA6IGl0ZXJhdG9yKHQsIG4pIHt9CisJcmV2ZXJzZV9pdGVyYXRvciAmb3BlcmF0b3I9KGNvbnN0IHJldmVyc2VfaXRlcmF0b3IgJnJocykgeyBpdGVyYXRvcjo6b3BlcmF0b3I9KHJocyk7IHJldHVybiAqdGhpczsgfQorCU5vZGUgKm9wZXJhdG9yKigpIHsgcmV0dXJuIChOb2RlKiluZF87IH0KKwlib29sIG9wZXJhdG9yPT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvciAmcmhzKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcjo6b3BlcmF0b3I9PShyaHMpOyB9CisJdm9pZCBvcGVyYXRvcisrKCkgeyBuZF89cGpfcmJ0cmVlX3ByZXYodHJfLCBuZF8pOyB9CisJdm9pZCBvcGVyYXRvci0tKCkgeyBuZF89cGpfcmJ0cmVlX25leHQodHJfLCBuZF8pOyB9CisgICAgfTsKKworICAgIGV4cGxpY2l0IFBKX1RyZWUoQ29tcCAqY29tcCkgeyBwal9yYnRyZWVfaW5pdCgmdF8sIGNvbXApOyB9CisKKyAgICBpdGVyYXRvciBiZWdpbigpCisgICAgeworCXJldHVybiBpdGVyYXRvcigmdF8sIHBqX3JidHJlZV9maXJzdCgmdF8pKTsKKyAgICB9CisKKyAgICBpdGVyYXRvciBlbmQoKQorICAgIHsKKwlyZXR1cm4gaXRlcmF0b3IoJnRfLCBOVUxMKTsKKyAgICB9CisKKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpCisgICAgeworCXJldHVybiByZXZlcnNlX2l0ZXJhdG9yKCZ0XywgcGpfcmJ0cmVlX2xhc3QoJnRfKSk7CisgICAgfQorCisgICAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkKKyAgICB7CisJcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoJnRfLCBOVUxMKTsKKyAgICB9CisKKyAgICBib29sIGluc2VydChOb2RlICpub2RlKQorICAgIHsKKwlyZXR1cm4gcGpfcmJ0cmVlX2luc2VydCgmdF8sIG5vZGUpPT0wID8gdHJ1ZSA6IGZhbHNlOworICAgIH0KKworICAgIE5vZGUgKmZpbmQoY29uc3Qgdm9pZCAqa2V5KQorICAgIHsKKwlyZXR1cm4gKE5vZGUqKXBqX3JidHJlZV9maW5kKCZ0Xywga2V5KTsKKyAgICB9CisKKyAgICBOb2RlICplcmFzZShOb2RlICpub2RlKQorICAgIHsKKwlyZXR1cm4gKE5vZGUqKXBqX3JidHJlZV9lcmFzZSgmdF8sIG5vZGUpOworICAgIH0KKworICAgIHVuc2lnbmVkIG1heF9oZWlnaHQoTm9kZSAqbm9kZT1OVUxMKQorICAgIHsKKwlyZXR1cm4gcGpfcmJ0cmVlX21heF9oZWlnaHQoJnRfLCBub2RlKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtaW5faGVpZ2h0KE5vZGUgKm5vZGU9TlVMTCkKKyAgICB7CisJcmV0dXJuIHBqX3JidHJlZV9taW5faGVpZ2h0KCZ0Xywgbm9kZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHBqX3JidHJlZSB0XzsKK307CisKKyNlbmRpZgkvKiBfX1BKUFBfVFJFRV9IUFBfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqKysvdHlwZXMuaHBwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3R5cGVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTQwYTM0Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9waisrL3R5cGVzLmhwcApAQCAtMCwwICsxLDE3NSBAQAorLyogJElkOiB0eXBlcy5ocHAgMjM5NCAyMDA4LTEyLTIzIDE3OjI3OjUzWiBiZW5ueWxwICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpQUF9UWVBFU19IUFBfXworI2RlZmluZSBfX1BKUFBfVFlQRVNfSFBQX18KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisKK2NsYXNzIFBqX1Bvb2w7CitjbGFzcyBQal9Tb2NrZXQgOworY2xhc3MgUGpfTG9jazsKKworCisvLworLy8gUEpMSUIgaW5pdGlhbGl6ZXIuCisvLworY2xhc3MgUGpsaWIKK3sKK3B1YmxpYzoKKyAgICBQamxpYigpCisgICAgeworICAgICAgICBwal9pbml0KCk7CisgICAgfQorfTsKKworLy8KKy8vIENsYXNzIFBqX09iamVjdCBpcyBkZWNsYXJlZCBpbiBwb29sLmhwcAorLy8KKworLy8KKy8vIFRpbWUgdmFsdWUgd3JhcHBlci4KKy8vCitjbGFzcyBQal9UaW1lX1ZhbCA6IHB1YmxpYyBwal90aW1lX3ZhbAoreworcHVibGljOgorICAgIFBqX1RpbWVfVmFsKCkKKyAgICB7CisgICAgfQorCisgICAgUGpfVGltZV9WYWwobG9uZyBpbml0X3NlYywgbG9uZyBpbml0X21zZWMpCisgICAgeworICAgICAgICBzZWMgPSBpbml0X3NlYzsKKyAgICAgICAgbXNlYyA9IGluaXRfbXNlYzsKKyAgICB9CisKKyAgICBQal9UaW1lX1ZhbChjb25zdCBQal9UaW1lX1ZhbCAmcmhzKSAKKyAgICB7IAorICAgICAgICBzZWM9cmhzLnNlYzsgCisgICAgICAgIG1zZWM9cmhzLm1zZWM7IAorICAgIH0KKworICAgIGV4cGxpY2l0IFBqX1RpbWVfVmFsKGNvbnN0IHBqX3RpbWVfdmFsICZ0dikgCisgICAgeyAKKyAgICAgICAgc2VjID0gdHYuc2VjOyAKKyAgICAgICAgbXNlYyA9IHR2Lm1zZWM7IAorICAgIH0KKworICAgIGxvbmcgZ2V0X3NlYygpICBjb25zdCAgICAKKyAgICB7IAorICAgICAgICByZXR1cm4gc2VjOyAKKyAgICB9CisKKyAgICBsb25nIGdldF9tc2VjKCkgY29uc3QgICAgCisgICAgeyAKKyAgICAgICAgcmV0dXJuIG1zZWM7IAorICAgIH0KKworICAgIHZvaWQgc2V0X3NlYyAobG9uZyBzKSAgICAKKyAgICB7IAorICAgICAgICBzZWMgPSBzOyAKKyAgICB9CisKKyAgICB2b2lkIHNldF9tc2VjKGxvbmcgbXMpICAgCisgICAgeyAKKyAgICAgICAgbXNlYyA9IG1zOyAKKyAgICAgICAgbm9ybWFsaXplKCk7IAorICAgIH0KKworICAgIGxvbmcgdG9fbXNlYygpIGNvbnN0IAorICAgIHsgCisgICAgICAgIHJldHVybiBQSl9USU1FX1ZBTF9NU0VDKCgqdGhpcykpOyAKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yID09IChjb25zdCBQal9UaW1lX1ZhbCAmcmhzKSBjb25zdCAKKyAgICB7IAorICAgICAgICByZXR1cm4gUEpfVElNRV9WQUxfRVEoKCp0aGlzKSwgcmhzKTsgIAorICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IgPiAgKGNvbnN0IFBqX1RpbWVfVmFsICZyaHMpIGNvbnN0IAorICAgIHsgCisgICAgICAgIHJldHVybiBQSl9USU1FX1ZBTF9HVCgoKnRoaXMpLCByaHMpOyAgCisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciA+PSAoY29uc3QgUGpfVGltZV9WYWwgJnJocykgY29uc3QgCisgICAgeyAKKyAgICAgICAgcmV0dXJuIFBKX1RJTUVfVkFMX0dURSgoKnRoaXMpLCByaHMpOyAKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIDwgIChjb25zdCBQal9UaW1lX1ZhbCAmcmhzKSBjb25zdCAKKyAgICB7IAorICAgICAgICByZXR1cm4gUEpfVElNRV9WQUxfTFQoKCp0aGlzKSwgcmhzKTsgIAorICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IgPD0gKGNvbnN0IFBqX1RpbWVfVmFsICZyaHMpIGNvbnN0IAorICAgIHsgCisgICAgICAgIHJldHVybiBQSl9USU1FX1ZBTF9MVEUoKCp0aGlzKSwgcmhzKTsgCisgICAgfQorCisgICAgUGpfVGltZV9WYWwgJiBvcGVyYXRvciA9IChjb25zdCBQal9UaW1lX1ZhbCAmcmhzKSAKKyAgICB7CisJc2VjID0gcmhzLnNlYzsKKwltc2VjID0gcmhzLm1zZWM7CisJcmV0dXJuICp0aGlzOworICAgIH0KKyAKKyAgICBQal9UaW1lX1ZhbCAmIG9wZXJhdG9yICs9IChjb25zdCBQal9UaW1lX1ZhbCAmcmhzKSAKKyAgICB7CisJUEpfVElNRV9WQUxfQUREKCgqdGhpcyksIHJocyk7CisJcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFBqX1RpbWVfVmFsICYgb3BlcmF0b3IgLT0gKGNvbnN0IFBqX1RpbWVfVmFsICZyaHMpIAorICAgIHsKKwlQSl9USU1FX1ZBTF9TVUIoKCp0aGlzKSwgcmhzKTsKKwlyZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgLyogTXVzdCBpbmNsdWRlIG9zLmhwcCB0byB1c2UgdGhlc2UsIG90aGVyd2lzZSB1bnJlc29sdmVkIGluIGxpbmtpbmcgKi8KKyAgICBpbmxpbmUgcGpfc3RhdHVzX3QJICAgZ2V0dGltZW9mZGF5KCk7CisgICAgaW5saW5lIHBqX3BhcnNlZF90aW1lICBkZWNvZGUoKTsKKyAgICBpbmxpbmUgcGpfc3RhdHVzX3QgICAgIGVuY29kZShjb25zdCBwal9wYXJzZWRfdGltZSAqcHQpOworICAgIGlubGluZSBwal9zdGF0dXNfdCAgICAgdG9fZ210KCk7CisgICAgaW5saW5lIHBqX3N0YXR1c190ICAgICB0b19sb2NhbCgpOworCisKK3ByaXZhdGU6CisgICAgdm9pZCBub3JtYWxpemUoKSAKKyAgICB7IAorICAgICAgICBwal90aW1lX3ZhbF9ub3JtYWxpemUodGhpcyk7IAorICAgIH0KKworfTsKKworLy8KKy8vIE1hY3JvIHRvIGRlY2xhcmUgY29tbW9uIG9iamVjdCBjb21wYXJpc29uIG9wZXJhdG9ycy4KKy8vCisjZGVmaW5lIFBKX0RFQ0xBUkVfT1BFUkFUT1JTKHJoc190eXBlKQkJCSAgICBcCisJICAgIGJvb2wgb3BlcmF0b3IhPShyaHNfdHlwZSByaHMpIGNvbnN0IHsJICAgIFwKKwkJcmV0dXJuICFvcGVyYXRvcj09KHJocyk7IH0JCSAgICBcCisJICAgIGJvb2wgb3BlcmF0b3I8PShyaHNfdHlwZSByaHMpIGNvbnN0IHsJICAgIFwKKwkJcmV0dXJuIG9wZXJhdG9yPChyaHMpIHx8IG9wZXJhdG9yPT0ocmhzKTsgfSBcCisJICAgIGJvb2wgb3BlcmF0b3I+KHJoc190eXBlIHJocykgY29uc3QgewkgICAgXAorCQlyZXR1cm4gIW9wZXJhdG9yPD0ocmhzKTsgfQkJICAgIFwKKwkgICAgYm9vbCBvcGVyYXRvcj49KHJoc190eXBlIHJocykgY29uc3QgewkgICAgXAorCQlyZXR1cm4gIW9wZXJhdG9yPChyaHMpOyB9CisKKworI2VuZGlmCS8qIF9fUEpQUF9UWVBFU19IUFBfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovYWN0aXZlc29jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwODA5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2FjdGl2ZXNvY2suaApAQCAtMCwwICsxLDU5MCBAQAorLyogJElkOiBhY3RpdmVzb2NrLmggNDQ2MSAyMDEzLTA0LTA1IDAzOjAyOjE5WiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQVNZTkNTT0NLX0hfXworI2RlZmluZSBfX1BKX0FTWU5DU09DS19IX18KKworLyoqCisgKiBAZmlsZSBhY3RpdmVzb2NrLmgKKyAqIEBicmllZiBBY3RpdmUgc29ja2V0CisgKi8KKworI2luY2x1ZGUgPHBqL2lvcXVldWUuaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisKKworUEpfQkVHSU5fREVDTAorCisvKioKKyAqIEBkZWZncm91cCBQSl9BQ1RJVkVTT0NLIEFjdGl2ZSBzb2NrZXQgSS9PCisgKiBAYnJpZWYgQWN0aXZlIHNvY2tldCBwZXJmb3JtcyBhY3RpdmUgb3BlcmF0aW9ucyBvbiBzb2NrZXQuCisgKiBAaW5ncm91cCBQSl9JTworICogQHsKKyAqCisgKiBBY3RpdmUgc29ja2V0IGlzIGEgaGlnaGVyIGxldmVsIGFic3RyYWN0aW9uIHRvIHRoZSBpb3F1ZXVlLiBJdCBwcm92aWRlcworICogYXV0b21hdGlvbiB0byBzb2NrZXQgb3BlcmF0aW9ucyB3aGljaCBvdGhlcndpc2Ugd291bGQgaGF2ZSB0byBiZSBkb25lCisgKiBtYW51YWxseSBieSB0aGUgYXBwbGljYXRpb25zLiBGb3IgZXhhbXBsZSB3aXRoIHNvY2tldCByZWN2KCksIHJlY3Zmcm9tKCksCisgKiBhbmQgYWNjZXB0KCkgb3BlcmF0aW9ucywgYXBwbGljYXRpb24gb25seSBuZWVkcyB0byBpbnZva2UgdGhlc2UKKyAqIG9wZXJhdGlvbiBvbmNlLCBhbmQgaXQgd2lsbCBiZSBub3RpZmllZCB3aGVuZXZlciBkYXRhIG9yIGluY29taW5nIFRDUAorICogY29ubmVjdGlvbiAoaW4gdGhlIGNhc2Ugb2YgYWNjZXB0KCkpIGFycml2ZXMuCisgKi8KKworLyoqCisgKiBUaGlzIG9wYXF1ZSBzdHJ1Y3R1cmUgZGVzY3JpYmVzIHRoZSBhY3RpdmUgc29ja2V0LgorICovCit0eXBlZGVmIHN0cnVjdCBwal9hY3RpdmVzb2NrX3QgcGpfYWN0aXZlc29ja190OworCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBjYWxsYmFja3MgdG8gYmUgY2FsbGVkIGJ5IHRoZSBhY3RpdmUgc29ja2V0LgorICovCit0eXBlZGVmIHN0cnVjdCBwal9hY3RpdmVzb2NrX2NiCit7CisgICAgLyoqCisgICAgICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiBhIGRhdGEgYXJyaXZlcyBhcyB0aGUgcmVzdWx0IG9mCisgICAgICogcGpfYWN0aXZlc29ja19zdGFydF9yZWFkKCkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYXNvY2sJVGhlIGFjdGl2ZSBzb2NrZXQuCisgICAgICogQHBhcmFtIGRhdGEJVGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBuZXcgZGF0YSwgaWYgYW55LiBJZiAKKyAgICAgKgkJCXRoZSBzdGF0dXMgYXJndW1lbnQgaXMgbm9uLVBKX1NVQ0NFU1MsIHRoaXMgCisgICAgICoJCQlhcmd1bWVudCBtYXkgYmUgTlVMTC4KKyAgICAgKiBAcGFyYW0gc2l6ZQlUaGUgbGVuZ3RoIG9mIGRhdGEgaW4gdGhlIGJ1ZmZlci4KKyAgICAgKiBAcGFyYW0gc3RhdHVzCVRoZSBzdGF0dXMgb2YgdGhlIHJlYWQgb3BlcmF0aW9uLiBUaGlzIG1heSBjb250YWluCisgICAgICoJCQlub24tUEpfU1VDQ0VTUyBmb3IgZXhhbXBsZSB3aGVuIHRoZSBUQ1AgY29ubmVjdGlvbgorICAgICAqCQkJaGFzIGJlZW4gY2xvc2VkLiBJbiB0aGlzIGNhc2UsIHRoZSBidWZmZXIgbWF5CisgICAgICoJCQljb250YWluIGxlZnQgb3ZlciBkYXRhIGZyb20gcHJldmlvdXMgY2FsbGJhY2sgd2hpY2gKKyAgICAgKgkJCXRoZSBhcHBsaWNhdGlvbiBtYXkgd2FudCB0byBwcm9jZXNzLgorICAgICAqIEBwYXJhbSByZW1haW5kZXIJSWYgYXBwbGljYXRpb24gd2lzaGVzIHRvIGxlYXZlIHNvbWUgZGF0YSBpbiB0aGUgCisgICAgICoJCQlidWZmZXIgKGNvbW1vbiBmb3IgVENQIGFwcGxpY2F0aW9ucyksIGl0IHNob3VsZCAKKyAgICAgKgkJCW1vdmUgdGhlIHJlbWFpbmRlciBkYXRhIHRvIHRoZSBmcm9udCBwYXJ0IG9mIHRoZSAKKyAgICAgKgkJCWJ1ZmZlciBhbmQgc2V0IHRoZSByZW1haW5kZXIgbGVuZ3RoIGhlcmUuIFRoZSB2YWx1ZQorICAgICAqCQkJb2YgdGhpcyBwYXJhbWV0ZXIgd2lsbCBiZSBpZ25vcmVkIGZvciBkYXRhZ3JhbQorICAgICAqCQkJc29ja2V0cy4KKyAgICAgKgorICAgICAqIEByZXR1cm4JCVBKX1RSVUUgaWYgZnVydGhlciByZWFkIGlzIGRlc2lyZWQsIGFuZCBQSl9GQUxTRSAKKyAgICAgKgkJCXdoZW4gYXBwbGljYXRpb24gbm8gbG9uZ2VyIHdhbnRzIHRvIHJlY2VpdmUgZGF0YS4KKyAgICAgKgkJCUFwcGxpY2F0aW9uIG1heSBkZXN0cm95IHRoZSBhY3RpdmUgc29ja2V0IGluIHRoZQorICAgICAqCQkJY2FsbGJhY2sgYW5kIHJldHVybiBQSl9GQUxTRSBoZXJlLgorICAgICAqLworICAgIHBqX2Jvb2xfdCAoKm9uX2RhdGFfcmVhZCkocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCSAgICAgIHZvaWQgKmRhdGEsCisJCQkgICAgICBwal9zaXplX3Qgc2l6ZSwKKwkJCSAgICAgIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCSAgICAgIHBqX3NpemVfdCAqcmVtYWluZGVyKTsKKyAgICAvKioKKyAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIGEgcGFja2V0IGFycml2ZXMgYXMgdGhlIHJlc3VsdCBvZgorICAgICAqIHBqX2FjdGl2ZXNvY2tfc3RhcnRfcmVjdmZyb20oKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhc29jawlUaGUgYWN0aXZlIHNvY2tldC4KKyAgICAgKiBAcGFyYW0gZGF0YQlUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHBhY2tldCwgaWYgYW55LiBJZiAKKyAgICAgKgkJCXRoZSBzdGF0dXMgYXJndW1lbnQgaXMgbm9uLVBKX1NVQ0NFU1MsIHRoaXMgCisgICAgICoJCQlhcmd1bWVudCB3aWxsIGJlIHNldCB0byBOVUxMLgorICAgICAqIEBwYXJhbSBzaXplCVRoZSBsZW5ndGggb2YgcGFja2V0IGluIHRoZSBidWZmZXIuIElmIAorICAgICAqCQkJdGhlIHN0YXR1cyBhcmd1bWVudCBpcyBub24tUEpfU1VDQ0VTUywgdGhpcyAKKyAgICAgKgkJCWFyZ3VtZW50IHdpbGwgYmUgc2V0IHRvIHplcm8uCisgICAgICogQHBhcmFtIHNyY19hZGRyCVNvdXJjZSBhZGRyZXNzIG9mIHRoZSBwYWNrZXQuCisgICAgICogQHBhcmFtIGFkZHJfbGVuCUxlbmd0aCBvZiB0aGUgc291cmNlIGFkZHJlc3MuCisgICAgICogQHBhcmFtIHN0YXR1cwlUaGlzIGNvbnRhaW5zCisgICAgICoKKyAgICAgKiBAcmV0dXJuCQlQSl9UUlVFIGlmIGZ1cnRoZXIgcmVhZCBpcyBkZXNpcmVkLCBhbmQgUEpfRkFMU0UgCisgICAgICoJCQl3aGVuIGFwcGxpY2F0aW9uIG5vIGxvbmdlciB3YW50cyB0byByZWNlaXZlIGRhdGEuCisgICAgICoJCQlBcHBsaWNhdGlvbiBtYXkgZGVzdHJveSB0aGUgYWN0aXZlIHNvY2tldCBpbiB0aGUKKyAgICAgKgkJCWNhbGxiYWNrIGFuZCByZXR1cm4gUEpfRkFMU0UgaGVyZS4KKyAgICAgKi8KKyAgICBwal9ib29sX3QgKCpvbl9kYXRhX3JlY3Zmcm9tKShwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCSAgdm9pZCAqZGF0YSwKKwkJCQkgIHBqX3NpemVfdCBzaXplLAorCQkJCSAgY29uc3QgcGpfc29ja2FkZHJfdCAqc3JjX2FkZHIsCisJCQkJICBpbnQgYWRkcl9sZW4sCisJCQkJICBwal9zdGF0dXNfdCBzdGF0dXMpOworCisgICAgLyoqCisgICAgICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiBkYXRhIGhhcyBiZWVuIHNlbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYXNvY2sJVGhlIGFjdGl2ZSBzb2NrZXQuCisgICAgICogQHBhcmFtIHNlbmRfa2V5CUtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlbmQgb3BlcmF0aW9uLgorICAgICAqIEBwYXJhbSBzZW50CUlmIHZhbHVlIGlzIHBvc2l0aXZlIG5vbi16ZXJvIGl0IGluZGljYXRlcyB0aGUKKyAgICAgKgkJCW51bWJlciBvZiBkYXRhIHNlbnQuIFdoZW4gdGhlIHZhbHVlIGlzIG5lZ2F0aXZlLAorICAgICAqCQkJaXQgY29udGFpbnMgdGhlIGVycm9yIGNvZGUgd2hpY2ggY2FuIGJlIHJldHJpZXZlZAorICAgICAqCQkJYnkgbmVnYXRpbmcgdGhlIHZhbHVlIChpLmUuIHN0YXR1cz0tc2VudCkuCisgICAgICoKKyAgICAgKiBAcmV0dXJuCQlBcHBsaWNhdGlvbiBtYXkgZGVzdHJveSB0aGUgYWN0aXZlIHNvY2tldCBpbiB0aGUKKyAgICAgKgkJCWNhbGxiYWNrIGFuZCByZXR1cm4gUEpfRkFMU0UgaGVyZS4KKyAgICAgKi8KKyAgICBwal9ib29sX3QgKCpvbl9kYXRhX3NlbnQpKHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2ssCisJCQkgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpzZW5kX2tleSwKKwkJCSAgICAgIHBqX3NzaXplX3Qgc2VudCk7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIG5ldyBjb25uZWN0aW9uIGFycml2ZXMgYXMgdGhlIHJlc3VsdAorICAgICAqIG9mIHBqX2FjdGl2ZXNvY2tfc3RhcnRfYWNjZXB0KCkuIElmIHRoZSBzdGF0dXMgb2YgYWNjZXB0IG9wZXJhdGlvbiBpcworICAgICAqIG5lZWRlZCB1c2Ugb25fYWNjZXB0X2NvbXBsZXRlMiBpbnN0ZWFkIG9mIHRoaXMgY2FsbGJhY2suCisgICAgICoKKyAgICAgKiBAcGFyYW0gYXNvY2sJVGhlIGFjdGl2ZSBzb2NrZXQuCisgICAgICogQHBhcmFtIG5ld3NvY2sJVGhlIG5ldyBpbmNvbWluZyBzb2NrZXQuCisgICAgICogQHBhcmFtIHNyY19hZGRyCVRoZSBzb3VyY2UgYWRkcmVzcyBvZiB0aGUgY29ubmVjdGlvbi4KKyAgICAgKiBAcGFyYW0gYWRkcl9sZW4JTGVuZ3RoIG9mIHRoZSBzb3VyY2UgYWRkcmVzcy4KKyAgICAgKgorICAgICAqIEByZXR1cm4JCVBKX1RSVUUgaWYgZnVydGhlciBhY2NlcHQoKSBpcyBkZXNpcmVkLCBhbmQgUEpfRkFMU0UKKyAgICAgKgkJCXdoZW4gYXBwbGljYXRpb24gbm8gbG9uZ2VyIHdhbnRzIHRvIGFjY2VwdCBpbmNvbWluZworICAgICAqCQkJY29ubmVjdGlvbi4gQXBwbGljYXRpb24gbWF5IGRlc3Ryb3kgdGhlIGFjdGl2ZSBzb2NrZXQKKyAgICAgKgkJCWluIHRoZSBjYWxsYmFjayBhbmQgcmV0dXJuIFBKX0ZBTFNFIGhlcmUuCisgICAgICovCisgICAgcGpfYm9vbF90ICgqb25fYWNjZXB0X2NvbXBsZXRlKShwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCSAgICBwal9zb2NrX3QgbmV3c29jaywKKwkJCQkgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqc3JjX2FkZHIsCisJCQkJICAgIGludCBzcmNfYWRkcl9sZW4pOworCisgICAgLyoqCisgICAgICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiBuZXcgY29ubmVjdGlvbiBhcnJpdmVzIGFzIHRoZSByZXN1bHQKKyAgICAgKiBvZiBwal9hY3RpdmVzb2NrX3N0YXJ0X2FjY2VwdCgpLgorICAgICAqCisgICAgICogQHBhcmFtIGFzb2NrCVRoZSBhY3RpdmUgc29ja2V0LgorICAgICAqIEBwYXJhbSBuZXdzb2NrCVRoZSBuZXcgaW5jb21pbmcgc29ja2V0LgorICAgICAqIEBwYXJhbSBzcmNfYWRkcglUaGUgc291cmNlIGFkZHJlc3Mgb2YgdGhlIGNvbm5lY3Rpb24uCisgICAgICogQHBhcmFtIGFkZHJfbGVuCUxlbmd0aCBvZiB0aGUgc291cmNlIGFkZHJlc3MuCisgICAgICogQHBhcmFtIHN0YXR1cwlUaGUgc3RhdHVzIG9mIHRoZSBhY2NlcHQgb3BlcmF0aW9uLiBUaGlzIG1heSBjb250YWluCisgICAgICoJCQlub24tUEpfU1VDQ0VTUyBmb3IgZXhhbXBsZSB3aGVuIHRoZSBUQ1AgbGlzdGVuZXIgaXMgaW4KKyAgICAgKgkJCWJhZCBzdGF0ZSBmb3IgZXhhbXBsZSBvbiBpT1MgcGxhdGZvcm0gYWZ0ZXIgdGhlCisgICAgICoJCQlhcHBsaWNhdGlvbiB3YWtpbmcgdXAgZnJvbSBiYWNrZ3JvdW5kLgorICAgICAqCisgICAgICogQHJldHVybgkJUEpfVFJVRSBpZiBmdXJ0aGVyIGFjY2VwdCgpIGlzIGRlc2lyZWQsIGFuZCBQSl9GQUxTRQorICAgICAqCQkJd2hlbiBhcHBsaWNhdGlvbiBubyBsb25nZXIgd2FudHMgdG8gYWNjZXB0IGluY29taW5nCisgICAgICoJCQljb25uZWN0aW9uLiBBcHBsaWNhdGlvbiBtYXkgZGVzdHJveSB0aGUgYWN0aXZlIHNvY2tldAorICAgICAqCQkJaW4gdGhlIGNhbGxiYWNrIGFuZCByZXR1cm4gUEpfRkFMU0UgaGVyZS4KKyAgICAgKi8KKyAgICBwal9ib29sX3QgKCpvbl9hY2NlcHRfY29tcGxldGUyKShwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCSAgICAgcGpfc29ja190IG5ld3NvY2ssCisJCQkJICAgICBjb25zdCBwal9zb2NrYWRkcl90ICpzcmNfYWRkciwKKwkJCQkgICAgIGludCBzcmNfYWRkcl9sZW4sIAorCQkJCSAgICAgcGpfc3RhdHVzX3Qgc3RhdHVzKTsKKworICAgIC8qKgorICAgICAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gcGVuZGluZyBjb25uZWN0IG9wZXJhdGlvbiBoYXMgYmVlbgorICAgICAqIGNvbXBsZXRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhc29jawlUaGUgYWN0aXZlICBzb2NrZXQuCisgICAgICogQHBhcmFtIHN0YXR1cwlUaGUgY29ubmVjdGlvbiByZXN1bHQuIElmIGNvbm5lY3Rpb24gaGFzIGJlZW4KKyAgICAgKgkJCXN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCwgdGhlIHN0YXR1cyB3aWxsIGNvbnRhaW4KKyAgICAgKgkJCVBKX1NVQ0NFU1MuCisgICAgICoKKyAgICAgKiBAcmV0dXJuCQlBcHBsaWNhdGlvbiBtYXkgZGVzdHJveSB0aGUgYWN0aXZlIHNvY2tldCBpbiB0aGUKKyAgICAgKgkJCWNhbGxiYWNrIGFuZCByZXR1cm4gUEpfRkFMU0UgaGVyZS4gCisgICAgICovCisgICAgcGpfYm9vbF90ICgqb25fY29ubmVjdF9jb21wbGV0ZSkocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkgICAgIHBqX3N0YXR1c190IHN0YXR1cyk7CisKK30gcGpfYWN0aXZlc29ja19jYjsKKworCisvKioKKyAqIFNldHRpbmdzIHRoYXQgY2FuIGJlIGdpdmVuIGR1cmluZyBhY3RpdmUgc29ja2V0IGNyZWF0aW9uLiBBcHBsaWNhdGlvbgorICogbXVzdCBpbml0aWFsaXplIHRoaXMgc3RydWN0dXJlIHdpdGggI3BqX2FjdGl2ZXNvY2tfY2ZnX2RlZmF1bHQoKS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfYWN0aXZlc29ja19jZmcKK3sKKyAgICAvKioKKyAgICAgKiBPcHRpb25hbCBncm91cCBsb2NrIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBpb3F1ZXVlIGtleS4KKyAgICAgKi8KKyAgICBwal9ncnBfbG9ja190ICpncnBfbG9jazsKKworICAgIC8qKgorICAgICAqIE51bWJlciBvZiBjb25jdXJyZW50IGFzeW5jaHJvbm91cyBvcGVyYXRpb25zIHRoYXQgaXMgdG8gYmUgc3VwcG9ydGVkCisgICAgICogYnkgdGhlIGFjdGl2ZSBzb2NrZXQuIFRoaXMgdmFsdWUgb25seSBhZmZlY3RzIHNvY2tldCByZWNlaXZlIGFuZAorICAgICAqIGFjY2VwdCBvcGVyYXRpb25zIC0tIHRoZSBhY3RpdmUgc29ja2V0IHdpbGwgaXNzdWUgb25lIG9yIG1vcmUgCisgICAgICogYXN5bmNocm9ub3VzIHJlYWQgYW5kIGFjY2VwdCBvcGVyYXRpb25zIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGlzCisgICAgICogZmllbGQuIFNldHRpbmcgdGhpcyBmaWVsZCB0byBtb3JlIHRoYW4gb25lIHdpbGwgYWxsb3cgbW9yZSB0aGFuIG9uZQorICAgICAqIGluY29taW5nIGRhdGEgb3IgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYmUgcHJvY2Vzc2VkIHNpbXVsdGFuZW91c2x5CisgICAgICogb24gbXVsdGlwcm9jZXNzb3Igc3lzdGVtcywgd2hlbiB0aGUgaW9xdWV1ZSBpcyBwb2xsZWQgYnkgbW9yZSB0aGFuCisgICAgICogb25lIHRocmVhZHMuCisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxLgorICAgICAqLworICAgIHVuc2lnbmVkIGFzeW5jX2NudDsKKworICAgIC8qKgorICAgICAqIFRoZSBpb3F1ZXVlIGNvbmN1cnJlbmN5IHRvIGJlIGZvcmNlZCBvbiB0aGUgc29ja2V0IHdoZW4gaXQgaXMgCisgICAgICogcmVnaXN0ZXJlZCB0byB0aGUgaW9xdWV1ZS4gU2VlICNwal9pb3F1ZXVlX3NldF9jb25jdXJyZW5jeSgpIGZvciBtb3JlCisgICAgICogaW5mbyBhYm91dCBpb3F1ZXVlIGNvbmN1cnJlbmN5LgorICAgICAqCisgICAgICogV2hlbiB0aGlzIHZhbHVlIGlzIC0xLCB0aGUgY29uY3VycmVuY3kgc2V0dGluZyB3aWxsIG5vdCBiZSBmb3JjZWQgZm9yCisgICAgICogdGhpcyBzb2NrZXQsIGFuZCB0aGUgc29ja2V0IHdpbGwgaW5oZXJpdCB0aGUgY29uY3VycmVuY3kgc2V0dGluZyBvZiAKKyAgICAgKiB0aGUgaW9xdWV1ZS4gV2hlbiB0aGlzIHZhbHVlIGlzIHplcm8sIHRoZSBhY3RpdmUgc29ja2V0IHdpbGwgZGlzYWJsZQorICAgICAqIGNvbmN1cnJlbmN5IGZvciB0aGUgc29ja2V0LiBXaGVuIHRoaXMgdmFsdWUgaXMgKzEsIHRoZSBhY3RpdmUgc29ja2V0CisgICAgICogd2lsbCBlbmFibGUgY29uY3VycmVuY3kgZm9yIHRoZSBzb2NrZXQuCisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAtMS4KKyAgICAgKi8KKyAgICBpbnQgY29uY3VycmVuY3k7CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoZSBhY3RpdmUgc29ja2V0IHdpbGwgbWFrZSBzdXJlIHRoYXQKKyAgICAgKiBhc3luY2hyb25vdXMgc2VuZCBvcGVyYXRpb24gd2l0aCBzdHJlYW0gb3JpZW50ZWQgc29ja2V0IHdpbGwgb25seQorICAgICAqIGNhbGwgdGhlIGNhbGxiYWNrIGFmdGVyIGFsbCBkYXRhIGhhcyBiZWVuIHNlbnQuIFRoaXMgbWVhbnMgdGhhdCB0aGUKKyAgICAgKiBhY3RpdmUgc29ja2V0IHdpbGwgYXV0b21hdGljYWxseSByZXNlbmQgdGhlIHJlbWFpbmluZyBkYXRhIHVudGlsCisgICAgICogYWxsIGRhdGEgaGFzIGJlZW4gc2VudC4KKyAgICAgKgorICAgICAqIFBsZWFzZSBub3RlIHRoYXQgd2hlbiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGl0IGlzIHBvc3NpYmxlIHRoYXQKKyAgICAgKiBlcnJvciBpcyByZXBvcnRlZCBhZnRlciBwYXJ0aWFsIGRhdGEgaGFzIGJlZW4gc2VudC4gQWxzbyBzZXR0aW5nCisgICAgICogdGhpcyB3aWxsIGRpc2FibGUgdGhlIGlvcXVldWUgY29uY3VycmVuY3kgZm9yIHRoZSBzb2NrZXQuCisgICAgICoKKyAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIDEuCisgICAgICovCisgICAgcGpfYm9vbF90IHdob2xlX2RhdGE7CisKK30gcGpfYWN0aXZlc29ja19jZmc7CisKKworLyoqCisgKiBJbml0aWFsaXplIHRoZSBhY3RpdmUgc29ja2V0IGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMuCisgKgorICogQHBhcmFtIGNmZwkJVGhlIGNvbmZpZ3VyYXRpb24gdG8gYmUgaW5pdGlhbGl6ZWQuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfYWN0aXZlc29ja19jZmdfZGVmYXVsdChwal9hY3RpdmVzb2NrX2NmZyAqY2ZnKTsKKworCisvKioKKyAqIENyZWF0ZSB0aGUgYWN0aXZlIHNvY2tldCBmb3IgdGhlIHNwZWNpZmllZCBzb2NrZXQuIFRoaXMgd2lsbCByZWdpc3RlcgorICogdGhlIHNvY2tldCB0byB0aGUgc3BlY2lmaWVkIGlvcXVldWUuIAorICoKKyAqIEBwYXJhbSBwb29sCQlQb29sIHRvIGFsbG9jYXRlIG1lbW9yeSBmcm9tLgorICogQHBhcmFtIHNvY2sJCVRoZSBzb2NrZXQgaGFuZGxlLgorICogQHBhcmFtIHNvY2tfdHlwZQlTcGVjaWZ5IHNvY2tldCB0eXBlLCBlaXRoZXIgcGpfU09DS19ER1JBTSgpIG9yCisgKgkJCXBqX1NPQ0tfU1RSRUFNKCkuIFRoZSBhY3RpdmUgc29ja2V0IG5lZWRzIHRoaXMKKyAqCQkJaW5mb3JtYXRpb24gdG8gaGFuZGxlIGNvbm5lY3Rpb24gY2xvc3VyZSBmb3IKKyAqCQkJY29ubmVjdGlvbiBvcmllbnRlZCBzb2NrZXRzLgorICogQHBhcmFtIGlvcXVldWUJVGhlIGlvcXVldWUgdG8gdXNlLgorICogQHBhcmFtIG9wdAkJT3B0aW9uYWwgc2V0dGluZ3MuIFdoZW4gdGhpcyBzZXR0aW5nIGlzIG5vdCBzcGVjaWZlZCwKKyAqCQkJdGhlIGRlZmF1bHQgdmFsdWVzIHdpbGwgYmUgdXNlZC4KKyAqIEBwYXJhbSBjYgkJUG9pbnRlciB0byBzdHJ1Y3R1cmUgY29udGFpbmluZyBhcHBsaWNhdGlvbgorICoJCQljYWxsYmFja3MuCisgKiBAcGFyYW0gdXNlcl9kYXRhCUFyYml0cmFyeSB1c2VyIGRhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMKKyAqCQkJYWN0aXZlIHNvY2tldC4KKyAqIEBwYXJhbSBwX2Fzb2NrCVBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgYWN0aXZlIHNvY2tldCBpbnN0YW5jZS4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIGlmIHRoZSBvcGVyYXRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bCwKKyAqCQkJb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19jcmVhdGUocGpfcG9vbF90ICpwb29sLAorCQkJCQkgIHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgIGludCBzb2NrX3R5cGUsCisJCQkJCSAgY29uc3QgcGpfYWN0aXZlc29ja19jZmcgKm9wdCwKKwkJCQkJICBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisJCQkJCSAgY29uc3QgcGpfYWN0aXZlc29ja19jYiAqY2IsCisJCQkJCSAgdm9pZCAqdXNlcl9kYXRhLAorCQkJCQkgIHBqX2FjdGl2ZXNvY2tfdCAqKnBfYXNvY2spOworCisvKioKKyAqIENyZWF0ZSBVRFAgc29ja2V0IGRlc2NyaXB0b3IsIGJpbmQgaXQgdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzLCBhbmQgCisgKiBjcmVhdGUgdGhlIGFjdGl2ZSBzb2NrZXQgZm9yIHRoZSBzb2NrZXQgZGVzY3JpcHRvci4KKyAqCisgKiBAcGFyYW0gcG9vbAkJUG9vbCB0byBhbGxvY2F0ZSBtZW1vcnkgZnJvbS4KKyAqIEBwYXJhbSBhZGRyCQlTcGVjaWZpZXMgdGhlIGFkZHJlc3MgZmFtaWx5IG9mIHRoZSBzb2NrZXQgYW5kIHRoZQorICoJCQlhZGRyZXNzIHdoZXJlIHRoZSBzb2NrZXQgc2hvdWxkIGJlIGJvdW5kIHRvLiBJZgorICoJCQl0aGlzIGFyZ3VtZW50IGlzIE5VTEwsIHRoZW4gQUZfSU5FVCBpcyBhc3N1bWVkIGFuZAorICoJCQl0aGUgc29ja2V0IHdpbGwgYmUgYm91bmQgdG8gYW55IGFkZHJlc3NlcyBhbmQgcG9ydC4KKyAqIEBwYXJhbSBvcHQJCU9wdGlvbmFsIHNldHRpbmdzLiBXaGVuIHRoaXMgc2V0dGluZyBpcyBub3Qgc3BlY2lmZWQsCisgKgkJCXRoZSBkZWZhdWx0IHZhbHVlcyB3aWxsIGJlIHVzZWQuCisgKiBAcGFyYW0gY2IJCVBvaW50ZXIgdG8gc3RydWN0dXJlIGNvbnRhaW5pbmcgYXBwbGljYXRpb24KKyAqCQkJY2FsbGJhY2tzLgorICogQHBhcmFtIHVzZXJfZGF0YQlBcmJpdHJhcnkgdXNlciBkYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgKgkJCWFjdGl2ZSBzb2NrZXQuCisgKiBAcGFyYW0gcF9hc29jawlQb2ludGVyIHRvIHJlY2VpdmUgdGhlIGFjdGl2ZSBzb2NrZXQgaW5zdGFuY2UuCisgKiBAcGFyYW0gYm91bmRfYWRkcglJZiB0aGlzIGFyZ3VtZW50IGlzIHNwZWNpZmllZCwgaXQgd2lsbCBiZSBmaWxsZWQgd2l0aAorICoJCQl0aGUgYm91bmQgYWRkcmVzcyBvbiByZXR1cm4uCisgKgorICogQHJldHVybgkJUEpfU1VDQ0VTUyBpZiB0aGUgb3BlcmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWwsCisgKgkJCW9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2FjdGl2ZXNvY2tfY3JlYXRlX3VkcChwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgIGNvbnN0IHBqX3NvY2thZGRyICphZGRyLAorCQkJCQkgICAgICBjb25zdCBwal9hY3RpdmVzb2NrX2NmZyAqb3B0LAorCQkJCQkgICAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisJCQkJCSAgICAgIGNvbnN0IHBqX2FjdGl2ZXNvY2tfY2IgKmNiLAorCQkJCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCisJCQkJCSAgICAgIHBqX2FjdGl2ZXNvY2tfdCAqKnBfYXNvY2ssCisJCQkJCSAgICAgIHBqX3NvY2thZGRyICpib3VuZF9hZGRyKTsKKworLyoqCisgKiBDbG9zZSB0aGUgYWN0aXZlIHNvY2tldC4gVGhpcyB3aWxsIHVucmVnaXN0ZXIgdGhlIHNvY2tldCBmcm9tIHRoZQorICogaW9xdWV1ZSBhbmQgdWx0aW1hdGVseSBjbG9zZSB0aGUgc29ja2V0LgorICoKKyAqIEBwYXJhbSBhc29jawkgICAgVGhlIGFjdGl2ZSBzb2NrZXQuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBpZiB0aGUgb3BlcmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWwsCisgKgkJICAgIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2FjdGl2ZXNvY2tfY2xvc2UocGpfYWN0aXZlc29ja190ICphc29jayk7CisKKyNpZiAoZGVmaW5lZChQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUKSAmJiBcCisgICAgIFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQhPTApIHx8IFwKKyAgICAgZGVmaW5lZChET1hZR0VOKQorLyoqCisgKiBTZXQgaVBob25lIE9TIGJhY2tncm91bmQgbW9kZSBzZXR0aW5nLiBTZXR0aW5nIHRvIDEgd2lsbCBlbmFibGUgVENQCisgKiBhY3RpdmUgc29ja2V0IHRvIHJlY2VpdmUgaW5jb21pbmcgZGF0YSB3aGVuIGFwcGxpY2F0aW9uIGlzIGluIHRoZQorICogYmFja2dyb3VuZC4gU2V0dGluZyB0byAwIHdpbGwgZGlzYWJsZSBpdC4gRGVmYXVsdCB2YWx1ZSBvZiB0aGlzCisgKiBzZXR0aW5nIGlzIFBKX0FDVElWRVNPQ0tfVENQX0lQSE9ORV9PU19CRy4KKyAqCisgKiBUaGlzIEFQSSBpcyBvbmx5IGF2YWlsYWJsZSBpZiBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUCisgKiBpcyBzZXQgdG8gbm9uLXplcm8uCisgKgorICogQHBhcmFtIGFzb2NrCSAgICBUaGUgYWN0aXZlIHNvY2tldC4KKyAqIEBwYXJhbSB2YWwJICAgIFRoZSB2YWx1ZSBvZiBiYWNrZ3JvdW5kIG1vZGUgc2V0dGluZy4KKyAqCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfYWN0aXZlc29ja19zZXRfaXBob25lX29zX2JnKHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2ssCisJCQkJCSAgICAgaW50IHZhbCk7CisKKy8qKgorICogRW5hYmxlL2Rpc2FibGUgc3VwcG9ydCBmb3IgaVBob25lIE9TIGJhY2tncm91bmQgbW9kZS4gVGhpcyBzZXR0aW5nCisgKiB3aWxsIGFwcGx5IGdsb2JhbGx5IGFuZCB3aWxsIGFmZmVjdCBhbnkgYWN0aXZlIHNvY2tldHMgY3JlYXRlZAorICogYWZ0ZXJ3YXJkcywgaWYgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSBzZXR0aW5nIGZvciBhIHBhcnRpY3VsYXIKKyAqIGFjdGl2ZSBzb2NrZXQsIHVzZSAjcGpfYWN0aXZlc29ja19zZXRfaXBob25lX29zX2JnKCkgaW5zdGVhZC4KKyAqIEJ5IGRlZmF1bHQsIHRoaXMgc2V0dGluZyBpcyBlbmFibGVkLgorICoKKyAqIFRoaXMgQVBJIGlzIG9ubHkgYXZhaWxhYmxlIGlmIFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQKKyAqIGlzIHNldCB0byBub24temVyby4KKyAqCisgKiBAcGFyYW0gdmFsCSAgICBUaGUgdmFsdWUgb2YgZ2xvYmFsIGJhY2tncm91bmQgbW9kZSBzZXR0aW5nLgorICoKKyAqLworUEpfREVDTCh2b2lkKSBwal9hY3RpdmVzb2NrX2VuYWJsZV9pcGhvbmVfb3NfYmcocGpfYm9vbF90IHZhbCk7CisjZW5kaWYKKworLyoqCisgKiBBc3NvY2lhdGUgYXJiaXRyYXJ5IGRhdGEgd2l0aCB0aGUgYWN0aXZlIHNvY2tldC4gQXBwbGljYXRpb24gbWF5CisgKiBpbnNwZWN0IHRoaXMgZGF0YSBpbiB0aGUgY2FsbGJhY2tzIGFuZCBhc3NvY2lhdGUgaXQgd2l0aCBoaWdoZXIKKyAqIGxldmVsIHByb2Nlc3NpbmcuCisgKgorICogQHBhcmFtIGFzb2NrCSAgICBUaGUgYWN0aXZlIHNvY2tldC4KKyAqIEBwYXJhbSB1c2VyX2RhdGEgVGhlIHVzZXIgZGF0YSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGFjdGl2ZQorICoJCSAgICBzb2NrZXQuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBpZiB0aGUgb3BlcmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWwsCisgKgkJICAgIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2FjdGl2ZXNvY2tfc2V0X3VzZXJfZGF0YShwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkJIHZvaWQgKnVzZXJfZGF0YSk7CisKKy8qKgorICogUmV0cmlldmUgdGhlIHVzZXIgZGF0YSBwcmV2aW91c2x5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjdGl2ZQorICogc29ja2V0LgorICoKKyAqIEBwYXJhbSBhc29jawkgICAgVGhlIGFjdGl2ZSBzb2NrZXQuCisgKgorICogQHJldHVybgkgICAgVGhlIHVzZXIgZGF0YS4KKyAqLworUEpfREVDTCh2b2lkKikgcGpfYWN0aXZlc29ja19nZXRfdXNlcl9kYXRhKHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2spOworCisKKy8qKgorICogU3RhcnRzIHJlYWQgb3BlcmF0aW9uIG9uIHRoaXMgYWN0aXZlIHNvY2tldC4gVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZQorICogXGEgYXN5bmNfY250IG51bWJlciBvZiBidWZmZXJzICh0aGUgXGEgYXN5bmNfY250IHBhcmFtZXRlciB3YXMgZ2l2ZW4KKyAqIGluIFxhIHBqX2FjdGl2ZXNvY2tfY3JlYXRlKCkgZnVuY3Rpb24pIHdoZXJlIGVhY2ggYnVmZmVyIGlzIFxhIGJ1ZmZfc2l6ZQorICogbG9uZy4gVGhlIGJ1ZmZlcnMgYXJlIGFsbG9jYXRlZCBmcm9tIHRoZSBzcGVjaWZpZWQgXGEgcG9vbC4gT25jZSB0aGUgCisgKiBidWZmZXJzIGFyZSBjcmVhdGVkLCBpdCB0aGVuIGlzc3VlcyBcYSBhc3luY19jbnQgbnVtYmVyIG9mIGFzeW5jaHJvbm91cworICogXGEgcmVjdigpIG9wZXJhdGlvbnMgdG8gdGhlIHNvY2tldCBhbmQgcmV0dXJucyBiYWNrIHRvIGNhbGxlci4gSW5jb21pbmcKKyAqIGRhdGEgb24gdGhlIHNvY2tldCB3aWxsIGJlIHJlcG9ydGVkIGJhY2sgdG8gYXBwbGljYXRpb24gdmlhIHRoZSAKKyAqIFxhIG9uX2RhdGFfcmVhZCgpIGNhbGxiYWNrLgorICoKKyAqIEFwcGxpY2F0aW9uIG9ubHkgbmVlZHMgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIG9uY2UgdG8gaW5pdGlhdGUgcmVhZAorICogb3BlcmF0aW9ucy4gRnVydGhlciByZWFkIG9wZXJhdGlvbnMgd2lsbCBiZSBkb25lIGF1dG9tYXRpY2FsbHkgYnkgdGhlCisgKiBhY3RpdmUgc29ja2V0IHdoZW4gXGEgb25fZGF0YV9yZWFkKCkgY2FsbGJhY2sgcmV0dXJucyBub24temVyby4gCisgKgorICogQHBhcmFtIGFzb2NrCSAgICBUaGUgYWN0aXZlIHNvY2tldC4KKyAqIEBwYXJhbSBwb29sCSAgICBQb29sIHVzZWQgdG8gYWxsb2NhdGUgYnVmZmVycyBmb3IgaW5jb21pbmcgZGF0YS4KKyAqIEBwYXJhbSBidWZmX3NpemUgVGhlIHNpemUgb2YgZWFjaCBidWZmZXIsIGluIGJ5dGVzLgorICogQHBhcmFtIGZsYWdzCSAgICBGbGFncyB0byBiZSBnaXZlbiB0byBwal9pb3F1ZXVlX3JlY3YoKS4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIGlmIHRoZSBvcGVyYXRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bCwKKyAqCQkgICAgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19zdGFydF9yZWFkKHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2ssCisJCQkJCSAgICAgIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICAgdW5zaWduZWQgYnVmZl9zaXplLAorCQkJCQkgICAgICBwal91aW50MzJfdCBmbGFncyk7CisKKy8qKgorICogU2FtZSBhcyAjcGpfYWN0aXZlc29ja19zdGFydF9yZWFkKCksIGV4Y2VwdCB0aGF0IHRoZSBhcHBsaWNhdGlvbgorICogc3VwcGxpZXMgdGhlIGJ1ZmZlcnMgZm9yIHRoZSByZWFkIG9wZXJhdGlvbiBzbyB0aGF0IHRoZSBhY2l2ZSBzb2NrZXQKKyAqIGRvZXMgbm90IGhhdmUgdG8gYWxsb2NhdGUgdGhlIGJ1ZmZlcnMuCisgKgorICogQHBhcmFtIGFzb2NrCSAgICBUaGUgYWN0aXZlIHNvY2tldC4KKyAqIEBwYXJhbSBwb29sCSAgICBQb29sIHVzZWQgdG8gYWxsb2NhdGUgYnVmZmVycyBmb3IgaW5jb21pbmcgZGF0YS4KKyAqIEBwYXJhbSBidWZmX3NpemUgVGhlIHNpemUgb2YgZWFjaCBidWZmZXIsIGluIGJ5dGVzLgorICogQHBhcmFtIHJlYWRidWYgICBBcnJheSBvZiBwYWNrZXQgYnVmZmVycywgZWFjaCBoYXMgYnVmZl9zaXplIHNpemUuCisgKiBAcGFyYW0gZmxhZ3MJICAgIEZsYWdzIHRvIGJlIGdpdmVuIHRvIHBqX2lvcXVldWVfcmVjdigpLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1MgaWYgdGhlIG9wZXJhdGlvbiBoYXMgYmVlbiBzdWNjZXNzZnVsLAorICoJCSAgICBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9hY3RpdmVzb2NrX3N0YXJ0X3JlYWQyKHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2ssCisJCQkJCSAgICAgICBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgICB1bnNpZ25lZCBidWZmX3NpemUsCisJCQkJCSAgICAgICB2b2lkICpyZWFkYnVmW10sCisJCQkJCSAgICAgICBwal91aW50MzJfdCBmbGFncyk7CisKKy8qKgorICogU2FtZSBhcyBwal9hY3RpdmVzb2NrX3N0YXJ0X3JlYWQoKSwgZXhjZXB0IHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB1c2VkCisgKiBvbmx5IGZvciBkYXRhZ3JhbSBzb2NrZXRzLCBhbmQgaXQgd2lsbCB0cmlnZ2VyIFxhIG9uX2RhdGFfcmVjdmZyb20oKQorICogY2FsbGJhY2sgaW5zdGVhZC4KKyAqCisgKiBAcGFyYW0gYXNvY2sJICAgIFRoZSBhY3RpdmUgc29ja2V0LgorICogQHBhcmFtIHBvb2wJICAgIFBvb2wgdXNlZCB0byBhbGxvY2F0ZSBidWZmZXJzIGZvciBpbmNvbWluZyBkYXRhLgorICogQHBhcmFtIGJ1ZmZfc2l6ZSBUaGUgc2l6ZSBvZiBlYWNoIGJ1ZmZlciwgaW4gYnl0ZXMuCisgKiBAcGFyYW0gZmxhZ3MJICAgIEZsYWdzIHRvIGJlIGdpdmVuIHRvIHBqX2lvcXVldWVfcmVjdmZyb20oKS4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIGlmIHRoZSBvcGVyYXRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bCwKKyAqCQkgICAgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19zdGFydF9yZWN2ZnJvbShwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkJICBwal9wb29sX3QgKnBvb2wsCisJCQkJCQkgIHVuc2lnbmVkIGJ1ZmZfc2l6ZSwKKwkJCQkJCSAgcGpfdWludDMyX3QgZmxhZ3MpOworCisvKioKKyAqIFNhbWUgYXMgI3BqX2FjdGl2ZXNvY2tfc3RhcnRfcmVjdmZyb20oKSBleGNlcHQgdGhhdCB0aGUgcmVjdmZyb20oKSAKKyAqIG9wZXJhdGlvbiB0YWtlcyB0aGUgYnVmZmVyIGZyb20gdGhlIGFyZ3VtZW50IHJhdGhlciB0aGFuIGNyZWF0aW5nCisgKiBuZXcgb25lcy4KKyAqCisgKiBAcGFyYW0gYXNvY2sJICAgIFRoZSBhY3RpdmUgc29ja2V0LgorICogQHBhcmFtIHBvb2wJICAgIFBvb2wgdXNlZCB0byBhbGxvY2F0ZSBidWZmZXJzIGZvciBpbmNvbWluZyBkYXRhLgorICogQHBhcmFtIGJ1ZmZfc2l6ZSBUaGUgc2l6ZSBvZiBlYWNoIGJ1ZmZlciwgaW4gYnl0ZXMuCisgKiBAcGFyYW0gcmVhZGJ1ZiAgIEFycmF5IG9mIHBhY2tldCBidWZmZXJzLCBlYWNoIGhhcyBidWZmX3NpemUgc2l6ZS4KKyAqIEBwYXJhbSBmbGFncwkgICAgRmxhZ3MgdG8gYmUgZ2l2ZW4gdG8gcGpfaW9xdWV1ZV9yZWN2ZnJvbSgpLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1MgaWYgdGhlIG9wZXJhdGlvbiBoYXMgYmVlbiBzdWNjZXNzZnVsLAorICoJCSAgICBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9hY3RpdmVzb2NrX3N0YXJ0X3JlY3Zmcm9tMihwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkJICAgcGpfcG9vbF90ICpwb29sLAorCQkJCQkJICAgdW5zaWduZWQgYnVmZl9zaXplLAorCQkJCQkJICAgdm9pZCAqcmVhZGJ1ZltdLAorCQkJCQkJICAgcGpfdWludDMyX3QgZmxhZ3MpOworCisvKioKKyAqIFNlbmQgZGF0YSB1c2luZyB0aGUgc29ja2V0LgorICoKKyAqIEBwYXJhbSBhc29jawkgICAgVGhlIGFjdGl2ZSBzb2NrZXQuCisgKiBAcGFyYW0gc2VuZF9rZXkgIFRoZSBvcGVyYXRpb24ga2V5IHRvIHNlbmQgdGhlIGRhdGEsIHdoaWNoIGlzIHVzZWZ1bAorICoJCSAgICBpZiBhcHBsaWNhdGlvbiB3YW50cyB0byBzdWJtaXQgbXVsdGlwbGUgcGVuZGluZworICoJCSAgICBzZW5kIG9wZXJhdGlvbnMgYW5kIHdhbnQgdG8gdHJhY2sgd2hpY2ggZXhhY3QgZGF0YSAKKyAqCQkgICAgaGFzIGJlZW4gc2VudCBpbiB0aGUgXGEgb25fZGF0YV9zZW50KCkgY2FsbGJhY2suCisgKiBAcGFyYW0gZGF0YQkgICAgVGhlIGRhdGEgdG8gYmUgc2VudC4gVGhpcyBkYXRhIG11c3QgcmVtYWluIHZhbGlkCisgKgkJICAgIHVudGlsIHRoZSBkYXRhIGhhcyBiZWVuIHNlbnQuCisgKiBAcGFyYW0gc2l6ZQkgICAgVGhlIHNpemUgb2YgdGhlIGRhdGEuCisgKiBAcGFyYW0gZmxhZ3MJICAgIEZsYWdzIHRvIGJlIGdpdmVuIHRvIHBqX2lvcXVldWVfc2VuZCgpLgorICoKKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIGlmIGRhdGEgaGFzIGJlZW4gc2VudCBpbW1lZGlhdGVseSwgb3IKKyAqCQkgICAgUEpfRVBFTkRJTkcgaWYgZGF0YSBjYW5ub3QgYmUgc2VudCBpbW1lZGlhdGVseS4gSW4KKyAqCQkgICAgdGhpcyBjYXNlIHRoZSBcYSBvbl9kYXRhX3NlbnQoKSBjYWxsYmFjayB3aWxsIGJlCisgKgkJICAgIGNhbGxlZCB3aGVuIGRhdGEgaXMgYWN0dWFsbHkgc2VudC4gQW55IG90aGVyIHJldHVybgorICoJCSAgICB2YWx1ZSBpbmRpY2F0ZXMgZXJyb3IgY29uZGl0aW9uLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9hY3RpdmVzb2NrX3NlbmQocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkJcGpfaW9xdWV1ZV9vcF9rZXlfdCAqc2VuZF9rZXksCisJCQkJCWNvbnN0IHZvaWQgKmRhdGEsCisJCQkJCXBqX3NzaXplX3QgKnNpemUsCisJCQkJCXVuc2lnbmVkIGZsYWdzKTsKKworLyoqCisgKiBTZW5kIGRhdGFncmFtIHVzaW5nIHRoZSBzb2NrZXQuCisgKgorICogQHBhcmFtIGFzb2NrCSAgICBUaGUgYWN0aXZlIHNvY2tldC4KKyAqIEBwYXJhbSBzZW5kX2tleSAgVGhlIG9wZXJhdGlvbiBrZXkgdG8gc2VuZCB0aGUgZGF0YSwgd2hpY2ggaXMgdXNlZnVsCisgKgkJICAgIGlmIGFwcGxpY2F0aW9uIHdhbnRzIHRvIHN1Ym1pdCBtdWx0aXBsZSBwZW5kaW5nCisgKgkJICAgIHNlbmQgb3BlcmF0aW9ucyBhbmQgd2FudCB0byB0cmFjayB3aGljaCBleGFjdCBkYXRhIAorICoJCSAgICBoYXMgYmVlbiBzZW50IGluIHRoZSBcYSBvbl9kYXRhX3NlbnQoKSBjYWxsYmFjay4KKyAqIEBwYXJhbSBkYXRhCSAgICBUaGUgZGF0YSB0byBiZSBzZW50LiBUaGlzIGRhdGEgbXVzdCByZW1haW4gdmFsaWQKKyAqCQkgICAgdW50aWwgdGhlIGRhdGEgaGFzIGJlZW4gc2VudC4KKyAqIEBwYXJhbSBzaXplCSAgICBUaGUgc2l6ZSBvZiB0aGUgZGF0YS4KKyAqIEBwYXJhbSBmbGFncwkgICAgRmxhZ3MgdG8gYmUgZ2l2ZW4gdG8gcGpfaW9xdWV1ZV9zZW5kKCkuCisgKiBAcGFyYW0gYWRkcgkgICAgVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MuCisgKiBAcGFyYW0gYWRkcl9sZW4gIFRoZSBsZW5ndGggb2YgdGhlIGFkZHJlc3MuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBpZiBkYXRhIGhhcyBiZWVuIHNlbnQgaW1tZWRpYXRlbHksIG9yCisgKgkJICAgIFBKX0VQRU5ESU5HIGlmIGRhdGEgY2Fubm90IGJlIHNlbnQgaW1tZWRpYXRlbHkuIEluCisgKgkJICAgIHRoaXMgY2FzZSB0aGUgXGEgb25fZGF0YV9zZW50KCkgY2FsbGJhY2sgd2lsbCBiZQorICoJCSAgICBjYWxsZWQgd2hlbiBkYXRhIGlzIGFjdHVhbGx5IHNlbnQuIEFueSBvdGhlciByZXR1cm4KKyAqCQkgICAgdmFsdWUgaW5kaWNhdGVzIGVycm9yIGNvbmRpdGlvbi4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19zZW5kdG8ocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkJICBwal9pb3F1ZXVlX29wX2tleV90ICpzZW5kX2tleSwKKwkJCQkJICBjb25zdCB2b2lkICpkYXRhLAorCQkJCQkgIHBqX3NzaXplX3QgKnNpemUsCisJCQkJCSAgdW5zaWduZWQgZmxhZ3MsCisJCQkJCSAgY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJICBpbnQgYWRkcl9sZW4pOworCisjaWYgUEpfSEFTX1RDUAorLyoqCisgKiBTdGFydHMgYXN5bmNocm9ub3VzIHNvY2tldCBhY2NlcHQoKSBvcGVyYXRpb25zIG9uIHRoaXMgYWN0aXZlIHNvY2tldC4gCisgKiBBcHBsaWNhdGlvbiBtdXN0IGJpbmQgdGhlIHNvY2tldCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBUaGlzIAorICogZnVuY3Rpb24gd2lsbCBpc3N1ZSBcYSBhc3luY19jbnQgbnVtYmVyIG9mIGFzeW5jaHJvbm91cyBcYSBhY2NlcHQoKSAKKyAqIG9wZXJhdGlvbnMgdG8gdGhlIHNvY2tldCBhbmQgcmV0dXJucyBiYWNrIHRvIGNhbGxlci4gSW5jb21pbmcKKyAqIGNvbm5lY3Rpb24gb24gdGhlIHNvY2tldCB3aWxsIGJlIHJlcG9ydGVkIGJhY2sgdG8gYXBwbGljYXRpb24gdmlhIHRoZQorICogXGEgb25fYWNjZXB0X2NvbXBsZXRlKCkgY2FsbGJhY2suCisgKgorICogQXBwbGljYXRpb24gb25seSBuZWVkcyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gb25jZSB0byBpbml0aWF0ZSBhY2NlcHQoKQorICogb3BlcmF0aW9ucy4gRnVydGhlciBhY2NlcHQoKSBvcGVyYXRpb25zIHdpbGwgYmUgZG9uZSBhdXRvbWF0aWNhbGx5IGJ5IAorICogdGhlIGFjdGl2ZSBzb2NrZXQgd2hlbiBcYSBvbl9hY2NlcHRfY29tcGxldGUoKSBjYWxsYmFjayByZXR1cm5zIG5vbi16ZXJvLgorICoKKyAqIEBwYXJhbSBhc29jawkgICAgVGhlIGFjdGl2ZSBzb2NrZXQuCisgKiBAcGFyYW0gcG9vbAkgICAgUG9vbCB1c2VkIHRvIGFsbG9jYXRlIHNvbWUgaW50ZXJuYWwgZGF0YSBmb3IgdGhlCisgKgkJICAgIG9wZXJhdGlvbi4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIGlmIHRoZSBvcGVyYXRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bCwKKyAqCQkgICAgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19zdGFydF9hY2NlcHQocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkJCXBqX3Bvb2xfdCAqcG9vbCk7CisKKy8qKgorICogU3RhcnRzIGFzeW5jaHJvbm91cyBzb2NrZXQgY29ubmVjdCgpIG9wZXJhdGlvbiBmb3IgdGhpcyBzb2NrZXQuIE9uY2UKKyAqIHRoZSBjb25uZWN0aW9uIGlzIGRvbmUgKGVpdGhlciBzdWNjZXNzZnVsbHkgb3Igbm90KSwgdGhlIAorICogXGEgb25fY29ubmVjdF9jb21wbGV0ZSgpIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICoKKyAqIEBwYXJhbSBhc29jawkgICAgVGhlIGFjdGl2ZSBzb2NrZXQuCisgKiBAcGFyYW0gcG9vbAkgICAgVGhlIHBvb2wgdG8gYWxsb2NhdGUgc29tZSBpbnRlcm5hbCBkYXRhIGZvciB0aGUKKyAqCQkgICAgb3BlcmF0aW9uLgorICogQHBhcmFtIHJlbWFkZHIgICBSZW1vdGUgYWRkcmVzcy4KKyAqIEBwYXJhbSBhZGRyX2xlbiAgTGVuZ3RoIG9mIHRoZSByZW1vdGUgYWRkcmVzcy4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIGlmIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGltbWVkaWF0ZWx5LAorICoJCSAgICBvciBQSl9FUEVORElORyBpZiBjb25uZWN0aW9uIGNhbm5vdCBiZSBlc3RhYmxpc2hlZCAKKyAqCQkgICAgaW1tZWRpYXRlbHkuIEluIHRoaXMgY2FzZSB0aGUgXGEgb25fY29ubmVjdF9jb21wbGV0ZSgpCisgKgkJICAgIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHdoZW4gY29ubmVjdGlvbiBpcyBjb21wbGV0ZS4gCisgKgkJICAgIEFueSBvdGhlciByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIGVycm9yIGNvbmRpdGlvbi4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19zdGFydF9jb25uZWN0KHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2ssCisJCQkJCQkgcGpfcG9vbF90ICpwb29sLAorCQkJCQkJIGNvbnN0IHBqX3NvY2thZGRyX3QgKnJlbWFkZHIsCisJCQkJCQkgaW50IGFkZHJfbGVuKTsKKworCisjZW5kaWYJLyogUEpfSEFTX1RDUCAqLworCisvKioKKyAqIEB9CisgKi8KKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpfQVNZTkNTT0NLX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2FkZHJfcmVzb2x2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlYWNjOAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovYWRkcl9yZXNvbHYuaApAQCAtMCwwICsxLDE5MCBAQAorLyogJElkOiBhZGRyX3Jlc29sdi5oIDQyMTggMjAxMi0wOC0wNyAwMjoxODoxNVogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0FERFJfUkVTT0xWX0hfXworI2RlZmluZSBfX1BKX0FERFJfUkVTT0xWX0hfXworCisvKioKKyAqIEBmaWxlIGFkZHJfcmVzb2x2LmgKKyAqIEBicmllZiBJUCBhZGRyZXNzIHJlc29sdXRpb24uCisgKi8KKworI2luY2x1ZGUgPHBqL3NvY2suaD4KKworUEpfQkVHSU5fREVDTAorCisvKioKKyAqIEBkZWZncm91cCBwal9hZGRyX3Jlc29sdmUgTmV0d29yayBBZGRyZXNzIFJlc29sdXRpb24KKyAqIEBpbmdyb3VwIFBKX0lPCisgKiBAeworICoKKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9uIHRvIHJlc29sdmUgSW50ZXJuZXQgYWRkcmVzcyBvZiB0aGUKKyAqIHNwZWNpZmllZCBob3N0IG5hbWUuIFRvIHJlc29sdmUgYSBwYXJ0aWN1bGFyIGhvc3QgbmFtZSwgYXBwbGljYXRpb24KKyAqIGNhbiBqdXN0IGNhbGwgI3BqX2dldGhvc3RieW5hbWUoKS4KKyAqCisgKiBFeGFtcGxlOgorICogPHByZT4KKyAqICAgLi4uCisgKiAgIHBqX2hvc3RlbnQgaGU7CisgKiAgIHBqX3N0YXR1c190IHJjOworICogICBwal9zdHJfdCBob3N0ID0gcGpfc3RyKCJob3N0LmV4YW1wbGUuY29tIik7CisgKiAgIAorICogICByYyA9IHBqX2dldGhvc3RieW5hbWUoICZob3N0LCAmaGUpOworICogICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICogICAgICBjaGFyIGVycmJ1Zls4MF07CisgKiAgICAgIHBqX3N0cmVycm9yKCByYywgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSk7CisgKiAgICAgIFBKX0xPRygyLCgic2FtcGxlIiwgIlVuYWJsZSB0byByZXNvbHZlIGhvc3QsIGVycm9yPSVzIiwgZXJyYnVmKSk7CisgKiAgICAgIHJldHVybiByYzsKKyAqICAgfQorICoKKyAqICAgLy8gcHJvY2VzcyBhZGRyZXNzLi4uCisgKiAgIGFkZHIuc2luX2FkZHIuc19hZGRyID0gKihwal91aW50MzJfdCopaGUuaF9hZGRyOworICogICAuLi4KKyAqIDwvcHJlPgorICoKKyAqIEl0J3MgcHJldHR5IHNpbXBsZSByZWFsbHkuLi4KKyAqLworCisvKiogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGFuIEludGVybmV0IGhvc3QgYWRkcmVzcy4gKi8KK3R5cGVkZWYgc3RydWN0IHBqX2hvc3RlbnQKK3sKKyAgICBjaGFyICAgICpoX25hbWU7CQkvKio8IFRoZSBvZmZpY2lhbCBuYW1lIG9mIHRoZSBob3N0LiAqLworICAgIGNoYXIgICAqKmhfYWxpYXNlczsJCS8qKjwgQWxpYXNlcyBsaXN0LiAqLworICAgIGludAkgICAgIGhfYWRkcnR5cGU7CS8qKjwgSG9zdCBhZGRyZXNzIHR5cGUuICovCisgICAgaW50CSAgICAgaF9sZW5ndGg7CQkvKio8IExlbmd0aCBvZiBhZGRyZXNzLiAqLworICAgIGNoYXIgICAqKmhfYWRkcl9saXN0OwkvKio8IExpc3Qgb2YgYWRkcmVzc2VzLiAqLworfSBwal9ob3N0ZW50OworCisvKiogU2hvcnRjdXQgdG8gaF9hZGRyX2xpc3RbMF0gKi8KKyNkZWZpbmUgaF9hZGRyIGhfYWRkcl9saXN0WzBdCisKKy8qKiAKKyAqIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBhZGRyZXNzIGluZm9ybWF0aW9uIHBqX2dldGFkZHJpbmZvKCkuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX2FkZHJpbmZvCit7CisgICAgY2hhcgkgYWlfY2Fub25uYW1lW1BKX01BWF9IT1NUTkFNRV07IC8qKjwgQ2Fub25pY2FsIG5hbWUgZm9yIGhvc3QqLworICAgIHBqX3NvY2thZGRyICBhaV9hZGRyOwkJCS8qKjwgQmluYXJ5IGFkZHJlc3MuCSAgICAqLworfSBwal9hZGRyaW5mbzsKKworCisvKioKKyAqIFRoaXMgZnVuY3Rpb24gZmlsbHMgdGhlIHN0cnVjdHVyZSBvZiB0eXBlIHBqX2hvc3RlbnQgZm9yIGEgZ2l2ZW4gaG9zdCBuYW1lLgorICogRm9yIGhvc3QgcmVzb2x1dGlvbiBmdW5jdGlvbiB0aGF0IGFsc28gd29ya3Mgd2l0aCBJUHY2LCBwbGVhc2Ugc2VlCisgKiAjcGpfZ2V0YWRkcmluZm8oKS4KKyAqCisgKiBAcGFyYW0gbmFtZQkgICAgSG9zdCBuYW1lIHRvIHJlc29sdmUuIFNwZWNpZnlpbmcgSVB2NCBhZGRyZXNzIGhlcmUKKyAqCQkgICAgbWF5IGZhaWwgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4gV2luZG93cykKKyAqIEBwYXJhbSBoZQkgICAgVGhlIHBqX2hvc3RlbnQgc3RydWN0dXJlIHRvIGJlIGZpbGxlZC4gTm90ZSB0aGF0CisgKgkJICAgIHRoZSBwb2ludGVycyBpbiB0aGlzIHN0cnVjdHVyZSBwb2ludHMgdG8gdGVtcG9yYXJ5CisgKgkJICAgIHZhcmlhYmxlcyB3aGljaCB2YWx1ZSB3aWxsIGJlIHJlc2V0IHVwb24gc3Vic2VxdWVudAorICoJCSAgICBpbnZvY2F0aW9uLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1MsIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2Rlcy4KKyAqLyAKK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dldGhvc3RieW5hbWUoY29uc3QgcGpfc3RyX3QgKm5hbWUsIHBqX2hvc3RlbnQgKmhlKTsKKworCisvKioKKyAqIFJlc29sdmUgdGhlIHByaW1hcnkgSVAgYWRkcmVzcyBvZiBsb2NhbCBob3N0LiAKKyAqCisgKiBAcGFyYW0gYWYJICAgIFRoZSBkZXNpcmVkIGFkZHJlc3MgZmFtaWx5IHRvIHF1ZXJ5LiBWYWxpZCB2YWx1ZXMKKyAqCQkgICAgYXJlIHBqX0FGX0lORVQoKSBvciBwal9BRl9JTkVUNigpLgorICogQHBhcmFtIGFkZHIgICAgICBPbiBzdWNjZXNzZnVsIHJlc29sdXRpb24sIHRoZSBhZGRyZXNzIGZhbWlseSBhbmQgYWRkcmVzcworICoJCSAgICBwYXJ0IG9mIHRoaXMgc29ja2V0IGFkZHJlc3Mgd2lsbCBiZSBmaWxsZWQgdXAgd2l0aCB0aGUgaG9zdAorICoJCSAgICBJUCBhZGRyZXNzLCBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuIE90aGVyIHBhcnRzIG9mIHRoZSBzb2NrZXQKKyAqCQkgICAgYWRkcmVzcyBhcmUgdW50b3VjaGVkLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcywgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dldGhvc3RpcChpbnQgYWYsIHBqX3NvY2thZGRyICphZGRyKTsKKworCisvKioKKyAqIEdldCB0aGUgaW50ZXJmYWNlIElQIGFkZHJlc3MgdG8gc2VuZCBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24uCisgKgorICogQHBhcmFtIGFmCSAgICBUaGUgZGVzaXJlZCBhZGRyZXNzIGZhbWlseSB0byBxdWVyeS4gVmFsaWQgdmFsdWVzCisgKgkJICAgIGFyZSBwal9BRl9JTkVUKCkgb3IgcGpfQUZfSU5FVDYoKS4KKyAqIEBwYXJhbSBkc3QJICAgIFRoZSBkZXN0aW5hdGlvbiBob3N0LgorICogQHBhcmFtIGl0Zl9hZGRyICBPbiBzdWNjZXNzZnVsIHJlc29sdXRpb24sIHRoZSBhZGRyZXNzIGZhbWlseSBhbmQgYWRkcmVzcworICoJCSAgICBwYXJ0IG9mIHRoaXMgc29ja2V0IGFkZHJlc3Mgd2lsbCBiZSBmaWxsZWQgdXAgd2l0aCB0aGUgaG9zdAorICoJCSAgICBJUCBhZGRyZXNzLCBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuIE90aGVyIHBhcnRzIG9mIHRoZSBzb2NrZXQKKyAqCQkgICAgYWRkcmVzcyBzaG91bGQgYmUgaWdub3JlZC4KKyAqIEBwYXJhbSBhbGxvd19yZXNvbHZlICAgSWYgXGEgZHN0IG1heSBjb250YWluIGhvc3RuYW1lIChpbnN0ZWFkIG9mIElQCisgKiAJCSAgICBhZGRyZXNzKSwgc3BlY2lmeSB3aGV0aGVyIGhvc3RuYW1lIHJlc29sdXRpb24gc2hvdWxkCisgKiAJICAgICAgICAgICAgYmUgcGVyZm9ybWVkLiBJZiBub3QsIGRlZmF1bHQgaW50ZXJmYWNlIGFkZHJlc3Mgd2lsbAorICogIAkJICAgIGJlIHJldHVybmVkLgorICogQHBhcmFtIHBfZHN0X2FkZHIgSWYgbm90IE5VTEwsIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggdGhlIElQIGFkZHJlc3Mgb2YKKyAqIAkJICAgIHRoZSBkZXN0aW5hdGlvbiBob3N0LgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcywgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dldGlwaW50ZXJmYWNlKGludCBhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3N0cl90ICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zb2NrYWRkciAqaXRmX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9ib29sX3QgYWxsb3dfcmVzb2x2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NvY2thZGRyICpwX2RzdF9hZGRyKTsKKworLyoqCisgKiBHZXQgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGRlZmF1bHQgaW50ZXJmYWNlLiBEZWZhdWx0IGludGVyZmFjZSBpcyB0aGUKKyAqIGludGVyZmFjZSBvZiB0aGUgZGVmYXVsdCByb3V0ZS4KKyAqCisgKiBAcGFyYW0gYWYJICAgIFRoZSBkZXNpcmVkIGFkZHJlc3MgZmFtaWx5IHRvIHF1ZXJ5LiBWYWxpZCB2YWx1ZXMKKyAqCQkgICAgYXJlIHBqX0FGX0lORVQoKSBvciBwal9BRl9JTkVUNigpLgorICogQHBhcmFtIGFkZHIgICAgICBPbiBzdWNjZXNzZnVsIHJlc29sdXRpb24sIHRoZSBhZGRyZXNzIGZhbWlseSBhbmQgYWRkcmVzcworICoJCSAgICBwYXJ0IG9mIHRoaXMgc29ja2V0IGFkZHJlc3Mgd2lsbCBiZSBmaWxsZWQgdXAgd2l0aCB0aGUgaG9zdAorICoJCSAgICBJUCBhZGRyZXNzLCBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuIE90aGVyIHBhcnRzIG9mIHRoZSBzb2NrZXQKKyAqCQkgICAgYWRkcmVzcyBhcmUgdW50b3VjaGVkLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcywgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dldGRlZmF1bHRpcGludGVyZmFjZShpbnQgYWYsCisJCQkJCSAgICAgIHBqX3NvY2thZGRyICphZGRyKTsKKworCisvKioKKyAqIFRoaXMgZnVuY3Rpb24gdHJhbnNsYXRlcyB0aGUgbmFtZSBvZiBhIHNlcnZpY2UgbG9jYXRpb24gKGZvciBleGFtcGxlLCAKKyAqIGEgaG9zdCBuYW1lKSBhbmQgcmV0dXJucyBhIHNldCBvZiBhZGRyZXNzZXMgYW5kIGFzc29jaWF0ZWQgaW5mb3JtYXRpb24KKyAqIHRvIGJlIHVzZWQgaW4gY3JlYXRpbmcgYSBzb2NrZXQgd2l0aCB3aGljaCB0byBhZGRyZXNzIHRoZSBzcGVjaWZpZWQgCisgKiBzZXJ2aWNlLgorICoKKyAqIEBwYXJhbSBhZgkgICAgVGhlIGRlc2lyZWQgYWRkcmVzcyBmYW1pbHkgdG8gcXVlcnkuIFZhbGlkIHZhbHVlcworICoJCSAgICBhcmUgcGpfQUZfSU5FVCgpLCBwal9BRl9JTkVUNigpLCBvciBwal9BRl9VTlNQRUMoKS4KKyAqIEBwYXJhbSBuYW1lCSAgICBEZXNjcmlwdGl2ZSBuYW1lIG9yIGFuIGFkZHJlc3Mgc3RyaW5nLCBzdWNoIGFzIGhvc3QKKyAqCQkgICAgbmFtZS4KKyAqIEBwYXJhbSBjb3VudAkgICAgT24gaW5wdXQsIGl0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluCisgKgkJICAgIFxhIGFpIGFycmF5LiBPbiBvdXRwdXQsIHRoaXMgd2lsbCBiZSBzZXQgd2l0aCB0aGUKKyAqCQkgICAgbnVtYmVyIG9mIGFkZHJlc3MgaW5mb3JtYXRpb25zIGZvdW5kIGZvciB0aGUKKyAqCQkgICAgc3BlY2lmaWVkIG5hbWUuCisgKiBAcGFyYW0gYWkJICAgIEFycmF5IG9mIGFkZHJlc3MgaW5mbyB0byBiZSBmaWxsZWQgd2l0aCB0aGUgaW5mb3JtYXRpb24KKyAqCQkgICAgYWJvdXQgdGhlIGhvc3QuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzLCBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZ2V0YWRkcmluZm8oaW50IGFmLCBjb25zdCBwal9zdHJfdCAqbmFtZSwKKwkJCQkgICAgdW5zaWduZWQgKmNvdW50LCBwal9hZGRyaW5mbyBhaVtdKTsKKworCisKKy8qKiBAfSAqLworCitQSl9FTkRfREVDTAorCisjZW5kaWYJLyogX19QSl9BRERSX1JFU09MVl9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9hcnJheS5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9hcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTM3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2FycmF5LmgKQEAgLTAsMCArMSw5NiBAQAorLyogJElkOiBhcnJheS5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQVJSQVlfSF9fCisjZGVmaW5lIF9fUEpfQVJSQVlfSF9fCisKKy8qKgorICogQGZpbGUgYXJyYXkuaAorICogQGJyaWVmIFBKTElCIEFycmF5IGhlbHBlci4KKyAqLworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisKK1BKX0JFR0lOX0RFQ0wKKworLyoqCisgKiBAZGVmZ3JvdXAgUEpfQVJSQVkgQXJyYXkgaGVscGVyLgorICogQGluZ3JvdXAgUEpfRFMKKyAqIEB7CisgKgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgaGVscGVyIHRvIG1hbmlwdWxhdGUgYXJyYXkgb2YgZWxlbWVudHMgb2YgYW55IHNpemUuCisgKiBJdCBwcm92aWRlcyBtb3N0IHVzZWQgYXJyYXkgb3BlcmF0aW9ucyBzdWNoIGFzIGluc2VydCwgZXJhc2UsIGFuZCBzZWFyY2guCisgKi8KKworLyoqCisgKiBJbnNlcnQgdmFsdWUgdG8gdGhlIGFycmF5IGF0IHRoZSBnaXZlbiBwb3NpdGlvbiwgYW5kIHJlYXJyYW5nZSB0aGUKKyAqIHJlbWFpbmluZyBub2RlcyBhZnRlciB0aGUgcG9zaXRpb24uCisgKgorICogQHBhcmFtIGFycmF5CSAgICB0aGUgYXJyYXkuCisgKiBAcGFyYW0gZWxlbV9zaXplIHRoZSBzaXplIG9mIHRoZSBpbmRpdmlkdWFsIGVsZW1lbnQuCisgKiBAcGFyYW0gY291bnQJICAgIHRoZSBDVVJSRU5UIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYXJyYXkuCisgKiBAcGFyYW0gcG9zCSAgICB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIG5ldyBlbGVtZW50IGlzIHB1dC4KKyAqIEBwYXJhbSB2YWx1ZQkgICAgdGhlIHZhbHVlIHRvIGNvcHkgdG8gdGhlIG5ldyBlbGVtZW50LgorICovCitQSl9ERUNMKHZvaWQpIHBqX2FycmF5X2luc2VydCggdm9pZCAqYXJyYXksCisJCQkgICAgICAgdW5zaWduZWQgZWxlbV9zaXplLAorCQkJICAgICAgIHVuc2lnbmVkIGNvdW50LAorCQkJICAgICAgIHVuc2lnbmVkIHBvcywKKwkJCSAgICAgICBjb25zdCB2b2lkICp2YWx1ZSk7CisKKy8qKgorICogRXJhc2UgYSB2YWx1ZSBmcm9tIHRoZSBhcnJheSBhdCBnaXZlbiBwb3NpdGlvbiwgYW5kIHJlYXJyYW5nZSB0aGUgcmVtYWluaW5nCisgKiBlbGVtZW50cyBwb3N0IHRoZSBlcmFzZWQgZWxlbWVudC4KKyAqCisgKiBAcGFyYW0gYXJyYXkJICAgIHRoZSBhcnJheS4KKyAqIEBwYXJhbSBlbGVtX3NpemUgdGhlIHNpemUgb2YgdGhlIGluZGl2aWR1YWwgZWxlbWVudC4KKyAqIEBwYXJhbSBjb3VudAkgICAgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheS4KKyAqIEBwYXJhbSBwb3MJICAgIHRoZSBpbmRleC9wb3NpdGlvbiB0byBkZWxldGUuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfYXJyYXlfZXJhc2UoIHZvaWQgKmFycmF5LAorCQkJICAgICAgdW5zaWduZWQgZWxlbV9zaXplLAorCQkJICAgICAgdW5zaWduZWQgY291bnQsCisJCQkgICAgICB1bnNpZ25lZCBwb3MpOworCisvKioKKyAqIFNlYXJjaCB0aGUgZmlyc3QgdmFsdWUgaW4gdGhlIGFycmF5IGFjY29yZGluZyB0byBtYXRjaGluZyBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0gYXJyYXkJICAgIHRoZSBhcnJheS4KKyAqIEBwYXJhbSBlbGVtX3NpemUgdGhlIGluZGl2aWR1YWwgc2l6ZSBvZiB0aGUgZWxlbWVudC4KKyAqIEBwYXJhbSBjb3VudAkgICAgdGhlIG51bWJlciBvZiBlbGVtZW50cy4KKyAqIEBwYXJhbSBtYXRjaGluZyAgdGhlIG1hdGNoaW5nIGZ1bmN0aW9uLCB3aGljaCBNVVNUIHJldHVybiBQSl9TVUNDRVNTIGlmIAorICoJCSAgICB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgbWF0Y2guCisgKiBAcGFyYW0gcmVzdWx0ICAgIHRoZSBwb2ludGVyIHRvIHRoZSB2YWx1ZSBmb3VuZC4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIGlmIHZhbHVlIGlzIGZvdW5kLCBvdGhlcndpc2UgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2FycmF5X2ZpbmQoICAgY29uc3Qgdm9pZCAqYXJyYXksIAorCQkJCSAgICAgIHVuc2lnbmVkIGVsZW1fc2l6ZSwgCisJCQkJICAgICAgdW5zaWduZWQgY291bnQsIAorCQkJCSAgICAgIHBqX3N0YXR1c190ICgqbWF0Y2hpbmcpKGNvbnN0IHZvaWQgKnZhbHVlKSwKKwkJCQkgICAgICB2b2lkICoqcmVzdWx0KTsKKworLyoqCisgKiBAfQorICovCisKK1BKX0VORF9ERUNMCisKKworI2VuZGlmCS8qIF9fUEpfQVJSQVlfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovYXNzZXJ0LmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2Fzc2VydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYTVkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2Fzc2VydC5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qICRJZDogYXNzZXJ0LmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9BU1NFUlRfSF9fCisjZGVmaW5lIF9fUEpfQVNTRVJUX0hfXworCisvKioKKyAqIEBmaWxlIGFzc2VydC5oCisgKiBAYnJpZWYgQXNzZXJ0aW9uIG1hY3JvIHBqX2Fzc2VydCgpLgorICovCisKKyNpbmNsdWRlIDxwai9jb25maWcuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvYXNzZXJ0Lmg+CisKKy8qKgorICogQGRlZmdyb3VwIHBqX2Fzc2VydCBBc3NlcnRpb24gTWFjcm8KKyAqIEBpbmdyb3VwIFBKX01JU0MKKyAqIEB7CisgKgorICogQXNzZXJ0aW9uIGFuZCBvdGhlciBoZWxwZXIgbWFjcm9zIGZvciBzYW5pdHkgY2hlY2tpbmcuCisgKi8KKworLyoqCisgKiBAaGlkZWluaXRpYWxpemVyCisgKiBDaGVjayBkdXJpbmcgZGVidWcgYnVpbGQgdGhhdCBhbiBleHByZXNzaW9uIGlzIHRydWUuIElmIHRoZSBleHByZXNzaW9uCisgKiBjb21wdXRlcyB0byBmYWxzZSBkdXJpbmcgcnVuLXRpbWUsIHRoZW4gdGhlIHByb2dyYW0gd2lsbCBzdG9wIGF0IHRoZQorICogb2ZmZW5kaW5nIHN0YXRlbWVudHMuCisgKiBGb3IgcmVsZWFzZSBidWlsZCwgdGhpcyBtYWNybyB3aWxsIG5vdCBkbyBhbnl0aGluZy4KKyAqCisgKiBAcGFyYW0gZXhwcgkgICAgVGhlIGV4cHJlc3Npb24gdG8gYmUgZXZhbHVhdGVkLgorICovCisjaWZuZGVmIHBqX2Fzc2VydAorIyAgIGRlZmluZSBwal9hc3NlcnQoZXhwcikgICBhc3NlcnQoZXhwcikKKyNlbmRpZgorCisKKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogSWYgI1BKX0VOQUJMRV9FWFRSQV9DSEVDSyBpcyBkZWNsYXJlZCBhbmQgdGhlIHZhbHVlIGlzIG5vbi16ZXJvLCB0aGVuIAorICogI1BKX0FTU0VSVF9SRVRVUk4gbWFjcm8gd2lsbCBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBpbiBAYSBleHByIGR1cmluZworICogcnVuLXRpbWUuIElmIHRoZSBleHByZXNzaW9uIHlpZWxkcyBmYWxzZSwgYXNzZXJ0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkCisgKiBhbmQgdGhlIGN1cnJlbnQgZnVuY3Rpb24gd2lsbCByZXR1cm4gd2l0aCB0aGUgc3BlY2lmaWVkIHJldHVybiB2YWx1ZS4KKyAqCisgKiBJZiAjUEpfRU5BQkxFX0VYVFJBX0NIRUNLIGlzIG5vdCBkZWNsYXJlZCBvciBpcyB6ZXJvLCB0aGVuIG5vIHJ1bi10aW1lCisgKiBjaGVja2luZyB3aWxsIGJlIHBlcmZvcm1lZC4gVGhlIG1hY3JvIHNpbXBseSBldmFsdWF0ZXMgdG8gcGpfYXNzZXJ0KGV4cHIpLgorICovCisjaWYgZGVmaW5lZChQSl9FTkFCTEVfRVhUUkFfQ0hFQ0spICYmIFBKX0VOQUJMRV9FWFRSQV9DSEVDSyAhPSAwCisjICAgZGVmaW5lIFBKX0FTU0VSVF9SRVRVUk4oZXhwcixyZXR2YWwpICAgIFwKKwkgICAgZG8geyBcCisJCWlmICghKGV4cHIpKSB7IHBqX2Fzc2VydChleHByKTsgcmV0dXJuIHJldHZhbDsgfSBcCisJICAgIH0gd2hpbGUgKDApCisjZWxzZQorIyAgIGRlZmluZSBQSl9BU1NFUlRfUkVUVVJOKGV4cHIscmV0dmFsKSAgICBwal9hc3NlcnQoZXhwcikKKyNlbmRpZgorCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIElmICNQSl9FTkFCTEVfRVhUUkFfQ0hFQ0sgaXMgZGVjbGFyZWQgYW5kIG5vbi16ZXJvLCB0aGVuIAorICogI1BKX0FTU0VSVF9PTl9GQUlMIG1hY3JvIHdpbGwgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gaW4gQGEgZXhwciBkdXJpbmcKKyAqIHJ1bi10aW1lLiBJZiB0aGUgZXhwcmVzc2lvbiB5aWVsZHMgZmFsc2UsIGFzc2VydGlvbiB3aWxsIGJlIHRyaWdnZXJlZAorICogYW5kIEBhIGV4ZWNfb25fZmFpbCB3aWxsIGJlIGV4ZWN1dGVkLgorICoKKyAqIElmICNQSl9FTkFCTEVfRVhUUkFfQ0hFQ0sgaXMgbm90IGRlY2xhcmVkIG9yIGlzIHplcm8sIHRoZW4gbm8gcnVuLXRpbWUKKyAqIGNoZWNraW5nIHdpbGwgYmUgcGVyZm9ybWVkLiBUaGUgbWFjcm8gc2ltcGx5IGV2YWx1YXRlcyB0byBwal9hc3NlcnQoZXhwcikuCisgKi8KKyNpZiBkZWZpbmVkKFBKX0VOQUJMRV9FWFRSQV9DSEVDSykgJiYgUEpfRU5BQkxFX0VYVFJBX0NIRUNLICE9IDAKKyMgICBkZWZpbmUgUEpfQVNTRVJUX09OX0ZBSUwoZXhwcixleGVjX29uX2ZhaWwpICAgIFwKKwkgICAgZG8geyBcCisJCXBqX2Fzc2VydChleHByKTsgXAorCQlpZiAoIShleHByKSkgZXhlY19vbl9mYWlsOyBcCisJICAgIH0gd2hpbGUgKDApCisjZWxzZQorIyAgIGRlZmluZSBQSl9BU1NFUlRfT05fRkFJTChleHByLGV4ZWNfb25fZmFpbCkgICAgcGpfYXNzZXJ0KGV4cHIpCisjZW5kaWYKKworLyoqIEB9ICovCisKKyNlbmRpZgkvKiBfX1BKX0FTU0VSVF9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9hc3NlcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWI1Yzk2Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvYXNzZXJ0LmgKQEAgLTAsMCArMSw0NCBAQAorLyogJElkOiBhc3NlcnQuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9BU1NFUlRfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX0FTU0VSVF9IX18KKworLyoqCisgKiBAZmlsZSBhc3NlcnQuaAorICogQGJyaWVmIFByb3ZpZGVzIGFzc2VydCgpIG1hY3JvLgorICovCisKKyNpZiBkZWZpbmVkKFBKX0hBU19BU1NFUlRfSCkgJiYgUEpfSEFTX0FTU0VSVF9IICE9IDAKKyMgIGluY2x1ZGUgPGFzc2VydC5oPgorCisjZWxpZiBkZWZpbmVkKFBKX0xJTlVYX0tFUk5FTCkgJiYgUEpfTElOVVhfS0VSTkVMICE9IDAKKyMgIGRlZmluZSBhc3NlcnQoZXhwcikgZG8geyBcCisJCQlpZiAoIShleHByKSkgXAorCQkJICBwcmludGsoIiEhQVNTRVJUSU9OIEZBSUxFRDogWyVzOiVkXSBcIiIgI2V4cHIgIlwiXG4iLFwKKwkJCQkgX19GSUxFX18sIF9fTElORV9fKTsgXAorCQkgICAgICAgfSB3aGlsZSAoMCkKKworI2Vsc2UKKyMgIHdhcm5pbmcgImFzc2VydCgpIGlzIG5vdCBpbXBsZW1lbnRlZCIKKyMgIGRlZmluZSBhc3NlcnQoZXhwcikKKyNlbmRpZgorCisjZW5kaWYJLyogX19QSl9DT01QQVRfQVNTRVJUX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9jY19hcm1jYy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvY2NfYXJtY2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzc1ZTJhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvY2NfYXJtY2MuaApAQCAtMCwwICsxLDU4IEBACisvKiAkSWQ6IGNjX2FybWNjLmggNDYyNCAyMDEzLTEwLTIxIDA2OjM3OjMwWiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX0NDX0FSTUNDX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9DQ19BUk1DQ19IX18KKworLyoqCisgKiBAZmlsZSBjY19hcm1jYy5oCisgKiBAYnJpZWYgRGVzY3JpYmVzIEFSTUNDIGNvbXBpbGVyIHNwZWNpZmljcy4KKyAqLworCisjaWZuZGVmIF9fQVJNQ0NfXworIyAgZXJyb3IgIlRoaXMgZmlsZSBpcyBvbmx5IGZvciBhcm1jYyEiCisjZW5kaWYKKworI2RlZmluZSBQSl9DQ19OQU1FCQkiYXJtY2MiCisjZGVmaW5lIFBKX0NDX1ZFUl8xICAgICAgICAgICAgIChfX0FSTUNDX1ZFUlNJT04vMTAwMDAwKQorI2RlZmluZSBQSl9DQ19WRVJfMiAgICAgICAgICAgICAoKF9fQVJNQ0NfVkVSU0lPTiUxMDAwMDApLzEwMDAwKQorI2RlZmluZSBQSl9DQ19WRVJfMyAgICAgICAgICAgICAoX19BUk1DQ19WRVJTSU9OJTEwMDAwKQorCisjaWZkZWYgX19jcGx1c3BsdXMKKyMgIGRlZmluZSBQSl9JTkxJTkVfU1BFQ0lGSUVSCWlubGluZQorI2Vsc2UKKyMgIGRlZmluZSBQSl9JTkxJTkVfU1BFQ0lGSUVSCXN0YXRpYyBfX2lubGluZQorI2VuZGlmCisKKyNkZWZpbmUgUEpfVEhSRUFEX0ZVTkMJCisjZGVmaW5lIFBKX05PUkVUVVJOCQkKKyNkZWZpbmUgUEpfQVRUUl9OT1JFVFVSTglfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKQorI2RlZmluZSBQSl9BVFRSX01BWV9BTElBUwlfX2F0dHJpYnV0ZV9fICgoX19tYXlfYWxpYXNfXykpCisKKyNkZWZpbmUgUEpfSEFTX0lOVDY0CQkxCisKK3R5cGVkZWYgbG9uZyBsb25nIHBqX2ludDY0X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBwal91aW50NjRfdDsKKworI2RlZmluZSBQSl9JTlQ2NF9GTVQJCSJMIgorCisjZGVmaW5lIFBKX1VOUkVBQ0hFRCh4KQkgICAgCQorCisjZW5kaWYJLyogX19QSl9DT01QQVRfQ0NfQVJNQ0NfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2NjX2NvZGV3LmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9jY19jb2Rldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNmViNGEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9jY19jb2Rldy5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qICRJZDogY2NfY29kZXcuaCA0NjI0IDIwMTMtMTAtMjEgMDY6Mzc6MzBaIG1pbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfQ0NfQ09ERVdfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX0NDX0NPREVXX0hfXworCisvKioKKyAqIEBmaWxlIGNjX2NvZGV3LmgKKyAqIEBicmllZiBEZXNjcmliZXMgTWV0cm9XZXJrcyBDb2RlIFdhcnJpb3IgY29tcGlsZXIgc3BlY2lmaWNzLgorICovCisKKyNpZm5kZWYgX19NV0VSS1NfXworIyAgZXJyb3IgIlRoaXMgZmlsZSBpcyBvbmx5IGZvciBDb2RlIFdhcnJpb3IhIgorI2VuZGlmCisKKyNkZWZpbmUgUEpfQ0NfTkFNRQkJImNvZGV3YXJyaW9yIgorI2RlZmluZSBQSl9DQ19WRVJfMQkJKChfX01XRVJLU19fICYgMHhGMDAwKSA+PiAxMikKKyNkZWZpbmUgUEpfQ0NfVkVSXzIJCSgoX19NV0VSS1NfXyAmIDB4MEYwMCkgPj4gOCkKKyNkZWZpbmUgUEpfQ0NfVkVSXzMJCSgoX19NV0VSS1NfXyAmIDB4RkYpKQorCisKKyNkZWZpbmUgUEpfSU5MSU5FX1NQRUNJRklFUglzdGF0aWMgaW5saW5lCisjZGVmaW5lIFBKX1RIUkVBRF9GVU5DCQorI2RlZmluZSBQSl9OT1JFVFVSTgkJCisjZGVmaW5lIFBKX0FUVFJfTk9SRVRVUk4JCisjZGVmaW5lIFBKX0FUVFJfTUFZX0FMSUFTCQorCisjZGVmaW5lIFBKX0hBU19JTlQ2NAkJMQorCit0eXBlZGVmIGxvbmcgbG9uZyBwal9pbnQ2NF90OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgcGpfdWludDY0X3Q7CisKKyNkZWZpbmUgUEpfSU5UNjQodmFsKQkJdmFsIyNMTAorI2RlZmluZSBQSl9VSU5UNjQodmFsKQkJdmFsIyNMTFUKKyNkZWZpbmUgUEpfSU5UNjRfRk1UCQkiTCIKKworI2RlZmluZSBQSl9VTlJFQUNIRUQoeCkJICAgIAkKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX0NDX0NPREVXX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2NjX2djYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMTE3MjgKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9jY19nY2MuaApAQCAtMCwwICsxLDgwIEBACisvKiAkSWQ6IGNjX2djYy5oIDQ3MDQgMjAxNC0wMS0xNiAwNTozMDo0NlogbWluZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9DQ19HQ0NfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX0NDX0dDQ19IX18KKworLyoqCisgKiBAZmlsZSBjY19nY2MuaAorICogQGJyaWVmIERlc2NyaWJlcyBHQ0MgY29tcGlsZXIgc3BlY2lmaWNzLgorICovCisKKyNpZm5kZWYgX19HTlVDX18KKyMgIGVycm9yICJUaGlzIGZpbGUgaXMgb25seSBmb3IgZ2NjISIKKyNlbmRpZgorCisjZGVmaW5lIFBKX0NDX05BTUUJCSJnY2MiCisjZGVmaW5lIFBKX0NDX1ZFUl8xCQlfX0dOVUNfXworI2RlZmluZSBQSl9DQ19WRVJfMgkJX19HTlVDX01JTk9SX18KKworLyogX19HTlVDX1BBVENITEVWRUxfXyBkb2Vzbid0IGV4aXN0IGluIGdjYy0yLjl4LnggKi8KKyNpZmRlZiBfX0dOVUNfUEFUQ0hMRVZFTF9fCisjICAgZGVmaW5lIFBKX0NDX1ZFUl8zCQlfX0dOVUNfUEFUQ0hMRVZFTF9fCisjZWxzZQorIyAgIGRlZmluZSBQSl9DQ19WRVJfMwkJMAorI2VuZGlmCisKKworCisjZGVmaW5lIFBKX1RIUkVBRF9GVU5DCQorI2RlZmluZSBQSl9OT1JFVFVSTgkJCisKKyNkZWZpbmUgUEpfSEFTX0lOVDY0CQkxCisKKyNpZmRlZiBfX1NUUklDVF9BTlNJX18KKyAgI2luY2x1ZGUgPGludHR5cGVzLmg+IAorICB0eXBlZGVmIGludDY0X3QJCXBqX2ludDY0X3Q7CisgIHR5cGVkZWYgdWludDY0X3QJCXBqX3VpbnQ2NF90OworICAjZGVmaW5lIFBKX0lOTElORV9TUEVDSUZJRVIJc3RhdGljIF9faW5saW5lCisgICNkZWZpbmUgUEpfQVRUUl9OT1JFVFVSTgkKKyAgI2RlZmluZSBQSl9BVFRSX01BWV9BTElBUwkKKyNlbHNlCisgIHR5cGVkZWYgbG9uZyBsb25nCQlwal9pbnQ2NF90OworICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZwlwal91aW50NjRfdDsKKyAgI2RlZmluZSBQSl9JTkxJTkVfU1BFQ0lGSUVSCXN0YXRpYyBpbmxpbmUKKyAgI2RlZmluZSBQSl9BVFRSX05PUkVUVVJOCV9fYXR0cmlidXRlX18gKChub3JldHVybikpCisgICNkZWZpbmUgUEpfQVRUUl9NQVlfQUxJQVMJX19hdHRyaWJ1dGVfXygoX19tYXlfYWxpYXNfXykpCisjZW5kaWYKKworI2RlZmluZSBQSl9JTlQ2NCh2YWwpCQl2YWwjI0xMCisjZGVmaW5lIFBKX1VJTlQ2NCh2YWwpCQl2YWwjI1VMTAorI2RlZmluZSBQSl9JTlQ2NF9GTVQJCSJMIgorCisKKyNpZmRlZiBfX0dMSUJDX18KKyMgICBkZWZpbmUgUEpfSEFTX0JaRVJPCQkxCisjZW5kaWYKKworI2RlZmluZSBQSl9VTlJFQUNIRUQoeCkJICAgIAkKKworI2RlZmluZSBQSl9BTElHTl9EQVRBKGRlY2xhcmF0aW9uLCBhbGlnbm1lbnQpIGRlY2xhcmF0aW9uIF9fYXR0cmlidXRlX18oKGFsaWduZWQgKGFsaWdubWVudCkpKQorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9DQ19HQ0NfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2NjX2djY2UuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2NjX2djY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmFmY2EwCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvY2NfZ2NjZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qICRJZDogY2NfZ2NjZS5oIDQ2MjQgMjAxMy0xMC0yMSAwNjozNzozMFogbWluZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9DQ19HQ0NFX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9DQ19HQ0NFX0hfXworCisvKioKKyAqIEBmaWxlIGNjX2djY2UuaAorICogQGJyaWVmIERlc2NyaWJlcyBHQ0NFIGNvbXBpbGVyIHNwZWNpZmljcy4KKyAqLworCisjaWZuZGVmIF9fR0NDRV9fCisjICBlcnJvciAiVGhpcyBmaWxlIGlzIG9ubHkgZm9yIGdjY2UhIgorI2VuZGlmCisKKyNkZWZpbmUgUEpfQ0NfTkFNRQkJImdjY2UiCisjZGVmaW5lIFBKX0NDX1ZFUl8xCQlfX0dDQ0VfXworI2RlZmluZSBQSl9DQ19WRVJfMgkJX19HQ0NFX01JTk9SX18KKyNkZWZpbmUgUEpfQ0NfVkVSXzMJCV9fR0NDRV9QQVRDSExFVkVMX18KKworCisjZGVmaW5lIFBKX0lOTElORV9TUEVDSUZJRVIJc3RhdGljIGlubGluZQorI2RlZmluZSBQSl9USFJFQURfRlVOQwkKKyNkZWZpbmUgUEpfTk9SRVRVUk4JCQorI2RlZmluZSBQSl9BVFRSX05PUkVUVVJOCV9fYXR0cmlidXRlX18gKChub3JldHVybikpCisjZGVmaW5lIFBKX0FUVFJfTUFZX0FMSUFTCV9fYXR0cmlidXRlX18gKChfX21heV9hbGlhc19fKSkKKworI2RlZmluZSBQSl9IQVNfSU5UNjQJCTEKKwordHlwZWRlZiBsb25nIGxvbmcgcGpfaW50NjRfdDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHBqX3VpbnQ2NF90OworCisjZGVmaW5lIFBKX0lOVDY0KHZhbCkJCXZhbCMjTEwKKyNkZWZpbmUgUEpfVUlOVDY0KHZhbCkJCXZhbCMjTExVCisjZGVmaW5lIFBKX0lOVDY0X0ZNVAkJIkwiCisKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX0NDX0dDQ0VfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2NjX21zdmMuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2NjX21zdmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWZkNTI2Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvY2NfbXN2Yy5oCkBAIC0wLDAgKzEsODggQEAKKy8qICRJZDogY2NfbXN2Yy5oIDQ2MjQgMjAxMy0xMC0yMSAwNjozNzozMFogbWluZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9DQ19NU1ZDX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9DQ19NU1ZDX0hfXworCisvKioKKyAqIEBmaWxlIGNjX21zdmMuaAorICogQGJyaWVmIERlc2NyaWJlcyBNaWNyb3NvZnQgVmlzdWFsIEMgY29tcGlsZXIgc3BlY2lmaWNzLgorICovCisKKyNpZm5kZWYgX01TQ19WRVIKKyMgIGVycm9yICJUaGlzIGhlYWRlciBmaWxlIGlzIG9ubHkgZm9yIFZpc3VhbCBDIGNvbXBpbGVyISIKKyNlbmRpZgorCisjZGVmaW5lIFBKX0NDX05BTUUJICAgICJtc3ZjIgorI2RlZmluZSBQSl9DQ19WRVJfMQkgICAgKF9NU0NfVkVSLzEwMCkKKyNkZWZpbmUgUEpfQ0NfVkVSXzIJICAgIChfTVNDX1ZFUiUxMDApCisjZGVmaW5lIFBKX0NDX1ZFUl8zCSAgICAwCisKKy8qIERpc2FibGUgQ1JUIGRlcHJlY2F0aW9uIHdhcm5pbmdzLiAqLworI2lmIFBKX0NDX1ZFUl8xID49IDggJiYgIWRlZmluZWQoX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFKQorIyAgIGRlZmluZSBfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUKKyNlbmRpZgorI2lmIFBKX0NDX1ZFUl8xID49IDggJiYgIWRlZmluZWQoX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MpCisjICAgZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisgICAgLyogVGhlIGFib3ZlIGRvZXNuJ3Qgc2VlbSB0byB3b3JrLCBhdCBsZWFzdCBvbiBWUzIwMDUsIHNvIGxldHMgdXNlCisgICAgICogdGhpcyBjb25zdHJ1Y3QgYXMgd2VsbC4KKyAgICAgKi8KKyMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0OTk2KQorI2VuZGlmCisKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTI3KSAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50CisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDYxMSkgLy8gbm90IHdpc2UgdG8gbWl4IHNldGptcCB3aXRoIEMrKworI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTQpIC8vIHVucmVmLiBpbmxpbmUgZnVuY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZAorI2lmZGVmIE5ERUJVRworIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMikgLy8gdW5yZWFjaGFibGUgY29kZQorIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcxMCkgLy8gZnVuY3Rpb24gaXMgbm90IGlubGluZWQuCisjICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzExKSAvLyBmdW5jdGlvbiBzZWxlY3RlZCBmb3IgYXV0byBpbmxpbmUgZXhwYW5zaW9uCisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjICBkZWZpbmUgUEpfSU5MSU5FX1NQRUNJRklFUglpbmxpbmUKKyNlbHNlCisjICBkZWZpbmUgUEpfSU5MSU5FX1NQRUNJRklFUglzdGF0aWMgX19pbmxpbmUKKyNlbmRpZgorCisjZGVmaW5lIFBKX0VYUE9SVF9ERUNMX1NQRUNJRklFUiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNkZWZpbmUgUEpfRVhQT1JUX0RFRl9TUEVDSUZJRVIJICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2RlZmluZSBQSl9JTVBPUlRfREVDTF9TUEVDSUZJRVIgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisKKyNkZWZpbmUgUEpfVEhSRUFEX0ZVTkMJCisjZGVmaW5lIFBKX05PUkVUVVJOCQlfX2RlY2xzcGVjKG5vcmV0dXJuKQorI2RlZmluZSBQSl9BVFRSX05PUkVUVVJOCQorI2RlZmluZSBQSl9BVFRSX01BWV9BTElBUwkKKworI2RlZmluZSBQSl9IQVNfSU5UNjQJMQorCit0eXBlZGVmIF9faW50NjQgcGpfaW50NjRfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBwal91aW50NjRfdDsKKworI2RlZmluZSBQSl9JTlQ2NCh2YWwpCQl2YWwjI2k2NAorI2RlZmluZSBQSl9VSU5UNjQodmFsKQkJdmFsIyN1aTY0CisjZGVmaW5lIFBKX0lOVDY0X0ZNVAkJIkk2NCIKKworI2RlZmluZSBQSl9VTlJFQUNIRUQoeCkJICAgIAkKKworI2RlZmluZSBQSl9BTElHTl9EQVRBKGRlY2xhcmF0aW9uLCBhbGlnbm1lbnQpIF9fZGVjbHNwZWMoYWxpZ24oYWxpZ25tZW50KSkgZGVjbGFyYXRpb24KKworCisjZW5kaWYJLyogX19QSl9DT01QQVRfQ0NfTVNWQ19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvY2NfbXdjYy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvY2NfbXdjYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZGIxNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9jY19td2NjLmgKQEAgLTAsMCArMSw1NiBAQAorLyogJElkOiBjY19td2NjLmggNDYyNCAyMDEzLTEwLTIxIDA2OjM3OjMwWiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX0NDX01XQ0NfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX0NDX01XQ0NfSF9fCisKKy8qKgorICogQGZpbGUgY2NfbXdjYy5oCisgKiBAYnJpZWYgRGVzY3JpYmVzIE1XQ0MgY29tcGlsZXIgc3BlY2lmaWNzLgorICovCisKKyNpZm5kZWYgX19DVzMyX18KKyMgIGVycm9yICJUaGlzIGZpbGUgaXMgb25seSBmb3IgbXdjYyEiCisjZW5kaWYKKworI2RlZmluZSBQSl9DQ19OQU1FCQkibXdjYzMyc3ltIgorI2RlZmluZSBQSl9DQ19WRVJfMQkJMQorI2RlZmluZSBQSl9DQ19WRVJfMgkJMAorI2RlZmluZSBQSl9DQ19WRVJfMwkJMAorCisKKyNkZWZpbmUgUEpfSU5MSU5FX1NQRUNJRklFUglzdGF0aWMgaW5saW5lCisjZGVmaW5lIFBKX1RIUkVBRF9GVU5DCQorI2RlZmluZSBQSl9OT1JFVFVSTgkJCisjZGVmaW5lIFBKX0FUVFJfTk9SRVRVUk4JX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSkKKyNkZWZpbmUgUEpfQVRUUl9NQVlfQUxJQVMJCisKKyNkZWZpbmUgUEpfSEFTX0lOVDY0CQkxCisKK3R5cGVkZWYgbG9uZyBsb25nIHBqX2ludDY0X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBwal91aW50NjRfdDsKKworI2RlZmluZSBQSl9JTlQ2NCh2YWwpCQl2YWwjI0xMCisjZGVmaW5lIFBKX1VJTlQ2NCh2YWwpCQl2YWwjI0xMVQorI2RlZmluZSBQSl9JTlQ2NF9GTVQJCSJMIgorCisjZGVmaW5lIFBKX1VOUkVBQ0hFRCh4KQkgICAgCQorCisjZW5kaWYJLyogX19QSl9DT01QQVRfQ0NfTVdDQ19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvY3R5cGUuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc5YTFhMAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2N0eXBlLmgKQEAgLTAsMCArMSw0OSBAQAorLyogJElkOiBjdHlwZS5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX0NUWVBFX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9DVFlQRV9IX18KKworLyoqCisgKiBAZmlsZSBjdHlwZS5oCisgKiBAYnJpZWYgUHJvdmlkZXMgY3R5cGUgZnVuY3Rpb24gZmFtaWx5LgorICovCisKKyNpZiBkZWZpbmVkKFBKX0hBU19DVFlQRV9IKSAmJiBQSl9IQVNfQ1RZUEVfSCAhPSAwCisjICBpbmNsdWRlIDxjdHlwZS5oPgorI2Vsc2UKKyMgIGRlZmluZSBpc2FsbnVtKGMpCSAgICAoaXNhbHBoYShjKSB8fCBpc2RpZ2l0KGMpKQorIyAgZGVmaW5lIGlzYWxwaGEoYykJICAgIChpc2xvd2VyKGMpIHx8IGlzdXBwZXIoYykpCisjICBkZWZpbmUgaXNhc2NpaShjKQkgICAgKCgodW5zaWduZWQgY2hhcikoYykpPD0weDdmKQorIyAgZGVmaW5lIGlzZGlnaXQoYykJICAgICgoYyk+PScwJyAmJiAoYyk8PSc5JykKKyMgIGRlZmluZSBpc3NwYWNlKGMpCSAgICAoKGMpPT0nICcgIHx8IChjKT09J1x0JyB8fFwKKwkJCSAgICAgKGMpPT0nXG4nIHx8IChjKT09J1xyJyB8fCAoYyk9PSdcdicpCisjICBkZWZpbmUgaXNsb3dlcihjKQkgICAgKChjKT49J2EnICYmIChjKTw9J3onKQorIyAgZGVmaW5lIGlzdXBwZXIoYykJICAgICgoYyk+PSdBJyAmJiAoYyk8PSdaJykKKyMgIGRlZmluZSBpc3hkaWdpdChjKQkgICAgKGlzZGlnaXQoYykgfHwgKHRvbG93ZXIoYyk+PSdhJyYmdG9sb3dlcihjKTw9J2YnKSkKKyMgIGRlZmluZSB0b2xvd2VyKGMpCSAgICAoKChjKSA+PSAnQScgJiYgKGMpIDw9ICdaJykgPyAoYykrKCdhJy0nQScpIDogKGMpKQorIyAgZGVmaW5lIHRvdXBwZXIoYykJICAgICgoKGMpID49ICdhJyAmJiAoYykgPD0gJ3onKSA/IChjKS0oJ2EnLSdBJykgOiAoYykpCisjZW5kaWYKKworI2lmbmRlZiBpc2JsYW5rCisjICAgZGVmaW5lIGlzYmxhbmsoYykJICAgIChjPT0nICcgfHwgYz09J1x0JykKKyNlbmRpZgorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9DVFlQRV9IX18gKi8KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2Vycm5vLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZDhmZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9lcnJuby5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qICRJZDogZXJybm8uaCA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfRVJSTk9fSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX0VSUk5PX0hfXworCisjaWYgZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIgIT0gMCB8fCBcCisgICAgZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkgJiYgUEpfV0lOMzJfV0lOQ0UgIT0gMCB8fCBcCisgICAgZGVmaW5lZChQSl9XSU42NCkgJiYgUEpfV0lONjQgIT0gMAorCisgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHBqX29zX2Vycl90eXBlOworIyAgIGRlZmluZSBwal9nZXRfbmF0aXZlX29zX2Vycm9yKCkJICAgIEdldExhc3RFcnJvcigpCisjICAgZGVmaW5lIHBqX2dldF9uYXRpdmVfbmV0b3NfZXJyb3IoKQkgICAgV1NBR2V0TGFzdEVycm9yKCkKKworI2VsaWYgZGVmaW5lZChQSl9IQVNfRVJSTk9fVkFSKSAmJiBQSl9IQVNfRVJSTk9fVkFSIT0gMAorCisgICAgdHlwZWRlZiBpbnQgcGpfb3NfZXJyX3R5cGU7CisjICAgZGVmaW5lIHBqX2dldF9uYXRpdmVfb3NfZXJyb3IoKQkgICAgKGVycm5vKQorIyAgIGRlZmluZSBwal9nZXRfbmF0aXZlX25ldG9zX2Vycm9yKCkJICAgIChlcnJubykKKworI2Vsc2UKKworIyAgIGVycm9yICJQbGVhc2UgZGVmaW5lIGhvdyB0byBnZXQgZXJybm8gZm9yIHRoaXMgcGxhdGZvcm0gaGVyZSEiCisKKyNlbmRpZgorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9FUlJOT19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3Mzg5ZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qICRJZDogaGlnaF9wcmVjaXNpb24uaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9ISUdIX1BSRUNJU0lPTl9IX18KKyNkZWZpbmUgX19QSl9DT01QQVRfSElHSF9QUkVDSVNJT05fSF9fCisKKworI2lmIGRlZmluZWQoUEpfSEFTX0ZMT0FUSU5HX1BPSU5UKSAmJiBQSl9IQVNfRkxPQVRJTkdfUE9JTlQgIT0gMAorICAgIC8qCisgICAgICogVGhlIGZpcnN0IGNob2ljZSBmb3IgaGlnaCBwcmVjaXNpb24gbWF0aCBpcyB0byB1c2UgZG91YmxlLgorICAgICAqLworIyAgIGluY2x1ZGUgPG1hdGguaD4KKyAgICB0eXBlZGVmIGRvdWJsZSBwal9oaWdocHJlY190OworCisjICAgZGVmaW5lIFBKX0hJR0hQUkVDX1ZBTFVFX0lTX1pFUk8oYSkgICAgIChhPT0wKQorIyAgIGRlZmluZSBwal9oaWdocHJlY19tb2QoYSxiKSAgICAgICAgICAgICAoYT1mbW9kKGEsYikpCisKKyNlbGlmIGRlZmluZWQoUEpfTElOVVhfS0VSTkVMKSAmJiBQSl9MSU5VWF9LRVJORUwgIT0gMAorCisjICAgaW5jbHVkZSA8YXNtL2RpdjY0Lmg+CisgICAgCisgICAgdHlwZWRlZiBwal9pbnQ2NF90IHBqX2hpZ2hwcmVjX3Q7CisKKyMgICBkZWZpbmUgcGpfaGlnaHByZWNfZGl2KGExLGEyKSAgIGRvX2RpdihhMSxhMikKKyMgICBkZWZpbmUgcGpfaGlnaHByZWNfbW9kKGExLGEyKSAgIChhMT1kb19tb2QoYTEsIGEyKSkKKworICAgIFBKX0lOTElORShwal9pbnQ2NF90KSBkb19tb2QoIHBqX2ludDY0X3QgYTEsIHBqX2ludDY0X3QgYTIpCisgICAgeworCXJldHVybiBkb19kaXYoYTEsYTIpOworICAgIH0KKyAgICAKKyAgICAKKyNlbGlmIGRlZmluZWQoUEpfSEFTX0lOVDY0KSAmJiBQSl9IQVNfSU5UNjQgIT0gMAorICAgIC8qCisgICAgICogTmV4dCBjaG9pY2UgaXMgdG8gdXNlIDY0LWJpdCBhcml0aG1hdGljcy4KKyAgICAgKi8KKyAgICB0eXBlZGVmIHBqX2ludDY0X3QgcGpfaGlnaHByZWNfdDsKKworI2Vsc2UKKyMgICB3YXJuaW5nICJIaWdoIHByZWNpc2lvbiBtYXRoIGlzIG5vdCBhdmFpbGFibGUiCisKKyAgICAvKgorICAgICAqIExhc3QsIGZhbGxiYWNrIHRvIDMyLWJpdCBhcml0aG1ldGljcy4KKyAgICAgKi8KKyAgICB0eXBlZGVmIHBqX2ludDMyX3QgcGpfaGlnaHByZWNfdDsKKworI2VuZGlmCisKKy8qKgorICogQGRlZiBwal9oaWdocHJlY19tdWwKKyAqIHBqX2hpZ2hwcmVjX211bChhMSwgYTIpIC0gSGlnaCBQcmVjaXNpb24gTXVsdGlwbGljYXRpb24KKyAqIE11bHRpcGx5IGExIGFuZCBhMiwgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gYTEuCisgKi8KKyNpZm5kZWYgcGpfaGlnaHByZWNfbXVsCisjICAgZGVmaW5lIHBqX2hpZ2hwcmVjX211bChhMSxhMikgICAoYTEgPSBhMSAqIGEyKQorI2VuZGlmCisKKy8qKgorICogQGRlZiBwal9oaWdocHJlY19kaXYKKyAqIHBqX2hpZ2hwcmVjX2RpdihhMSwgYTIpIC0gSGlnaCBQcmVjaXNpb24gRGl2aXNpb24KKyAqIERpdmlkZSBhMiBmcm9tIGExLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiBhMS4KKyAqLworI2lmbmRlZiBwal9oaWdocHJlY19kaXYKKyMgICBkZWZpbmUgcGpfaGlnaHByZWNfZGl2KGExLGEyKSAgIChhMSA9IGExIC8gYTIpCisjZW5kaWYKKworLyoqCisgKiBAZGVmIHBqX2hpZ2hwcmVjX21vZAorICogcGpfaGlnaHByZWNfbW9kKGExLCBhMikgLSBIaWdoIFByZWNpc2lvbiBNb2R1bHVzCisgKiBHZXQgdGhlIG1vZHVsdXMgYTIgZnJvbSBhMSwgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gYTEuCisgKi8KKyNpZm5kZWYgcGpfaGlnaHByZWNfbW9kCisjICAgZGVmaW5lIHBqX2hpZ2hwcmVjX21vZChhMSxhMikgICAoYTEgPSBhMSAlIGEyKQorI2VuZGlmCisKKworLyoqCisgKiBAZGVmIFBKX0hJR0hQUkVDX1ZBTFVFX0lTX1pFUk8oYSkKKyAqIFRlc3QgaWYgdGhlIHNwZWNpZmllZCBoaWdoIHByZWNpc2lvbiB2YWx1ZSBpcyB6ZXJvLgorICovCisjaWZuZGVmIFBKX0hJR0hQUkVDX1ZBTFVFX0lTX1pFUk8KKyMgICBkZWZpbmUgUEpfSElHSFBSRUNfVkFMVUVfSVNfWkVSTyhhKSAgICAgKGE9PTApCisjZW5kaWYKKworCisjZW5kaWYJLyogX19QSl9DT01QQVRfSElHSF9QUkVDSVNJT05fSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21fYWxwaGEuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21fYWxwaGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTIyZjU0Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvbV9hbHBoYS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qICRJZDogbV9hbHBoYS5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX01fQUxQSEFfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX01fQUxQSEFfSF9fCisKKy8qKgorICogQGZpbGUgbV9hbHBoYS5oCisgKiBAYnJpZWYgRGVzY3JpYmVzIEFscGhhIHByb2Nlc3NvciBmYW1pbHkgc3BlY2lmaWNzLgorICovCisKKyNkZWZpbmUgUEpfTV9OQU1FCQkiYWxwaGEiCisKKyNkZWZpbmUgUEpfSEFTX1BFTlRJVU0JCTAKKyNkZWZpbmUgUEpfSVNfTElUVExFX0VORElBTgkxCisjZGVmaW5lIFBKX0lTX0JJR19FTkRJQU4JMAorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9NX0FMUEhBX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9tX2FybXY0LmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9tX2FybXY0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRkMmM4NAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21fYXJtdjQuaApAQCAtMCwwICsxLDM5IEBACisvKiAkSWQ6IG1fYXJtdjQuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9NX0FSTVY0X0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9NX0FSTVY0X0hfXworCisvKioKKyAqIEBmaWxlIG1fYXJtdjQuaAorICogQGJyaWVmIERlc2NyaWJlcyBBUk0gZmFtaWx5IHByb2Nlc3NvciBzcGVjaWZpY3MuCisgKi8KKworLyoKKyAqIFRoaXMgZmlsZSBjb3ZlcnMgUEpfTV9BUk1WNCBldGMuCisgKi8KKworI2RlZmluZSBQSl9NX05BTUUJCSJhcm12NCIKKworI2RlZmluZSBQSl9IQVNfUEVOVElVTQkJMAorI2RlZmluZSBQSl9JU19MSVRUTEVfRU5ESUFOCTEKKyNkZWZpbmUgUEpfSVNfQklHX0VORElBTgkwCisKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX01fQVJNVjRfSF9fICovCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21fYXV0by5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjN2M2MTQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaApAQCAtMCwwICsxLDYxIEBACisvKiBwamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaC4gIEdlbmVyYXRlZCBmcm9tIG1fYXV0by5oLmluIGJ5IGNvbmZpZ3VyZS4gICovCisvKiAkSWQ6IG1fYXV0by5oLmluIDMyOTUgMjAxMC0wOC0yNSAxMjo1MToyOVogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9NX0FVVE9fSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX01fQVVUT19IX18KKworLyoqCisgKiBAZmlsZSBtX2F1dG8uaAorICogQGJyaWVmIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHByb2Nlc3MgZGVmaW5pdGlvbiBmaWxlLgorICovCisKKy8qIE1hY2hpbmUgbmFtZSwgZmlsbGVkIGluIGJ5IGF1dG9jb25mIHNjcmlwdCAqLworI2RlZmluZSBQSl9NX05BTUUgImFybSIKKworLyogRW5kaWFubmVzcy4gSXQncyByZXBvcnRlZCBvbiBwanNpcCBsaXN0IG9uIDA5LzAyLzEzIHRoYXQgYXV0b2NvbmYKKyAqIGVuZGlhbm5lc3MgZGV0ZWN0aW9uIGZhaWxlZCBmb3IgdW5pdmVyc2FsIGJ1aWxkLCBzbyBzcGVjaWFsIGNhc2UKKyAqIGZvciBpdCBoZXJlLiBUaGFua3MgUnV1ZCBLbGF2ZXIgZm9yIHRoZSBmaXguCisgKi8KKyNpZmRlZiBQSl9EQVJXSU5PUworIyAgaWZkZWYgX19CSUdfRU5ESUFOX18KKyMgICAgZGVmaW5lIFdPUkRTX0JJR0VORElBTgkxCisjICBlbmRpZgorI2Vsc2UKKyAgICAvKiBFbmRpYW5uZXNzLCBhcyBkZXRlY3RlZCBieSBhdXRvY29uZiAqLworLyogIyAgdW5kZWYgV09SRFNfQklHRU5ESUFOICovCisjZW5kaWYKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorIyAgZGVmaW5lIFBKX0lTX0xJVFRMRV9FTkRJQU4JMAorIyAgZGVmaW5lIFBKX0lTX0JJR19FTkRJQU4JMQorI2Vsc2UKKyMgIGRlZmluZSBQSl9JU19MSVRUTEVfRU5ESUFOCTEKKyMgIGRlZmluZSBQSl9JU19CSUdfRU5ESUFOCTAKKyNlbmRpZgorCisKKy8qIFNwZWNpZnkgaWYgZmxvYXRpbmcgcG9pbnQgaXMgcHJlc2VudC9kZXNpcmVkICovCisjZGVmaW5lIFBKX0hBU19GTE9BVElOR19QT0lOVCAxCisKKy8qIERlcHJlY2F0ZWQgKi8KKyNkZWZpbmUgUEpfSEFTX1BFTlRJVU0JCTAKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX01fQVVUT19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmguaW4gYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9tX2F1dG8uaC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODc2M2VhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvbV9hdXRvLmguaW4KQEAgLTAsMCArMSw2MCBAQAorLyogJElkOiBtX2F1dG8uaC5pbiAzMjk1IDIwMTAtMDgtMjUgMTI6NTE6MjlaIGJlbm55bHAgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfTV9BVVRPX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9NX0FVVE9fSF9fCisKKy8qKgorICogQGZpbGUgbV9hdXRvLmgKKyAqIEBicmllZiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBwcm9jZXNzIGRlZmluaXRpb24gZmlsZS4KKyAqLworCisvKiBNYWNoaW5lIG5hbWUsIGZpbGxlZCBpbiBieSBhdXRvY29uZiBzY3JpcHQgKi8KKyN1bmRlZiBQSl9NX05BTUUKKworLyogRW5kaWFubmVzcy4gSXQncyByZXBvcnRlZCBvbiBwanNpcCBsaXN0IG9uIDA5LzAyLzEzIHRoYXQgYXV0b2NvbmYKKyAqIGVuZGlhbm5lc3MgZGV0ZWN0aW9uIGZhaWxlZCBmb3IgdW5pdmVyc2FsIGJ1aWxkLCBzbyBzcGVjaWFsIGNhc2UKKyAqIGZvciBpdCBoZXJlLiBUaGFua3MgUnV1ZCBLbGF2ZXIgZm9yIHRoZSBmaXguCisgKi8KKyNpZmRlZiBQSl9EQVJXSU5PUworIyAgaWZkZWYgX19CSUdfRU5ESUFOX18KKyMgICAgZGVmaW5lIFdPUkRTX0JJR0VORElBTgkxCisjICBlbmRpZgorI2Vsc2UKKyAgICAvKiBFbmRpYW5uZXNzLCBhcyBkZXRlY3RlZCBieSBhdXRvY29uZiAqLworIyAgdW5kZWYgV09SRFNfQklHRU5ESUFOCisjZW5kaWYKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorIyAgZGVmaW5lIFBKX0lTX0xJVFRMRV9FTkRJQU4JMAorIyAgZGVmaW5lIFBKX0lTX0JJR19FTkRJQU4JMQorI2Vsc2UKKyMgIGRlZmluZSBQSl9JU19MSVRUTEVfRU5ESUFOCTEKKyMgIGRlZmluZSBQSl9JU19CSUdfRU5ESUFOCTAKKyNlbmRpZgorCisKKy8qIFNwZWNpZnkgaWYgZmxvYXRpbmcgcG9pbnQgaXMgcHJlc2VudC9kZXNpcmVkICovCisjdW5kZWYgUEpfSEFTX0ZMT0FUSU5HX1BPSU5UCisKKy8qIERlcHJlY2F0ZWQgKi8KKyNkZWZpbmUgUEpfSEFTX1BFTlRJVU0JCTAKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX01fQVVUT19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvbV9pMzg2LmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9tX2kzODYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTY3ZDZmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvbV9pMzg2LmgKQEAgLTAsMCArMSwzNSBAQAorLyogJElkOiBtX2kzODYuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9NX2kzODZfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX01faTM4Nl9IX18KKworLyoqCisgKiBAZmlsZSBtX2kzODYuaAorICogQGJyaWVmIERlc2NyaWJlcyBJbnRlbCBpMzg2IGZhbWlseSBwcm9jZXNzb3Igc3BlY2lmaWNzLgorICovCisKKyNkZWZpbmUgUEpfTV9OQU1FCQkiaTM4NiIKKworI2RlZmluZSBQSl9IQVNfUEVOVElVTQkJMQorI2RlZmluZSBQSl9JU19MSVRUTEVfRU5ESUFOCTEKKyNkZWZpbmUgUEpfSVNfQklHX0VORElBTgkwCisKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX01faTM4Nl9IX18gKi8KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21fbTY4ay5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvbV9tNjhrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA0NjlkZQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21fbTY4ay5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qICRJZDogbV9tNjhrLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfTV9NNjhLX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9NX002OEtfSF9fCisKKy8qKgorICogQGZpbGUgbV9tNjhrLmgKKyAqIEBicmllZiBEZXNjcmliZXMgTW90b3JvbGEgbTY4ayBmYW1pbHkgcHJvY2Vzc29yIHNwZWNpZmljcy4KKyAqLworCisjZGVmaW5lIFBKX01fTkFNRQkJIm02OGsiCisKKyNkZWZpbmUgUEpfSEFTX1BFTlRJVU0JCTAKKyNkZWZpbmUgUEpfSVNfTElUVExFX0VORElBTgkxCisjZGVmaW5lIFBKX0lTX0JJR19FTkRJQU4JMAorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9NX002OEtfSF9fICovCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9tX3Bvd2VycGMuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21fcG93ZXJwYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYjJiZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9tX3Bvd2VycGMuaApAQCAtMCwwICsxLDM2IEBACisvKiAkSWQ6IG1fcG93ZXJwYy5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX01fUE9XRVJQQ19IX18KKyNkZWZpbmUgX19QSl9DT01QQVRfTV9QT1dFUlBDX0hfXworCisvKioKKyAqIEBmaWxlIG1fcHBjLmgKKyAqIEBicmllZiBEZXNjcmliZXMgUG93ZXJQQyBmYW1pbHkgcHJvY2Vzc29yIHNwZWNpZmljcy4KKyAqLworCisjZGVmaW5lIFBKX01fTkFNRQkJInBvd2VycGMiCisKKyNkZWZpbmUgUEpfSEFTX1BFTlRJVU0JCTAKKyNkZWZpbmUgUEpfSVNfTElUVExFX0VORElBTgkwCisjZGVmaW5lIFBKX0lTX0JJR19FTkRJQU4JMQorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9NX1BPV0VSUENfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21fc3BhcmMuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21fc3BhcmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTM5ZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvbV9zcGFyYy5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qICRJZDogbV9zcGFyYy5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX01fU1BBUkNfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX01fU1BBUkNfSF9fCisKKy8qKgorICogQGZpbGUgbV9zcGFyYy5oCisgKiBAYnJpZWYgRGVzY3JpYmVzIFNQQVJDIGZhbWlseSBwcm9jZXNzb3Igc3BlY2lmaWNzLgorICovCisKKyNkZWZpbmUgUEpfTV9OQU1FCQkic3BhcmMiCisKKyNkZWZpbmUgUEpfSEFTX1BFTlRJVU0JCTAKKyNkZWZpbmUgUEpfSVNfTElUVExFX0VORElBTgkwCisjZGVmaW5lIFBKX0lTX0JJR19FTkRJQU4JMQorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9NX1NQQVJDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvbV94ODZfNjQuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21feDg2XzY0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk3OTVlZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21feDg2XzY0LmgKQEAgLTAsMCArMSwzNiBAQAorLyogJElkOiBtX3g4Nl82NC5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX01feDg2XzY0X0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9NX3g4Nl82NF9IX18KKworLyoqCisgKiBAZmlsZSBtX2kzODYuaAorICogQGJyaWVmIERlc2NyaWJlcyA2NGJpdCB4ODYgSW50ZWwvQU1EIGZhbWlseSBwcm9jZXNzb3Igc3BlY2lmaWNzLgorICovCisKKyNkZWZpbmUgUEpfTV9OQU1FCQkieDg2XzY0IgorCisjZGVmaW5lIFBKX0hBU19QRU5USVVNCQkxCisjZGVmaW5lIFBKX0lTX0xJVFRMRV9FTkRJQU4JMQorI2RlZmluZSBQSl9JU19CSUdfRU5ESUFOCTAKKworCisjZW5kaWYJLyogX19QSl9DT01QQVRfTV94ODZfNjRfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21hbGxvYy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvbWFsbG9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRjMTQzMQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L21hbGxvYy5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qICRJZDogbWFsbG9jLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfTUFMTE9DX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9NQUxMT0NfSF9fCisKKy8qKgorICogQGZpbGUgbWFsbG9jLmgKKyAqIEBicmllZiBQcm92aWRlcyBtYWxsb2MoKSBhbmQgZnJlZSgpIGZ1bmN0aW9ucy4KKyAqLworCisjaWYgZGVmaW5lZChQSl9IQVNfTUFMTE9DX0gpICYmIFBKX0hBU19NQUxMT0NfSCAhPSAwCisjICBpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbGlmIGRlZmluZWQoUEpfSEFTX1NURExJQl9IKSAmJiBQSl9IQVNfU1RETElCX0ggIT0gMAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX01BTExPQ19IX18gKi8KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Yzc0OGEyCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oCkBAIC0wLDAgKzEsMjEzIEBACisvKiBwamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9vc19hdXRvLmguICBHZW5lcmF0ZWQgZnJvbSBvc19hdXRvLmguaW4gYnkgY29uZmlndXJlLiAgKi8KKy8qICRJZDogb3NfYXV0by5oLmluIDM4NDEgMjAxMS0xMC0yNCAwOToyODoxM1ogbWluZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9PU19BVVRPX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9PU19BVVRPX0hfXworCisvKioKKyAqIEBmaWxlIG9zX2F1dG8uaAorICogQGJyaWVmIERlc2NyaWJlcyBvcGVyYXRpbmcgc3lzdGVtIHNwZWNpZmljcyAoYXV0b21hdGljYWxseSBkZXRlY3RlZCBieQorICogICAgICAgIGF1dG9jb25mKQorICovCisKKy8qIENhbm9uaWNhbCBPUyBuYW1lICovCisjZGVmaW5lIFBKX09TX05BTUUgImFybS11bmtub3duLWxpbnV4LWFuZHJvaWRlYWJpIgorCisvKiBMZWdhY3kgbWFjcm9zICovCisvKiAjdW5kZWYgUEpfV0lOMzIgKi8KKy8qICN1bmRlZiBQSl9XSU4zMl9XSU5OVCAqLworLyogI3VuZGVmIFdJTjMyX0xFQU5fQU5EX01FQU4gKi8KKy8qICN1bmRlZiBQSl9EQVJXSU5PUyAqLworLyogI3VuZGVmIFBKX0xJTlVYICovCisvKiAjdW5kZWYgUEpfUlRFTVMgKi8KKy8qICN1bmRlZiBQSl9TVU5PUyAqLworCisjaWYgZGVmaW5lZChQSl9XSU4zMl9XSU5OVCkgJiYgIWRlZmluZWQoX1dJTjMyX1dJTk5UKQorIyAgZGVmaW5lIF9XSU4zMl9XSU5OVAlQSl9XSU4zMl9XSU5OVAorI2VuZGlmCisKKy8qIEhlYWRlcnMgYXZhaWxhYmlsaXR5ICovCisjZGVmaW5lIFBKX0hBU19BUlBBX0lORVRfSCAxCisjZGVmaW5lIFBKX0hBU19BU1NFUlRfSCAxCisjZGVmaW5lIFBKX0hBU19DVFlQRV9IIDEKKyNkZWZpbmUgUEpfSEFTX0VSUk5PX0ggMQorI2RlZmluZSBQSl9IQVNfRkNOVExfSCAxCisjZGVmaW5lIFBKX0hBU19MSU1JVFNfSCAxCisjZGVmaW5lIFBKX0hBU19MSU5VWF9TT0NLRVRfSCAxCisjZGVmaW5lIFBKX0hBU19NQUxMT0NfSCAxCisjZGVmaW5lIFBKX0hBU19ORVREQl9IIDEKKyNkZWZpbmUgUEpfSEFTX05FVElORVRfSU5fU1lTVE1fSCAxCisjZGVmaW5lIFBKX0hBU19ORVRJTkVUX0lOX0ggMQorLyogI3VuZGVmIFBKX0hBU19ORVRJTkVUX0lQX0ggKi8KKyNkZWZpbmUgUEpfSEFTX05FVElORVRfVENQX0ggMQorI2RlZmluZSBQSl9IQVNfTkVUX0lGX0ggMQorLyogI3VuZGVmIFBKX0hBU19JRkFERFJTX0ggKi8KKyNkZWZpbmUgUEpfSEFTX1NFTUFQSE9SRV9IIDEKKyNkZWZpbmUgUEpfSEFTX1NFVEpNUF9IIDEKKyNkZWZpbmUgUEpfSEFTX1NUREFSR19IIDEKKyNkZWZpbmUgUEpfSEFTX1NURERFRl9IIDEKKyNkZWZpbmUgUEpfSEFTX1NURElPX0ggMQorI2RlZmluZSBQSl9IQVNfU1RESU5UX0ggMQorI2RlZmluZSBQSl9IQVNfU1RETElCX0ggMQorI2RlZmluZSBQSl9IQVNfU1RSSU5HX0ggMQorI2RlZmluZSBQSl9IQVNfU1lTX0lPQ1RMX0ggMQorI2RlZmluZSBQSl9IQVNfU1lTX1NFTEVDVF9IIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19TT0NLRVRfSCAxCisjZGVmaW5lIFBKX0hBU19TWVNfVElNRV9IIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19USU1FQl9IIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19UWVBFU19IIDEKKy8qICN1bmRlZiBQSl9IQVNfU1lTX0ZJTElPX0ggKi8KKy8qICN1bmRlZiBQSl9IQVNfU1lTX1NPQ0tJT19IICovCisjZGVmaW5lIFBKX0hBU19TWVNfVVRTTkFNRV9IIDEKKyNkZWZpbmUgUEpfSEFTX1RJTUVfSCAxCisjZGVmaW5lIFBKX0hBU19VTklTVERfSCAxCisKKy8qICN1bmRlZiBQSl9IQVNfTVNXU09DS19IICovCisvKiAjdW5kZWYgUEpfSEFTX1dJTlNPQ0tfSCAqLworLyogI3VuZGVmIFBKX0hBU19XSU5TT0NLMl9IICovCisvKiAjdW5kZWYgUEpfSEFTX1dTMlRDUElQX0ggKi8KKworI2RlZmluZSBQSl9TT0NLX0hBU19JTkVUX0FUT04gMQorI2RlZmluZSBQSl9TT0NLX0hBU19JTkVUX1BUT04gMQorI2RlZmluZSBQSl9TT0NLX0hBU19JTkVUX05UT1AgMQorI2RlZmluZSBQSl9TT0NLX0hBU19HRVRBRERSSU5GTyAxCisKKy8qIE9uIHRoZXNlIE9TZXMsIHNlbWFwaG9yZSBmZWF0dXJlIGRlcGVuZHMgb24gc2VtYXBob3JlLmggKi8KKyNpZiBkZWZpbmVkKFBKX0hBU19TRU1BUEhPUkVfSCkgJiYgUEpfSEFTX1NFTUFQSE9SRV9IIT0wCisjICAgZGVmaW5lIFBKX0hBU19TRU1BUEhPUkUJMQorI2VsaWYgZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIhPTAKKyMgICBkZWZpbmUgUEpfSEFTX1NFTUFQSE9SRQkxCisjZWxzZQorIyAgIGRlZmluZSBQSl9IQVNfU0VNQVBIT1JFCTAKKyNlbmRpZgorCisvKiBEbyB3ZSBoYXZlIHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoKT8gKi8KKy8qICN1bmRlZiBQSl9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRSAqLworCisvKiBEb2VzIHB0aHJlYWRfbXV0ZXhhdHRyX3QgaGFzICJyZWN1cnNpdmUiIG1lbWJlcj8gICovCisvKiAjdW5kZWYgUEpfUFRIUkVBRF9NVVRFWEFUVFJfVF9IQVNfUkVDVVJTSVZFICovCisKKy8qIFNldCAxIGlmIG5hdGl2ZSBzb2NrYWRkcl9pbiBoYXMgc2luX2xlbiBtZW1iZXIuIAorICogRGVmYXVsdDogMAorICovCisvKiAjdW5kZWYgUEpfU09DS0FERFJfSEFTX0xFTiAqLworCisvKiBEb2VzIHRoZSBPUyBoYXZlIHNvY2tsZW5fdD8gKi8KKyNkZWZpbmUgUEpfSEFTX1NPQ0tMRU5fVCAxCisKKyNpZiAhZGVmaW5lZChzb2NrbGVuX3QpICYmICghZGVmaW5lZChQSl9IQVNfU09DS0xFTl9UKSB8fCBQSl9IQVNfU09DS0xFTl9UPT0wKQorIyBkZWZpbmUgUEpfSEFTX1NPQ0tMRU5fVCAxCisgIHR5cGVkZWYgaW50IHNvY2tsZW5fdDsKKyNlbmRpZgorCisvKioKKyAqIElmIHRoaXMgbWFjcm8gaXMgc2V0LCBpdCB0ZWxscyBzZWxlY3QgSS9PIFF1ZXVlIHRoYXQgc2VsZWN0KCkgbmVlZHMgdG8KKyAqIGJlIGdpdmVuIGNvcnJlY3QgdmFsdWUgb2YgbmZkcyAoaS5lLiBsYXJnZXN0IGZkICsgMSkuIFRoaXMgcmVxdWlyZXMKKyAqIHNlbGVjdCBpb3F1ZXVlIHRvIHJlLXNjYW4gdGhlIGRlc2NyaXB0b3JzIG9uIGVhY2ggcmVnaXN0cmF0aW9uIGFuZAorICogdW5yZWdpc3RyYXRpb24uCisgKiBJZiB0aGlzIG1hY3JvIGlzIG5vdCBzZXQsIHRoZW4gaW9xdWV1ZSB3aWxsIGFsd2F5cyBnaXZlIEZEX1NFVFNJWkUgZm9yCisgKiBuZmRzIGFyZ3VtZW50IHdoZW4gY2FsbGluZyBzZWxlY3QoKS4KKyAqCisgKiBEZWZhdWx0OiAwCisgKi8KKyNkZWZpbmUgUEpfU0VMRUNUX05FRURTX05GRFMgMAorCisvKiBJcyBlcnJubyBhIGdvb2Qgd2F5IHRvIHJldHJpZXZlIE9TIGVycm9ycz8KKyAqLworI2RlZmluZSBQSl9IQVNfRVJSTk9fVkFSIDEKKworLyogV2hlbiB0aGlzIG1hY3JvIGlzIHNldCwgZ2V0c29ja29wdChTT0xfU09DS0VULCBTT19FUlJPUikgd2lsbCByZXR1cm4KKyAqIHRoZSBzdGF0dXMgb2Ygbm9uLWJsb2NraW5nIGNvbm5lY3QoKSBvcGVyYXRpb24uCisgKi8KKyNkZWZpbmUgUEpfSEFTX1NPX0VSUk9SIDEKKworLyogVGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhlIHZhbHVlIHNldCBpbiBlcnJubyBieSB0aGUgT1Mgd2hlbiBhIG5vbi1ibG9ja2luZworICogc29ja2V0IHJlY3YoKSBjYW4gbm90IHJldHVybiBpbW1lZGlhdGUgZGFhdGEuCisgKi8KKyNkZWZpbmUgUEpfQkxPQ0tJTkdfRVJST1JfVkFMIEVBR0FJTgorCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgY29ubmVjdCgpIGNhbiBub3QgZ2V0IGNvbm5lY3RlZCBpbW1lZGlhdGVseS4KKyAqLworI2RlZmluZSBQSl9CTE9DS0lOR19DT05ORUNUX0VSUk9SX1ZBTCBFSU5QUk9HUkVTUworCisvKiBEZWZhdWx0IHRocmVhZGluZyBpcyBlbmFibGVkLCB1bmxlc3MgaXQncyBvdmVycmlkZGVuLiAqLworI2lmbmRlZiBQSl9IQVNfVEhSRUFEUworIyAgZGVmaW5lIFBKX0hBU19USFJFQURTCSAgICAoMSkKKyNlbmRpZgorCisvKiBEbyB3ZSBuZWVkIGhpZ2ggcmVzb2x1dGlvbiB0aW1lcj8gKi8KKyNkZWZpbmUgUEpfSEFTX0hJR0hfUkVTX1RJTUVSIDEKKworLyogSXMgbWFsbG9jKCkgYXZhaWxhYmxlPyAqLworI2RlZmluZSBQSl9IQVNfTUFMTE9DIDEKKworI2lmbmRlZiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sKKyMgICBkZWZpbmUgUEpfT1NfSEFTX0NIRUNLX1NUQUNLICAgIDAKKyNlbmRpZgorCisvKiBVbmljb2RlPyAqLworI2RlZmluZSBQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUgMAorCisvKiBQb29sIGFsaWdubWVudCBpbiBieXRlcyAqLworI2RlZmluZSBQSl9QT09MX0FMSUdOTUVOVCA0CisKKy8qIFRoZSB0eXBlIG9mIGF0b21pYyB2YXJpYWJsZSB2YWx1ZTogKi8KKyNkZWZpbmUgUEpfQVRPTUlDX1ZBTFVFX1RZUEUgbG9uZworCisjaWYgZGVmaW5lZChQSl9EQVJXSU5PUykgJiYgUEpfREFSV0lOT1MhPTAKKyMgICAgaW5jbHVkZSAiVGFyZ2V0Q29uZGl0aW9uYWxzLmgiCisjICAgIGlmIFRBUkdFVF9PU19JUEhPTkUKKyMJaW5jbHVkZSAiQXZhaWxhYmlsaXR5LmgiCisJLyogVXNlIENGSG9zdCBBUEkgZm9yIHBqX2dldGFkZHJpbmZvKCkgKHNlZSB0aWNrZXQgIzEyNDYpICovCisjCWRlZmluZSBQSl9HRVRBRERSSU5GT19VU0VfQ0ZIT1NUIDEKKwkvKiBEaXNhYmxlIGxvY2FsIGhvc3QgcmVzb2x1dGlvbiBpbiBwal9nZXRob3N0aXAoKSAoc2VlIHRpY2tldCAjMTM0MikgKi8KKyMJZGVmaW5lIFBKX0dFVEhPU1RJUF9ESVNBQkxFX0xPQ0FMX1JFU09MVVRJT04gMQorIyAgICAJaWZkZWYgX19JUEhPTkVfNF8wCisgCSAgICAvKiBJcyBtdWx0aXRhc2tpbmcgc3VwcG9ydCBhdmFpbGFibGU/ICAoc2VlIHRpY2tldCAjMTEwNykgKi8KKyMJICAgIGRlZmluZSBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIAkxCisJICAgIC8qIEVuYWJsZSBhY3RpdmVzb2NrIFRDUCBiYWNrZ3JvdW5kIG1vZGUgc3VwcG9ydCAqLworIwkgICAgZGVmaW5lIFBKX0FDVElWRVNPQ0tfVENQX0lQSE9ORV9PU19CRwkJMQorIwllbmRpZgorIyAgICBlbmRpZgorI2VuZGlmCisKKy8qIElmIDEsIHVzZSBSZWFkL1dyaXRlIG11dGV4IGVtdWxhdGlvbiBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdCAqLworI2RlZmluZSBQSl9FTVVMQVRFX1JXTVVURVggMAorCisvKiBJZiAxLCBwal90aHJlYWRfY3JlYXRlKCkgc2hvdWxkIGVuZm9yY2UgdGhlIHN0YWNrIHNpemUgd2hlbiBjcmVhdGluZyAKKyAqIHRocmVhZHMuCisgKiBEZWZhdWx0OiAwIChsZXQgT1MgZGVjaWRlIHRoZSB0aHJlYWQncyBzdGFjayBzaXplKS4KKyAqLworI2RlZmluZSBQSl9USFJFQURfU0VUX1NUQUNLX1NJWkUgMAorCisvKiBJZiAxLCBwal90aHJlYWRfY3JlYXRlKCkgc2hvdWxkIGFsbG9jYXRlIHN0YWNrIGZyb20gdGhlIHBvb2wgc3VwcGxpZWQuCisgKiBEZWZhdWx0OiAwIChsZXQgT1MgYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJlYWQncyBzdGFjaykuCisgKi8KKyNkZWZpbmUgUEpfVEhSRUFEX0FMTE9DQVRFX1NUQUNLIDAKKworLyogU1NMIHNvY2tldCBhdmFpbGFiaWxpdHkuICovCisjaWZuZGVmIFBKX0hBU19TU0xfU09DSworLyogI3VuZGVmIFBKX0hBU19TU0xfU09DSyAqLworI2VuZGlmCisKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX09TX0FVVE9fSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaC5pbiBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX2F1dG8uaC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGRmMmJmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvb3NfYXV0by5oLmluCkBAIC0wLDAgKzEsMjEyIEBACisvKiAkSWQ6IG9zX2F1dG8uaC5pbiAzODQxIDIwMTEtMTAtMjQgMDk6Mjg6MTNaIG1pbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfT1NfQVVUT19IX18KKyNkZWZpbmUgX19QSl9DT01QQVRfT1NfQVVUT19IX18KKworLyoqCisgKiBAZmlsZSBvc19hdXRvLmgKKyAqIEBicmllZiBEZXNjcmliZXMgb3BlcmF0aW5nIHN5c3RlbSBzcGVjaWZpY3MgKGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgYnkKKyAqICAgICAgICBhdXRvY29uZikKKyAqLworCisvKiBDYW5vbmljYWwgT1MgbmFtZSAqLworI3VuZGVmIFBKX09TX05BTUUKKworLyogTGVnYWN5IG1hY3JvcyAqLworI3VuZGVmIFBKX1dJTjMyCisjdW5kZWYgUEpfV0lOMzJfV0lOTlQKKyN1bmRlZiBXSU4zMl9MRUFOX0FORF9NRUFOCisjdW5kZWYgUEpfREFSV0lOT1MKKyN1bmRlZiBQSl9MSU5VWAorI3VuZGVmIFBKX1JURU1TCisjdW5kZWYgUEpfU1VOT1MKKworI2lmIGRlZmluZWQoUEpfV0lOMzJfV0lOTlQpICYmICFkZWZpbmVkKF9XSU4zMl9XSU5OVCkKKyMgIGRlZmluZSBfV0lOMzJfV0lOTlQJUEpfV0lOMzJfV0lOTlQKKyNlbmRpZgorCisvKiBIZWFkZXJzIGF2YWlsYWJpbGl0eSAqLworI3VuZGVmIFBKX0hBU19BUlBBX0lORVRfSAorI3VuZGVmIFBKX0hBU19BU1NFUlRfSAorI3VuZGVmIFBKX0hBU19DVFlQRV9ICisjdW5kZWYgUEpfSEFTX0VSUk5PX0gKKyN1bmRlZiBQSl9IQVNfRkNOVExfSAorI3VuZGVmIFBKX0hBU19MSU1JVFNfSAorI3VuZGVmIFBKX0hBU19MSU5VWF9TT0NLRVRfSAorI3VuZGVmIFBKX0hBU19NQUxMT0NfSAorI3VuZGVmIFBKX0hBU19ORVREQl9ICisjdW5kZWYgUEpfSEFTX05FVElORVRfSU5fU1lTVE1fSAorI3VuZGVmIFBKX0hBU19ORVRJTkVUX0lOX0gKKyN1bmRlZiBQSl9IQVNfTkVUSU5FVF9JUF9ICisjdW5kZWYgUEpfSEFTX05FVElORVRfVENQX0gKKyN1bmRlZiBQSl9IQVNfTkVUX0lGX0gKKyN1bmRlZiBQSl9IQVNfSUZBRERSU19ICisjdW5kZWYgUEpfSEFTX1NFTUFQSE9SRV9ICisjdW5kZWYgUEpfSEFTX1NFVEpNUF9ICisjdW5kZWYgUEpfSEFTX1NUREFSR19ICisjdW5kZWYgUEpfSEFTX1NURERFRl9ICisjdW5kZWYgUEpfSEFTX1NURElPX0gKKyN1bmRlZiBQSl9IQVNfU1RESU5UX0gKKyN1bmRlZiBQSl9IQVNfU1RETElCX0gKKyN1bmRlZiBQSl9IQVNfU1RSSU5HX0gKKyN1bmRlZiBQSl9IQVNfU1lTX0lPQ1RMX0gKKyN1bmRlZiBQSl9IQVNfU1lTX1NFTEVDVF9ICisjdW5kZWYgUEpfSEFTX1NZU19TT0NLRVRfSAorI3VuZGVmIFBKX0hBU19TWVNfVElNRV9ICisjdW5kZWYgUEpfSEFTX1NZU19USU1FQl9ICisjdW5kZWYgUEpfSEFTX1NZU19UWVBFU19ICisjdW5kZWYgUEpfSEFTX1NZU19GSUxJT19ICisjdW5kZWYgUEpfSEFTX1NZU19TT0NLSU9fSAorI3VuZGVmIFBKX0hBU19TWVNfVVRTTkFNRV9ICisjdW5kZWYgUEpfSEFTX1RJTUVfSAorI3VuZGVmIFBKX0hBU19VTklTVERfSAorCisjdW5kZWYgUEpfSEFTX01TV1NPQ0tfSAorI3VuZGVmIFBKX0hBU19XSU5TT0NLX0gKKyN1bmRlZiBQSl9IQVNfV0lOU09DSzJfSAorI3VuZGVmIFBKX0hBU19XUzJUQ1BJUF9ICisKKyN1bmRlZiBQSl9TT0NLX0hBU19JTkVUX0FUT04KKyN1bmRlZiBQSl9TT0NLX0hBU19JTkVUX1BUT04KKyN1bmRlZiBQSl9TT0NLX0hBU19JTkVUX05UT1AKKyN1bmRlZiBQSl9TT0NLX0hBU19HRVRBRERSSU5GTworCisvKiBPbiB0aGVzZSBPU2VzLCBzZW1hcGhvcmUgZmVhdHVyZSBkZXBlbmRzIG9uIHNlbWFwaG9yZS5oICovCisjaWYgZGVmaW5lZChQSl9IQVNfU0VNQVBIT1JFX0gpICYmIFBKX0hBU19TRU1BUEhPUkVfSCE9MAorIyAgIGRlZmluZSBQSl9IQVNfU0VNQVBIT1JFCTEKKyNlbGlmIGRlZmluZWQoUEpfV0lOMzIpICYmIFBKX1dJTjMyIT0wCisjICAgZGVmaW5lIFBKX0hBU19TRU1BUEhPUkUJMQorI2Vsc2UKKyMgICBkZWZpbmUgUEpfSEFTX1NFTUFQSE9SRQkwCisjZW5kaWYKKworLyogRG8gd2UgaGF2ZSBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCk/ICovCisjdW5kZWYgUEpfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKKworLyogRG9lcyBwdGhyZWFkX211dGV4YXR0cl90IGhhcyAicmVjdXJzaXZlIiBtZW1iZXI/ICAqLworI3VuZGVmIFBKX1BUSFJFQURfTVVURVhBVFRSX1RfSEFTX1JFQ1VSU0lWRQorCisvKiBTZXQgMSBpZiBuYXRpdmUgc29ja2FkZHJfaW4gaGFzIHNpbl9sZW4gbWVtYmVyLiAKKyAqIERlZmF1bHQ6IDAKKyAqLworI3VuZGVmIFBKX1NPQ0tBRERSX0hBU19MRU4KKworLyogRG9lcyB0aGUgT1MgaGF2ZSBzb2NrbGVuX3Q/ICovCisjdW5kZWYgUEpfSEFTX1NPQ0tMRU5fVAorCisjaWYgIWRlZmluZWQoc29ja2xlbl90KSAmJiAoIWRlZmluZWQoUEpfSEFTX1NPQ0tMRU5fVCkgfHwgUEpfSEFTX1NPQ0tMRU5fVD09MCkKKyMgZGVmaW5lIFBKX0hBU19TT0NLTEVOX1QgIDEKKyAgdHlwZWRlZiBpbnQgc29ja2xlbl90OworI2VuZGlmCisKKy8qKgorICogSWYgdGhpcyBtYWNybyBpcyBzZXQsIGl0IHRlbGxzIHNlbGVjdCBJL08gUXVldWUgdGhhdCBzZWxlY3QoKSBuZWVkcyB0bworICogYmUgZ2l2ZW4gY29ycmVjdCB2YWx1ZSBvZiBuZmRzIChpLmUuIGxhcmdlc3QgZmQgKyAxKS4gVGhpcyByZXF1aXJlcworICogc2VsZWN0IGlvcXVldWUgdG8gcmUtc2NhbiB0aGUgZGVzY3JpcHRvcnMgb24gZWFjaCByZWdpc3RyYXRpb24gYW5kCisgKiB1bnJlZ2lzdHJhdGlvbi4KKyAqIElmIHRoaXMgbWFjcm8gaXMgbm90IHNldCwgdGhlbiBpb3F1ZXVlIHdpbGwgYWx3YXlzIGdpdmUgRkRfU0VUU0laRSBmb3IKKyAqIG5mZHMgYXJndW1lbnQgd2hlbiBjYWxsaW5nIHNlbGVjdCgpLgorICoKKyAqIERlZmF1bHQ6IDAKKyAqLworI3VuZGVmIFBKX1NFTEVDVF9ORUVEU19ORkRTCisKKy8qIElzIGVycm5vIGEgZ29vZCB3YXkgdG8gcmV0cmlldmUgT1MgZXJyb3JzPworICovCisjdW5kZWYgUEpfSEFTX0VSUk5PX1ZBUgorCisvKiBXaGVuIHRoaXMgbWFjcm8gaXMgc2V0LCBnZXRzb2Nrb3B0KFNPTF9TT0NLRVQsIFNPX0VSUk9SKSB3aWxsIHJldHVybgorICogdGhlIHN0YXR1cyBvZiBub24tYmxvY2tpbmcgY29ubmVjdCgpIG9wZXJhdGlvbi4KKyAqLworI3VuZGVmIFBKX0hBU19TT19FUlJPUgorCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgcmVjdigpIGNhbiBub3QgcmV0dXJuIGltbWVkaWF0ZSBkYWF0YS4KKyAqLworI3VuZGVmIFBKX0JMT0NLSU5HX0VSUk9SX1ZBTAorCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgY29ubmVjdCgpIGNhbiBub3QgZ2V0IGNvbm5lY3RlZCBpbW1lZGlhdGVseS4KKyAqLworI3VuZGVmIFBKX0JMT0NLSU5HX0NPTk5FQ1RfRVJST1JfVkFMCisKKy8qIERlZmF1bHQgdGhyZWFkaW5nIGlzIGVuYWJsZWQsIHVubGVzcyBpdCdzIG92ZXJyaWRkZW4uICovCisjaWZuZGVmIFBKX0hBU19USFJFQURTCisjICBkZWZpbmUgUEpfSEFTX1RIUkVBRFMJICAgICgxKQorI2VuZGlmCisKKy8qIERvIHdlIG5lZWQgaGlnaCByZXNvbHV0aW9uIHRpbWVyPyAqLworI3VuZGVmIFBKX0hBU19ISUdIX1JFU19USU1FUgorCisvKiBJcyBtYWxsb2MoKSBhdmFpbGFibGU/ICovCisjdW5kZWYgUEpfSEFTX01BTExPQworCisjaWZuZGVmIFBKX09TX0hBU19DSEVDS19TVEFDSworIyAgIGRlZmluZSBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sgICAgMAorI2VuZGlmCisKKy8qIFVuaWNvZGU/ICovCisjdW5kZWYgUEpfTkFUSVZFX1NUUklOR19JU19VTklDT0RFCisKKy8qIFBvb2wgYWxpZ25tZW50IGluIGJ5dGVzICovCisjdW5kZWYgUEpfUE9PTF9BTElHTk1FTlQKKworLyogVGhlIHR5cGUgb2YgYXRvbWljIHZhcmlhYmxlIHZhbHVlOiAqLworI3VuZGVmIFBKX0FUT01JQ19WQUxVRV9UWVBFCisKKyNpZiBkZWZpbmVkKFBKX0RBUldJTk9TKSAmJiBQSl9EQVJXSU5PUyE9MAorIyAgICBpbmNsdWRlICJUYXJnZXRDb25kaXRpb25hbHMuaCIKKyMgICAgaWYgVEFSR0VUX09TX0lQSE9ORQorIwlpbmNsdWRlICJBdmFpbGFiaWxpdHkuaCIKKwkvKiBVc2UgQ0ZIb3N0IEFQSSBmb3IgcGpfZ2V0YWRkcmluZm8oKSAoc2VlIHRpY2tldCAjMTI0NikgKi8KKyMJZGVmaW5lIFBKX0dFVEFERFJJTkZPX1VTRV9DRkhPU1QgMQorCS8qIERpc2FibGUgbG9jYWwgaG9zdCByZXNvbHV0aW9uIGluIHBqX2dldGhvc3RpcCgpIChzZWUgdGlja2V0ICMxMzQyKSAqLworIwlkZWZpbmUgUEpfR0VUSE9TVElQX0RJU0FCTEVfTE9DQUxfUkVTT0xVVElPTiAxCisjICAgIAlpZmRlZiBfX0lQSE9ORV80XzAKKyAJICAgIC8qIElzIG11bHRpdGFza2luZyBzdXBwb3J0IGF2YWlsYWJsZT8gIChzZWUgdGlja2V0ICMxMTA3KSAqLworIwkgICAgZGVmaW5lIFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQgCTEKKwkgICAgLyogRW5hYmxlIGFjdGl2ZXNvY2sgVENQIGJhY2tncm91bmQgbW9kZSBzdXBwb3J0ICovCisjCSAgICBkZWZpbmUgUEpfQUNUSVZFU09DS19UQ1BfSVBIT05FX09TX0JHCQkxCisjCWVuZGlmCisjICAgIGVuZGlmCisjZW5kaWYKKworLyogSWYgMSwgdXNlIFJlYWQvV3JpdGUgbXV0ZXggZW11bGF0aW9uIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IGl0ICovCisjdW5kZWYgUEpfRU1VTEFURV9SV01VVEVYCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgZW5mb3JjZSB0aGUgc3RhY2sgc2l6ZSB3aGVuIGNyZWF0aW5nIAorICogdGhyZWFkcy4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBkZWNpZGUgdGhlIHRocmVhZCdzIHN0YWNrIHNpemUpLgorICovCisjdW5kZWYgUEpfVEhSRUFEX1NFVF9TVEFDS19TSVpFCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgYWxsb2NhdGUgc3RhY2sgZnJvbSB0aGUgcG9vbCBzdXBwbGllZC4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRocmVhZCdzIHN0YWNrKS4KKyAqLworI3VuZGVmIFBKX1RIUkVBRF9BTExPQ0FURV9TVEFDSworCisvKiBTU0wgc29ja2V0IGF2YWlsYWJpbGl0eS4gKi8KKyNpZm5kZWYgUEpfSEFTX1NTTF9TT0NLCisjdW5kZWYgUEpfSEFTX1NTTF9TT0NLCisjZW5kaWYKKworCisjZW5kaWYJLyogX19QSl9DT01QQVRfT1NfQVVUT19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvb3NfZGFyd2lub3MuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX2Rhcndpbm9zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDllNjljMgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX2Rhcndpbm9zLmgKQEAgLTAsMCArMSwxNDAgQEAKKy8qICRJZDogb3NfZGFyd2lub3MuaCA0NjI2IDIwMTMtMTAtMjEgMDc6MDQ6MzhaIG1pbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfT1NfREFSV0lOT1NfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX09TX0RBUldJTk9TX0hfXworCisvKioKKyAqIEBmaWxlIG9zX2Rhcndpbm9zLmgKKyAqIEBicmllZiBEZXNjcmliZXMgRGFyd2luL01hY09TWCBvcGVyYXRpbmcgc3lzdGVtIHNwZWNpZmljcy4KKyAqLworCisjZGVmaW5lIFBKX09TX05BTUUJCSAgICAiZGFyd2luIgorCisjZGVmaW5lIFBKX0hBU19BUlBBX0lORVRfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfQVNTRVJUX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19DVFlQRV9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfRVJSTk9fSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX0xJTlVYX1NPQ0tFVF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19NQUxMT0NfSAkJICAgIDAKKyNkZWZpbmUgUEpfSEFTX05FVERCX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19ORVRJTkVUX0lOX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX05FVElORVRfVENQX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NFVEpNUF9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1REQVJHX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVERERUZfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURElPX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVERMSUJfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NUUklOR19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1lTX0lPQ1RMX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19TRUxFQ1RfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfU1lTX1NPQ0tFVF9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfVElNRV9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfVElNRUJfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfU1lTX1RZUEVTX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1RJTUVfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1VOSVNURF9ICQkgICAgMQorCisjZGVmaW5lIFBKX0hBU19NU1dTT0NLX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1dJTlNPQ0tfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfV0lOU09DSzJfSAkgICAgMAorCisvKiBJcyBlcnJubyBhIGdvb2Qgd2F5IHRvIHJldHJpZXZlIE9TIGVycm9ycz8KKyAqLworI2RlZmluZSBQSl9IQVNfRVJSTk9fVkFSCSAgICAxCisKKy8qIEhhcyBpbmV0X2F0b24oKSA/CisgKi8gICAKKyNkZWZpbmUgUEpfU09DS19IQVNfSU5FVF9BVE9OCSAgICAxCisKKy8qIFdoZW4gdGhpcyBtYWNybyBpcyBzZXQsIGdldHNvY2tvcHQoU09MX1NPQ0tFVCwgU09fRVJST1IpIHdpbGwgcmV0dXJuCisgKiB0aGUgc3RhdHVzIG9mIG5vbi1ibG9ja2luZyBjb25uZWN0KCkgb3BlcmF0aW9uLgorICovCisjZGVmaW5lIFBKX0hBU19TT19FUlJPUiAgICAgICAgICAgICAxCisKKy8qIFRoaXMgdmFsdWUgc3BlY2lmaWVzIHRoZSB2YWx1ZSBzZXQgaW4gZXJybm8gYnkgdGhlIE9TIHdoZW4gYSBub24tYmxvY2tpbmcKKyAqIHNvY2tldCByZWN2KCkgY2FuIG5vdCByZXR1cm4gaW1tZWRpYXRlIGRhYXRhLgorICovCisjZGVmaW5lIFBKX0JMT0NLSU5HX0VSUk9SX1ZBTCAgICAgICBFV09VTERCTE9DSworCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgY29ubmVjdCgpIGNhbiBub3QgZ2V0IGNvbm5lY3RlZCBpbW1lZGlhdGVseS4KKyAqLworI2RlZmluZSBQSl9CTE9DS0lOR19DT05ORUNUX0VSUk9SX1ZBTCAgIEVJTlBST0dSRVNTCisKKy8qIERlZmF1bHQgdGhyZWFkaW5nIGlzIGVuYWJsZWQsIHVubGVzcyBpdCdzIG92ZXJyaWRkZW4uICovCisjaWZuZGVmIFBKX0hBU19USFJFQURTCisjICBkZWZpbmUgUEpfSEFTX1RIUkVBRFMJCSgxKQorI2VuZGlmCisKKyNkZWZpbmUgUEpfSEFTX0hJR0hfUkVTX1RJTUVSCQkxCisjZGVmaW5lIFBKX0hBU19NQUxMT0MJCQkxCisjaWZuZGVmIFBKX09TX0hBU19DSEVDS19TVEFDSworIyAgIGRlZmluZSBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sgICAgICAgIDAKKyNlbmRpZgorI2RlZmluZSBQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUJMAorCisjZGVmaW5lIFBKX0FUT01JQ19WQUxVRV9UWVBFCQlsb25nCisKKy8qIFNldCAxIGlmIG5hdGl2ZSBzb2NrYWRkcl9pbiBoYXMgc2luX2xlbiBtZW1iZXIuIAorICogRGVmYXVsdDogMAorICovCisjZGVmaW5lIFBKX1NPQ0tBRERSX0hBU19MRU4JCTEKKworLyoKKyAqIGdjYyBjb21wbGFpbnMgdGhhdCBpdCBjYW4gbm90IHVzZSBwcmVjb21waWxlZCBoZWFkZXIgYmVjYXVzZQorICogdGhlIHZhbHVlIG9mIEZEX1NFVFNJWkUgdGhhdCB3ZSBkZWNsYXJlIGluIHBqL2NvbmZpZy5oIGlzCisgKiBkaWZmZXJlbnQgdGhhbiB0aGUgdmFsdWUgaW4gL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oLgorICoKKyAqIFRoaXMgY2hhbmdlcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgRGFyd2luLgorICovCisjZGVmaW5lIFBKX0lPUVVFVUVfTUFYX0hBTkRMRVMJCTEwMjQKKworLyoqCisgKiBJZiB0aGlzIG1hY3JvIGlzIHNldCwgaXQgdGVsbHMgc2VsZWN0IEkvTyBRdWV1ZSB0aGF0IHNlbGVjdCgpIG5lZWRzIHRvCisgKiBiZSBnaXZlbiBjb3JyZWN0IHZhbHVlIG9mIG5mZHMgKGkuZS4gbGFyZ2VzdCBmZCArIDEpLiBUaGlzIHJlcXVpcmVzCisgKiBzZWxlY3QgaW9xdWV1ZSB0byByZS1zY2FuIHRoZSBkZXNjcmlwdG9ycyBvbiBlYWNoIHJlZ2lzdHJhdGlvbiBhbmQKKyAqIHVucmVnaXN0cmF0aW9uLgorICogSWYgdGhpcyBtYWNybyBpcyBub3Qgc2V0LCB0aGVuIGlvcXVldWUgd2lsbCBhbHdheXMgZ2l2ZSBGRF9TRVRTSVpFIGZvcgorICogbmZkcyBhcmd1bWVudCB3aGVuIGNhbGxpbmcgc2VsZWN0KCkuCisgKgorICogRGVmYXVsdDogMAorICovCisjZGVmaW5lIFBKX1NFTEVDVF9ORUVEU19ORkRTCQkwCisKKy8qIElmIDEsIHVzZSBSZWFkL1dyaXRlIG11dGV4IGVtdWxhdGlvbiBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdCAqLworI2RlZmluZSBQSl9FTVVMQVRFX1JXTVVURVgJCTAKKworLyogSWYgMSwgcGpfdGhyZWFkX2NyZWF0ZSgpIHNob3VsZCBlbmZvcmNlIHRoZSBzdGFjayBzaXplIHdoZW4gY3JlYXRpbmcgCisgKiB0aHJlYWRzLgorICogRGVmYXVsdDogMCAobGV0IE9TIGRlY2lkZSB0aGUgdGhyZWFkJ3Mgc3RhY2sgc2l6ZSkuCisgKi8KKyNkZWZpbmUgUEpfVEhSRUFEX1NFVF9TVEFDS19TSVpFICAgIAkwCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgYWxsb2NhdGUgc3RhY2sgZnJvbSB0aGUgcG9vbCBzdXBwbGllZC4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRocmVhZCdzIHN0YWNrKS4KKyAqLworI2RlZmluZSBQSl9USFJFQURfQUxMT0NBVEVfU1RBQ0sgICAgCTAKKworLyogTWFjT1MgaGFzIGhhZCBzb2NrbGVuIHNpbmNlIDEwLjQgKi8KKyNkZWZpbmUgUEpfSEFTX1NPQ0tMRU5fVAkJMQorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9PU19EQVJXSU5PU19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvb3NfbGludXguaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX2xpbnV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIwZDc0NAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX2xpbnV4LmgKQEAgLTAsMCArMSwxMjkgQEAKKy8qICRJZDogb3NfbGludXguaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9PU19MSU5VWF9IX18KKyNkZWZpbmUgX19QSl9DT01QQVRfT1NfTElOVVhfSF9fCisKKy8qKgorICogQGZpbGUgb3NfbGludXguaAorICogQGJyaWVmIERlc2NyaWJlcyBMaW51eCBvcGVyYXRpbmcgc3lzdGVtIHNwZWNpZmljcy4KKyAqLworCisjZGVmaW5lIFBKX09TX05BTUUJCSAgICAibGludXgiCisKKyNkZWZpbmUgUEpfSEFTX0FSUEFfSU5FVF9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19BU1NFUlRfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX0NUWVBFX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19FUlJOT19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfTElOVVhfU09DS0VUX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX01BTExPQ19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfTkVUREJfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX05FVElORVRfSU5fSAkgICAgMQorI2RlZmluZSBQSl9IQVNfU0VUSk1QX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVERBUkdfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURERFRl9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1RESU9fSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURExJQl9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1RSSU5HX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfSU9DVExfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfU1lTX1NFTEVDVF9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfU09DS0VUX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19USU1FX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19USU1FQl9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfVFlQRVNfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfVElNRV9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfVU5JU1REX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TRU1BUEhPUkVfSAkgICAgMQorCisjZGVmaW5lIFBKX0hBU19NU1dTT0NLX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1dJTlNPQ0tfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfV0lOU09DSzJfSAkgICAgMAorCisjZGVmaW5lIFBKX1NPQ0tfSEFTX0lORVRfQVRPTgkgICAgMQorCisvKiBTZXQgMSBpZiBuYXRpdmUgc29ja2FkZHJfaW4gaGFzIHNpbl9sZW4gbWVtYmVyLiAKKyAqIERlZmF1bHQ6IDAKKyAqLworI2RlZmluZSBQSl9TT0NLQUREUl9IQVNfTEVOCSAgICAwCisKKy8qKgorICogSWYgdGhpcyBtYWNybyBpcyBzZXQsIGl0IHRlbGxzIHNlbGVjdCBJL08gUXVldWUgdGhhdCBzZWxlY3QoKSBuZWVkcyB0bworICogYmUgZ2l2ZW4gY29ycmVjdCB2YWx1ZSBvZiBuZmRzIChpLmUuIGxhcmdlc3QgZmQgKyAxKS4gVGhpcyByZXF1aXJlcworICogc2VsZWN0IGlvcXVldWUgdG8gcmUtc2NhbiB0aGUgZGVzY3JpcHRvcnMgb24gZWFjaCByZWdpc3RyYXRpb24gYW5kCisgKiB1bnJlZ2lzdHJhdGlvbi4KKyAqIElmIHRoaXMgbWFjcm8gaXMgbm90IHNldCwgdGhlbiBpb3F1ZXVlIHdpbGwgYWx3YXlzIGdpdmUgRkRfU0VUU0laRSBmb3IKKyAqIG5mZHMgYXJndW1lbnQgd2hlbiBjYWxsaW5nIHNlbGVjdCgpLgorICoKKyAqIERlZmF1bHQ6IDAKKyAqLworI2RlZmluZSBQSl9TRUxFQ1RfTkVFRFNfTkZEUwkgICAgMAorCisvKiBJcyBlcnJubyBhIGdvb2Qgd2F5IHRvIHJldHJpZXZlIE9TIGVycm9ycz8KKyAqLworI2RlZmluZSBQSl9IQVNfRVJSTk9fVkFSCSAgICAxCisKKy8qIFdoZW4gdGhpcyBtYWNybyBpcyBzZXQsIGdldHNvY2tvcHQoU09MX1NPQ0tFVCwgU09fRVJST1IpIHdpbGwgcmV0dXJuCisgKiB0aGUgc3RhdHVzIG9mIG5vbi1ibG9ja2luZyBjb25uZWN0KCkgb3BlcmF0aW9uLgorICovCisjZGVmaW5lIFBKX0hBU19TT19FUlJPUiAgICAgICAgICAgICAxCisKKy8qIFRoaXMgdmFsdWUgc3BlY2lmaWVzIHRoZSB2YWx1ZSBzZXQgaW4gZXJybm8gYnkgdGhlIE9TIHdoZW4gYSBub24tYmxvY2tpbmcKKyAqIHNvY2tldCByZWN2KCkgY2FuIG5vdCByZXR1cm4gaW1tZWRpYXRlIGRhYXRhLgorICovCisjZGVmaW5lIFBKX0JMT0NLSU5HX0VSUk9SX1ZBTCAgICAgICBFQUdBSU4KKworLyogVGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhlIHZhbHVlIHNldCBpbiBlcnJubyBieSB0aGUgT1Mgd2hlbiBhIG5vbi1ibG9ja2luZworICogc29ja2V0IGNvbm5lY3QoKSBjYW4gbm90IGdldCBjb25uZWN0ZWQgaW1tZWRpYXRlbHkuCisgKi8KKyNkZWZpbmUgUEpfQkxPQ0tJTkdfQ09OTkVDVF9FUlJPUl9WQUwgICBFSU5QUk9HUkVTUworCisvKiBEZWZhdWx0IHRocmVhZGluZyBpcyBlbmFibGVkLCB1bmxlc3MgaXQncyBvdmVycmlkZGVuLiAqLworI2lmbmRlZiBQSl9IQVNfVEhSRUFEUworIyAgZGVmaW5lIFBKX0hBU19USFJFQURTCSAgICAoMSkKKyNlbmRpZgorCisjZGVmaW5lIFBKX0hBU19ISUdIX1JFU19USU1FUgkgICAgMQorI2RlZmluZSBQSl9IQVNfTUFMTE9DICAgICAgICAgICAgICAgMQorI2lmbmRlZiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sKKyMgICBkZWZpbmUgUEpfT1NfSEFTX0NIRUNLX1NUQUNLICAgIDAKKyNlbmRpZgorI2RlZmluZSBQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUgMAorCisjZGVmaW5lIFBKX0FUT01JQ19WQUxVRV9UWVBFCSAgICBsb25nCisKKy8qIElmIDEsIHVzZSBSZWFkL1dyaXRlIG11dGV4IGVtdWxhdGlvbiBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdCAqLworI2RlZmluZSBQSl9FTVVMQVRFX1JXTVVURVgJICAgIDAKKworLyogSWYgMSwgcGpfdGhyZWFkX2NyZWF0ZSgpIHNob3VsZCBlbmZvcmNlIHRoZSBzdGFjayBzaXplIHdoZW4gY3JlYXRpbmcgCisgKiB0aHJlYWRzLgorICogRGVmYXVsdDogMCAobGV0IE9TIGRlY2lkZSB0aGUgdGhyZWFkJ3Mgc3RhY2sgc2l6ZSkuCisgKi8KKyNkZWZpbmUgUEpfVEhSRUFEX1NFVF9TVEFDS19TSVpFICAgIAkwCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgYWxsb2NhdGUgc3RhY2sgZnJvbSB0aGUgcG9vbCBzdXBwbGllZC4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRocmVhZCdzIHN0YWNrKS4KKyAqLworI2RlZmluZSBQSl9USFJFQURfQUxMT0NBVEVfU1RBQ0sgICAgCTAKKworLyogTGludXggaGFzIHNvY2tsZW5fdCAqLworI2RlZmluZSBQSl9IQVNfU09DS0xFTl9UCQkxCisKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX09TX0xJTlVYX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9vc19saW51eF9rZXJuZWwuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX2xpbnV4X2tlcm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4OTQxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9vc19saW51eF9rZXJuZWwuaApAQCAtMCwwICsxLDE0OSBAQAorLyogJElkOiBvc19saW51eF9rZXJuZWwuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9PU19MSU5VWF9LRVJORUxfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX09TX0xJTlVYX0tFUk5FTF9IX18KKworLyoqCisgKiBAZmlsZSBvc19saW51eC5oCisgKiBAYnJpZWYgRGVzY3JpYmVzIExpbnV4IG9wZXJhdGluZyBzeXN0ZW0gc3BlY2lmaWNzLgorICovCisKKyNkZWZpbmUgUEpfT1NfTkFNRQkJICAgICJsaW51eC1tb2R1bGUiCisKKyNkZWZpbmUgUEpfSEFTX0FSUEFfSU5FVF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19BU1NFUlRfSAkJICAgIDAKKyNkZWZpbmUgUEpfSEFTX0NUWVBFX0gJCSAgICAwCisjZGVmaW5lIFBKX0hBU19FUlJOT19ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfTElOVVhfU09DS0VUX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX01BTExPQ19ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfTkVUREJfSAkJICAgIDAKKyNkZWZpbmUgUEpfSEFTX05FVElORVRfSU5fSAkgICAgMAorI2RlZmluZSBQSl9IQVNfU0VUSk1QX0gJCSAgICAwCisjZGVmaW5lIFBKX0hBU19TVERBUkdfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURERFRl9ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfU1RESU9fSAkJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1NURExJQl9ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfU1RSSU5HX0gJCSAgICAwCisjZGVmaW5lIFBKX0hBU19TWVNfSU9DVExfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfU1lTX1NFTEVDVF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19TWVNfU09DS0VUX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1NZU19USU1FX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1NZU19USU1FQl9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19TWVNfVFlQRVNfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfVElNRV9ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfVU5JU1REX0gJCSAgICAwCisKKyNkZWZpbmUgUEpfSEFTX01TV1NPQ0tfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfV0lOU09DS19ICSAgICAwCisjZGVmaW5lIFBKX0hBU19XSU5TT0NLMl9ICSAgICAwCisKKyNkZWZpbmUgUEpfU09DS19IQVNfSU5FVF9BVE9OCSAgICAwCisKKy8qIFNldCAxIGlmIG5hdGl2ZSBzb2NrYWRkcl9pbiBoYXMgc2luX2xlbiBtZW1iZXIuIAorICogRGVmYXVsdDogMAorICovCisjZGVmaW5lIFBKX1NPQ0tBRERSX0hBU19MRU4JICAgIDAKKworLyogV2hlbiB0aGlzIG1hY3JvIGlzIHNldCwgZ2V0c29ja29wdChTT0xfU09DS0VULCBTT19FUlJPUikgd2lsbCByZXR1cm4KKyAqIHRoZSBzdGF0dXMgb2Ygbm9uLWJsb2NraW5nIGNvbm5lY3QoKSBvcGVyYXRpb24uCisgKi8KKyNkZWZpbmUgUEpfSEFTX1NPX0VSUk9SICAgICAgICAgICAgIDEKKworLyoqCisgKiBJZiB0aGlzIG1hY3JvIGlzIHNldCwgaXQgdGVsbHMgc2VsZWN0IEkvTyBRdWV1ZSB0aGF0IHNlbGVjdCgpIG5lZWRzIHRvCisgKiBiZSBnaXZlbiBjb3JyZWN0IHZhbHVlIG9mIG5mZHMgKGkuZS4gbGFyZ2VzdCBmZCArIDEpLiBUaGlzIHJlcXVpcmVzCisgKiBzZWxlY3QgaW9xdWV1ZSB0byByZS1zY2FuIHRoZSBkZXNjcmlwdG9ycyBvbiBlYWNoIHJlZ2lzdHJhdGlvbiBhbmQKKyAqIHVucmVnaXN0cmF0aW9uLgorICogSWYgdGhpcyBtYWNybyBpcyBub3Qgc2V0LCB0aGVuIGlvcXVldWUgd2lsbCBhbHdheXMgZ2l2ZSBGRF9TRVRTSVpFIGZvcgorICogbmZkcyBhcmd1bWVudCB3aGVuIGNhbGxpbmcgc2VsZWN0KCkuCisgKgorICogRGVmYXVsdDogMAorICovCisjZGVmaW5lIFBKX1NFTEVDVF9ORUVEU19ORkRTCSAgICAwCisKKy8qIElzIGVycm5vIGEgZ29vZCB3YXkgdG8gcmV0cmlldmUgT1MgZXJyb3JzPworICogKHByb2JhYmx5IG5vIGZvciBsaW51eCBrZXJuZWwpIAorICogSWYgeW91IGFuc3dlciBubyBoZXJlLCB5b3UnbGwgbmVlZCB0byB0ZWxsIHBqbGliIGhvdyB0byBnZXQgT1MKKyAqIGVycm9yIChhIGNvbXBpbGUgZXJyb3Igd2lsbCB0ZWxsIHlvdSBleGFjdGx5IHdoZXJlKQorICovCisjZGVmaW5lIFBKX0hBU19FUlJOT19WQVIJICAgIDAKKworLyogVGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhlIHZhbHVlIHNldCBpbiBlcnJubyBieSB0aGUgT1Mgd2hlbiBhIG5vbi1ibG9ja2luZworICogc29ja2V0IHJlY3YoKSBjYW4gbm90IHJldHVybiBpbW1lZGlhdGUgZGFhdGEuCisgKi8KKyNkZWZpbmUgUEpfQkxPQ0tJTkdfRVJST1JfVkFMICAgICAgIEVBR0FJTgorCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgY29ubmVjdCgpIGNhbiBub3QgZ2V0IGNvbm5lY3RlZCBpbW1lZGlhdGVseS4KKyAqLworI2RlZmluZSBQSl9CTE9DS0lOR19DT05ORUNUX0VSUk9SX1ZBTCAgIEVJTlBST0dSRVNTCisKKyNpZm5kZWYgUEpfSEFTX1RIUkVBRFMKKyMgIGRlZmluZSBQSl9IQVNfVEhSRUFEUwkgICAgKDEpCisjZW5kaWYKKworCisvKgorICogRGVjbGFyZSBfX0ZEX1NFVFNJWkUgbm93IGJlZm9yZSBpbmNsdWRpbmcgPGxpbnV4Kj4uCisgKi8KKyNkZWZpbmUgX19GRF9TRVRTSVpFCQkgICAgUEpfSU9RVUVVRV9NQVhfSEFORExFUworCisjZGVmaW5lIE5VTEwJCQkgICAgKCh2b2lkKikwKQorCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CS8qIE5lZWRlZCBieSBhbGwgbW9kdWxlcyAqLworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgkvKiBOZWVkZWQgZm9yIEtFUk5fSU5GTyAqLworCisjZGVmaW5lIF9fUEpfRVhQT1JUX1NZTUJPTChhKQkgICAgRVhQT1JUX1NZTUJPTChhKTsKKworLyoKKyAqIE92ZXJyaWRlIGZlYXR1cmVzLgorICovCisjZGVmaW5lIFBKX0hBU19GTE9BVElOR19QT0lOVAkgICAgMAorI2RlZmluZSBQSl9IQVNfTUFMTE9DICAgICAgICAgICAgICAgMAorI2RlZmluZSBQSl9IQVNfU0VNQVBIT1JFCSAgICAwCisjZGVmaW5lIFBKX0hBU19FVkVOVF9PQkoJICAgIDAKKyNkZWZpbmUgUEpfSEFTX0hJR0hfUkVTX1RJTUVSCSAgICAxCisjaWZuZGVmIFBKX09TX0hBU19DSEVDS19TVEFDSworIyAgIGRlZmluZSBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sgICAgMAorI2VuZGlmCisjZGVmaW5lIFBKX1RFUk1fSEFTX0NPTE9SCSAgICAwCisjZGVmaW5lIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSAwCisKKyNkZWZpbmUgUEpfQVRPTUlDX1ZBTFVFX1RZUEUJICAgIGludAorI2RlZmluZSBQSl9USFJFQURfREVTQ19TSVpFCSAgICAxMjgKKworLyogSWYgMSwgdXNlIFJlYWQvV3JpdGUgbXV0ZXggZW11bGF0aW9uIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IGl0ICovCisjZGVmaW5lIFBKX0VNVUxBVEVfUldNVVRFWAkgICAgMAorCisvKiBJZiAxLCBwal90aHJlYWRfY3JlYXRlKCkgc2hvdWxkIGVuZm9yY2UgdGhlIHN0YWNrIHNpemUgd2hlbiBjcmVhdGluZyAKKyAqIHRocmVhZHMuCisgKiBEZWZhdWx0OiAwIChsZXQgT1MgZGVjaWRlIHRoZSB0aHJlYWQncyBzdGFjayBzaXplKS4KKyAqLworI2RlZmluZSBQSl9USFJFQURfU0VUX1NUQUNLX1NJWkUgICAgCTAKKworLyogSWYgMSwgcGpfdGhyZWFkX2NyZWF0ZSgpIHNob3VsZCBhbGxvY2F0ZSBzdGFjayBmcm9tIHRoZSBwb29sIHN1cHBsaWVkLgorICogRGVmYXVsdDogMCAobGV0IE9TIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhyZWFkJ3Mgc3RhY2spLgorICovCisjZGVmaW5lIFBKX1RIUkVBRF9BTExPQ0FURV9TVEFDSyAgICAJMAorCisKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX09TX0xJTlVYX0tFUk5FTF9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvb3NfcGFsbW9zLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9vc19wYWxtb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmQ0ZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvb3NfcGFsbW9zLmgKQEAgLTAsMCArMSwxMTkgQEAKKy8qICRJZDogb3NfcGFsbW9zLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfT1NfUEFMTU9TX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9PU19QQUxNT1NfSF9fCisKKy8qKgorICogQGZpbGUgb3NfcGFsbW9zLmgKKyAqIEBicmllZiBEZXNjcmliZXMgUGFsbU9TIG9wZXJhdGluZyBzeXN0ZW0gc3BlY2lmaWNzLgorICovCisKKyNkZWZpbmUgUEpfT1NfTkFNRQkJICAgICJwYWxtb3MiCisKKyNkZWZpbmUgUEpfSEFTX0FSUEFfSU5FVF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19BU1NFUlRfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX0NUWVBFX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19FUlJOT19ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfTUFMTE9DX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19ORVREQl9ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfTkVUSU5FVF9JTl9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19TRVRKTVBfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NUREFSR19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1REREVGX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVERJT19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1RETElCX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVFJJTkdfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19JT0NUTF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19TWVNfU0VMRUNUX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1NZU19TT0NLRVRfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfU1lTX1RJTUVCX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1NZU19UWVBFU19ICSAgICAxCisjZGVmaW5lIFBKX0hBU19USU1FX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19VTklTVERfSAkJICAgIDAKKworI2RlZmluZSBQSl9IQVNfTVNXU09DS19ICSAgICAwCisjZGVmaW5lIFBKX0hBU19XSU5TT0NLX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1dJTlNPQ0syX0gJICAgIDAKKworI2RlZmluZSBQSl9TT0NLX0hBU19JTkVUX0FUT04JICAgIDAKKworLyogU2V0IDEgaWYgbmF0aXZlIHNvY2thZGRyX2luIGhhcyBzaW5fbGVuIG1lbWJlci4gCisgKiBEZWZhdWx0OiAwCisgKi8KKyNkZWZpbmUgUEpfU09DS0FERFJfSEFTX0xFTgkgICAgMAorCisvKioKKyAqIElmIHRoaXMgbWFjcm8gaXMgc2V0LCBpdCB0ZWxscyBzZWxlY3QgSS9PIFF1ZXVlIHRoYXQgc2VsZWN0KCkgbmVlZHMgdG8KKyAqIGJlIGdpdmVuIGNvcnJlY3QgdmFsdWUgb2YgbmZkcyAoaS5lLiBsYXJnZXN0IGZkICsgMSkuIFRoaXMgcmVxdWlyZXMKKyAqIHNlbGVjdCBpb3F1ZXVlIHRvIHJlLXNjYW4gdGhlIGRlc2NyaXB0b3JzIG9uIGVhY2ggcmVnaXN0cmF0aW9uIGFuZAorICogdW5yZWdpc3RyYXRpb24uCisgKiBJZiB0aGlzIG1hY3JvIGlzIG5vdCBzZXQsIHRoZW4gaW9xdWV1ZSB3aWxsIGFsd2F5cyBnaXZlIEZEX1NFVFNJWkUgZm9yCisgKiBuZmRzIGFyZ3VtZW50IHdoZW4gY2FsbGluZyBzZWxlY3QoKS4KKyAqCisgKiBEZWZhdWx0OiAwCisgKi8KKyNkZWZpbmUgUEpfU0VMRUNUX05FRURTX05GRFMJICAgIDAKKworLyogSXMgZXJybm8gYSBnb29kIHdheSB0byByZXRyaWV2ZSBPUyBlcnJvcnM/CisgKi8KKyNkZWZpbmUgUEpfSEFTX0VSUk5PX1ZBUgkgICAgMAorCisvKiBXaGVuIHRoaXMgbWFjcm8gaXMgc2V0LCBnZXRzb2Nrb3B0KFNPTF9TT0NLRVQsIFNPX0VSUk9SKSB3aWxsIHJldHVybgorICogdGhlIHN0YXR1cyBvZiBub24tYmxvY2tpbmcgY29ubmVjdCgpIG9wZXJhdGlvbi4KKyAqLworI2RlZmluZSBQSl9IQVNfU09fRVJST1IgICAgICAgICAgICAgMAorCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgcmVjdigpIGNhbiBub3QgcmV0dXJuIGltbWVkaWF0ZSBkYWF0YS4KKyAqLworI2RlZmluZSBQSl9CTE9DS0lOR19FUlJPUl9WQUwgICAgICAgeHh4CisKKy8qIFRoaXMgdmFsdWUgc3BlY2lmaWVzIHRoZSB2YWx1ZSBzZXQgaW4gZXJybm8gYnkgdGhlIE9TIHdoZW4gYSBub24tYmxvY2tpbmcKKyAqIHNvY2tldCBjb25uZWN0KCkgY2FuIG5vdCBnZXQgY29ubmVjdGVkIGltbWVkaWF0ZWx5LgorICovCisjZGVmaW5lIFBKX0JMT0NLSU5HX0NPTk5FQ1RfRVJST1JfVkFMICAgeHh4CisKKy8qIERlZmF1bHQgdGhyZWFkaW5nIGlzIGVuYWJsZWQsIHVubGVzcyBpdCdzIG92ZXJyaWRkZW4uICovCisjaWZuZGVmIFBKX0hBU19USFJFQURTCisjICBkZWZpbmUgUEpfSEFTX1RIUkVBRFMJCSgxKQorI2VuZGlmCisKKyNkZWZpbmUgUEpfSEFTX0hJR0hfUkVTX1RJTUVSCQkxCisjaWZuZGVmIFBKX09TX0hBU19DSEVDS19TVEFDSworIyAgIGRlZmluZSBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sJMAorI2RlZmluZSBQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUJMAorCisvKiBJZiAxLCB1c2UgUmVhZC9Xcml0ZSBtdXRleCBlbXVsYXRpb24gZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQgKi8KKyNkZWZpbmUgUEpfRU1VTEFURV9SV01VVEVYCQkxCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgZW5mb3JjZSB0aGUgc3RhY2sgc2l6ZSB3aGVuIGNyZWF0aW5nIAorICogdGhyZWFkcy4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBkZWNpZGUgdGhlIHRocmVhZCdzIHN0YWNrIHNpemUpLgorICovCisjZGVmaW5lIFBKX1RIUkVBRF9TRVRfU1RBQ0tfU0laRSAgICAJMAorCisvKiBJZiAxLCBwal90aHJlYWRfY3JlYXRlKCkgc2hvdWxkIGFsbG9jYXRlIHN0YWNrIGZyb20gdGhlIHBvb2wgc3VwcGxpZWQuCisgKiBEZWZhdWx0OiAwIChsZXQgT1MgYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJlYWQncyBzdGFjaykuCisgKi8KKyNkZWZpbmUgUEpfVEhSRUFEX0FMTE9DQVRFX1NUQUNLICAgIAkwCisKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX09TX1BBTE1PU19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvb3NfcnRlbXMuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX3J0ZW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM3MjI0ZAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX3J0ZW1zLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qICRJZDogb3NfcnRlbXMuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworCisvKgorICogVGhhbmtzIFpldHJvbiwgSW5jIGFuZCBQaGlsIFRvcnJlIDxwdG9ycmVAemV0cm9uLmNvbT4gZm9yIGRvbmF0aW5nIFBKTElCCisgKiBwb3J0IHRvIFJURU1TLgorICovCisKKyNpZm5kZWYgX19QSl9DT01QQVRfT1NfUlRFTVNfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX09TX1JURU1TX0hfXworCisvKioKKyAqIEBmaWxlIG9zX2xpbnV4LmgKKyAqIEBicmllZiBEZXNjcmliZXMgTGludXggb3BlcmF0aW5nIHN5c3RlbSBzcGVjaWZpY3MuCisgKi8KKworI2RlZmluZSBQSl9PU19OQU1FCQkgICAgInJ0ZW1zIgorCisjZGVmaW5lIFBKX0hBU19BUlBBX0lORVRfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfQVNTRVJUX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19DVFlQRV9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfRVJSTk9fSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX0xJTlVYX1NPQ0tFVF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19NQUxMT0NfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX05FVERCX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19ORVRJTkVUX0lOX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NFVEpNUF9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1REQVJHX0gJCSAgICAwCisjZGVmaW5lIFBKX0hBU19TVERERUZfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURElPX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVERMSUJfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NUUklOR19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1lTX0lPQ1RMX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19TRUxFQ1RfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfU1lTX1NPQ0tFVF9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfVElNRV9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfVElNRUJfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfU1lTX1RZUEVTX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1RJTUVfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1VOSVNURF9ICQkgICAgMQorCisjZGVmaW5lIFBKX0hBU19NU1dTT0NLX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1dJTlNPQ0tfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfV0lOU09DSzJfSAkgICAgMAorCisjZGVmaW5lIFBKX1NPQ0tfSEFTX0lORVRfQVRPTgkgICAgMQorCisvKiBTZXQgMSBpZiBuYXRpdmUgc29ja2FkZHJfaW4gaGFzIHNpbl9sZW4gbWVtYmVyLiAKKyAqIERlZmF1bHQ6IDAKKyAqLworI2RlZmluZSBQSl9TT0NLQUREUl9IQVNfTEVOCSAgICAxCisKKy8qIElzIGVycm5vIGEgZ29vZCB3YXkgdG8gcmV0cmlldmUgT1MgZXJyb3JzPworICovCisjZGVmaW5lIFBKX0hBU19FUlJOT19WQVIJICAgIDEKKworLyogV2hlbiB0aGlzIG1hY3JvIGlzIHNldCwgZ2V0c29ja29wdChTT0xfU09DS0VULCBTT19FUlJPUikgd2lsbCByZXR1cm4KKyAqIHRoZSBzdGF0dXMgb2Ygbm9uLWJsb2NraW5nIGNvbm5lY3QoKSBvcGVyYXRpb24uCisgKi8KKyNkZWZpbmUgUEpfSEFTX1NPX0VSUk9SICAgICAgICAgICAgIDEKKworLyoqCisgKiBJZiB0aGlzIG1hY3JvIGlzIHNldCwgaXQgdGVsbHMgc2VsZWN0IEkvTyBRdWV1ZSB0aGF0IHNlbGVjdCgpIG5lZWRzIHRvCisgKiBiZSBnaXZlbiBjb3JyZWN0IHZhbHVlIG9mIG5mZHMgKGkuZS4gbGFyZ2VzdCBmZCArIDEpLiBUaGlzIHJlcXVpcmVzCisgKiBzZWxlY3QgaW9xdWV1ZSB0byByZS1zY2FuIHRoZSBkZXNjcmlwdG9ycyBvbiBlYWNoIHJlZ2lzdHJhdGlvbiBhbmQKKyAqIHVucmVnaXN0cmF0aW9uLgorICogSWYgdGhpcyBtYWNybyBpcyBub3Qgc2V0LCB0aGVuIGlvcXVldWUgd2lsbCBhbHdheXMgZ2l2ZSBGRF9TRVRTSVpFIGZvcgorICogbmZkcyBhcmd1bWVudCB3aGVuIGNhbGxpbmcgc2VsZWN0KCkuCisgKgorICogRGVmYXVsdDogMAorICovCisjZGVmaW5lIFBKX1NFTEVDVF9ORUVEU19ORkRTCSAgICAxCisKKy8qIFRoaXMgdmFsdWUgc3BlY2lmaWVzIHRoZSB2YWx1ZSBzZXQgaW4gZXJybm8gYnkgdGhlIE9TIHdoZW4gYSBub24tYmxvY2tpbmcKKyAqIHNvY2tldCByZWN2KCkgY2FuIG5vdCByZXR1cm4gaW1tZWRpYXRlIGRhYXRhLgorICovCisjZGVmaW5lIFBKX0JMT0NLSU5HX0VSUk9SX1ZBTCAgICAgICBFV09VTERCTE9DSworCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgY29ubmVjdCgpIGNhbiBub3QgZ2V0IGNvbm5lY3RlZCBpbW1lZGlhdGVseS4KKyAqLworI2RlZmluZSBQSl9CTE9DS0lOR19DT05ORUNUX0VSUk9SX1ZBTCAgIEVJTlBST0dSRVNTCisKKy8qIERlZmF1bHQgdGhyZWFkaW5nIGlzIGVuYWJsZWQsIHVubGVzcyBpdCdzIG92ZXJyaWRkZW4uICovCisjaWZuZGVmIFBKX0hBU19USFJFQURTCisjICBkZWZpbmUgUEpfSEFTX1RIUkVBRFMJICAgICgxKQorI2VuZGlmCisKKyNkZWZpbmUgUEpfSEFTX0hJR0hfUkVTX1RJTUVSCSAgICAxCisjZGVmaW5lIFBKX0hBU19NQUxMT0MgICAgICAgICAgICAgICAxCisjaWZuZGVmIFBKX09TX0hBU19DSEVDS19TVEFDSworIyAgIGRlZmluZSBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sgICAgMAorI2VuZGlmCisjZGVmaW5lIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSAwCisKKyNkZWZpbmUgUEpfQVRPTUlDX1ZBTFVFX1RZUEUJICAgIGludAorCisvKiBJZiAxLCB1c2UgUmVhZC9Xcml0ZSBtdXRleCBlbXVsYXRpb24gZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQgKi8KKyNkZWZpbmUgUEpfRU1VTEFURV9SV01VVEVYCSAgICAxCisKKy8qIE1pc3Npbmcgc29ja2xlbl90ICovCit0eXBlZGVmIGludCBzb2NrbGVuX3Q7CisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgZW5mb3JjZSB0aGUgc3RhY2sgc2l6ZSB3aGVuIGNyZWF0aW5nIAorICogdGhyZWFkcy4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBkZWNpZGUgdGhlIHRocmVhZCdzIHN0YWNrIHNpemUpLgorICovCisjZGVmaW5lIFBKX1RIUkVBRF9TRVRfU1RBQ0tfU0laRSAgICAxCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgYWxsb2NhdGUgc3RhY2sgZnJvbSB0aGUgcG9vbCBzdXBwbGllZC4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRocmVhZCdzIHN0YWNrKS4KKyAqLworI2RlZmluZSBQSl9USFJFQURfQUxMT0NBVEVfU1RBQ0sgICAgMQorCisvKiBSVEVNUyBoYXMgc29ja2xlbl90IChkb2VzIGl0PyApKi8KKyNkZWZpbmUgUEpfSEFTX1NPQ0tMRU5fVAkgICAgMQorCisKKworCisjZW5kaWYJLyogX19QSl9DT01QQVRfT1NfUlRFTVNfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX3N1bm9zLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9vc19zdW5vcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NWMzNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9vc19zdW5vcy5oCkBAIC0wLDAgKzEsMTMyIEBACisvKiAkSWQ6IG9zX3N1bm9zLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfT1NfU1VOT1NfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX09TX1NVTk9TX0hfXworCisvKioKKyAqIEBmaWxlIG9zX3N1bm9zLmgKKyAqIEBicmllZiBEZXNjcmliZXMgU3VuT1MvU29sYXJpcyBvcGVyYXRpbmcgc3lzdGVtIHNwZWNpZmljcy4KKyAqLworCisjZGVmaW5lIFBKX09TX05BTUUJCSAgICAic3Vub3MiCisKKyNkZWZpbmUgUEpfSEFTX0FSUEFfSU5FVF9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19BU1NFUlRfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX0NUWVBFX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19FUlJOT19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfTElOVVhfU09DS0VUX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX01BTExPQ19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfTkVUREJfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX05FVElORVRfSU5fSAkgICAgMQorI2RlZmluZSBQSl9IQVNfU0VUSk1QX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVERBUkdfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURERFRl9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1RESU9fSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURExJQl9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1RSSU5HX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfSU9DVExfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfU1lTX1NFTEVDVF9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfU09DS0VUX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19USU1FX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1NZU19USU1FQl9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfVFlQRVNfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfVElNRV9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfVU5JU1REX0gJCSAgICAxCisKKyNkZWZpbmUgUEpfSEFTX01TV1NPQ0tfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfV0lOU09DS19ICSAgICAwCisjZGVmaW5lIFBKX0hBU19XSU5TT0NLMl9ICSAgICAwCisKKyNkZWZpbmUgUEpfU09DS19IQVNfSU5FVF9BVE9OCSAgICAwCisKKy8qIFNldCAxIGlmIG5hdGl2ZSBzb2NrYWRkcl9pbiBoYXMgc2luX2xlbiBtZW1iZXIuIAorICogRGVmYXVsdDogMAorICovCisjZGVmaW5lIFBKX1NPQ0tBRERSX0hBU19MRU4JICAgIDAKKworLyogSXMgZXJybm8gYSBnb29kIHdheSB0byByZXRyaWV2ZSBPUyBlcnJvcnM/CisgKi8KKyNkZWZpbmUgUEpfSEFTX0VSUk5PX1ZBUgkgICAgMQorCisvKiBXaGVuIHRoaXMgbWFjcm8gaXMgc2V0LCBnZXRzb2Nrb3B0KFNPTF9TT0NLRVQsIFNPX0VSUk9SKSB3aWxsIHJldHVybgorICogdGhlIHN0YXR1cyBvZiBub24tYmxvY2tpbmcgY29ubmVjdCgpIG9wZXJhdGlvbi4KKyAqLworI2RlZmluZSBQSl9IQVNfU09fRVJST1IgICAgICAgICAgICAgMAorCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgcmVjdigpIGNhbiBub3QgcmV0dXJuIGltbWVkaWF0ZSBkYWF0YS4KKyAqLworI2RlZmluZSBQSl9CTE9DS0lOR19FUlJPUl9WQUwgICAgICAgRVdPVUxEQkxPQ0sKKworLyogVGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhlIHZhbHVlIHNldCBpbiBlcnJubyBieSB0aGUgT1Mgd2hlbiBhIG5vbi1ibG9ja2luZworICogc29ja2V0IGNvbm5lY3QoKSBjYW4gbm90IGdldCBjb25uZWN0ZWQgaW1tZWRpYXRlbHkuCisgKi8KKyNkZWZpbmUgUEpfQkxPQ0tJTkdfQ09OTkVDVF9FUlJPUl9WQUwgICBFSU5QUk9HUkVTUworCisvKioKKyAqIElmIHRoaXMgbWFjcm8gaXMgc2V0LCBpdCB0ZWxscyBzZWxlY3QgSS9PIFF1ZXVlIHRoYXQgc2VsZWN0KCkgbmVlZHMgdG8KKyAqIGJlIGdpdmVuIGNvcnJlY3QgdmFsdWUgb2YgbmZkcyAoaS5lLiBsYXJnZXN0IGZkICsgMSkuIFRoaXMgcmVxdWlyZXMKKyAqIHNlbGVjdCBpb3F1ZXVlIHRvIHJlLXNjYW4gdGhlIGRlc2NyaXB0b3JzIG9uIGVhY2ggcmVnaXN0cmF0aW9uIGFuZAorICogdW5yZWdpc3RyYXRpb24uCisgKiBJZiB0aGlzIG1hY3JvIGlzIG5vdCBzZXQsIHRoZW4gaW9xdWV1ZSB3aWxsIGFsd2F5cyBnaXZlIEZEX1NFVFNJWkUgZm9yCisgKiBuZmRzIGFyZ3VtZW50IHdoZW4gY2FsbGluZyBzZWxlY3QoKS4KKyAqCisgKiBEZWZhdWx0OiAwCisgKi8KKyNkZWZpbmUgUEpfU0VMRUNUX05FRURTX05GRFMJCTAKKworLyogRGVmYXVsdCB0aHJlYWRpbmcgaXMgZW5hYmxlZCwgdW5sZXNzIGl0J3Mgb3ZlcnJpZGRlbi4gKi8KKyNpZm5kZWYgUEpfSEFTX1RIUkVBRFMKKyMgIGRlZmluZSBQSl9IQVNfVEhSRUFEUwkJKDEpCisjZW5kaWYKKworI2RlZmluZSBQSl9IQVNfSElHSF9SRVNfVElNRVIJCTEKKyNkZWZpbmUgUEpfSEFTX01BTExPQwkJCTEKKyNpZm5kZWYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLCisjICAgZGVmaW5lIFBKX09TX0hBU19DSEVDS19TVEFDSyAgICAgICAgMAorI2VuZGlmCisjZGVmaW5lIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERQkwCisKKyNkZWZpbmUgUEpfQVRPTUlDX1ZBTFVFX1RZUEUJCWxvbmcKKworLyogR2V0IEJTRCByZWxhdGVkIGlkZW50aWZlcnMgaW4gU3VuJ3MgaW5jbHVkZSBmaWxlcyAqLworI2RlZmluZSBCU0RfQ09NUAorCisvKiBJZiAxLCB1c2UgUmVhZC9Xcml0ZSBtdXRleCBlbXVsYXRpb24gZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQgKi8KKyNkZWZpbmUgUEpfRU1VTEFURV9SV01VVEVYCQkwCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgZW5mb3JjZSB0aGUgc3RhY2sgc2l6ZSB3aGVuIGNyZWF0aW5nIAorICogdGhyZWFkcy4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBkZWNpZGUgdGhlIHRocmVhZCdzIHN0YWNrIHNpemUpLgorICovCisjZGVmaW5lIFBKX1RIUkVBRF9TRVRfU1RBQ0tfU0laRSAgICAJMAorCisvKiBJZiAxLCBwal90aHJlYWRfY3JlYXRlKCkgc2hvdWxkIGFsbG9jYXRlIHN0YWNrIGZyb20gdGhlIHBvb2wgc3VwcGxpZWQuCisgKiBEZWZhdWx0OiAwIChsZXQgT1MgYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJlYWQncyBzdGFjaykuCisgKi8KKyNkZWZpbmUgUEpfVEhSRUFEX0FMTE9DQVRFX1NUQUNLICAgIAkwCisKKy8qIFN1bk9TIGhhcyBzb2NrbGVuX3QgKGRvZXMgaXQ/ICkqLworI2RlZmluZSBQSl9IQVNfU09DS0xFTl9UCSAgICAxCisKKworCisjZW5kaWYJLyogX19QSl9DT01QQVRfT1NfU1VOT1NfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX3N5bWJpYW4uaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX3N5bWJpYW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTA2ZDZmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvb3Nfc3ltYmlhbi5oCkBAIC0wLDAgKzEsMTY3IEBACisvKiAkSWQ6IG9zX3N5bWJpYW4uaCAzODQxIDIwMTEtMTAtMjQgMDk6Mjg6MTNaIG1pbmcgJCAqLworLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX09TX1NZTUJJQU5fSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX09TX1NZTUJJQU5fSF9fCisKKy8qKgorICogQGZpbGUgb3Nfc3ltYmlhbi5oCisgKiBAYnJpZWYgRGVzY3JpYmVzIFN5bWJpYW4gb3BlcmF0aW5nIHN5c3RlbSBzcGVjaWZpY3MuCisgKi8KKworI2RlZmluZSBQSl9PU19OQU1FCQkgICAgInN5bWJpYW4iCisKKyNkZWZpbmUgUEpfSEFTX0FSUEFfSU5FVF9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19BU1NFUlRfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX0NUWVBFX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19FUlJOT19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfTElOVVhfU09DS0VUX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX01BTExPQ19ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfTkVUREJfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX05FVElORVRfSU5fSAkgICAgMQorI2RlZmluZSBQSl9IQVNfTkVUSU5FVF9UQ1BfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfU0VUSk1QX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVERBUkdfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURERFRl9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1RESU9fSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURExJQl9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1RSSU5HX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19OT19TTlBSSU5URgkgICAgMQorI2RlZmluZSBQSl9IQVNfU1lTX0lPQ1RMX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19TRUxFQ1RfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfU1lTX1NPQ0tFVF9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfVElNRV9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfVElNRUJfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfU1lTX1RZUEVTX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1RJTUVfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1VOSVNURF9ICQkgICAgMQorCisjZGVmaW5lIFBKX0hBU19NU1dTT0NLX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1dJTlNPQ0tfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfV0lOU09DSzJfSAkgICAgMAorCisjZGVmaW5lIFBKX1NPQ0tfSEFTX0lORVRfQVRPTgkgICAgMAorCisvKiBTZXQgMSBpZiBuYXRpdmUgc29ja2FkZHJfaW4gaGFzIHNpbl9sZW4gbWVtYmVyLgorICogRGVmYXVsdDogMAorICovCisjZGVmaW5lIFBKX1NPQ0tBRERSX0hBU19MRU4JICAgIDAKKy8qIElzIGVycm5vIGEgZ29vZCB3YXkgdG8gcmV0cmlldmUgT1MgZXJyb3JzPworICovCisjZGVmaW5lIFBKX0hBU19FUlJOT19WQVIJICAgIDEKKworLyogV2hlbiB0aGlzIG1hY3JvIGlzIHNldCwgZ2V0c29ja29wdChTT0xfU09DS0VULCBTT19FUlJPUikgd2lsbCByZXR1cm4KKyAqIHRoZSBzdGF0dXMgb2Ygbm9uLWJsb2NraW5nIGNvbm5lY3QoKSBvcGVyYXRpb24uCisgKi8KKyNkZWZpbmUgUEpfSEFTX1NPX0VSUk9SICAgICAgICAgICAgIDEKKworLyoqCisgKiBJZiB0aGlzIG1hY3JvIGlzIHNldCwgaXQgdGVsbHMgc2VsZWN0IEkvTyBRdWV1ZSB0aGF0IHNlbGVjdCgpIG5lZWRzIHRvCisgKiBiZSBnaXZlbiBjb3JyZWN0IHZhbHVlIG9mIG5mZHMgKGkuZS4gbGFyZ2VzdCBmZCArIDEpLiBUaGlzIHJlcXVpcmVzCisgKiBzZWxlY3QgaW9xdWV1ZSB0byByZS1zY2FuIHRoZSBkZXNjcmlwdG9ycyBvbiBlYWNoIHJlZ2lzdHJhdGlvbiBhbmQKKyAqIHVucmVnaXN0cmF0aW9uLgorICogSWYgdGhpcyBtYWNybyBpcyBub3Qgc2V0LCB0aGVuIGlvcXVldWUgd2lsbCBhbHdheXMgZ2l2ZSBGRF9TRVRTSVpFIGZvcgorICogbmZkcyBhcmd1bWVudCB3aGVuIGNhbGxpbmcgc2VsZWN0KCkuCisgKgorICogRGVmYXVsdDogMAorICovCisjZGVmaW5lIFBKX1NFTEVDVF9ORUVEU19ORkRTCSAgICAwCisKKy8qIFRoaXMgdmFsdWUgc3BlY2lmaWVzIHRoZSB2YWx1ZSBzZXQgaW4gZXJybm8gYnkgdGhlIE9TIHdoZW4gYSBub24tYmxvY2tpbmcKKyAqIHNvY2tldCByZWN2KCkgY2FuIG5vdCByZXR1cm4gaW1tZWRpYXRlIGRhYXRhLgorICovCisjZGVmaW5lIFBKX0JMT0NLSU5HX0VSUk9SX1ZBTCAgICAgICBFQUdBSU4KKworLyogVGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhlIHZhbHVlIHNldCBpbiBlcnJubyBieSB0aGUgT1Mgd2hlbiBhIG5vbi1ibG9ja2luZworICogc29ja2V0IGNvbm5lY3QoKSBjYW4gbm90IGdldCBjb25uZWN0ZWQgaW1tZWRpYXRlbHkuCisgKi8KKyNkZWZpbmUgUEpfQkxPQ0tJTkdfQ09OTkVDVF9FUlJPUl9WQUwgICBFSU5QUk9HUkVTUworCisvKgorICogV2UgZG9uJ3Qgd2FudCB0byB1c2UgdGhyZWFkcyBpbiBTeW1iaWFuCisgKi8KKyNkZWZpbmUgUEpfSEFTX1RIUkVBRFMJCSAgICAwCisKKworLyoKKyAqIERlY2xhcmUgX19GRF9TRVRTSVpFIG5vdyBiZWZvcmUgaW5jbHVkaW5nIDxsaW51eCo+LgorI2RlZmluZSBfX0ZEX1NFVFNJWkUJCSAgICBQSl9JT1FVRVVFX01BWF9IQU5ETEVTCisgKi8KKworI2lmbmRlZiBOVUxMCisjICAgZGVmaW5lIE5VTEwgMAorI2VuZGlmCisKKy8qIEVuZGlhbm5lc3MgKi8KKyNpZm5kZWYgUEpfSVNfTElUVExFX0VORElBTgorIyAgIGRlZmluZSBQSl9JU19MSVRUTEVfRU5ESUFOCTEKKyMgICBkZWZpbmUgUEpfSVNfQklHX0VORElBTgkwCisjZW5kaWYKKworLyogRG9lc24ndCBzZWVtIHRvIGFsbG93IG1vcmUgdGhhbiB0aGlzICovCisjZGVmaW5lIFBKX0lPUVVFVUVfTUFYX0hBTkRMRVMJICAgIDgKKworLyoKKyAqIE92ZXJyaWRlIGZlYXR1cmVzLgorICovCisjZGVmaW5lIFBKX0hBU19GTE9BVElOR19QT0lOVAkgICAgMAorI2RlZmluZSBQSl9IQVNfTUFMTE9DICAgICAgICAgICAgICAgMAorI2RlZmluZSBQSl9IQVNfU0VNQVBIT1JFCSAgICAxCisjZGVmaW5lIFBKX0hBU19FVkVOVF9PQkoJICAgIDAKKyNkZWZpbmUgUEpfSEFTX0hJR0hfUkVTX1RJTUVSCSAgICAxCisjZGVmaW5lIFBKX09TX0hBU19DSEVDS19TVEFDSyAgICAgICAwCisjZGVmaW5lIFBKX1RFUk1fSEFTX0NPTE9SCSAgICAwCisjZGVmaW5lIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSAwCisjZGVmaW5lIFBKX05BVElWRV9FUlJfUE9TSVRJVkUJICAgIDAKKworI2RlZmluZSBQSl9BVE9NSUNfVkFMVUVfVFlQRQkgICAgaW50CisjZGVmaW5lIFBKX1RIUkVBRF9ERVNDX1NJWkUJICAgIDEyOAorCisvKiBJZiAxLCB1c2UgUmVhZC9Xcml0ZSBtdXRleCBlbXVsYXRpb24gZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQgKi8KKyNkZWZpbmUgUEpfRU1VTEFURV9SV01VVEVYCSAgICAxCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgZW5mb3JjZSB0aGUgc3RhY2sgc2l6ZSB3aGVuIGNyZWF0aW5nCisgKiB0aHJlYWRzLgorICogRGVmYXVsdDogMCAobGV0IE9TIGRlY2lkZSB0aGUgdGhyZWFkJ3Mgc3RhY2sgc2l6ZSkuCisgKi8KKyNkZWZpbmUgUEpfVEhSRUFEX1NFVF9TVEFDS19TSVpFICAgIAkwCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgYWxsb2NhdGUgc3RhY2sgZnJvbSB0aGUgcG9vbCBzdXBwbGllZC4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRocmVhZCdzIHN0YWNrKS4KKyAqLworI2RlZmluZSBQSl9USFJFQURfQUxMT0NBVEVfU1RBQ0sgICAgCTAKKworLyogTWlzc2luZyBzb2NrbGVuX3QgKi8KKyNkZWZpbmUgUEpfSEFTX1NPQ0tMRU5fVAkJMQordHlwZWRlZiB1bnNpZ25lZCBpbnQgc29ja2xlbl90OworCisjaWZuZGVmIF9fR0NDRV9fCisjaW5jbHVkZSA8ZTMyZGVmLmg+CisjZW5kaWYKKworI2RlZmluZSBQSl9FWFBPUlRfREVDTF9TUEVDSUZJRVIJSU1QT1JUX0MKKy8vI2RlZmluZSBQSl9FWFBPUlRfREVDTF9TUEVDSUZJRVIKKyNkZWZpbmUgUEpfRVhQT1JUX0RFRl9TUEVDSUZJRVIJCUVYUE9SVF9DCisjZGVmaW5lIFBKX0lNUE9SVF9ERUNMX1NQRUNJRklFUglJTVBPUlRfQworCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9PU19TWU1CSUFOX0hfXyAqLworCisKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvb3Nfd2luMzIuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX3dpbjMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFiZDU5NwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX3dpbjMyLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qICRJZDogb3Nfd2luMzIuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9PU19XSU4zMl9IX18KKyNkZWZpbmUgX19QSl9DT01QQVRfT1NfV0lOMzJfSF9fCisKKy8qKgorICogQGZpbGUgb3Nfd2luMzIuaAorICogQGJyaWVmIERlc2NyaWJlcyBXaW4zMiBvcGVyYXRpbmcgc3lzdGVtIGZhbWlseSBzcGVjaWZpY3MuCisgKi8KKworI2RlZmluZSBQSl9PU19OQU1FCQkgICAgIndpbjMyIgorCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNkZWZpbmUgUEpfV0lOMzJfV0lOTlQJCSAgICAweDA0MDAKKyNpZm5kZWYgX1dJTjMyX1dJTk5UCisjICBkZWZpbmUgX1dJTjMyX1dJTk5UCQkgICAgUEpfV0lOMzJfV0lOTlQKKyNlbmRpZgorCisjZGVmaW5lIFBKX0hBU19BUlBBX0lORVRfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfQVNTRVJUX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19DVFlQRV9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfRVJSTk9fSAkJICAgIDAgICAvKiBNdXN0IGJlIHplcm8sIG90aGVyd2lzZSBlcnJub190ZXN0KCkgZmFpbHMuICovCisjZGVmaW5lIFBKX0hBU19MSU5VWF9TT0NLRVRfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfTUFMTE9DX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19ORVREQl9ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfTkVUSU5FVF9JTl9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19ORVRJTkVUX1RDUF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19TRVRKTVBfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NUREFSR19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1REREVGX0gJCSAgICAxCisjdW5kZWYgIFBKX0hBU19TVERJTlRfSAorI2RlZmluZSBQSl9IQVNfU1RESU9fSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NURExJQl9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1RSSU5HX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfSU9DVExfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfU1lTX1NFTEVDVF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19TWVNfU09DS0VUX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1NZU19USU1FX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1NZU19USU1FQl9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19TWVNfVFlQRVNfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfVElNRV9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfVU5JU1REX0gJCSAgICAwCisKKyNkZWZpbmUgUEpfSEFTX01TV1NPQ0tfSAkgICAgMQorI2RlZmluZSBQSl9IQVNfV0lOU09DS19ICSAgICAwCisjZGVmaW5lIFBKX0hBU19XSU5TT0NLMl9ICSAgICAxCisjZGVmaW5lIFBKX0hBU19XUzJUQ1BJUF9ICSAgICAxCisKKyNkZWZpbmUgUEpfU09DS19IQVNfSU5FVF9BVE9OCSAgICAwCisKKy8qIFNldCAxIGlmIG5hdGl2ZSBzb2NrYWRkcl9pbiBoYXMgc2luX2xlbiBtZW1iZXIuIAorICogRGVmYXVsdDogMAorICovCisjZGVmaW5lIFBKX1NPQ0tBRERSX0hBU19MRU4JICAgIDAKKworLyogSXMgZXJybm8gYSBnb29kIHdheSB0byByZXRyaWV2ZSBPUyBlcnJvcnM/IChObykKKyAqLworI2RlZmluZSBQSl9IQVNfRVJSTk9fVkFSCSAgICAwCisKKy8qIFdoZW4gdGhpcyBtYWNybyBpcyBzZXQsIGdldHNvY2tvcHQoU09MX1NPQ0tFVCwgU09fRVJST1IpIHdpbGwgcmV0dXJuCisgKiB0aGUgc3RhdHVzIG9mIG5vbi1ibG9ja2luZyBjb25uZWN0KCkgb3BlcmF0aW9uLgorICovCisjZGVmaW5lIFBKX0hBU19TT19FUlJPUiAgICAgICAgICAgICAxCisKKy8qIFRoaXMgdmFsdWUgc3BlY2lmaWVzIHRoZSB2YWx1ZSBzZXQgaW4gZXJybm8gYnkgdGhlIE9TIHdoZW4gYSBub24tYmxvY2tpbmcKKyAqIHNvY2tldCByZWN2KCkgb3Igc2VuZCgpIGNhbiBub3QgcmV0dXJuIGltbWVkaWF0ZWx5LgorICovCisjZGVmaW5lIFBKX0JMT0NLSU5HX0VSUk9SX1ZBTCAgICAgICBXU0FFV09VTERCTE9DSworCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgY29ubmVjdCgpIGNhbiBub3QgZ2V0IGNvbm5lY3RlZCBpbW1lZGlhdGVseS4KKyAqLworI2RlZmluZSBQSl9CTE9DS0lOR19DT05ORUNUX0VSUk9SX1ZBTCAgIFdTQUVXT1VMREJMT0NLCisKKy8qKgorICogSWYgdGhpcyBtYWNybyBpcyBzZXQsIGl0IHRlbGxzIHNlbGVjdCBJL08gUXVldWUgdGhhdCBzZWxlY3QoKSBuZWVkcyB0bworICogYmUgZ2l2ZW4gY29ycmVjdCB2YWx1ZSBvZiBuZmRzIChpLmUuIGxhcmdlc3QgZmQgKyAxKS4gVGhpcyByZXF1aXJlcworICogc2VsZWN0IGlvcXVldWUgdG8gcmUtc2NhbiB0aGUgZGVzY3JpcHRvcnMgb24gZWFjaCByZWdpc3RyYXRpb24gYW5kCisgKiB1bnJlZ2lzdHJhdGlvbi4KKyAqIElmIHRoaXMgbWFjcm8gaXMgbm90IHNldCwgdGhlbiBpb3F1ZXVlIHdpbGwgYWx3YXlzIGdpdmUgRkRfU0VUU0laRSBmb3IKKyAqIG5mZHMgYXJndW1lbnQgd2hlbiBjYWxsaW5nIHNlbGVjdCgpLgorICoKKyAqIERlZmF1bHQ6IDAKKyAqLworI2RlZmluZSBQSl9TRUxFQ1RfTkVFRFNfTkZEUwkJMAorCisvKiBEZWZhdWx0IHRocmVhZGluZyBpcyBlbmFibGVkLCB1bmxlc3MgaXQncyBvdmVycmlkZGVuLiAqLworI2lmbmRlZiBQSl9IQVNfVEhSRUFEUworIyAgZGVmaW5lIFBKX0hBU19USFJFQURTCQkoMSkKKyNlbmRpZgorCisjZGVmaW5lIFBKX0hBU19ISUdIX1JFU19USU1FUgkJMQorI2RlZmluZSBQSl9IQVNfTUFMTE9DCQkJMQorI2lmbmRlZiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sKKyMgICBkZWZpbmUgUEpfT1NfSEFTX0NIRUNLX1NUQUNLCTEKKyNlbmRpZgorCisjaWZkZWYgVU5JQ09ERQorIyAgIGRlZmluZSBQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUgICAgMQorI2Vsc2UKKyMgICBkZWZpbmUgUEpfTkFUSVZFX1NUUklOR19JU19VTklDT0RFICAgIDAKKyNlbmRpZgorCisjZGVmaW5lIFBKX0FUT01JQ19WQUxVRV9UWVBFCQlsb25nCisKKy8qIElmIDEsIHVzZSBSZWFkL1dyaXRlIG11dGV4IGVtdWxhdGlvbiBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdCAqLworI2RlZmluZSBQSl9FTVVMQVRFX1JXTVVURVgJCTEKKworLyogSWYgMSwgcGpfdGhyZWFkX2NyZWF0ZSgpIHNob3VsZCBlbmZvcmNlIHRoZSBzdGFjayBzaXplIHdoZW4gY3JlYXRpbmcgCisgKiB0aHJlYWRzLgorICogRGVmYXVsdDogMCAobGV0IE9TIGRlY2lkZSB0aGUgdGhyZWFkJ3Mgc3RhY2sgc2l6ZSkuCisgKi8KKyNkZWZpbmUgUEpfVEhSRUFEX1NFVF9TVEFDS19TSVpFICAgIAkwCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgYWxsb2NhdGUgc3RhY2sgZnJvbSB0aGUgcG9vbCBzdXBwbGllZC4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRocmVhZCdzIHN0YWNrKS4KKyAqLworI2RlZmluZSBQSl9USFJFQURfQUxMT0NBVEVfU1RBQ0sgICAgCTAKKworCisjZW5kaWYJLyogX19QSl9DT01QQVRfT1NfV0lOMzJfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L29zX3dpbjMyX3dpbmNlLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9vc193aW4zMl93aW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZjIyOGQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9vc193aW4zMl93aW5jZS5oCkBAIC0wLDAgKzEsMTQ2IEBACisvKiAkSWQ6IG9zX3dpbjMyX3dpbmNlLmggMzg0MSAyMDExLTEwLTI0IDA5OjI4OjEzWiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX09TX1dJTjMyX1dJTkNFX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9PU19XSU4zMl9XSU5DRV9IX18KKworLyoqCisgKiBAZmlsZSBvc193aW4zMi5oCisgKiBAYnJpZWYgRGVzY3JpYmVzIFdpbjMyIG9wZXJhdGluZyBzeXN0ZW0gZmFtaWx5IHNwZWNpZmljcy4KKyAqLworCisjZGVmaW5lIFBKX09TX05BTUUJCSAgICAid2luMzItd2luY2UiCisKKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2RlZmluZSBSUENfTk9fV0lORE9XU19ICisvLyNkZWZpbmUgUEpfV0lOMzJfV0lOTlQJCSAgICAweDA0MDAKKy8vI2RlZmluZSBfV0lOMzJfV0lOTlQJCSAgICBQSl9XSU4zMl9XSU5OVAorCisjZGVmaW5lIFBKX0hBU19BUlBBX0lORVRfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfQVNTRVJUX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19DVFlQRV9ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfRVJSTk9fSAkJICAgIDAgICAvKiBNdXN0IGJlIHplcm8sIG90aGVyd2lzZSBlcnJub190ZXN0KCkgZmFpbHMuICovCisjZGVmaW5lIFBKX0hBU19MSU5VWF9TT0NLRVRfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfTUFMTE9DX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19ORVREQl9ICQkgICAgMAorI2RlZmluZSBQSl9IQVNfTkVUSU5FVF9JTl9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19ORVRJTkVUX1RDUF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19TRVRKTVBfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NUREFSR19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1REREVGX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVERJT19ICQkgICAgMQorI2RlZmluZSBQSl9IQVNfU1RETElCX0gJCSAgICAxCisjZGVmaW5lIFBKX0hBU19TVFJJTkdfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1NZU19JT0NUTF9ICSAgICAwCisjZGVmaW5lIFBKX0hBU19TWVNfU0VMRUNUX0gJICAgIDAKKyNkZWZpbmUgUEpfSEFTX1NZU19TT0NLRVRfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfU1lTX1RJTUVfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfU1lTX1RJTUVCX0gJICAgIDAJLyogRG9lc24ndCBoYXZlIHN5cy90aW1lYi5oICovCisjZGVmaW5lIFBKX0hBU19TWVNfVFlQRVNfSAkgICAgMAkvKiBEb2Vzbid0IGhhdmUgc3lzL3R5cGVzLmggKi8KKyNkZWZpbmUgUEpfSEFTX1RJTUVfSAkJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1VOSVNURF9ICQkgICAgMAorCisjZGVmaW5lIFBKX0hBU19NU1dTT0NLX0gJICAgIDEKKyNkZWZpbmUgUEpfSEFTX1dJTlNPQ0tfSAkgICAgMAorI2RlZmluZSBQSl9IQVNfV0lOU09DSzJfSAkgICAgMQorCisjZGVmaW5lIFBKX1NPQ0tfSEFTX0lORVRfQVRPTgkgICAgMAorCisvKiBTZXQgMSBpZiBuYXRpdmUgc29ja2FkZHJfaW4gaGFzIHNpbl9sZW4gbWVtYmVyLiAKKyAqIERlZmF1bHQ6IDAKKyAqLworI2RlZmluZSBQSl9TT0NLQUREUl9IQVNfTEVOCSAgICAwCisKKy8qIElzIGVycm5vIGEgZ29vZCB3YXkgdG8gcmV0cmlldmUgT1MgZXJyb3JzPyAobm8pCisgKi8KKyNkZWZpbmUgUEpfSEFTX0VSUk5PX1ZBUgkgICAgMAorCisvKiBXaGVuIHRoaXMgbWFjcm8gaXMgc2V0LCBnZXRzb2Nrb3B0KFNPTF9TT0NLRVQsIFNPX0VSUk9SKSB3aWxsIHJldHVybgorICogdGhlIHN0YXR1cyBvZiBub24tYmxvY2tpbmcgY29ubmVjdCgpIG9wZXJhdGlvbi4KKyAqLworI2RlZmluZSBQSl9IQVNfU09fRVJST1IgICAgICAgICAgICAgMAorCisvKiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgdmFsdWUgc2V0IGluIGVycm5vIGJ5IHRoZSBPUyB3aGVuIGEgbm9uLWJsb2NraW5nCisgKiBzb2NrZXQgcmVjdigpIG9yIHNlbmQoKSBjYW4gbm90IHJldHVybiBpbW1lZGlhdGVseS4KKyAqLworI2RlZmluZSBQSl9CTE9DS0lOR19FUlJPUl9WQUwgICAgICAgV1NBRVdPVUxEQkxPQ0sKKworLyogVGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhlIHZhbHVlIHNldCBpbiBlcnJubyBieSB0aGUgT1Mgd2hlbiBhIG5vbi1ibG9ja2luZworICogc29ja2V0IGNvbm5lY3QoKSBjYW4gbm90IGdldCBjb25uZWN0ZWQgaW1tZWRpYXRlbHkuCisgKi8KKyNkZWZpbmUgUEpfQkxPQ0tJTkdfQ09OTkVDVF9FUlJPUl9WQUwgICBXU0FFV09VTERCTE9DSworCisvKioKKyAqIElmIHRoaXMgbWFjcm8gaXMgc2V0LCBpdCB0ZWxscyBzZWxlY3QgSS9PIFF1ZXVlIHRoYXQgc2VsZWN0KCkgbmVlZHMgdG8KKyAqIGJlIGdpdmVuIGNvcnJlY3QgdmFsdWUgb2YgbmZkcyAoaS5lLiBsYXJnZXN0IGZkICsgMSkuIFRoaXMgcmVxdWlyZXMKKyAqIHNlbGVjdCBpb3F1ZXVlIHRvIHJlLXNjYW4gdGhlIGRlc2NyaXB0b3JzIG9uIGVhY2ggcmVnaXN0cmF0aW9uIGFuZAorICogdW5yZWdpc3RyYXRpb24uCisgKiBJZiB0aGlzIG1hY3JvIGlzIG5vdCBzZXQsIHRoZW4gaW9xdWV1ZSB3aWxsIGFsd2F5cyBnaXZlIEZEX1NFVFNJWkUgZm9yCisgKiBuZmRzIGFyZ3VtZW50IHdoZW4gY2FsbGluZyBzZWxlY3QoKS4KKyAqCisgKiBEZWZhdWx0OiAwCisgKi8KKyNkZWZpbmUgUEpfU0VMRUNUX05FRURTX05GRFMJICAgIDAKKworLyogRW5kaWFubmVzcyAqLworI2lmbmRlZiBQSl9JU19MSVRUTEVfRU5ESUFOCisjICAgZGVmaW5lIFBKX0lTX0xJVFRMRV9FTkRJQU4JMQorIyAgIGRlZmluZSBQSl9JU19CSUdfRU5ESUFOCTAKKyNlbmRpZgorCisvKiBEZWZhdWx0IHRocmVhZGluZyBpcyBlbmFibGVkLCB1bmxlc3MgaXQncyBvdmVycmlkZGVuLiAqLworI2lmbmRlZiBQSl9IQVNfVEhSRUFEUworIyAgZGVmaW5lIFBKX0hBU19USFJFQURTCSAgICAoMSkKKyNlbmRpZgorCisjZGVmaW5lIFBKX0hBU19ISUdIX1JFU19USU1FUgkgICAgMQorI2RlZmluZSBQSl9IQVNfTUFMTE9DICAgICAgICAgICAgICAgMQorI2RlZmluZSBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sJICAgIDEKKworI2RlZmluZSBQSl9BVE9NSUNfVkFMVUVfVFlQRQkgICAgbG9uZworCisvKiBUbHNBbGxvYygpIGVycm9yIHZhbHVlLiAqLworI2RlZmluZSBUTFNfT1VUX09GX0lOREVYRVMJICAgIDB4RkZGRkZGRkYgCisKKy8qIE5vIGNvbnNvbGUuICovCisjZGVmaW5lIFBKX1RFUk1fSEFTX0NPTE9SCSAgICAwCisKKy8qIE5vIHJkdHNjICovCisjZGVmaW5lIFBKX1RJTUVTVEFNUF9VU0VfUkRUU0MJICAgIDAKKworLyogTmF0aXZlIHN0cmluZyBpcyBVbmljb2RlLiAqLworI2RlZmluZSBQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUgMQorCisvKiBJZiAxLCB1c2UgUmVhZC9Xcml0ZSBtdXRleCBlbXVsYXRpb24gZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQgKi8KKyNkZWZpbmUgUEpfRU1VTEFURV9SV01VVEVYCSAgICAxCisKKy8qIElmIDEsIHBqX3RocmVhZF9jcmVhdGUoKSBzaG91bGQgZW5mb3JjZSB0aGUgc3RhY2sgc2l6ZSB3aGVuIGNyZWF0aW5nIAorICogdGhyZWFkcy4KKyAqIERlZmF1bHQ6IDAgKGxldCBPUyBkZWNpZGUgdGhlIHRocmVhZCdzIHN0YWNrIHNpemUpLgorICovCisjZGVmaW5lIFBKX1RIUkVBRF9TRVRfU1RBQ0tfU0laRSAgICAJMAorCisvKiBJZiAxLCBwal90aHJlYWRfY3JlYXRlKCkgc2hvdWxkIGFsbG9jYXRlIHN0YWNrIGZyb20gdGhlIHBvb2wgc3VwcGxpZWQuCisgKiBEZWZhdWx0OiAwIChsZXQgT1MgYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJlYWQncyBzdGFjaykuCisgKi8KKyNkZWZpbmUgUEpfVEhSRUFEX0FMTE9DQVRFX1NUQUNLICAgIAkwCisKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX09TX1dJTjMyX1dJTkNFX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9yYW5kLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9yYW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI0NjdlZQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3JhbmQuaApAQCAtMCwwICsxLDcwIEBACisvKiAkSWQ6IHJhbmQuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9SQU5EX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9SQU5EX0hfXworCisvKioKKyAqIEBmaWxlIHJhbmQuaAorICogQGJyaWVmIFByb3ZpZGVzIHBsYXRmb3JtX3JhbmQoKSBhbmQgcGxhdGZvcm1fc3JhbmQoKSBmdW5jdGlvbnMuCisgKi8KKworI2lmIGRlZmluZWQoUEpfSEFTX1NURExJQl9IKSAmJiBQSl9IQVNfU1RETElCX0ggIT0gMAorICAgLyoKKyAgICAqIFVzZSBzdGRsaWIgYmFzZWQgcmFuZCgpIGFuZCBzcmFuZCgpLgorICAgICovCisjICBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgIGRlZmluZSBwbGF0Zm9ybV9zcmFuZCAgICBzcmFuZAorIyAgaWYgZGVmaW5lZChSQU5EX01BWCkgJiYgUkFORF9NQVggPD0gMHhGRkZGCisgICAgICAgLyoKKyAgICAgICAgKiBXaGVuIHJhbmQoKSBpcyBvbmx5IDE2IGJpdCBzdHJvbmcsIGRvdWJsZSB0aGUgc3RyZW5ndGgKKwkqIGJ5IGNhbGxpbmcgaXQgdHdpY2UhCisJKi8KKyAgICAgICBQSl9JTkxJTkUoaW50KSBwbGF0Zm9ybV9yYW5kKHZvaWQpCisgICAgICAgeworCSAgIHJldHVybiAoKHJhbmQoKSAmIDB4RkZGRikgPDwgMTYpIHwgKHJhbmQoKSAmIDB4RkZGRik7CisgICAgICAgfQorIyAgZWxzZQorIyAgICAgIGRlZmluZSBwbGF0Zm9ybV9yYW5kIHJhbmQKKyMgIGVuZGlmCisKKyNlbGlmIGRlZmluZWQoUEpfTElOVVhfS0VSTkVMKSAmJiBQSl9MSU5VWF9LRVJORUwgIT0gMAorICAgLyoKKyAgICAqIExpbnV4IGtlcm5lbCBtb2RlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgorICAgICovCisjICBpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKyMgIGRlZmluZSBwbGF0Zm9ybV9zcmFuZChzZWVkKQorCisgICBQSl9JTkxJTkUoaW50KSBwbGF0Zm9ybV9yYW5kKHZvaWQpCisgICB7CisgICAgIGludCB2YWx1ZTsKKyAgICAgZ2V0X3JhbmRvbV9ieXRlcygodm9pZCopJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKKyAgICAgcmV0dXJuIHZhbHVlOworICAgfQorCisjZWxzZQorIyAgd2FybmluZyAicGxhdGZvcm1fcmFuZCgpIGlzIG5vdCBpbXBsZW1lbnRlZCIKKyMgIGRlZmluZSBwbGF0Zm9ybV9yYW5kKCkJMQorIyAgZGVmaW5lIHBsYXRmb3JtX3NyYW5kKHNlZWQpCisKKyNlbmRpZgorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9SQU5EX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3NldGptcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZWEyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9zZXRqbXAuaApAQCAtMCwwICsxLDk4IEBACisvKiAkSWQ6IHNldGptcC5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX1NFVEpNUF9IX18KKyNkZWZpbmUgX19QSl9DT01QQVRfU0VUSk1QX0hfXworCisvKioKKyAqIEBmaWxlIHNldGptcC5oCisgKiBAYnJpZWYgUHJvdmlkZXMgc2V0am1wLmggZnVuY3Rpb25hbGl0eS4KKyAqLworCisjaWYgZGVmaW5lZChQSl9IQVNfU0VUSk1QX0gpICYmIFBKX0hBU19TRVRKTVBfSCAhPSAwCisjICBpbmNsdWRlIDxzZXRqbXAuaD4KKyAgIHR5cGVkZWYgam1wX2J1ZiBwal9qbXBfYnVmOworIyAgaWZuZGVmIHBqX3NldGptcAorIyAgICBkZWZpbmUgcGpfc2V0am1wKGJ1ZikJc2V0am1wKGJ1ZikKKyMgIGVuZGlmCisjICBpZm5kZWYgcGpfbG9uZ2ptcAorIyAgICBkZWZpbmUgcGpfbG9uZ2ptcChidWYsZCkJbG9uZ2ptcChidWYsZCkKKyMgIGVuZGlmCisKKyNlbGlmIGRlZmluZWQoUEpfTElOVVhfS0VSTkVMKSAmJiBQSl9MSU5VWF9LRVJORUwgIT0gMCAmJiBcCisgICAgICBkZWZpbmVkKFBKX01fSTM4NikgJiYgUEpfTV9JMzg2ICE9IDAKKworICAgIC8qCisgICAgICogVGhlc2UgYXJlIHRha2VuIGZyb20gdUNsaWJjLgorICAgICAqIENvcHlyaWdodCAoQykgMjAwMC0yMDAzIEVyaWsgQW5kZXJzZW4gPGFuZGVyc2VuQHVjbGliYy5vcmc+CisgICAgICovCisjICAgaWYgZGVmaW5lZCBfX1VTRV9NSVNDIHx8IGRlZmluZWQgX0FTTQorIwlkZWZpbmUgSkJfQlgJMAorIwlkZWZpbmUgSkJfU0kJMQorIwlkZWZpbmUgSkJfREkJMgorIwlkZWZpbmUgSkJfQlAJMworIwlkZWZpbmUgSkJfU1AJNAorIwlkZWZpbmUgSkJfUEMJNQorIwlkZWZpbmUgSkJfU0laRSAyNAorIyAgIGVuZGlmCisKKyMgaWZuZGVmIF9BU00KKwl0eXBlZGVmIGludCBfX2ptcF9idWZbNl07CisKKyAgICAvKiBBIGBzaWdzZXRfdCcgaGFzIGEgYml0IGZvciBlYWNoIHNpZ25hbC4gICovCisjICAgZGVmaW5lIF9TSUdTRVRfTldPUkRTCSgxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpCisgICAgdHlwZWRlZiBzdHJ1Y3QgX19zaWdzZXRfdF90YWcKKyAgICB7CisJdW5zaWduZWQgbG9uZyBpbnQgX192YWxbX1NJR1NFVF9OV09SRFNdOworICAgIH0gX19zaWdzZXRfdDsKKworICAgIC8qIENhbGxpbmcgZW52aXJvbm1lbnQsIHBsdXMgcG9zc2libHkgYSBzYXZlZCBzaWduYWwgbWFzay4gICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgX19qbXBfYnVmX3RhZyAgICAvKiBDKysgZG9lc24ndCBsaWtlIHRhZ2xlc3Mgc3RydWN0cy4gICovCisgICAgeworCS8qIE5PVEU6IFRoZSBtYWNoaW5lLWRlcGVuZGVudCBkZWZpbml0aW9ucyBvZiBgX19zaWdzZXRqbXAnCisJICAgYXNzdW1lIHRoYXQgYSBgam1wX2J1ZicgYmVnaW5zIHdpdGggYSBgX19qbXBfYnVmJyBhbmQgdGhhdAorCSAgIGBfX21hc2tfd2FzX3NhdmVkJyBmb2xsb3dzIGl0LiAgRG8gbm90IG1vdmUgdGhlc2UgbWVtYmVycworCSAgIG9yIGFkZCBvdGhlcnMgYmVmb3JlIGl0LiAgKi8KKwlfX2ptcF9idWYgX19qbXBidWY7CQkvKiBDYWxsaW5nIGVudmlyb25tZW50LiAgKi8KKwlpbnQgX19tYXNrX3dhc19zYXZlZDsJCS8qIFNhdmVkIHRoZSBzaWduYWwgbWFzaz8gICovCisJLy8gd2UgbmV2ZXIgc2F2ZWQgdGhlIG1hc2suCisJX19zaWdzZXRfdCBfX3NhdmVkX21hc2s7CS8qIFNhdmVkIHNpZ25hbCBtYXNrLiAgKi8KKyAgICB9IGptcF9idWZbMV07CisKKyAgICB0eXBlZGVmIGptcF9idWYgc2lnam1wX2J1ZjsKKyAgICB0eXBlZGVmIGptcF9idWYgcGpfam1wX2J1ZjsKKworICAgIFBKX0RFQ0woaW50KSBwal9zZXRqbXAocGpfam1wX2J1ZiBlbnYpOworICAgIFBKX0RFQ0wodm9pZCkgcGpfbG9uZ2ptcChwal9qbXBfYnVmIGVudiwgaW50IHZhbCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKKworIyBlbmRpZiAgIC8qIF9BU00gKi8KKworI2VsaWYgZGVmaW5lZChQSl9TWU1CSUFOKSAmJiBQSl9TWU1CSUFOIT0wCisgICAgLyogU3ltYmlhbiBmcmFtZXdvcmsgZG9uJ3QgdXNlIHNldGptcC9sb25nam1wICovCisgICAgCisjZWxzZQorIyAgd2FybmluZyAic2V0am1wKCkvbG9uZ2ptcCgpIGlzIG5vdCBpbXBsZW1lbnRlZCIKKyAgIHR5cGVkZWYgaW50IHBqX2ptcF9idWZbMV07CisjICBkZWZpbmUgcGpfc2V0am1wKGJ1ZikJMAorIyAgZGVmaW5lIHBqX2xvbmdqbXAoYnVmLGQpCTAKKyNlbmRpZgorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9TRVRKTVBfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvc2l6ZV90LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVjNThhNgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3NpemVfdC5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qICRJZDogc2l6ZV90LmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfU0laRV9UX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9TSVpFX1RfSF9fCisKKy8qKgorICogQGZpbGUgc2l6ZV90LmgKKyAqIEBicmllZiBQcm92aWRlcyBzaXplX3QgdHlwZS4KKyAqLworI2lmIFBKX0hBU19TVERERUZfSAorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZgorCisjZW5kaWYJLyogX19QSl9DT01QQVRfU0laRV9UX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9zb2NrZXQuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3NvY2tldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxM2YyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9zb2NrZXQuaApAQCAtMCwwICsxLDI0MSBAQAorLyogJElkOiBzb2NrZXQuaCA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfU09DS0VUX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9TT0NLRVRfSF9fCisKKy8qKgorICogQGZpbGUgc29ja2V0LmgKKyAqIEBicmllZiBQcm92aWRlcyBhbGwgc29ja2V0IHJlbGF0ZWQgZnVuY3Rpb25zLGRhdGEgdHlwZXMsIGVycm9yIGNvZGVzLCBldGMuCisgKi8KKworI2lmIGRlZmluZWQoUEpfSEFTX1dJTlNPQ0syX0gpICYmIFBKX0hBU19XSU5TT0NLMl9IICE9IDAKKyMgIGluY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX1dJTlNPQ0tfSCkgJiYgUEpfSEFTX1dJTlNPQ0tfSCAhPSAwCisjICBpbmNsdWRlIDx3aW5zb2NrLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX1dTMlRDUElQX0gpICYmIFBKX0hBU19XUzJUQ1BJUF9IICE9IDAKKyMgICBpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCisKKworLyoKKyAqIElQdjYgZm9yIFZpc3VhbCBTdHVkaW8ncworICoKKyAqID0gVmlzdWFsIFN0dWRpbyA2ID0KKyAqCisgKiBWaXN1YWwgU3R1ZGlvIDYgZG9lcyBub3Qgc2hpcCB3aXRoIElQdjYgc3VwcG9ydCwgc28geW91IE1VU1QKKyAqIGRvd25sb2FkIGFuZCBpbnN0YWxsIElQdjYgVGVobm9sb2d5IFByZXZpZXcgKElQdjZLaXQpIGZyb206CisgKiAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9zZGtzL3BsYXRmb3JtL3RwaXB2Ni9SZWFkTWUuYXNwCisgKiBUaGVuIHB1dCBJUHY2S2l0XGluYyBpbiB5b3VyIFZpc3VhbCBTdHVkaW8gaW5jbHVkZSBwYXRoLgorICogCisgKiBJbiBhZGRpdGlvbiwgYnkgZGVmYXVsdCBJUHY2S2l0IGRvZXMgbm90IHdhbnQgdG8gaW5zdGFsbCBvbgorICogV2luZG93cyAyMDAwIFNQNC4gUGxlYXNlIHNlZToKKyAqICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZG93bmxvYWRzL3Nka3MvcGxhdGZvcm0vdHBpcHY2L2ZhcS5hc3AKKyAqIG9uICBob3cgdG8gaW5zdGFsbCBJUHY2S2l0IG9uIFdpbjJLIFNQNC4KKyAqCisgKgorICogPSBWaXN1YWwgU3R1ZGlvIDIwMDMsIDIwMDUgKGluY2x1ZGluZyBFeHByZXNzKSA9CisgKgorICogVGhlc2UgVlMgdXNlcyBNaWNyb3NvZnQgUGxhdGZvcm0gU0RLIGZvciBXaW5kb3dzIFNlcnZlciAyMDAzIFNQMSwgYW5kCisgKiBpdCBoYXMgYnVpbHQtaW4gSVB2NiBzdXBwb3J0LgorICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChQSl9IQVNfSVBWNikgJiYgUEpfSEFTX0lQVjYhPTAKKyMgICBpZm5kZWYgc19hZGRyCisjCWRlZmluZSBzX2FkZHIgIFNfdW4uU19hZGRyCisjICAgZW5kaWYKKworIyAgIGlmICFkZWZpbmVkKElQUFJPVE9fSVBWNikKKwkvKiBOZWVkIHRvIGRvd25sb2FkIGFuZCBpbnN0YWxsIElQdjZLaXQgZm9yIHRoaXMgcGxhdGZvcm0uCisJICogUGxlYXNlIHNlZSB0aGUgY29tbWVudHMgYWJvdmUgYWJvdXQgVmlzdWFsIFN0dWRpbyA2LgorCSAqLworIwlpbmNsdWRlIDx0cGlwdjYuaD4KKyMgICBlbmRpZgorCisjICAgZGVmaW5lIFBKX1NPQ0tfSEFTX0dFVEFERFJJTkZPICAxCisjZW5kaWYJLyogX01TQ19WRVIgKi8KKworI2lmIGRlZmluZWQoUEpfSEFTX1NZU19UWVBFU19IKSAmJiBQSl9IQVNfU1lTX1RZUEVTX0ggIT0gMAorIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX1NZU19TT0NLRVRfSCkgJiYgUEpfSEFTX1NZU19TT0NLRVRfSCAhPSAwCisjICBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX0xJTlVYX1NPQ0tFVF9IKSAmJiBQSl9IQVNfTElOVVhfU09DS0VUX0ggIT0gMAorIyAgaW5jbHVkZSA8bGludXgvc29ja2V0Lmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX1NZU19TRUxFQ1RfSCkgJiYgUEpfSEFTX1NZU19TRUxFQ1RfSCAhPSAwCisjICBpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX05FVElORVRfSU5fSCkgJiYgUEpfSEFTX05FVElORVRfSU5fSCAhPSAwCisjICBpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX05FVElORVRfSU5fU1lTVE1fSCkgJiYgUEpfSEFTX05FVElORVRfSU5fU1lTVE1fSCAhPSAwCisvKiBSZXF1aXJlZCB0byBpbmNsdWRlIG5ldGluZXQvaXAuaCBpbiBGcmVlQlNEIDcuMCAqLworIyAgaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19ORVRJTkVUX0lQX0gpICYmIFBKX0hBU19ORVRJTkVUX0lQX0ggIT0gMAorLyogVG8gcHVsbCBpbiBJUFRPU18qIGNvbnN0YW50cyAqLworIyAgaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19ORVRJTkVUX1RDUF9IKSAmJiBQSl9IQVNfTkVUSU5FVF9UQ1BfSCAhPSAwCisvKiBUbyBwdWxsIGluIFRDUF9OT0RFTEFZIGNvbnN0YW50cyAqLworIyAgaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChQSl9IQVNfTkVUX0lGX0gpICYmIFBKX0hBU19ORVRfSUZfSCAhPSAwCisvKiBGb3IgaW50ZXJmYWNlIGVudW1lcmF0aW9uIGluIGlwX2hlbHBlciAqLworIyAgIGluY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19JRkFERFJTX0gpICYmIFBKX0hBU19JRkFERFJTX0ggIT0gMAorLyogSW50ZXJmYWNlIGVudW0gd2l0aCBnZXRpZmFkZHJzKCkgd2hpY2ggd29ya3Mgd2l0aCBJUHY2ICovCisjICAgaW5jbHVkZSA8aWZhZGRycy5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19BUlBBX0lORVRfSCkgJiYgUEpfSEFTX0FSUEFfSU5FVF9IICE9IDAKKyMgIGluY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19TWVNfSU9DVExfSCkgJiYgUEpfSEFTX1NZU19JT0NUTF9IICE9IDAKKyMgIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgkvKiBGQklPTkJJTyAqLworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19FUlJOT19IKSAmJiBQSl9IQVNfRVJSTk9fSCAhPSAwCisjICBpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19ORVREQl9IKSAmJiBQSl9IQVNfTkVUREJfSCAhPSAwCisjICBpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19VTklTVERfSCkgJiYgUEpfSEFTX1VOSVNURF9IICE9IDAKKyMgIGluY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19TWVNfRklMSU9fSCkgJiYgUEpfSEFTX1NZU19GSUxJT19IICE9IDAKKyMgICBpbmNsdWRlIDxzeXMvZmlsaW8uaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChQSl9IQVNfU1lTX1NPQ0tJT19IKSAmJiBQSl9IQVNfU1lTX1NPQ0tJT19IICE9IDAKKyMgICBpbmNsdWRlIDxzeXMvc29ja2lvLmg+CisjZW5kaWYKKworCisvKgorICogRGVmaW5lIGNvbW1vbiBlcnJvcnMuCisgKi8KKyNpZiAoZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIhPTApIHx8IFwKKyAgICAoZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkgJiYgUEpfV0lOMzJfV0lOQ0UhPTApIHx8IFwKKyAgICAoZGVmaW5lZChQSl9XSU42NCkgJiYgUEpfV0lONjQhPTApCisjICBkZWZpbmUgT1NFUlJfRVdPVUxEQkxPQ0sgICAgV1NBRVdPVUxEQkxPQ0sKKyMgIGRlZmluZSBPU0VSUl9FSU5QUk9HUkVTUyAgICBXU0FFSU5QUk9HUkVTUworIyAgZGVmaW5lIE9TRVJSX0VDT05OUkVTRVQgICAgIFdTQUVDT05OUkVTRVQKKyMgIGRlZmluZSBPU0VSUl9FTk9UQ09OTiAgICAgICBXU0FFTk9UQ09OTgorI2VsaWYgZGVmaW5lZChQSl9TWU1CSUFOKSAmJiBQSl9TWU1CSUFOIT0wCisjICBkZWZpbmUgT1NFUlJfRVdPVUxEQkxPQ0sgICAgLTEKKyMgIGRlZmluZSBPU0VSUl9FSU5QUk9HUkVTUyAgICAtMQorIyAgZGVmaW5lIE9TRVJSX0VDT05OUkVTRVQgICAgIC0xCisjICBkZWZpbmUgT1NFUlJfRU5PVENPTk4gICAgICAgLTEKKyNlbHNlCisjICBkZWZpbmUgT1NFUlJfRVdPVUxEQkxPQ0sgICAgRVdPVUxEQkxPQ0sKKyMgIGRlZmluZSBPU0VSUl9FSU5QUk9HUkVTUyAgICBFSU5QUk9HUkVTUworIyAgZGVmaW5lIE9TRVJSX0VDT05OUkVTRVQgICAgIEVDT05OUkVTRVQKKyMgIGRlZmluZSBPU0VSUl9FTk9UQ09OTiAgICAgICBFTk9UQ09OTgorI2VuZGlmCisKKworLyoKKyAqIEFuZCB1bmRlZmluZSB0aGVzZS4uCisgKi8KKyN1bmRlZiBzX2FkZHIKKyN1bmRlZiBzNl9hZGRyCisjdW5kZWYgc2luX3plcm8KKworLyoKKyAqIExpbnV4IGtlcm5lbCBzcGVjaWZpY3MKKyAqLworI2lmIGRlZmluZWQoUEpfTElOVVhfS0VSTkVMKQorIyAgIGluY2x1ZGUgPGxpbnV4L25ldC5oPgorIyAgIGluY2x1ZGUgPGFzbS9pb2N0bHMuaD4JCS8qIEZJT05CSU8JKi8KKyMgICBpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPgkvKiBzeXNfc2VsZWN0KCkgKi8KKyMgICBpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgkvKiBzZXQvZ2V0X2ZzKCkJKi8KKworICAgIHR5cGVkZWYgaW50IHNvY2tsZW5fdDsKKyMgICBkZWZpbmUgZ2V0c29ja29wdCAgc3lzX2dldHNvY2tvcHQKKworICAgIC8qCisgICAgICogV3JhcHBlciBmb3Igc2VsZWN0KCkgaW4gTGludXgga2VybmVsLgorICAgICAqLworICAgIFBKX0lOTElORShpbnQpIHNlbGVjdChpbnQgbiwgZmRfc2V0ICppbnAsIGZkX3NldCAqb3V0cCwgZmRfc2V0ICpleHAsCisJCSAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqdHZwKQorICAgIHsKKyAgICAgICAgaW50IGNvdW50OworICAgICAgICBtbV9zZWdtZW50X3Qgb2xkZnMgPSBnZXRfZnMoKTsKKyAgICAgICAgc2V0X2ZzKEtFUk5FTF9EUyk7CisgICAgICAgIGNvdW50ID0gc3lzX3NlbGVjdChuLCBpbnAsIG91dHAsIGV4cCwgdHZwKTsKKyAgICAgICAgc2V0X2ZzKG9sZGZzKTsKKyAgICAgICAgcmV0dXJuIGNvdW50OworICAgIH0KKyNlbmRpZgkvKiBQSl9MSU5VWF9LRVJORUwgKi8KKworCisvKgorICogVGhpcyB3aWxsIGZpbmFsbHkgYmUgb2Jzb2xldGVkLCBzaW5jZSBpdCBzaG91bGQgYmUgZGVjbGFyZWQgaW4KKyAqIG9zX2F1dG8uaAorICovCisjaWYgIWRlZmluZWQoUEpfSEFTX1NPQ0tMRU5fVCkgfHwgUEpfSEFTX1NPQ0tMRU5fVD09MAorICAgIHR5cGVkZWYgaW50IHNvY2tsZW5fdDsKKyNlbmRpZgorCisvKiBSZWdhcmRpbmcgc2luX2xlbiBtZW1iZXIgb2Ygc29ja2FkZHJfaW46CisgKiAgQlNEIHN5c3RlbXMgKGluY2x1ZGluZyBNYWNPUyBYIHJlcXVpcmVzIHRoYXQgdGhlIHNpbl9sZW4gbWVtYmVyIG9mIAorICogIHNvY2thZGRyX2luIGJlIHNldCB0byBzaXplb2Yoc29ja2FkZHJfaW4pLCB3aGlsZSBvdGhlciBzeXN0ZW1zIChXaW5kb3dzCisgKiAgYW5kIExpbnV4IGluY2x1ZGVkKSBkbyBub3QuCisgKgorICogIFRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgYmV0d2VlbiBzeXN0ZW1zLCBQSkxJQiB3aWxsIGF1dG9tYXRpY2FsbHkKKyAqICBzZXQgdGhpcyBmaWVsZCBiZWZvcmUgaW52b2tpbmcgbmF0aXZlIE9TIHNvY2tldCBBUEksIGFuZCBpdCB3aWxsCisgKiAgYWx3YXlzIHJlc2V0IHRoZSBmaWVsZCB0byB6ZXJvIGJlZm9yZSByZXR1cm5pbmcgcGpfc29ja2FkZHJfaW4gdG8KKyAqICBhcHBsaWNhdGlvbiAoc3VjaCBhcyBpbiBwal9nZXRzb2NrbmFtZSgpIGFuZCBwal9yZWN2ZnJvbSgpKS4KKyAqCisgKiAgQXBwbGljYXRpb24gTVVTVCBhbHdheXMgc2V0IHRoaXMgZmllbGQgdG8gemVyby4KKyAqCisgKiAgVGhpcyB3YXkgd2UgY2FuIGF2b2lkIGhhcmQgdG8gZmluZCBwcm9ibGVtIHN1Y2ggYXMgd2hlbiB0aGUgc29ja2V0IAorICogIGFkZHJlc3MgaXMgdXNlZCBhcyBoYXNoIHRhYmxlIGtleS4KKyAqLworI2lmIGRlZmluZWQoUEpfU09DS0FERFJfSEFTX0xFTikgJiYgUEpfU09DS0FERFJfSEFTX0xFTiE9MAorIyAgIGRlZmluZSBQSl9TT0NLQUREUl9TRVRfTEVOKGFkZHIsbGVuKSAoKChwal9hZGRyX2hkciopKGFkZHIpKS0+c2FfemVyb19sZW49KGxlbikpCisjICAgZGVmaW5lIFBKX1NPQ0tBRERSX1JFU0VUX0xFTihhZGRyKSAgICgoKHBqX2FkZHJfaGRyKikoYWRkcikpLT5zYV96ZXJvX2xlbj0wKQorI2Vsc2UKKyMgICBkZWZpbmUgUEpfU09DS0FERFJfU0VUX0xFTihhZGRyLGxlbikgCisjICAgZGVmaW5lIFBKX1NPQ0tBRERSX1JFU0VUX0xFTihhZGRyKQorI2VuZGlmCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9TT0NLRVRfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3N0ZGFyZy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvc3RkYXJnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUxZDlhYgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3N0ZGFyZy5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qICRJZDogc3RkYXJnLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DT01QQVRfU1REQVJHX0hfXworI2RlZmluZSBfX1BKX0NPTVBBVF9TVERBUkdfSF9fCisKKy8qKgorICogQGZpbGUgc3RkYXJnLmgKKyAqIEBicmllZiBQcm92aWRlcyBzdGRhcmcgZnVuY3Rpb25hbGl0eS4KKyAqLworCisjaWYgZGVmaW5lZChQSl9IQVNfU1REQVJHX0gpICYmIFBKX0hBU19TVERBUkdfSCAhPSAwCisjICBpbmNsdWRlIDxzdGRhcmcuaD4KKyNlbmRpZgorCisjZW5kaWYJLyogX19QSl9DT01QQVRfU1REQVJHX0hfXyAqLwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvc3RkZmlsZWlvLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbXBhdC9zdGRmaWxlaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmExN2FhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvc3RkZmlsZWlvLmgKQEAgLTAsMCArMSwzMiBAQAorLyogJElkOiBzdGRmaWxlaW8uaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0NPTVBBVF9TVERGSUxFSU9fSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX1NUREZJTEVJT19IX18KKworLyoqCisgKiBAZmlsZSBzdGRmaWxlaW8uaAorICogQGJyaWVmIENvbXBhdGliaWxpdHkgZm9yIEFOU0kgZmlsZSBJL08gbGlrZSBmcHV0cywgZmZsdXNoLCBldGMuCisgKi8KKworI2lmIGRlZmluZWQoUEpfSEFTX1NURElPX0gpICYmIFBKX0hBU19TVERJT19IICE9IDAKKyMgIGluY2x1ZGUgPHN0ZGlvLmg+CisjZW5kaWYKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX1NUREZJTEVJT19IX18gKi8KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvc3RyaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJhNzhiMwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3N0cmluZy5oCkBAIC0wLDAgKzEsMTQ0IEBACisvKiAkSWQ6IHN0cmluZy5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX1NUUklOR19IX18KKyNkZWZpbmUgX19QSl9DT01QQVRfU1RSSU5HX0hfXworCisvKioKKyAqIEBmaWxlIHN0cmluZy5oCisgKiBAYnJpZWYgUHJvdmlkZXMgc3RyaW5nIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgZm91bmQgaW4gQU5TSSBzdHJpbmcuaC4KKyAqLworCisKKyNpZiBkZWZpbmVkKFBKX0hBU19TVFJJTkdfSCkgJiYgUEpfSEFTX1NUUklOR19IICE9IDAKKyMgICBpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisKKyAgICBQSl9ERUNMKGludCkgc3RyY2FzZWNtcChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOworICAgIFBKX0RFQ0woaW50KSBzdHJuY2FzZWNtcChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIsIGludCBsZW4pOworCisjZW5kaWYKKworLyogRm9yIHNwcmludGYgZmFtaWx5ICovCisjaW5jbHVkZSA8c3RkaW8uaD4KKworLyogT24gV2luQ0UsIHN0cmluZyBzdHVmZnMgYXJlIGRlY2xhcmVkIGluIHN0ZGxpYi5oICovCisjaWYgZGVmaW5lZChQSl9IQVNfU1RETElCX0gpICYmIFBKX0hBU19TVERMSUJfSCE9MAorIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorIyAgIGRlZmluZSBzdHJjYXNlY21wCV9zdHJpY21wCisjICAgZGVmaW5lIHN0cm5jYXNlY21wCV9zdHJuaWNtcAorIyAgIGRlZmluZSBzbnByaW50Zglfc25wcmludGYKKyMgICBkZWZpbmUgdnNucHJpbnRmCV92c25wcmludGYKKyMgICBkZWZpbmUgc253cHJpbnRmCV9zbndwcmludGYKKyMgICBkZWZpbmUgd2NzaWNtcAlfd2NzaWNtcAorIyAgIGRlZmluZSB3Y3NuaWNtcAlfd2NzbmljbXAKKyNlbHNlCisjICAgZGVmaW5lIHN0cmljbXAJc3RyY2FzZWNtcAorIyAgIGRlZmluZSBzdHJuaWNtcAlzdHJuY2FzZWNtcAorCisjICAgaWYgZGVmaW5lZChQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUpICYmIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSE9MAorIwllcnJvciAiSW1wbGVtZW50IFVuaWNvZGUgc3RyaW5nIGZ1bmN0aW9ucyIKKyMgICBlbmRpZgorI2VuZGlmCisKKyNkZWZpbmUgcGpfYW5zaV9zdHJjbXAJCXN0cmNtcAorI2RlZmluZSBwal9hbnNpX3N0cm5jbXAJCXN0cm5jbXAKKyNkZWZpbmUgcGpfYW5zaV9zdHJsZW4JCXN0cmxlbgorI2RlZmluZSBwal9hbnNpX3N0cmNweQkJc3RyY3B5CisjZGVmaW5lIHBqX2Fuc2lfc3RybmNweQkJc3RybmNweQorI2RlZmluZSBwal9hbnNpX3N0cmNhdAkJc3RyY2F0CisjZGVmaW5lIHBqX2Fuc2lfc3Ryc3RyCQlzdHJzdHIKKyNkZWZpbmUgcGpfYW5zaV9zdHJjaHIJCXN0cmNocgorI2RlZmluZSBwal9hbnNpX3N0cmNhc2VjbXAJc3RyY2FzZWNtcAorI2RlZmluZSBwal9hbnNpX3N0cmljbXAJCXN0cmNhc2VjbXAKKyNkZWZpbmUgcGpfYW5zaV9zdHJuY2FzZWNtcAlzdHJuY2FzZWNtcAorI2RlZmluZSBwal9hbnNpX3N0cm5pY21wCXN0cm5jYXNlY21wCisjZGVmaW5lIHBqX2Fuc2lfc3ByaW50ZgkJc3ByaW50ZgorCisjaWYgZGVmaW5lZChQSl9IQVNfTk9fU05QUklOVEYpICYmIFBKX0hBU19OT19TTlBSSU5URiAhPSAwCisjICAgaW5jbHVkZSA8cGovdHlwZXMuaD4KKyMgICBpbmNsdWRlIDxwai9jb21wYXQvc3RkYXJnLmg+CisgICAgUEpfQkVHSU5fREVDTAorICAgIFBKX0RFQ0woaW50KSBzbnByaW50ZihjaGFyKnMxLCBwal9zaXplX3QgbGVuLCBjb25zdCBjaGFyKnMyLCAuLi4pOworICAgIFBKX0RFQ0woaW50KSB2c25wcmludGYoY2hhcipzMSwgcGpfc2l6ZV90IGxlbiwgY29uc3QgY2hhcipzMiwgdmFfbGlzdCBhcmcpOworICAgIFBKX0VORF9ERUNMCisjZW5kaWYKKyAgICAKKyNkZWZpbmUgcGpfYW5zaV9zbnByaW50ZglzbnByaW50ZgorI2RlZmluZSBwal9hbnNpX3ZzcHJpbnRmCXZzcHJpbnRmCisjZGVmaW5lIHBqX2Fuc2lfdnNucHJpbnRmCXZzbnByaW50ZgorCisjZGVmaW5lIHBqX3VuaWNvZGVfc3RyY21wCXdjc2NtcAorI2RlZmluZSBwal91bmljb2RlX3N0cm5jbXAJd2NzbmNtcAorI2RlZmluZSBwal91bmljb2RlX3N0cmxlbgl3Y3NsZW4KKyNkZWZpbmUgcGpfdW5pY29kZV9zdHJjcHkJd2NzY3B5CisjZGVmaW5lCXBqX3VuaWNvZGVfc3RybmNweQl3Y3NuY3B5CisjZGVmaW5lIHBqX3VuaWNvZGVfc3RyY2F0CXdjc2NhdAorI2RlZmluZSBwal91bmljb2RlX3N0cnN0cgl3Y3NzdHIKKyNkZWZpbmUgcGpfdW5pY29kZV9zdHJjaHIJd2NzY2hyCisjZGVmaW5lIHBqX3VuaWNvZGVfc3RyY2FzZWNtcAl3Y3NpY21wCisjZGVmaW5lIHBqX3VuaWNvZGVfc3RyaWNtcAl3Y3NpY21wCisjZGVmaW5lIHBqX3VuaWNvZGVfc3RybmNhc2VjbXAJd2NzbmljbXAKKyNkZWZpbmUgcGpfdW5pY29kZV9zdHJuaWNtcAl3Y3NuaWNtcAorI2RlZmluZSBwal91bmljb2RlX3NwcmludGYJc3dwcmludGYKKyNkZWZpbmUgcGpfdW5pY29kZV9zbnByaW50ZglzbndwcmludGYKKyNkZWZpbmUgcGpfdW5pY29kZV92c3ByaW50Zgl2c3dwcmludGYKKyNkZWZpbmUgcGpfdW5pY29kZV92c25wcmludGYJdnNud3ByaW50ZgorCisjaWYgZGVmaW5lZChQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUpICYmIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSE9MAorIyAgIGRlZmluZSBwal9uYXRpdmVfc3RyY21wCSAgICBwal91bmljb2RlX3N0cmNtcAorIyAgIGRlZmluZSBwal9uYXRpdmVfc3RybmNtcAkgICAgcGpfdW5pY29kZV9zdHJuY21wCisjICAgZGVmaW5lIHBqX25hdGl2ZV9zdHJsZW4JICAgIHBqX3VuaWNvZGVfc3RybGVuCisjICAgZGVmaW5lIHBqX25hdGl2ZV9zdHJjcHkJICAgIHBqX3VuaWNvZGVfc3RyY3B5CisjICAgZGVmaW5lIHBqX25hdGl2ZV9zdHJuY3B5CSAgICBwal91bmljb2RlX3N0cm5jcHkKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3N0cmNhdAkgICAgcGpfdW5pY29kZV9zdHJjYXQKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3N0cnN0cgkgICAgcGpfdW5pY29kZV9zdHJzdHIKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3N0cmNocgkgICAgcGpfdW5pY29kZV9zdHJjaHIKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3N0cmNhc2VjbXAJICAgIHBqX3VuaWNvZGVfc3RyY2FzZWNtcAorIyAgIGRlZmluZSBwal9uYXRpdmVfc3RyaWNtcAkgICAgcGpfdW5pY29kZV9zdHJpY21wCisjICAgZGVmaW5lIHBqX25hdGl2ZV9zdHJuY2FzZWNtcCAgICBwal91bmljb2RlX3N0cm5jYXNlY21wCisjICAgZGVmaW5lIHBqX25hdGl2ZV9zdHJuaWNtcAkgICAgcGpfdW5pY29kZV9zdHJuaWNtcAorIyAgIGRlZmluZSBwal9uYXRpdmVfc3ByaW50ZgkgICAgcGpfdW5pY29kZV9zcHJpbnRmCisjICAgZGVmaW5lIHBqX25hdGl2ZV9zbnByaW50ZgkgICAgcGpfdW5pY29kZV9zbnByaW50ZgorIyAgIGRlZmluZSBwal9uYXRpdmVfdnNwcmludGYJICAgIHBqX3VuaWNvZGVfdnNwcmludGYKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3ZzbnByaW50ZgkgICAgcGpfdW5pY29kZV92c25wcmludGYKKyNlbHNlCisjICAgZGVmaW5lIHBqX25hdGl2ZV9zdHJjbXAJICAgIHBqX2Fuc2lfc3RyY21wCisjICAgZGVmaW5lIHBqX25hdGl2ZV9zdHJuY21wCSAgICBwal9hbnNpX3N0cm5jbXAKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3N0cmxlbgkgICAgcGpfYW5zaV9zdHJsZW4KKyMgICBkZWZpbmUgcGpfbmF0aXZlX3N0cmNweQkgICAgcGpfYW5zaV9zdHJjcHkKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3N0cm5jcHkJICAgIHBqX2Fuc2lfc3RybmNweQorIyAgIGRlZmluZSBwal9uYXRpdmVfc3RyY2F0CSAgICBwal9hbnNpX3N0cmNhdAorIyAgIGRlZmluZSBwal9uYXRpdmVfc3Ryc3RyCSAgICBwal9hbnNpX3N0cnN0cgorIyAgIGRlZmluZSBwal9uYXRpdmVfc3RyY2hyCSAgICBwal9hbnNpX3N0cmNocgorIyAgIGRlZmluZSBwal9uYXRpdmVfc3RyY2FzZWNtcAkgICAgcGpfYW5zaV9zdHJjYXNlY21wCisjICAgZGVmaW5lIHBqX25hdGl2ZV9zdHJpY21wCSAgICBwal9hbnNpX3N0cmljbXAKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3N0cm5jYXNlY21wICAgIHBqX2Fuc2lfc3RybmNhc2VjbXAKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3N0cm5pY21wCSAgICBwal9hbnNpX3N0cm5pY21wCisjICAgZGVmaW5lIHBqX25hdGl2ZV9zcHJpbnRmCSAgICBwal9hbnNpX3NwcmludGYKKyMgICBkZWZpbmUgcGpfbmF0aXZlX3NucHJpbnRmCSAgICBwal9hbnNpX3NucHJpbnRmCisjICAgZGVmaW5lIHBqX25hdGl2ZV92c3ByaW50ZgkgICAgcGpfYW5zaV92c3ByaW50ZgorIyAgIGRlZmluZSBwal9uYXRpdmVfdnNucHJpbnRmCSAgICBwal9hbnNpX3ZzbnByaW50ZgorI2VuZGlmCisKKworI2VuZGlmCS8qIF9fUEpfQ09NUEFUX1NUUklOR19IX18gKi8KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3RpbWUuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29tcGF0L3RpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2QyNTlhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb21wYXQvdGltZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qICRJZDogdGltZS5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09NUEFUX1RJTUVfSF9fCisjZGVmaW5lIF9fUEpfQ09NUEFUX1RJTUVfSF9fCisKKy8qKgorICogQGZpbGUgdGltZS5oCisgKiBAYnJpZWYgUHJvdmlkZXMgZnRpbWUoKSBhbmQgbG9jYWx0aW1lKCkgZXRjIGZ1bmN0aW9ucy4KKyAqLworCisjaWYgZGVmaW5lZChQSl9IQVNfVElNRV9IKSAmJiBQSl9IQVNfVElNRV9IICE9IDAKKyMgIGluY2x1ZGUgPHRpbWUuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChQSl9IQVNfU1lTX1RJTUVfSCkgJiYgUEpfSEFTX1NZU19USU1FX0ggIT0gMAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChQSl9IQVNfU1lTX1RJTUVCX0gpICYmIFBKX0hBU19TWVNfVElNRUJfSCAhPSAwCisjICBpbmNsdWRlIDxzeXMvdGltZWIuaD4KKyNlbmRpZgorCisKKyNlbmRpZgkvKiBfX1BKX0NPTVBBVF9USU1FX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbmZpZy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2ZjNjhkCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb25maWcuaApAQCAtMCwwICsxLDEyMzIgQEAKKy8qICRJZDogY29uZmlnLmggNDUzNyAyMDEzLTA2LTE5IDA2OjQ3OjQzWiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfQ09ORklHX0hfXworI2RlZmluZSBfX1BKX0NPTkZJR19IX18KKworCisvKioKKyAqIEBmaWxlIGNvbmZpZy5oCisgKiBAYnJpZWYgUEpMSUIgTWFpbiBjb25maWd1cmF0aW9uIHNldHRpbmdzLgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogSW5jbHVkZSBjb21waWxlciBzcGVjaWZpYyBjb25maWd1cmF0aW9uLgorICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyMgIGluY2x1ZGUgPHBqL2NvbXBhdC9jY19tc3ZjLmg+CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorIyAgaW5jbHVkZSA8cGovY29tcGF0L2NjX2djYy5oPgorI2VsaWYgZGVmaW5lZChfX0NXMzJfXykKKyMgIGluY2x1ZGUgPHBqL2NvbXBhdC9jY19td2NjLmg+CisjZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pCisjICBpbmNsdWRlIDxwai9jb21wYXQvY2NfY29kZXcuaD4KKyNlbGlmIGRlZmluZWQoX19HQ0NFX18pCisjICBpbmNsdWRlIDxwai9jb21wYXQvY2NfZ2NjZS5oPgorI2VsaWYgZGVmaW5lZChfX0FSTUNDX18pCisjICBpbmNsdWRlIDxwai9jb21wYXQvY2NfYXJtY2MuaD4KKyNlbHNlCisjICBlcnJvciAiVW5rbm93biBjb21waWxlci4iCisjZW5kaWYKKworLyogUEpfQUxJR05fREFUQSBpcyBjb21waWxlciBzcGVjaWZpYyBkaXJlY3RpdmUgdG8gYWxpZ24gZGF0YSBhZGRyZXNzICovCisjaWZuZGVmIFBKX0FMSUdOX0RBVEEKKyMgIGVycm9yICJQSl9BTElHTl9EQVRBIGlzIG5vdCBkZWZpbmVkISIKKyNlbmRpZgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEluY2x1ZGUgdGFyZ2V0IE9TIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uCisgKi8KKyNpZiBkZWZpbmVkKFBKX0FVVE9DT05GKQorICAgIC8qCisgICAgICogQXV0b2NvbmYKKyAgICAgKi8KKyMgICBpbmNsdWRlIDxwai9jb21wYXQvb3NfYXV0by5oPgorCisjZWxpZiBkZWZpbmVkKFBKX1NZTUJJQU4pICYmIFBKX1NZTUJJQU4hPTAKKyAgICAvKgorICAgICAqIFN5bWJpYW5PUworICAgICAqLworIyAgaW5jbHVkZSA8cGovY29tcGF0L29zX3N5bWJpYW4uaD4KKworI2VsaWYgZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkgfHwgZGVmaW5lZChfV0lOMzJfV0NFKSB8fCBkZWZpbmVkKFVOREVSX0NFKQorICAgIC8qCisgICAgICogV2luZG93cyBDRQorICAgICAqLworIyAgIHVuZGVmIFBKX1dJTjMyX1dJTkNFCisjICAgZGVmaW5lIFBKX1dJTjMyX1dJTkNFICAgMQorIyAgIGluY2x1ZGUgPHBqL2NvbXBhdC9vc193aW4zMl93aW5jZS5oPgorCisgICAgLyogQWxzbyBkZWZpbmUgV2luMzIgKi8KKyMgICBkZWZpbmUgUEpfV0lOMzIgMQorCisjZWxpZiBkZWZpbmVkKFBKX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IFwKKwlkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKFBKX1dJTjY0KSB8fCBkZWZpbmVkKF9XSU42NCkgfHwgXAorCWRlZmluZWQoV0lONjQpIHx8IGRlZmluZWQoX19UT1NfV0lOX18pIAorIyAgIGlmIGRlZmluZWQoUEpfV0lONjQpIHx8IGRlZmluZWQoX1dJTjY0KSB8fCBkZWZpbmVkKFdJTjY0KQorCS8qCisJICogV2luNjQKKwkgKi8KKyMJdW5kZWYgUEpfV0lONjQKKyMJZGVmaW5lIFBKX1dJTjY0IDEKKyMgICBlbmRpZgorIyAgIHVuZGVmIFBKX1dJTjMyCisjICAgZGVmaW5lIFBKX1dJTjMyIDEKKyMgICBpbmNsdWRlIDxwai9jb21wYXQvb3Nfd2luMzIuaD4KKworI2VsaWYgZGVmaW5lZChQSl9MSU5VWF9LRVJORUwpICYmIFBKX0xJTlVYX0tFUk5FTCE9MAorICAgIC8qCisgICAgICogTGludXgga2VybmVsCisgICAgICovCisjICBpbmNsdWRlIDxwai9jb21wYXQvb3NfbGludXhfa2VybmVsLmg+CisKKyNlbGlmIGRlZmluZWQoUEpfTElOVVgpIHx8IGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19saW51eCkKKyAgICAvKgorICAgICAqIExpbnV4CisgICAgICovCisjICAgdW5kZWYgUEpfTElOVVgKKyMgICBkZWZpbmUgUEpfTElOVVgJICAgIDEKKyMgICBpbmNsdWRlIDxwai9jb21wYXQvb3NfbGludXguaD4KKworI2VsaWYgZGVmaW5lZChQSl9QQUxNT1MpICYmIFBKX1BBTE1PUyE9MAorICAgIC8qCisgICAgICogUGFsbQorICAgICAqLworIyAgaW5jbHVkZSA8cGovY29tcGF0L29zX3BhbG1vcy5oPgorCisjZWxpZiBkZWZpbmVkKFBKX1NVTk9TKSB8fCBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX3N1bikKKyAgICAvKgorICAgICAqIFN1bk9TCisgICAgICovCisjICAgdW5kZWYgUEpfU1VOT1MKKyMgICBkZWZpbmUgUEpfU1VOT1MJICAgIDEKKyMgICBpbmNsdWRlIDxwai9jb21wYXQvb3Nfc3Vub3MuaD4KKworI2VsaWYgZGVmaW5lZChQSl9EQVJXSU5PUykgfHwgZGVmaW5lZChfX01BQ09TWF9fKSB8fCBcCisgICAgICBkZWZpbmVkIChfX0FQUExFX18pIHx8IGRlZmluZWQgKF9fTUFDSF9fKQorICAgIC8qCisgICAgICogTWFjT1MgWAorICAgICAqLworIyAgIHVuZGVmIFBKX0RBUldJTk9TCisjICAgZGVmaW5lIFBKX0RBUldJTk9TCSAgICAxCisjICAgaW5jbHVkZSA8cGovY29tcGF0L29zX2Rhcndpbm9zLmg+CisKKyNlbGlmIGRlZmluZWQoUEpfUlRFTVMpICYmIFBKX1JURU1TIT0wCisgICAgLyoKKyAgICAgKiBSVEVNUworICAgICAqLworIyAgaW5jbHVkZSA8cGovY29tcGF0L29zX3J0ZW1zLmg+CisjZWxzZQorIyAgIGVycm9yICJQbGVhc2Ugc3BlY2lmeSB0YXJnZXQgb3MuIgorI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBUYXJnZXQgbWFjaGluZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLgorICovCisjaWYgZGVmaW5lZChQSl9BVVRPQ09ORikKKyAgICAvKgorICAgICAqIEF1dG9jb25mIGNvbmZpZ3VyZWQKKyAgICAgKi8KKyNpbmNsdWRlIDxwai9jb21wYXQvbV9hdXRvLmg+CisKKyNlbGlmIGRlZmluZWQgKFBKX01fSTM4NikgfHwgZGVmaW5lZChfaTM4Nl8pIHx8IGRlZmluZWQoaV8zODZfKSB8fCBcCisJZGVmaW5lZChfWDg2XykgfHwgZGVmaW5lZCh4ODYpIHx8IGRlZmluZWQoX19pMzg2X18pIHx8IFwKKwlkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9fSTg2X18pCisgICAgLyoKKyAgICAgKiBHZW5lcmljIGkzODYgcHJvY2Vzc29yIGZhbWlseSwgbGl0dGxlLWVuZGlhbgorICAgICAqLworIyAgIHVuZGVmIFBKX01fSTM4NgorIyAgIGRlZmluZSBQSl9NX0kzODYJCTEKKyMgICBkZWZpbmUgUEpfTV9OQU1FCQkiaTM4NiIKKyMgICBkZWZpbmUgUEpfSEFTX1BFTlRJVU0JMQorIyAgIGRlZmluZSBQSl9JU19MSVRUTEVfRU5ESUFOCTEKKyMgICBkZWZpbmUgUEpfSVNfQklHX0VORElBTgkwCisKKworI2VsaWYgZGVmaW5lZCAoUEpfTV9YODZfNjQpIHx8IGRlZmluZWQoX19hbWQ2NF9fKSB8fCBkZWZpbmVkKF9fYW1kNjQpIHx8IFwKKwlkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194ODZfNjQpCisgICAgLyoKKyAgICAgKiBBTUQgNjRiaXQgcHJvY2Vzc29yLCBsaXR0bGUgZW5kaWFuCisgICAgICovCisjICAgdW5kZWYgUEpfTV9YODZfNjQKKyMgICBkZWZpbmUgUEpfTV9YODZfNjQJCTEKKyMgICBkZWZpbmUgUEpfTV9OQU1FCQkieDg2XzY0IgorIyAgIGRlZmluZSBQSl9IQVNfUEVOVElVTQkxCisjICAgZGVmaW5lIFBKX0lTX0xJVFRMRV9FTkRJQU4JMQorIyAgIGRlZmluZSBQSl9JU19CSUdfRU5ESUFOCTAKKworI2VsaWYgZGVmaW5lZChQSl9NX0lBNjQpIHx8IGRlZmluZWQoX19pYTY0X18pIHx8IGRlZmluZWQoX0lBNjQpIHx8IFwKKwlkZWZpbmVkKF9fSUE2NF9fKSB8fCBkZWZpbmVkKCAJX01fSUE2NCkKKyAgICAvKgorICAgICAqIEludGVsIElBNjQgcHJvY2Vzc29yLCBkZWZhdWx0IHRvIGxpdHRsZSBlbmRpYW4KKyAgICAgKi8KKyMgICB1bmRlZiBQSl9NX0lBNjQKKyMgICBkZWZpbmUgUEpfTV9JQTY0CQkxCisjICAgZGVmaW5lIFBKX01fTkFNRQkJImlhNjQiCisjICAgZGVmaW5lIFBKX0hBU19QRU5USVVNCTEKKyMgICBkZWZpbmUgUEpfSVNfTElUVExFX0VORElBTgkxCisjICAgZGVmaW5lIFBKX0lTX0JJR19FTkRJQU4JMAorCisjZWxpZiBkZWZpbmVkIChQSl9NX002OEspICYmIFBKX01fTTY4SyAhPSAwCisKKyAgICAvKgorICAgICAqIE1vdG9yb2xhIG02OGsgcHJvY2Vzc29yLCBiaWcgZW5kaWFuCisgICAgICovCisjICAgdW5kZWYgUEpfTV9NNjhLCisjICAgZGVmaW5lIFBKX01fTTY4SwkJMQorIyAgIGRlZmluZSBQSl9NX05BTUUJCSJtNjhrIgorIyAgIGRlZmluZSBQSl9IQVNfUEVOVElVTQkwCisjICAgZGVmaW5lIFBKX0lTX0xJVFRMRV9FTkRJQU4JMAorIyAgIGRlZmluZSBQSl9JU19CSUdfRU5ESUFOCTEKKworCisjZWxpZiBkZWZpbmVkIChQSl9NX0FMUEhBKSB8fCBkZWZpbmVkIChfX2FscGhhX18pIHx8IGRlZmluZWQgKF9fYWxwaGEpIHx8IFwKKwlkZWZpbmVkIChfTV9BTFBIQSkKKyAgICAvKgorICAgICAqIERFQyBBbHBoYSBwcm9jZXNzb3IsIGxpdHRsZSBlbmRpYW4KKyAgICAgKi8KKyMgICB1bmRlZiBQSl9NX0FMUEhBCisjICAgZGVmaW5lIFBKX01fQUxQSEEJCTEKKyMgICBkZWZpbmUgUEpfTV9OQU1FCQkiYWxwaGEiCisjICAgZGVmaW5lIFBKX0hBU19QRU5USVVNCTAKKyMgICBkZWZpbmUgUEpfSVNfTElUVExFX0VORElBTgkxCisjICAgZGVmaW5lIFBKX0lTX0JJR19FTkRJQU4JMAorCisKKyNlbGlmIGRlZmluZWQoUEpfTV9NSVBTKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fbWlwcykgfHwgXAorCWRlZmluZWQoX19NSVBTX18pIHx8IGRlZmluZWQoTUlQUykgfHwgZGVmaW5lZChfTUlQU18pCisgICAgLyoKKyAgICAgKiBNSVBTLCBiaS1lbmRpYW4sIHNvIHJhaXNlIGVycm9yIGlmIGVuZGlhbm5lc3MgaXMgbm90IGNvbmZpZ3VyZWQKKyAgICAgKi8KKyMgICB1bmRlZiBQSl9NX01JUFMKKyMgICBkZWZpbmUgUEpfTV9NSVBTCQkxCisjICAgZGVmaW5lIFBKX01fTkFNRQkJIm1pcHMiCisjICAgZGVmaW5lIFBKX0hBU19QRU5USVVNCTAKKyMgICBpZiAhUEpfSVNfTElUVExFX0VORElBTiAmJiAhUEpfSVNfQklHX0VORElBTgorIyAgIAllcnJvciBFbmRpYW5uZXNzIG11c3QgYmUgZGVjbGFyZWQgZm9yIHRoaXMgcHJvY2Vzc29yCisjICAgZW5kaWYKKworCisjZWxpZiBkZWZpbmVkIChQSl9NX1NQQVJDKSB8fCBkZWZpbmVkKCAJX19zcGFyY19fKSB8fCBkZWZpbmVkKF9fc3BhcmMpCisgICAgLyoKKyAgICAgKiBTdW4gU3BhcmMsIGJpZyBlbmRpYW4KKyAgICAgKi8KKyMgICB1bmRlZiBQSl9NX1NQQVJDCisjICAgZGVmaW5lIFBKX01fU1BBUkMJCTEKKyMgICBkZWZpbmUgUEpfTV9OQU1FCQkic3BhcmMiCisjICAgZGVmaW5lIFBKX0hBU19QRU5USVVNCTAKKyMgICBkZWZpbmUgUEpfSVNfTElUVExFX0VORElBTgkwCisjICAgZGVmaW5lIFBKX0lTX0JJR19FTkRJQU4JMQorCisjZWxpZiBkZWZpbmVkIChQSl9NX0FSTVY0KSB8fCBkZWZpbmVkKEFSTSkgfHwgZGVmaW5lZChfQVJNXykgfHwgIFwKKwlkZWZpbmVkKEFSTVY0KSB8fCBkZWZpbmVkKF9fYXJtX18pCisgICAgLyoKKyAgICAgKiBBUk0sIGJpLWVuZGlhbiwgc28gcmFpc2UgZXJyb3IgaWYgZW5kaWFubmVzcyBpcyBub3QgY29uZmlndXJlZAorICAgICAqLworIyAgIHVuZGVmIFBKX01fQVJNVjQKKyMgICBkZWZpbmUgUEpfTV9BUk1WNAkJMQorIyAgIGRlZmluZSBQSl9NX05BTUUJCSJhcm12NCIKKyMgICBkZWZpbmUgUEpfSEFTX1BFTlRJVU0JMAorIyAgIGlmICFQSl9JU19MSVRUTEVfRU5ESUFOICYmICFQSl9JU19CSUdfRU5ESUFOCisjICAgCWVycm9yIEVuZGlhbm5lc3MgbXVzdCBiZSBkZWNsYXJlZCBmb3IgdGhpcyBwcm9jZXNzb3IKKyMgICBlbmRpZgorCisjZWxpZiBkZWZpbmVkIChQSl9NX1BPV0VSUEMpIHx8IGRlZmluZWQoX19wb3dlcnBjKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBcCisJZGVmaW5lZChfX1BPV0VSUENfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9NX1BQQykgfHwgXAorCWRlZmluZWQoX0FSQ0hfUFBDKQorICAgIC8qCisgICAgICogUG93ZXJQQywgYmktZW5kaWFuLCBzbyByYWlzZSBlcnJvciBpZiBlbmRpYW5uZXNzIGlzIG5vdCBjb25maWd1cmVkCisgICAgICovCisjICAgdW5kZWYgUEpfTV9QT1dFUlBDCisjICAgZGVmaW5lIFBKX01fUE9XRVJQQwkJMQorIyAgIGRlZmluZSBQSl9NX05BTUUJCSJwb3dlcnBjIgorIyAgIGRlZmluZSBQSl9IQVNfUEVOVElVTQkwCisjICAgaWYgIVBKX0lTX0xJVFRMRV9FTkRJQU4gJiYgIVBKX0lTX0JJR19FTkRJQU4KKyMgICAJZXJyb3IgRW5kaWFubmVzcyBtdXN0IGJlIGRlY2xhcmVkIGZvciB0aGlzIHByb2Nlc3NvcgorIyAgIGVuZGlmCisKKyNlbGlmIGRlZmluZWQgKFBKX01fTklPUzIpIHx8IGRlZmluZWQoX19uaW9zMikgfHwgZGVmaW5lZChfX25pb3MyX18pIHx8IFwKKyAgICAgIGRlZmluZWQoX19OSU9TMl9fKSB8fCBkZWZpbmVkKF9fTV9OSU9TMikgfHwgZGVmaW5lZChfQVJDSF9OSU9TMikKKyAgICAvKgorICAgICAqIE5pb3MyLCBsaXR0bGUgZW5kaWFuCisgICAgICovCisjICAgdW5kZWYgUEpfTV9OSU9TMgorIyAgIGRlZmluZSBQSl9NX05JT1MyCQkxCisjICAgZGVmaW5lIFBKX01fTkFNRQkJIm5pb3MyIgorIyAgIGRlZmluZSBQSl9IQVNfUEVOVElVTQkwCisjICAgZGVmaW5lIFBKX0lTX0xJVFRMRV9FTkRJQU4JMQorIyAgIGRlZmluZSBQSl9JU19CSUdfRU5ESUFOCTAKKwkJCisjZWxzZQorIyAgIGVycm9yICJQbGVhc2Ugc3BlY2lmeSB0YXJnZXQgbWFjaGluZS4iCisjZW5kaWYKKworLyogSW5jbHVkZSBzaXplX3QgZGVmaW5pdGlvbi4gKi8KKyNpbmNsdWRlIDxwai9jb21wYXQvc2l6ZV90Lmg+CisKKy8qIEluY2x1ZGUgc2l0ZS91c2VyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdG8gY29udHJvbCBQSkxJQiBmZWF0dXJlcy4KKyAqIFlPVSBNVVNUIENSRUFURSBUSElTIEZJTEUgWU9VUlNFTEYhIQorICovCisjaW5jbHVkZSA8cGovY29uZmlnX3NpdGUuaD4KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBQSkxJQiBGZWF0dXJlcy4KKyAqLworCisvKiBPdmVycmlkZXMgZm9yIERPWFlHRU4gKi8KKyNpZmRlZiBET1hZR0VOCisjICAgdW5kZWYgUEpfRlVOQ1RJT05TX0FSRV9JTkxJTkVECisjICAgdW5kZWYgUEpfSEFTX0ZMT0FUSU5HX1BPSU5UCisjICAgdW5kZWYgUEpfTE9HX01BWF9MRVZFTAorIyAgIHVuZGVmIFBKX0xPR19NQVhfU0laRQorIyAgIHVuZGVmIFBKX0xPR19VU0VfU1RBQ0tfQlVGRkVSCisjICAgdW5kZWYgUEpfVEVSTV9IQVNfQ09MT1IKKyMgICB1bmRlZiBQSl9QT09MX0RFQlVHCisjICAgdW5kZWYgUEpfSEFTX1RDUAorIyAgIHVuZGVmIFBKX01BWF9IT1NUTkFNRQorIyAgIHVuZGVmIFBKX0lPUVVFVUVfTUFYX0hBTkRMRVMKKyMgICB1bmRlZiBGRF9TRVRTSVpFCisjICAgdW5kZWYgUEpfSEFTX1NFTUFQSE9SRQorIyAgIHVuZGVmIFBKX0hBU19FVkVOVF9PQkoKKyMgICB1bmRlZiBQSl9FTkFCTEVfRVhUUkFfQ0hFQ0sKKyMgICB1bmRlZiBQSl9FWENFUFRJT05fVVNFX1dJTjMyX1NFSAorIyAgIHVuZGVmIFBKX0hBU19FUlJPUl9TVFJJTkcKKworIyAgIGRlZmluZSBQSl9IQVNfSVBWNgkxCisjZW5kaWYKKworLyoqCisgKiBAZGVmZ3JvdXAgcGpfY29uZmlnIEJ1aWxkIENvbmZpZ3VyYXRpb24KKyAqIEB7CisgKgorICogVGhpcyBzZWN0aW9uIGNvbnRhaW5zIG1hY3JvcyB0aGF0IGNhbiBzZXQgZHVyaW5nIFBKTElCIGJ1aWxkIHByb2Nlc3MKKyAqIHRvIGNvbnRyb2xsIHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgbGlicmFyeS4KKyAqCisgKiA8Yj5Ob3RlPC9iPjogdGhlIHZhbHVlcyBpbiB0aGlzIHBhZ2UgZG9lcyBOT1QgbmVjZXNzYXJpbHkgcmVmbGVjdCB0byB0aGUKKyAqIG1hY3JvIHZhbHVlcyBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuCisgKi8KKworLyoqCisgKiBJZiB0aGlzIG1hY3JvIGlzIHNldCB0byAxLCBpdCB3aWxsIGVuYWJsZSBzb21lIGRlYnVnZ2luZyBjaGVja2luZworICogaW4gdGhlIGxpYnJhcnkuCisgKgorICogRGVmYXVsdDogZXF1YWwgdG8gKE5PVCBOREVCVUcpLgorICovCisjaWZuZGVmIFBKX0RFQlVHCisjICBpZm5kZWYgTkRFQlVHCisjICAgIGRlZmluZSBQSl9ERUJVRwkJICAgIDEKKyMgIGVsc2UKKyMgICAgZGVmaW5lIFBKX0RFQlVHCQkgICAgMAorIyAgZW5kaWYKKyNlbmRpZgorCisvKioKKyAqIEVuYWJsZSB0aGlzIG1hY3JvIHRvIGFjdGl2YXRlIGxvZ2dpbmcgdG8gbXV0ZXgvc2VtYXBob3JlIHJlbGF0ZWQgZXZlbnRzLgorICogVGhpcyBpcyB1c2VmdWwgdG8gdHJvdWJsZXNob290IGNvbmN1cnJlbmN5IHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxvY2tzLgorICogSW4gYWRkaXRpb24sIHlvdSBzaG91bGQgYWxzbyBhZGQgUEpfTE9HX0hBU19USFJFQURfSUQgZmxhZyB0byB0aGUKKyAqIGxvZyBkZWNvcmF0aW9uIHRvIGFzc2lzdCB0aGUgdHJvdWJsZXNob290aW5nLgorICoKKyAqIERlZmF1bHQ6IDAKKyAqLworI2lmbmRlZiBQSl9ERUJVR19NVVRFWAorIyAgIGRlZmluZSBQSl9ERUJVR19NVVRFWAkgICAgMAorI2VuZGlmCisKKy8qKgorICogRXhwYW5kIGZ1bmN0aW9ucyBpbiAqX2kuaCBoZWFkZXIgZmlsZXMgYXMgaW5saW5lLgorICoKKyAqIERlZmF1bHQ6IDAuCisgKi8KKyNpZm5kZWYgUEpfRlVOQ1RJT05TX0FSRV9JTkxJTkVECisjICBkZWZpbmUgUEpfRlVOQ1RJT05TX0FSRV9JTkxJTkVEICAwCisjZW5kaWYKKworLyoqCisgKiBVc2UgZmxvYXRpbmcgcG9pbnQgY29tcHV0YXRpb25zIGluIHRoZSBsaWJyYXJ5LgorICoKKyAqIERlZmF1bHQ6IDEuCisgKi8KKyNpZm5kZWYgUEpfSEFTX0ZMT0FUSU5HX1BPSU5UCisjICBkZWZpbmUgUEpfSEFTX0ZMT0FUSU5HX1BPSU5UCSAgICAxCisjZW5kaWYKKworLyoqCisgKiBEZWNsYXJlIG1heGltdW0gbG9nZ2luZyBsZXZlbC92ZXJib3NpdHkuIExvd2VyIG51bWJlciBpbmRpY2F0ZXMgaGlnaGVyCisgKiBpbXBvcnRhbmNlLCB3aXRoIHRoZSBoaWdoZXN0IGltcG9ydGFuY2UgaGFzIGxldmVsIHplcm8uIFRoZSBsZWFzdAorICogaW1wb3J0YW50IGxldmVsIGlzIGZpdmUgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgYnV0IHRoaXMgY2FuIGJlIGV4dGVuZGVkCisgKiBieSBzdXBwbHlpbmcgdGhlIGFwcHJvcHJpYXRlIGltcGxlbWVudGF0aW9uLgorICoKKyAqIFRoZSBsZXZlbCBjb252ZW50aW9uczoKKyAqICAtIDA6IGZhdGFsIGVycm9yCisgKiAgLSAxOiBlcnJvcgorICogIC0gMjogd2FybmluZworICogIC0gMzogaW5mbworICogIC0gNDogZGVidWcKKyAqICAtIDU6IHRyYWNlCisgKiAgLSA2OiBtb3JlIGRldGFpbGVkIHRyYWNlCisgKgorICogRGVmYXVsdDogNAorICovCisjaWZuZGVmIFBKX0xPR19NQVhfTEVWRUwKKyMgIGRlZmluZSBQSl9MT0dfTUFYX0xFVkVMICAgNQorI2VuZGlmCisKKy8qKgorICogTWF4aW11bSBtZXNzYWdlIHNpemUgdGhhdCBjYW4gYmUgc2VudCB0byBvdXRwdXQgZGV2aWNlIGZvciBlYWNoIGNhbGwKKyAqIHRvIFBKX0xPRygpLiBJZiB0aGUgbWVzc2FnZSBzaXplIGlzIGxvbmdlciB0aGFuIHRoaXMgdmFsdWUsIGl0IHdpbGwgYmUgY3V0LgorICogVGhpcyBtYXkgYWZmZWN0IHRoZSBzdGFjayB1c2FnZSwgZGVwZW5kaW5nIHdoZXRoZXIgUEpfTE9HX1VTRV9TVEFDS19CVUZGRVIKKyAqIGZsYWcgaXMgc2V0LgorICoKKyAqIERlZmF1bHQ6IDQwMDAKKyAqLworI2lmbmRlZiBQSl9MT0dfTUFYX1NJWkUKKyMgIGRlZmluZSBQSl9MT0dfTUFYX1NJWkUJICAgIDQwMDAKKyNlbmRpZgorCisvKioKKyAqIExvZyBidWZmZXIuCisgKiBEb2VzIHRoZSBsb2cgZ2V0IHRoZSBidWZmZXIgZnJvbSB0aGUgc3RhY2s/IChkZWZhdWx0IGlzIHllcykuCisgKiBJZiB0aGUgdmFsdWUgaXMgc2V0IHRvIE5PLCB0aGVuIHRoZSBidWZmZXIgd2lsbCBiZSB0YWtlbiBmcm9tIHN0YXRpYworICogYnVmZmVyLCB3aGljaCBpbiB0aGlzIGNhc2Ugd2lsbCBtYWtlIHRoZSBsb2cgZnVuY3Rpb24gbm9uLXJlZW50cmFudC4KKyAqCisgKiBEZWZhdWx0OiAxCisgKi8KKyNpZm5kZWYgUEpfTE9HX1VTRV9TVEFDS19CVUZGRVIKKyMgIGRlZmluZSBQSl9MT0dfVVNFX1NUQUNLX0JVRkZFUiAgIDEKKyNlbmRpZgorCisvKioKKyAqIEVuYWJsZSBsb2cgaW5kZW50YXRpb24gZmVhdHVyZS4KKyAqCisgKiBEZWZhdWx0OiAxCisgKi8KKyNpZm5kZWYgUEpfTE9HX0VOQUJMRV9JTkRFTlQKKyMgICBkZWZpbmUgUEpfTE9HX0VOQUJMRV9JTkRFTlQgICAgICAgIDEKKyNlbmRpZgorCisvKioKKyAqIE51bWJlciBvZiBQSl9MT0dfSU5ERU5UX0NIQVIgdG8gcHV0IGV2ZXJ5IHRpbWUgcGpfbG9nX3B1c2hfaW5kZW50KCkKKyAqIGlzIGNhbGxlZC4KKyAqCisgKiBEZWZhdWx0OiAxCisgKi8KKyNpZm5kZWYgUEpfTE9HX0lOREVOVF9TSVpFCisjICAgZGVmaW5lIFBKX0xPR19JTkRFTlRfU0laRSAgICAgICAgMQorI2VuZGlmCisKKy8qKgorICogTG9nIGluZGVudGF0aW9uIGNoYXJhY3Rlci4KKyAqCisgKiBEZWZhdWx0OiBzcGFjZQorICovCisjaWZuZGVmIFBKX0xPR19JTkRFTlRfQ0hBUgorIyAgIGRlZmluZSBQSl9MT0dfSU5ERU5UX0NIQVIJICAgICcuJworI2VuZGlmCisKKy8qKgorICogQ29sb3JmdWxsIHRlcm1pbmFsIChmb3IgbG9nZ2luZyBldGMpLgorICoKKyAqIERlZmF1bHQ6IDEKKyAqLworI2lmbmRlZiBQSl9URVJNX0hBU19DT0xPUgorIyAgZGVmaW5lIFBKX1RFUk1fSEFTX0NPTE9SCSAgICAxCisjZW5kaWYKKworCisvKioKKyAqIFNldCB0aGlzIGZsYWcgdG8gbm9uLXplcm8gdG8gZW5hYmxlIHZhcmlvdXMgY2hlY2tpbmcgZm9yIHBvb2wKKyAqIG9wZXJhdGlvbnMuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgYXNzZXJ0aW9uIG11c3QgYmUgZW5hYmxlZAorICogaW4gdGhlIGFwcGxpY2F0aW9uLgorICoKKyAqIFRoaXMgd2lsbCBzbG93IGRvd24gcG9vbCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gYW5kIHdpbGwgYWRkCisgKiBmZXcgYnl0ZXMgb2Ygb3ZlcmhlYWQsIHNvIGFwcGxpY2F0aW9uIHdvdWxkIG5vcm1hbGx5IHdhbnQgdG8gCisgKiBkaXNhYmxlIHRoaXMgZmVhdHVyZSBvbiByZWxlYXNlIGJ1aWxkLgorICoKKyAqIERlZmF1bHQ6IDAKKyAqLworI2lmbmRlZiBQSl9TQUZFX1BPT0wKKyMgICBkZWZpbmUgUEpfU0FGRV9QT09MCQkgICAgMAorI2VuZGlmCisKKworLyoqCisgKiBJZiBwb29sIGRlYnVnZ2luZyBpcyB1c2VkLCB0aGVuIGVhY2ggbWVtb3J5IGFsbG9jYXRpb24gZnJvbSB0aGUgcG9vbAorICogd2lsbCBjYWxsIG1hbGxvYygpLCBhbmQgcG9vbCB3aWxsIHJlbGVhc2UgYWxsIG1lbW9yeSBjaHVua3Mgd2hlbiBpdAorICogaXMgZGVzdHJveWVkLiBUaGlzIHdvcmtzIGJldHRlciB3aGVuIG1lbW9yeSB2ZXJpZmljYXRpb24gcHJvZ3JhbXMKKyAqIHN1Y2ggYXMgUmF0aW9uYWwgUHVyaWZ5IGlzIHVzZWQuCisgKgorICogRGVmYXVsdDogMAorICovCisjaWZuZGVmIFBKX1BPT0xfREVCVUcKKyMgIGRlZmluZSBQSl9QT09MX0RFQlVHCQkgICAgMAorI2VuZGlmCisKKworLyoqCisgKiBFbmFibGUgdGltZXIgaGVhcCBkZWJ1Z2dpbmcgZmFjaWxpdHkuIFdoZW4gdGhpcyBpcyBlbmFibGVkLCBhcHBsaWNhdGlvbgorICogY2FuIGNhbGwgcGpfdGltZXJfaGVhcF9kdW1wKCkgdG8gc2hvdyB0aGUgY29udGVudHMgb2YgdGhlIHRpbWVyIGhlYXAKKyAqIGFsb25nIHdpdGggdGhlIHNvdXJjZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGltZXIgZW50cmllcyB3ZXJlIHNjaGVkdWxlZC4KKyAqIFNlZSBodHRwczovL3RyYWMucGpzaXAub3JnL3JlcG9zL3RpY2tldC8xNTI3IGZvciBtb3JlIGluZm8uCisgKgorICogRGVmYXVsdDogMAorICovCisjaWZuZGVmIFBKX1RJTUVSX0RFQlVHCisjICBkZWZpbmUgUEpfVElNRVJfREVCVUcJICAgIDAKKyNlbmRpZgorCisKKy8qKgorICogU2V0IHRoaXMgdG8gMSB0byBlbmFibGUgZGVidWdnaW5nIG9uIHRoZSBncm91cCBsb2NrLiBEZWZhdWx0OiAwCisgKi8KKyNpZm5kZWYgUEpfR1JQX0xPQ0tfREVCVUcKKyMgIGRlZmluZSBQSl9HUlBfTE9DS19ERUJVRwkwCisjZW5kaWYKKworCisvKioKKyAqIFNwZWNpZnkgdGhpcyBhcyBcYSBzdGFja19zaXplIGFyZ3VtZW50IGluICNwal90aHJlYWRfY3JlYXRlKCkgdG8gc3BlY2lmeQorICogdGhhdCB0aHJlYWQgc2hvdWxkIHVzZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLgorICoKKyAqIERlZmF1bHQ6IDgxOTIKKyAqLworI2lmbmRlZiBQSl9USFJFQURfREVGQVVMVF9TVEFDS19TSVpFIAorIyAgZGVmaW5lIFBKX1RIUkVBRF9ERUZBVUxUX1NUQUNLX1NJWkUgICAgODE5MgorI2VuZGlmCisKKworLyoqCisgKiBTcGVjaWZ5IGlmIFBKX0NIRUNLX1NUQUNLKCkgbWFjcm8gaXMgZW5hYmxlZCB0byBjaGVjayB0aGUgc2FuaXR5IG9mIAorICogdGhlIHN0YWNrLiBUaGUgT1MgaW1wbGVtZW50YXRpb24gbWF5IGNoZWNrIHRoYXQgbm8gc3RhY2sgb3ZlcmZsb3cgCisgKiBvY2N1cnMsIGFuZCBpdCBhbHNvIG1heSBjb2xsZWN0IHN0YXRpc3RpYyBhYm91dCBzdGFjayB1c2FnZS4gTm90ZQorICogdGhhdCB0aGlzIHdpbGwgaW5jcmVhc2UgdGhlIGZvb3RwcmludCBvZiB0aGUgbGlicmFyaWVzIHNpbmNlIGl0CisgKiB0cmFja3MgdGhlIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciBvZiBlYWNoIGZ1bmN0aW9ucy4KKyAqLworI2lmbmRlZiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sKKyMJZGVmaW5lIFBKX09TX0hBU19DSEVDS19TVEFDSwkJMAorI2VuZGlmCisKKy8qKgorICogRG8gd2UgaGF2ZSBhbHRlcm5hdGUgcG9vbCBpbXBsZW1lbnRhdGlvbj8KKyAqCisgKiBEZWZhdWx0OiAwCisgKi8KKyNpZm5kZWYgUEpfSEFTX1BPT0xfQUxUX0FQSQorIyAgIGRlZmluZSBQSl9IQVNfUE9PTF9BTFRfQVBJCSAgICBQSl9QT09MX0RFQlVHCisjZW5kaWYKKworCisvKioKKyAqIFN1cHBvcnQgVENQIGluIHRoZSBsaWJyYXJ5LgorICogRGlzYWJsaW5nIFRDUCB3aWxsIHJlZHVjZSB0aGUgZm9vdHByaW50IHNsaWdodGx5IChhYm91dCA2S0IpLgorICoKKyAqIERlZmF1bHQ6IDEKKyAqLworI2lmbmRlZiBQSl9IQVNfVENQCisjICBkZWZpbmUgUEpfSEFTX1RDUAkJICAgIDEKKyNlbmRpZgorCisvKioKKyAqIFN1cHBvcnQgSVB2NiBpbiB0aGUgbGlicmFyeS4gSWYgdGhpcyBzdXBwb3J0IGlzIGRpc2FibGVkLCBzb21lIElQdjYgCisgKiByZWxhdGVkIGZ1bmN0aW9ucyB3aWxsIHJldHVybiBQSl9FSVBWNk5PVFNVUC4KKyAqCisgKiBEZWZhdWx0OiAwIChkaXNhYmxlZCwgZm9yIG5vdykKKyAqLworI2lmbmRlZiBQSl9IQVNfSVBWNgorIyAgZGVmaW5lIFBKX0hBU19JUFY2CQkgICAgMAorI2VuZGlmCisKKyAvKioKKyAqIE1heGltdW0gaG9zdG5hbWUgbGVuZ3RoLgorICogTGlicmFyaWVzIHNvbWV0aW1lcyBuZWVkcyB0byBtYWtlIGNvcHkgb2YgYW4gYWRkcmVzcyB0byBzdGFjayBidWZmZXI7CisgKiB0aGUgdmFsdWUgaGVyZSBhZmZlY3RzIHRoZSBzdGFjayB1c2FnZS4KKyAqCisgKiBEZWZhdWx0OiAxMjgKKyAqLworI2lmbmRlZiBQSl9NQVhfSE9TVE5BTUUKKyMgIGRlZmluZSBQSl9NQVhfSE9TVE5BTUUJICAgICgxMjgpCisjZW5kaWYKKworLyoqCisgKiBNYXhpbXVtIGNvbnNlY3V0aXZlIGlkZW50aWNhbCBlcnJvciBmb3IgYWNjZXB0KCkgb3BlcmF0aW9uIGJlZm9yZQorICogYWN0aXZlc29jayBzdG9wcyBjYWxsaW5nIHRoZSBuZXh0IGlvcXVldWUgYWNjZXB0LgorICoKKyAqIERlZmF1bHQ6IDUwCisgKi8KKyNpZm5kZWYgUEpfQUNUSVZFU09DS19NQVhfQ09OU0VDVVRJVkVfQUNDRVBUX0VSUk9SCisjICAgZGVmaW5lIFBKX0FDVElWRVNPQ0tfTUFYX0NPTlNFQ1VUSVZFX0FDQ0VQVF9FUlJPUiA1MAorI2VuZGlmCisKKy8qKgorICogQ29uc3RhbnRzIGZvciBkZWNsYXJpbmcgdGhlIG1heGltdW0gaGFuZGxlcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQgYnkKKyAqIGEgc2luZ2xlIElPUSBmcmFtZXdvcmsuIFRoaXMgY29uc3RhbnQgbWlnaHQgbm90IGJlIHJlbGV2YW50IHRvIHRoZSAKKyAqIHVuZGVybHlpbmcgSS9PIHF1ZXVlIGltcGVsZW1lbnRhdGlvbiwgYnV0IHN0aWxsLCBkZXZlbG9wZXJzIHNob3VsZCBiZSAKKyAqIGF3YXJlIG9mIHRoaXMgY29uc3RhbnQsIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwcm9ncmFtIHdpbGwgbm90IGJyZWFrIHdoZW4KKyAqIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGNoYW5nZXMuCisgKi8KKyNpZm5kZWYgUEpfSU9RVUVVRV9NQVhfSEFORExFUworIyAgIGRlZmluZSBQSl9JT1FVRVVFX01BWF9IQU5ETEVTCSg2NCkKKyNlbmRpZgorCisKKy8qKgorICogSWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRyBtYWNybyBpcyBkZWZpbmVkLCB0aGVuIGlvcXVldWUgd2lsbCBkbyBtb3JlCisgKiB0aGluZ3MgdG8gZW5zdXJlIHRocmVhZCBzYWZldHkgb2YgaGFuZGxlIHVucmVnaXN0cmF0aW9uIG9wZXJhdGlvbiBieQorICogZW1wbG95aW5nIHJlZmVyZW5jZSBjb3VudGVyIHRvIGVhY2ggaGFuZGxlLgorICoKKyAqIEluIGFkZGl0aW9uLCB0aGUgaW9xdWV1ZSB3aWxsIHByZWFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGhhbmRsZXMsIAorICogYWNjb3JkaW5nIHRvIHRoZSBtYXhpbXVtIG51bWJlciBvZiBoYW5kbGVzIHRoYXQgaXMgc3BlY2lmaWVkIGR1cmluZyAKKyAqIGlvcXVldWUgY3JlYXRpb24uCisgKgorICogQWxsIGFwcGxpY2F0aW9ucyB3b3VsZCBub3JtYWxseSB3YW50IHRoaXMgZW5hYmxlZCwgYnV0IHlvdSBtYXkgZGlzYWJsZQorICogdGhpcyBpZjoKKyAqICAtIHRoZXJlIGlzIG5vIGR5bmFtaWMgdW5yZWdpc3RyYXRpb24gdG8gYWxsIGlvcXVldWVzLgorICogIC0gdGhlcmUgaXMgbm8gdGhyZWFkaW5nLCBvciB0aGVyZSBpcyBubyBwcmVlbXB0aXZlIG11bHRpdGFza2luZy4KKyAqCisgKiBEZWZhdWx0OiAxCisgKi8KKyNpZm5kZWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworIyAgIGRlZmluZSBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCTEKKyNlbmRpZgorCisKKy8qKgorICogRGVmYXVsdCBjb25jdXJyZW5jeSBzZXR0aW5nIGZvciBzb2NrZXRzL2hhbmRsZXMgcmVnaXN0ZXJlZCB0byBpb3F1ZXVlLgorICogVGhpcyBjb250cm9scyB3aGV0aGVyIHRoZSBpb3F1ZXVlIGlzIGFsbG93ZWQgdG8gY2FsbCB0aGUga2V5J3MgY2FsbGJhY2sKKyAqIGNvbmN1cnJlbnRseS9pbiBwYXJhbGxlbC4gVGhlIGRlZmF1bHQgaXMgeWVzLCB3aGljaCBtZWFucyB0aGF0IGlmIHRoZXJlCisgKiBhcmUgbW9yZSB0aGFuIG9uZSBwZW5kaW5nIG9wZXJhdGlvbnMgY29tcGxldGUgc2ltdWx0YW5lb3VzbHksIG1vcmUKKyAqIHRoYW4gb25lIHRocmVhZHMgbWF5IGNhbGwgdGhlIGtleSdzIGNhbGxiYWNrIGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMKKyAqIGdlbmVyYWxseSB3b3VsZCBwcm9tb3RlIGdvb2Qgc2NhbGFiaWxpdHkgZm9yIGFwcGxpY2F0aW9uLCBhdCB0aGUgCisgKiBleHBlbnNlIG9mIG1vcmUgY29tcGxleGl0eSB0byBtYW5hZ2UgdGhlIGNvbmN1cnJlbnQgYWNjZXNzZXMuCisgKgorICogUGxlYXNlIHNlZSB0aGUgaW9xdWV1ZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8uCisgKi8KKyNpZm5kZWYgUEpfSU9RVUVVRV9ERUZBVUxUX0FMTE9XX0NPTkNVUlJFTkNZCisjICAgZGVmaW5lIFBKX0lPUVVFVUVfREVGQVVMVF9BTExPV19DT05DVVJSRU5DWSAgIDEKKyNlbmRpZgorCisKKy8qIFNhbml0eSBjaGVjazoKKyAqICBpZiBpb3F1ZXVlIGNvbmN1cnJlbmN5IGlzIGRpc2FsbG93ZWQsIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyAqICBtdXN0IGJlIGVuYWJsZWQuCisgKi8KKyNpZiAoUEpfSU9RVUVVRV9ERUZBVUxUX0FMTE9XX0NPTkNVUlJFTkNZPT0wKSAmJiAoUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRz09MCkKKyMgICBlcnJvciBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHIG11c3QgYmUgZW5hYmxlZCBpZiBpb3F1ZXVlIGNvbmN1cnJlbmN5IFwKKwkgIGlzIGRpc2FibGVkCisjZW5kaWYKKworCisvKioKKyAqIFdoZW4gc2FmZSB1bnJlZ2lzdHJhdGlvbiAoUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRykgaXMgY29uZmlndXJlZCBpbgorICogaW9xdWV1ZSwgdGhlIFBKX0lPUVVFVUVfS0VZX0ZSRUVfREVMQVkgbWFjcm8gc3BlY2lmaWVzIGhvdyBsb25nIHRoZQorICogaW9xdWV1ZSBrZXkgaXMga2VwdCBpbiBjbG9zaW5nIHN0YXRlIGJlZm9yZSBpdCBjYW4gYmUgcmV1c2VkLgorICoKKyAqIFRoZSB2YWx1ZSBpcyBpbiBtaWxpc2Vjb25kcy4KKyAqCisgKiBEZWZhdWx0OiA1MDAgbXNlYy4KKyAqLworI2lmbmRlZiBQSl9JT1FVRVVFX0tFWV9GUkVFX0RFTEFZCisjICAgZGVmaW5lIFBKX0lPUVVFVUVfS0VZX0ZSRUVfREVMQVkJNTAwCisjZW5kaWYKKworCisvKioKKyAqIERldGVybWluZSBpZiBGRF9TRVRTSVpFIGlzIGNoYW5nZWFibGUvc2V0LWFibGUuIElmIHNvLCB0aGVuIHdlIHdpbGwKKyAqIHNldCBpdCB0byBQSl9JT1FVRVVFX01BWF9IQU5ETEVTLiBDdXJyZW50bHkgd2UgZGV0ZWN0IHRoaXMgYnkgY2hlY2tpbmcKKyAqIGZvciBXaW5zb2NrLgorICovCisjaWZuZGVmIFBKX0ZEX1NFVFNJWkVfU0VUQUJMRQorIyAgIGlmIChkZWZpbmVkKFBKX0hBU19XSU5TT0NLX0gpICYmIFBKX0hBU19XSU5TT0NLX0ghPTApIHx8IFwKKyAgICAgICAoZGVmaW5lZChQSl9IQVNfV0lOU09DSzJfSCkgJiYgUEpfSEFTX1dJTlNPQ0syX0ghPTApCisjCWRlZmluZSBQSl9GRF9TRVRTSVpFX1NFVEFCTEUJMQorIyAgIGVsc2UKKyMJZGVmaW5lIFBKX0ZEX1NFVFNJWkVfU0VUQUJMRQkwCisjICAgZW5kaWYKKyNlbmRpZgorCisvKioKKyAqIE92ZXJyaWRlcyBGRF9TRVRTSVpFIHNvIGl0IGlzIGNvbnNpc3RlbnQgdGhyb3VnaG91dCB0aGUgbGlicmFyeS4KKyAqIFdlIG9ubHkgZG8gdGhpcyBpZiB3ZSBkZXRlY3RlZCB0aGF0IEZEX1NFVFNJWkUgaXMgY2hhbmdlYWJsZS4gSWYKKyAqIEZEX1NFVFNJWkUgaXMgbm90IHNldC1hYmxlLCB0aGVuIFBKX0lPUVVFVUVfTUFYX0hBTkRMRVMgbXVzdCBiZQorICogc2V0IHRvIHZhbHVlIGxvd2VyIHRoYW4gRkRfU0VUU0laRS4KKyAqLworI2lmIFBKX0ZEX1NFVFNJWkVfU0VUQUJMRQorICAgIC8qIE9ubHkgb3ZlcnJpZGUgRkRfU0VUU0laRSBpZiB0aGUgdmFsdWUgaGFzIG5vdCBiZWVuIHNldCAqLworIyAgIGlmbmRlZiBGRF9TRVRTSVpFCisjCWRlZmluZSBGRF9TRVRTSVpFCQlQSl9JT1FVRVVFX01BWF9IQU5ETEVTCisjICAgZW5kaWYKKyNlbHNlCisgICAgLyogV2hlbiBGRF9TRVRTSVpFIGlzIG5vdCBjaGFuZ2VhYmxlLCBjaGVjayBpZiBQSl9JT1FVRVVFX01BWF9IQU5ETEVTCisgICAgICogaXMgbG93ZXIgdGhhbiBGRF9TRVRTSVpFIHZhbHVlLgorICAgICAqLworIyAgIGlmZGVmIEZEX1NFVFNJWkUKKyMJaWYgUEpfSU9RVUVVRV9NQVhfSEFORExFUyA+IEZEX1NFVFNJWkUKKyMJICAgIGVycm9yICJQSl9JT1FVRVVFX01BWF9IQU5ETEVTIGlzIGdyZWF0ZXIgdGhhbiBGRF9TRVRTSVpFIgorIwllbmRpZgorIyAgIGVuZGlmCisjZW5kaWYKKworCisvKioKKyAqIFNwZWNpZnkgd2hldGhlciAjcGpfZW51bV9pcF9pbnRlcmZhY2UoKSBmdW5jdGlvbiBzaG91bGQgZXhjbHVkZQorICogbG9vcGJhY2sgaW50ZXJmYWNlcy4KKyAqCisgKiBEZWZhdWx0OiAxCisgKi8KKyNpZm5kZWYgUEpfSVBfSEVMUEVSX0lHTk9SRV9MT09QQkFDS19JRgorIyAgIGRlZmluZSBQSl9JUF9IRUxQRVJfSUdOT1JFX0xPT1BCQUNLX0lGCTEKKyNlbmRpZgorCisKKy8qKgorICogSGFzIHNlbWFwaG9yZSBmdW5jdGlvbmFsaXR5PworICoKKyAqIERlZmF1bHQ6IDEKKyAqLworI2lmbmRlZiBQSl9IQVNfU0VNQVBIT1JFCisjICBkZWZpbmUgUEpfSEFTX1NFTUFQSE9SRQkgICAgMQorI2VuZGlmCisKKworLyoqCisgKiBFdmVudCBvYmplY3QgKGZvciBzeW5jaHJvbml6YXRpb24sIGUuZy4gaW4gV2luMzIpCisgKgorICogRGVmYXVsdDogMQorICovCisjaWZuZGVmIFBKX0hBU19FVkVOVF9PQkoKKyMgIGRlZmluZSBQSl9IQVNfRVZFTlRfT0JKCSAgICAxCisjZW5kaWYKKworCisvKioKKyAqIE1heGltdW0gZmlsZSBuYW1lIGxlbmd0aC4KKyAqLworI2lmbmRlZiBQSl9NQVhQQVRICisjICAgZGVmaW5lIFBKX01BWFBBVEgJCSAgICAyNjAKKyNlbmRpZgorCisKKy8qKgorICogRW5hYmxlIGxpYnJhcnkncyBleHRyYSBjaGVjay4KKyAqIElmIHRoaXMgbWFjcm8gaXMgZW5hYmxlZCwgI1BKX0FTU0VSVF9SRVRVUk4gbWFjcm8gd2lsbCBleHBhbmQgdG8KKyAqIHJ1bi10aW1lIGNoZWNraW5nLiBJZiB0aGlzIG1hY3JvIGlzIGRpc2FibGVkLCAjUEpfQVNTRVJUX1JFVFVSTgorICogd2lsbCBzaW1wbHkgZXZhbHVhdGUgdG8gI3BqX2Fzc2VydCgpLgorICoKKyAqIFlvdSBjYW4gZGlzYWJsZSB0aGlzIG1hY3JvIHRvIHJlZHVjZSBzaXplLCBhdCB0aGUgcmlzayBvZiBjcmFzaGVzCisgKiBpZiBpbnZhbGlkIHZhbHVlIChlLmcuIE5VTEwpIGlzIHBhc3NlZCB0byB0aGUgbGlicmFyeS4KKyAqCisgKiBEZWZhdWx0OiAxCisgKi8KKyNpZm5kZWYgUEpfRU5BQkxFX0VYVFJBX0NIRUNLCisjICAgZGVmaW5lIFBKX0VOQUJMRV9FWFRSQV9DSEVDSyAgICAxCisjZW5kaWYKKworCisvKioKKyAqIEVuYWJsZSBuYW1lIHJlZ2lzdHJhdGlvbiBmb3IgZXhjZXB0aW9ucyB3aXRoICNwal9leGNlcHRpb25faWRfYWxsb2MoKS4KKyAqIElmIHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkLCB0aGVuIHRoZSBsaWJyYXJ5IHdpbGwga2VlcCB0cmFjayBvZgorICogbmFtZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggZXhjZXB0aW9uIElEIHJlcXVlc3RlZCBieSBhcHBsaWNhdGlvbiB2aWEKKyAqICNwal9leGNlcHRpb25faWRfYWxsb2MoKS4KKyAqCisgKiBEaXNhYmxpbmcgdGhpcyBtYWNybyB3aWxsIHJlZHVjZSB0aGUgY29kZSBhbmQgLmJzcyBzaXplIGJ5IGEgdGFkIGJpdC4KKyAqIFNlZSBhbHNvICNQSl9NQVhfRVhDRVBUSU9OX0lELgorICoKKyAqIERlZmF1bHQ6IDEKKyAqLworI2lmbmRlZiBQSl9IQVNfRVhDRVBUSU9OX05BTUVTCisjICAgZGVmaW5lIFBKX0hBU19FWENFUFRJT05fTkFNRVMgICAxCisjZW5kaWYKKworLyoqCisgKiBNYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgZXhjZXB0aW9uIElEcyB0aGF0IGNhbiBiZSByZXF1ZXN0ZWQKKyAqIHdpdGggI3BqX2V4Y2VwdGlvbl9pZF9hbGxvYygpLiBGb3IgZWFjaCBlbnRyeSwgYSBzbWFsbCByZWNvcmQgd2lsbAorICogYmUgYWxsb2NhdGVkIGluIHRoZSAuYnNzIHNlZ21lbnQuCisgKgorICogRGVmYXVsdDogMTYKKyAqLworI2lmbmRlZiBQSl9NQVhfRVhDRVBUSU9OX0lECisjICAgZGVmaW5lIFBKX01BWF9FWENFUFRJT05fSUQgICAgICAxNgorI2VuZGlmCisKKy8qKgorICogU2hvdWxkIHdlIHVzZSBXaW5kb3dzIFN0cnVjdHVyZWQgRXhjZXB0aW9uIEhhbmRsaW5nIChTRUgpIGZvciB0aGUKKyAqIFBKTElCIGV4Y2VwdGlvbnMuCisgKgorICogRGVmYXVsdDogMAorICovCisjaWZuZGVmIFBKX0VYQ0VQVElPTl9VU0VfV0lOMzJfU0VICisjICBkZWZpbmUgUEpfRVhDRVBUSU9OX1VTRV9XSU4zMl9TRUggMAorI2VuZGlmCisKKy8qKgorICogU2hvdWxkIHdlIGF0dGVtcHQgdG8gdXNlIFBlbnRpdW0ncyByZHRzYyBmb3IgaGlnaCByZXNvbHV0aW9uCisgKiB0aW1lc3RhbXAuCisgKgorICogRGVmYXVsdDogMAorICovCisjaWZuZGVmIFBKX1RJTUVTVEFNUF9VU0VfUkRUU0MKKyMgICBkZWZpbmUgUEpfVElNRVNUQU1QX1VTRV9SRFRTQyAgIDAKKyNlbmRpZgorCisvKioKKyAqIElzIG5hdGl2ZSBwbGF0Zm9ybSBlcnJvciBwb3NpdGl2ZSBudW1iZXI/CisgKiBEZWZhdWx0OiAxICh5ZXMpCisgKi8KKyNpZm5kZWYgUEpfTkFUSVZFX0VSUl9QT1NJVElWRQorIyAgIGRlZmluZSBQSl9OQVRJVkVfRVJSX1BPU0lUSVZFICAgMQorI2VuZGlmCisgCisvKioKKyAqIEluY2x1ZGUgZXJyb3IgbWVzc2FnZSBzdHJpbmcgaW4gdGhlIGxpYnJhcnkgKHBqX3N0cmVycm9yKCkpLgorICogVGhpcyBpcyB2ZXJ5IG11Y2ggZGVzaXJhYmxlIQorICoKKyAqIERlZmF1bHQ6IDEKKyAqLworI2lmbmRlZiBQSl9IQVNfRVJST1JfU1RSSU5HCisjICAgZGVmaW5lIFBKX0hBU19FUlJPUl9TVFJJTkcJICAgIDEKKyNlbmRpZgorCisKKy8qKgorICogSW5jbHVkZSBwal9zdHJpY21wX2FsbnVtKCkgYW5kIHBqX3N0cm5pY21wX2FsbnVtKCksIGkuZS4gY3VzdG9tCisgKiBmdW5jdGlvbnMgdG8gY29tcGFyZSBhbG51bSBzdHJpbmdzLiBPbiBzb21lIHN5c3RlbXMsIHRoZXkncmUgZmFzdGVyCisgKiB0aGVuIHN0cmljbXAvc3RyY2FzZWNtcCwgYnV0IHRoZXkgY2FuIGJlIHNsb3dlciBvbiBvdGhlciBzeXN0ZW1zLgorICogV2hlbiBkaXNhYmxlZCwgcGpsaWIgd2lsbCBmYWxsYmFjayB0byBzdHJpY21wL3N0cm5pY21wLgorICogCisgKiBEZWZhdWx0OiAwCisgKi8KKyNpZm5kZWYgUEpfSEFTX1NUUklDTVBfQUxOVU0KKyMgICBkZWZpbmUgUEpfSEFTX1NUUklDTVBfQUxOVU0JICAgIDAKKyNlbmRpZgorCisKKy8qCisgKiBUeXBlcyBvZiBRb1MgYmFja2VuZCBpbXBsZW1lbnRhdGlvbi4KKyAqLworCisvKiogCisgKiBEdW1teSBRb1MgYmFja2VuZCBpbXBsZW1lbnRhdGlvbiwgd2lsbCBhbHdheXMgcmV0dXJuIGVycm9yIG9uIGFsbAorICogdGhlIEFQSXMuCisgKi8KKyNkZWZpbmUgUEpfUU9TX0RVTU1ZCSAgICAxCisKKy8qKiBRb1MgYmFja2VuZCBiYXNlZCBvbiBzZXRzb2Nrb3B0KElQX1RPUykgKi8KKyNkZWZpbmUgUEpfUU9TX0JTRAkgICAgMgorCisvKiogUW9TIGJhY2tlbmQgZm9yIFdpbmRvd3MgTW9iaWxlIDYgKi8KKyNkZWZpbmUgUEpfUU9TX1dNCSAgICAzCisKKy8qKiBRb1MgYmFja2VuZCBmb3IgU3ltYmlhbiAqLworI2RlZmluZSBQSl9RT1NfU1lNQklBTgkgICAgNAorCisvKioKKyAqIEZvcmNlIHRoZSB1c2Ugb2Ygc29tZSBRb1MgYmFja2VuZCBBUEkgZm9yIHNvbWUgcGxhdGZvcm1zLgorICovCisjaWZuZGVmIFBKX1FPU19JTVBMRU1FTlRBVElPTgorIyAgIGlmIGRlZmluZWQoUEpfV0lOMzJfV0lOQ0UpICYmIFBKX1dJTjMyX1dJTkNFICYmIF9XSU4zMl9XQ0UgPj0gMHg1MDIKKwkvKiBXaW5kb3dzIE1vYmlsZSA2IG9yIGxhdGVyICovCisjCWRlZmluZSBQSl9RT1NfSU1QTEVNRU5UQVRJT04gICAgUEpfUU9TX1dNCisjICAgZW5kaWYKKyNlbmRpZgorCisKKy8qKgorICogRW5hYmxlIHNlY3VyZSBzb2NrZXQuIEZvciBtb3N0IHBsYXRmb3JtcywgdGhpcyBpcyBpbXBsZW1lbnRlZCB1c2luZworICogT3BlblNTTCwgc28gdGhpcyB3aWxsIHJlcXVpcmUgT3BlblNTTCB0byBiZSBpbnN0YWxsZWQuIEZvciBTeW1iaWFuCisgKiBwbGF0Zm9ybSwgdGhpcyBpcyBpbXBsZW1lbnRlZCBuYXRpdmVseSB1c2luZyBDU2VjdXJlU29ja2V0LgorICoKKyAqIERlZmF1bHQ6IDAgKGZvciBub3cpCisgKi8KKyNpZm5kZWYgUEpfSEFTX1NTTF9TT0NLCisjICBkZWZpbmUgUEpfSEFTX1NTTF9TT0NLCSAgICAwCisjZW5kaWYKKworCisvKioKKyAqIERpc2FibGUgV1NBRUNPTk5SRVNFVCBlcnJvciBmb3IgVURQIHNvY2tldHMgb24gV2luMzIgcGxhdGZvcm1zLiBTZWUKKyAqIGh0dHBzOi8vdHJhYy5wanNpcC5vcmcvcmVwb3MvdGlja2V0LzExOTcuCisgKgorICogRGVmYXVsdDogMQorICovCisjaWZuZGVmIFBKX1NPQ0tfRElTQUJMRV9XU0FFQ09OTlJFU0VUCisjICAgZGVmaW5lIFBKX1NPQ0tfRElTQUJMRV9XU0FFQ09OTlJFU0VUICAgIDEKKyNlbmRpZgorCisKKy8qKiBAfSAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEdlbmVyYWwgbWFjcm9zLgorICovCisKKy8qKgorICogQGRlZmdyb3VwIHBqX2RsbF90YXJnZXQgQnVpbGRpbmcgRHluYW1pYyBMaW5rIExpYnJhcmllcyAoRExML0RTTykKKyAqIEBpbmdyb3VwIHBqX2NvbmZpZworICogQHsKKyAqCisgKiBUaGUgbGlicmFyaWVzIHN1cHBvcnQgZ2VuZXJhdGlvbiBvZiBkeW5hbWljIGxpbmsgbGlicmFyaWVzIGZvcgorICogU3ltYmlhbiBBQkl2MiB0YXJnZXQgKC5kc28vRHluYW1pYyBTaGFyZWQgT2JqZWN0IGZpbGVzLCBpbiBTeW1iaWFuCisgKiB0ZXJtcykuIFNpbWlsYXIgcHJvY2VkdXJlcyBtYXkgYmUgYXBwbGllZCBmb3IgV2luMzIgRExMIHdpdGggc29tZSAKKyAqIG1vZGlmaWNhdGlvbi4KKyAqCisgKiBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtcywgdGhlc2Ugc3RlcHMgbWF5IGJlIG5lY2Vzc2FyeSBpbiBvcmRlciB0bworICogcHJvZHVjZSB0aGUgZHluYW1pYyBsaWJyYXJpZXM6CisgKiAgLSBDcmVhdGUgdGhlIChWaXN1YWwgU3R1ZGlvKSBwcm9qZWN0cyB0byBwcm9kdWNlIERMTCBvdXRwdXQuIFBKTElCCisgKiAgICBkb2VzIG5vdCBwcm92aWRlIHJlYWR5IHRvIHVzZSBwcm9qZWN0IGZpbGVzIHRvIHByb2R1Y2UgRExMLCBzbworICogICAgeW91IG5lZWQgdG8gY3JlYXRlIHRoZXNlIHByb2plY3RzIHlvdXJzZWxmLiBGb3IgU3ltYmlhbiwgdGhlIE1NUAorICogICAgZmlsZXMgaGF2ZSBiZWVuIHNldHVwIHRvIHByb2R1Y2UgRFNPIGZpbGVzIGZvciB0YXJnZXRzIHRoYXQgCisgKiAgICByZXF1aXJlIHRoZW0uCisgKiAgLSBJbiB0aGUgKFZpc3VhbCBTdHVkaW8pIHByb2plY3RzLCBzb21lIG1hY3JvcyBuZWVkIHRvIGJlIGRlY2xhcmVkCisgKiAgICBzbyB0aGF0IGFwcHJvcHJpYXRlIG1vZGlmaWVycyBhcmUgYWRkZWQgdG8gc3ltYm9sIGRlY2xhcmF0aW9ucworICogICAgYW5kIGRlZmluaXRpb25zLiBQbGVhc2Ugc2VlIHRoZSBtYWNybyBzZWN0aW9uIGJlbG93IGZvciBpbmZvcm1hdGlvbgorICogICAgcmVnYXJkaW5nIHRoZXNlIG1hY3Jvcy4gRm9yIFN5bWJpYW4sIHRoZXNlIGhhdmUgYmVlbiB0YWtlbiBjYXJlIGJ5IHRoZQorICogICAgTU1QIGZpbGVzLgorICogIC0gU29tZSBidWlsZCBzeXN0ZW1zIHJlcXVpcmUgLkRFRiBmaWxlIHRvIGJlIHNwZWNpZmllZCB3aGVuIGNyZWF0aW5nCisgKiAgICB0aGUgRExMLiBGb3IgU3ltYmlhbiwgLkRFRiBmaWxlcyBhcmUgaW5jbHVkZWQgaW4gcGpsaWIgZGlzdHJpYnV0aW9uLAorICogICAgaW4gPHR0PnBqbGliL2J1aWxkLnN5bWJpYW48L3R0PiBkaXJlY3RvcnkuIFRoZXNlIERFRiBmaWxlcyBhcmUgCisgKiAgICBjcmVhdGVkIGJ5IHJ1bm5pbmcgPHR0Pi4vbWFrZWRlZi5zaCBhbGw8L3R0PiBmcm9tIHRoaXMgZGlyZWN0b3J5LAorICogICAgaW5zaWRlIE1pbmd3LgorICoKKyAqIE1hY3JvcyByZWxhdGVkIGZvciBidWlsZGluZyBETEwvRFNPIGZpbGVzOgorICogIC0gRm9yIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIGR5bmFtaWMgbGluayBsaWJyYXJpZXMgZ2VuZXJhdGlvbiwKKyAqICAgIGl0IG11c3QgZGVjbGFyZSA8dHQ+UEpfRVhQT1JUX1NQRUNJRklFUjwvdHQ+IG1hY3JvIHdoaWNoIHZhbHVlIGNvbnRhaW5zCisgKiAgICB0aGUgcHJlZml4IHRvIGJlIGFkZGVkIHRvIHN5bWJvbCBkZWZpbml0aW9uLCB0byBleHBvcnQgdGhpcyAKKyAqICAgIHN5bWJvbCBpbiB0aGUgRExML0RTTy4gRm9yIGV4YW1wbGUsIG9uIFdpbjMyL1Zpc3VhbCBTdHVkaW8sIHRoZQorICogICAgdmFsdWUgb2YgdGhpcyBtYWNybyBpcyBcYSBfX2RlY2xzcGVjKGRsbGV4cG9ydCksIGFuZCBmb3IgQVJNIAorICogICAgQUJJdjIvU3ltYmlhbiwgdGhlIHZhbHVlIGlzIFxhIEVYUE9SVF9DLiAKKyAqICAtIEZvciBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBsaW5raW5nIHdpdGggZHluYW1pYyBsaW5rIGxpYnJhcmllcywKKyAqICAgIGl0IG11c3QgZGVjbGFyZSA8dHQ+UEpfSU1QT1JUX1NQRUNJRklFUjwvdHQ+IG1hY3JvIHdoaWNoIHZhbHVlIGNvbnRhaW5zCisgKiAgICB0aGUgcHJlZml4IHRvIGJlIGFkZGVkIHRvIHN5bWJvbCBkZWNsYXJhdGlvbiwgdG8gaW1wb3J0IHRoaXMgCisgKiAgICBzeW1ib2wgZnJvbSBhIERMTC9EU08uIEZvciBleGFtcGxlLCBvbiBXaW4zMi9WaXN1YWwgU3R1ZGlvLCB0aGUKKyAqICAgIHZhbHVlIG9mIHRoaXMgbWFjcm8gaXMgXGEgX19kZWNsc3BlYyhkbGxpbXBvcnQpLCBhbmQgZm9yIEFSTSAKKyAqICAgIEFCSXYyL1N5bWJpYW4sIHRoZSB2YWx1ZSBpcyBcYSBJTVBPUlRfQy4gCisgKiAgLSBCb3RoIDx0dD5QSl9FWFBPUlRfU1BFQ0lGSUVSPC90dD4gYW5kIDx0dD5QSl9JTVBPUlRfU1BFQ0lGSUVSPC90dD4gCisgKiAgICBtYWNyb3MgYWJvdmUgY2FuIGJlIGRlY2xhcmVkIGluIHlvdXIgXGEgY29uZmlnX3NpdGUuaCBpZiB0aGV5IGFyZSBub3QKKyAqICAgIGRlY2xhcmVkIGJ5IHBqbGliLgorICogIC0gV2hlbiBQSkxJQiBpcyBidWlsdCBhcyBETEwvRFNPLCBib3RoIDx0dD5QSl9ETEw8L3R0PiBhbmQgCisgKiAgICA8dHQ+UEpfRVhQT1JUSU5HPC90dD4gbWFjcm9zIG11c3QgYmUgZGVjbGFyZWQsIHNvIHRoYXQgCisgKiAgICAgPHR0PlBKX0VYUE9SVF9TUEVDSUZJRVI8L3R0PiBtb2RpZmllciB3aWxsIGJlIGFkZGVkIGludG8gZnVuY3Rpb24KKyAqICAgIGRlZmluaXRpb24uCisgKiAgLSBXaGVuIGFwcGxpY2F0aW9uIHdhbnRzIHRvIGxpbmsgZHluYW1pY2FsbHkgd2l0aCBQSkxJQiwgdGhlbiBpdAorICogICAgbXVzdCBkZWNsYXJlIDx0dD5QSl9ETEw8L3R0PiBtYWNybyB3aGVuIHVzaW5nL2luY2x1ZGluZyBQSkxJQiBoZWFkZXIsCisgKiAgICBzbyB0aGF0IDx0dD5QSl9JTVBPUlRfU1BFQ0lGSUVSPC90dD4gbW9kaWZpZXIgaXMgcHJvcGVybHkgYWRkZWQgaW50byAKKyAqICAgIHN5bWJvbCBkZWNsYXJhdGlvbnMuCisgKgorICogV2hlbiA8Yj5QSl9ETEw8L2I+IG1hY3JvIGlzIG5vdCBkZWNsYXJlZCwgc3RhdGljIGxpbmtpbmcgaXMgYXNzdW1lZC4KKyAqCisgKiBGb3IgZXhhbXBsZSwgaGVyZSBhcmUgc29tZSBzZXR0aW5ncyB0byBwcm9kdWNlIERMTHMgd2l0aCBWaXN1YWwgU3R1ZGlvCisgKiBvbiBXaW5kb3dzL1dpbjMyOgorICogIC0gQ3JlYXRlIFZpc3VhbCBTdHVkaW8gcHJvamVjdHMgdG8gcHJvZHVjZSBETEwuIEFkZCB0aGUgYXBwcm9wcmlhdGUgCisgKiAgICBwcm9qZWN0IGRlcGVuZGVuY2llcyB0byBhdm9pZCBsaW5rIGVycm9ycy4KKyAqICAtIEluIHRoZSBwcm9qZWN0cywgZGVjbGFyZSA8dHQ+UEpfRExMPC90dD4gYW5kIDx0dD5QSl9FWFBPUlRJTkc8L3R0PiAKKyAqICAgIG1hY3Jvcy4KKyAqICAtIERlY2xhcmUgdGhlc2UgbWFjcm9zIGluIHlvdXIgPHR0PmNvbmZpZ19zaXRlLmg8L3R0PjoKKyBcdmVyYmF0aW0KKwkjZGVmaW5lIFBKX0VYUE9SVF9TUEVDSUZJRVIgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorCSNkZWZpbmUgUEpfSU1QT1JUX1NQRUNJRklFUiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisgXGVuZHZlcmJhdGltCisgKiAgLSBBbmQgaW4gdGhlIGFwcGxpY2F0aW9uICh0aGF0IGxpbmtzIHdpdGggdGhlIERMTCkgcHJvamVjdCwgYWRkIAorICogICAgPHR0PlBKX0RMTDwvdHQ+IGluIHRoZSBtYWNybyBkZWNsYXJhdGlvbnMuCisgKi8KKworLyoqIEB9ICovCisKKy8qKgorICogQGRlZmdyb3VwIHBqX2NvbmZpZyBCdWlsZCBDb25maWd1cmF0aW9uCisgKiBAeworICovCisKKy8qKgorICogQGRlZiBQSl9JTkxJTkUodHlwZSkKKyAqIEBwYXJhbSB0eXBlIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24uCisgKiBFeHBhbmQgdGhlIGZ1bmN0aW9uIGFzIGlubGluZS4KKyAqLworI2RlZmluZSBQSl9JTkxJTkUodHlwZSkJICBQSl9JTkxJTkVfU1BFQ0lGSUVSIHR5cGUKKworLyoqCisgKiBUaGlzIG1hY3JvIGRlY2xhcmVzIHBsYXRmb3JtL2NvbXBpbGVyIHNwZWNpZmljIHNwZWNpZmllciBwcmVmaXgKKyAqIHRvIGJlIGFkZGVkIHRvIHN5bWJvbCBkZWNsYXJhdGlvbiB0byBleHBvcnQgdGhlIHN5bWJvbCB3aGVuIFBKTElCCisgKiBpcyBidWlsdCBhcyBkeW5hbWljIGxpYnJhcnkuCisgKgorICogVGhpcyBtYWNybyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIGJ5IHBsYXRmb3JtIHNwZWNpZmljIGhlYWRlcnMsCisgKiBpZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgYnVpbGRpbmcgZHluYW1pYyBsaWJyYXJ5IHRhcmdldC4gCisgKi8KKyNpZm5kZWYgUEpfRVhQT1JUX0RFQ0xfU1BFQ0lGSUVSCisjICAgZGVmaW5lIFBKX0VYUE9SVF9ERUNMX1NQRUNJRklFUgorI2VuZGlmCisKKworLyoqCisgKiBUaGlzIG1hY3JvIGRlY2xhcmVzIHBsYXRmb3JtL2NvbXBpbGVyIHNwZWNpZmljIHNwZWNpZmllciBwcmVmaXgKKyAqIHRvIGJlIGFkZGVkIHRvIHN5bWJvbCBkZWZpbml0aW9uIHRvIGV4cG9ydCB0aGUgc3ltYm9sIHdoZW4gUEpMSUIKKyAqIGlzIGJ1aWx0IGFzIGR5bmFtaWMgbGlicmFyeS4KKyAqCisgKiBUaGlzIG1hY3JvIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgYnkgcGxhdGZvcm0gc3BlY2lmaWMgaGVhZGVycywKKyAqIGlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBidWlsZGluZyBkeW5hbWljIGxpYnJhcnkgdGFyZ2V0LiAKKyAqLworI2lmbmRlZiBQSl9FWFBPUlRfREVGX1NQRUNJRklFUgorIyAgIGRlZmluZSBQSl9FWFBPUlRfREVGX1NQRUNJRklFUgorI2VuZGlmCisKKworLyoqCisgKiBUaGlzIG1hY3JvIGRlY2xhcmVzIHBsYXRmb3JtL2NvbXBpbGVyIHNwZWNpZmljIHNwZWNpZmllciBwcmVmaXgKKyAqIHRvIGJlIGFkZGVkIHRvIHN5bWJvbCBkZWNsYXJhdGlvbiB0byBpbXBvcnQgdGhlIHN5bWJvbC4KKyAqCisgKiBUaGlzIG1hY3JvIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgYnkgcGxhdGZvcm0gc3BlY2lmaWMgaGVhZGVycywKKyAqIGlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBidWlsZGluZyBkeW5hbWljIGxpYnJhcnkgdGFyZ2V0LgorICovCisjaWZuZGVmIFBKX0lNUE9SVF9ERUNMX1NQRUNJRklFUgorIyAgIGRlZmluZSBQSl9JTVBPUlRfREVDTF9TUEVDSUZJRVIKKyNlbmRpZgorCisKKy8qKgorICogVGhpcyBtYWNybyBoYXMgYmVlbiBkZXByZWNhdGVkLiBJdCB3aWxsIGV2YWx1YXRlIHRvIG5vdGhpbmcuCisgKi8KKyNpZm5kZWYgUEpfRVhQT1JUX1NZTUJPTAorIyAgIGRlZmluZSBQSl9FWFBPUlRfU1lNQk9MKHgpCisjZW5kaWYKKworCisvKioKKyAqIEBkZWYgUEpfREVDTCh0eXBlKQorICogQHBhcmFtIHR5cGUgVGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi4KKyAqIERlY2xhcmUgYSBmdW5jdGlvbi4KKyAqLworI2lmIGRlZmluZWQoUEpfRExMKQorIyAgIGlmIGRlZmluZWQoUEpfRVhQT1JUSU5HKQorIwlkZWZpbmUgUEpfREVDTCh0eXBlKQkgICAgUEpfRVhQT1JUX0RFQ0xfU1BFQ0lGSUVSIHR5cGUKKyMgICBlbHNlCisjCWRlZmluZSBQSl9ERUNMKHR5cGUpCSAgICBQSl9JTVBPUlRfREVDTF9TUEVDSUZJRVIgdHlwZQorIyAgIGVuZGlmCisjZWxpZiAhZGVmaW5lZChQSl9ERUNMKQorIyAgIGlmIGRlZmluZWQoX19jcGx1c3BsdXMpCisjCWRlZmluZSBQSl9ERUNMKHR5cGUpCSAgICB0eXBlCisjICAgZWxzZQorIwlkZWZpbmUgUEpfREVDTCh0eXBlKQkgICAgZXh0ZXJuIHR5cGUKKyMgICBlbmRpZgorI2VuZGlmCisKKworLyoqCisgKiBAZGVmIFBKX0RFRih0eXBlKQorICogQHBhcmFtIHR5cGUgVGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi4KKyAqIERlZmluZSBhIGZ1bmN0aW9uLgorICovCisjaWYgZGVmaW5lZChQSl9ETEwpICYmIGRlZmluZWQoUEpfRVhQT1JUSU5HKQorIyAgIGRlZmluZSBQSl9ERUYodHlwZSkJCSAgICBQSl9FWFBPUlRfREVGX1NQRUNJRklFUiB0eXBlCisjZWxpZiAhZGVmaW5lZChQSl9ERUYpCisjICAgZGVmaW5lIFBKX0RFRih0eXBlKQkJICAgIHR5cGUKKyNlbmRpZgorCisKKy8qKgorICogQGRlZiBQSl9ERUNMX05PX1JFVFVSTih0eXBlKQorICogQHBhcmFtIHR5cGUgVGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi4KKyAqIERlY2xhcmUgYSBmdW5jdGlvbiB0aGF0IHdpbGwgbm90IHJldHVybi4KKyAqLworLyoqCisgKiBAZGVmIFBKX0lERUNMX05PX1JFVFVSTih0eXBlKQorICogQHBhcmFtIHR5cGUgVGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi4KKyAqIERlY2xhcmUgYW4gaW5saW5lIGZ1bmN0aW9uIHRoYXQgd2lsbCBub3QgcmV0dXJuLgorICovCisvKioKKyAqIEBkZWYgUEpfQkVHSU5fREVDTAorICogTWFyayBiZWdpbm5pbmcgb2YgZGVjbGFyYXRpb24gc2VjdGlvbiBpbiBhIGhlYWRlciBmaWxlLgorICovCisvKioKKyAqIEBkZWYgUEpfRU5EX0RFQ0wKKyAqIE1hcmsgZW5kIG9mIGRlY2xhcmF0aW9uIHNlY3Rpb24gaW4gYSBoZWFkZXIgZmlsZS4KKyAqLworI2lmZGVmIF9fY3BsdXNwbHVzCisjICBkZWZpbmUgUEpfREVDTF9OT19SRVRVUk4odHlwZSkgICBQSl9ERUNMKHR5cGUpIFBKX05PUkVUVVJOCisjICBkZWZpbmUgUEpfSURFQ0xfTk9fUkVUVVJOKHR5cGUpICBQSl9JTkxJTkUodHlwZSkgUEpfTk9SRVRVUk4KKyMgIGRlZmluZSBQSl9CRUdJTl9ERUNMCQkgICAgZXh0ZXJuICJDIiB7CisjICBkZWZpbmUgUEpfRU5EX0RFQ0wJCSAgICB9CisjZWxzZQorIyAgZGVmaW5lIFBKX0RFQ0xfTk9fUkVUVVJOKHR5cGUpICAgUEpfTk9SRVRVUk4gUEpfREVDTCh0eXBlKQorIyAgZGVmaW5lIFBKX0lERUNMX05PX1JFVFVSTih0eXBlKSAgUEpfTk9SRVRVUk4gUEpfSU5MSU5FKHR5cGUpCisjICBkZWZpbmUgUEpfQkVHSU5fREVDTAorIyAgZGVmaW5lIFBKX0VORF9ERUNMCisjZW5kaWYKKworCisKKy8qKgorICogQGRlZiBQSl9ERUNMX0RBVEEodHlwZSkKKyAqIEBwYXJhbSB0eXBlIFRoZSBkYXRhIHR5cGUuCisgKiBEZWNsYXJlIGEgZ2xvYmFsIGRhdGEuCisgKi8gCisjaWYgZGVmaW5lZChQSl9ETEwpCisjICAgaWYgZGVmaW5lZChQSl9FWFBPUlRJTkcpCisjCWRlZmluZSBQSl9ERUNMX0RBVEEodHlwZSkgICBQSl9FWFBPUlRfREVDTF9TUEVDSUZJRVIgZXh0ZXJuIHR5cGUKKyMgICBlbHNlCisjCWRlZmluZSBQSl9ERUNMX0RBVEEodHlwZSkgICBQSl9JTVBPUlRfREVDTF9TUEVDSUZJRVIgZXh0ZXJuIHR5cGUKKyMgICBlbmRpZgorI2VsaWYgIWRlZmluZWQoUEpfREVDTF9EQVRBKQorIyAgIGRlZmluZSBQSl9ERUNMX0RBVEEodHlwZSkJICAgIGV4dGVybiB0eXBlCisjZW5kaWYKKworCisvKioKKyAqIEBkZWYgUEpfREVGX0RBVEEodHlwZSkKKyAqIEBwYXJhbSB0eXBlIFRoZSBkYXRhIHR5cGUuCisgKiBEZWZpbmUgYSBnbG9iYWwgZGF0YS4KKyAqLyAKKyNpZiBkZWZpbmVkKFBKX0RMTCkgJiYgZGVmaW5lZChQSl9FWFBPUlRJTkcpCisjICAgZGVmaW5lIFBKX0RFRl9EQVRBKHR5cGUpCSAgICBQSl9FWFBPUlRfREVGX1NQRUNJRklFUiB0eXBlCisjZWxpZiAhZGVmaW5lZChQSl9ERUZfREFUQSkKKyMgICBkZWZpbmUgUEpfREVGX0RBVEEodHlwZSkJICAgIHR5cGUKKyNlbmRpZgorCisKKy8qKgorICogQGRlZiBQSl9JREVDTCh0eXBlKQorICogQHBhcmFtIHR5cGUgIFRoZSBmdW5jdGlvbidzIHJldHVybiB0eXBlLgorICogRGVjbGFyZSBhIGZ1bmN0aW9uIHRoYXQgbWF5IGJlIGV4cGFuZGVkIGFzIGlubGluZS4KKyAqLworLyoqCisgKiBAZGVmIFBKX0lERUYodHlwZSkKKyAqIEBwYXJhbSB0eXBlICBUaGUgZnVuY3Rpb24ncyByZXR1cm4gdHlwZS4KKyAqIERlZmluZSBhIGZ1bmN0aW9uIHRoYXQgbWF5IGJlIGV4cGFuZGVkIGFzIGlubGluZS4KKyAqLworCisjaWYgUEpfRlVOQ1RJT05TX0FSRV9JTkxJTkVECisjICBkZWZpbmUgUEpfSURFQ0wodHlwZSkgIFBKX0lOTElORSh0eXBlKQorIyAgZGVmaW5lIFBKX0lERUYodHlwZSkgICBQSl9JTkxJTkUodHlwZSkKKyNlbHNlCisjICBkZWZpbmUgUEpfSURFQ0wodHlwZSkgIFBKX0RFQ0wodHlwZSkKKyMgIGRlZmluZSBQSl9JREVGKHR5cGUpICAgUEpfREVGKHR5cGUpCisjZW5kaWYKKworCisvKioKKyAqIEBkZWYgUEpfVU5VU0VEX0FSRyhhcmcpCisgKiBAcGFyYW0gYXJnICAgVGhlIGFyZ3VtZW50IG5hbWUuCisgKiBQSl9VTlVTRURfQVJHIHByZXZlbnRzIHdhcm5pbmcgYWJvdXQgdW51c2VkIGFyZ3VtZW50IGluIGEgZnVuY3Rpb24uCisgKi8KKyNkZWZpbmUgUEpfVU5VU0VEX0FSRyhhcmcpICAodm9pZClhcmcKKworLyoqCisgKiBAZGVmIFBKX1RPRE8oaWQpCisgKiBAcGFyYW0gaWQgICAgQW55IGlkZW50aWZpZXIgdGhhdCB3aWxsIGJlIHByaW50ZWQgYXMgVE9ETyBtZXNzYWdlLgorICogUEpfVE9ETyBtYWNybyB3aWxsIGRpc3BsYXkgVE9ETyBtZXNzYWdlIGFzIHdhcm5pbmcgZHVyaW5nIGNvbXBpbGF0aW9uLgorICogRXhhbXBsZTogUEpfVE9ETyhDTEVBTl9VUF9FUlJPUik7CisgKi8KKyNpZm5kZWYgUEpfVE9ETworIyAgZGVmaW5lIFBKX1RPRE8oaWQpCSAgICBUT0RPX19fIyNpZDoKKyNlbmRpZgorCisvKioKKyAqIFNpbXVsYXRlIHJhY2UgY29uZGl0aW9uIGJ5IHNsZWVwaW5nIHRoZSB0aHJlYWQgaW4gc3RyYXRlZ2ljIGxvY2F0aW9ucy4KKyAqIERlZmF1bHQ6IG5vIQorICovCisjaWZuZGVmIFBKX1JBQ0VfTUUKKyMgIGRlZmluZSBQSl9SQUNFX01FKHgpCisjZW5kaWYKKworLyoqCisgKiBGdW5jdGlvbiBhdHRyaWJ1dGVzIHRvIGluZm9ybSB0aGF0IHRoZSBmdW5jdGlvbiBtYXkgdGhyb3cgZXhjZXB0aW9uLgorICoKKyAqIEBwYXJhbSB4ICAgICBUaGUgZXhjZXB0aW9uIGxpc3QsIGVuY2xvc2VkIGluIHBhcmVudGhlc2lzLgorICovCisjZGVmaW5lIF9fcGpfdGhyb3dfXyh4KQorCisvKiogQH0gKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBTYW5pdHkgQ2hlY2tzCisgKi8KKyNpZm5kZWYgUEpfSEFTX0hJR0hfUkVTX1RJTUVSCisjICBlcnJvciAiUEpfSEFTX0hJR0hfUkVTX1RJTUVSIGlzIG5vdCBkZWZpbmVkISIKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEpfSEFTX1BFTlRJVU0pCisjICBlcnJvciAiUEpfSEFTX1BFTlRJVU0gaXMgbm90IGRlZmluZWQhIgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQSl9JU19MSVRUTEVfRU5ESUFOKQorIyAgZXJyb3IgIlBKX0lTX0xJVFRMRV9FTkRJQU4gaXMgbm90IGRlZmluZWQhIgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQSl9JU19CSUdfRU5ESUFOKQorIyAgZXJyb3IgIlBKX0lTX0JJR19FTkRJQU4gaXMgbm90IGRlZmluZWQhIgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQSl9FTVVMQVRFX1JXTVVURVgpCisjICBlcnJvciAiUEpfRU1VTEFURV9SV01VVEVYIHNob3VsZCBiZSBkZWZpbmVkIGluIGNvbXBhdC9vc194eC5oIgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQSl9USFJFQURfU0VUX1NUQUNLX1NJWkUpCisjICBlcnJvciAiUEpfVEhSRUFEX1NFVF9TVEFDS19TSVpFIHNob3VsZCBiZSBkZWZpbmVkIGluIGNvbXBhdC9vc194eC5oIgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQSl9USFJFQURfQUxMT0NBVEVfU1RBQ0spCisjICBlcnJvciAiUEpfVEhSRUFEX0FMTE9DQVRFX1NUQUNLIHNob3VsZCBiZSBkZWZpbmVkIGluIGNvbXBhdC9vc194eC5oIgorI2VuZGlmCisKK1BKX0JFR0lOX0RFQ0wKKworLyoqIFBKTElCIHZlcnNpb24gbWFqb3IgbnVtYmVyLiAqLworI2RlZmluZSBQSl9WRVJTSU9OX05VTV9NQUpPUgkyCisKKy8qKiBQSkxJQiB2ZXJzaW9uIG1pbm9yIG51bWJlci4gKi8KKyNkZWZpbmUgUEpfVkVSU0lPTl9OVU1fTUlOT1IJMQorCisvKiogUEpMSUIgdmVyc2lvbiByZXZpc2lvbiBudW1iZXIuICovCisjZGVmaW5lIFBKX1ZFUlNJT05fTlVNX1JFVgkwCisKKy8qKgorICogRXh0cmEgc3VmZml4IGZvciB0aGUgdmVyc2lvbiAoZS5nLiAiLXRydW5rIiksIG9yIGVtcHR5IGZvcgorICogd2ViIHJlbGVhc2UgdmVyc2lvbi4KKyAqLworI2RlZmluZSBQSl9WRVJTSU9OX05VTV9FWFRSQQkiLXN2biIKKworLyoqCisgKiBQSkxJQiB2ZXJzaW9uIG51bWJlciBjb25zaXN0cyBvZiB0aHJlZSBieXRlcyB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorICogMHhNTUlJUlIwMCwgd2hlcmUgTU06IG1ham9yIG51bWJlciwgSUk6IG1pbm9yIG51bWJlciwgUlI6IHJldmlzaW9uCisgKiBudW1iZXIsIDAwOiBhbHdheXMgemVybyBmb3Igbm93LgorICovCisjZGVmaW5lIFBKX1ZFUlNJT05fTlVNCSgoUEpfVkVSU0lPTl9OVU1fTUFKT1IgPDwgMjQpIHwJXAorCQkJIChQSl9WRVJTSU9OX05VTV9NSU5PUiA8PCAxNikgfCBcCisJCQkgKFBKX1ZFUlNJT05fTlVNX1JFViA8PCA4KSkKKworLyoqCisgKiBQSkxJQiB2ZXJzaW9uIHN0cmluZyBjb25zdGFudC4gQHNlZSBwal9nZXRfdmVyc2lvbigpCisgKi8KK1BKX0RFQ0xfREFUQShjb25zdCBjaGFyKikgUEpfVkVSU0lPTjsKKworLyoqCisgKiBHZXQgUEpMSUIgdmVyc2lvbiBzdHJpbmcuCisgKgorICogQHJldHVybiAjUEpfVkVSU0lPTiBjb25zdGFudC4KKyAqLworUEpfREVDTChjb25zdCBjaGFyKikgcGpfZ2V0X3ZlcnNpb24odm9pZCk7CisKKy8qKgorICogRHVtcCBjb25maWd1cmF0aW9uIHRvIGxvZyB3aXRoIHZlcmJvc2l0eSBlcXVhbCB0byBpbmZvKDMpLgorICovCitQSl9ERUNMKHZvaWQpIHBqX2R1bXBfY29uZmlnKHZvaWQpOworCitQSl9FTkRfREVDTAorCisKKyNlbmRpZgkvKiBfX1BKX0NPTkZJR19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jb25maWdfc2l0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmgKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY29uZmlnX3NpdGVfc2FtcGxlLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlX3NhbXBsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0OGVhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlX3NhbXBsZS5oCkBAIC0wLDAgKzEsNDg1IEBACisvKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHNldmVyYWwgc2FtcGxlIHNldHRpbmdzIGVzcGVjaWFsbHkgZm9yIFdpbmRvd3MKKyAqIE1vYmlsZSBhbmQgU3ltYmlhbiB0YXJnZXRzLiBZb3UgY2FuIGluY2x1ZGUgdGhpcyBmaWxlIGluIHlvdXIKKyAqIDxwai9jb25maWdfc2l0ZS5oPiBmaWxlLgorICoKKyAqIFRoZSBXaW5kb3dzIE1vYmlsZSBhbmQgU3ltYmlhbiBzZXR0aW5ncyB3aWxsIGJlIGFjdGl2YXRlZAorICogYXV0b21hdGljYWxseSBpZiB5b3UgaW5jbHVkZSB0aGlzIGZpbGUuCisgKgorICogSW4gYWRkaXRpb24sIHlvdSBtYXkgc3BlY2lmeSBvbmUgb2YgdGhlc2UgbWFjcm9zIChiZWZvcmUgaW5jbHVkaW5nCisgKiB0aGlzIGZpbGUpIHRvIGFjdGl2YXRlIGFkZGl0aW9uYWwgc2V0dGluZ3M6CisgKgorICogI2RlZmluZSBQSl9DT05GSUdfTk9LSUFfQVBTX0RJUkVDVAorICogICBVc2UgdGhpcyBtYWNybyB0byBhY3RpdmF0ZSB0aGUgQVBTLURpcmVjdCBmZWF0dXJlLiBQbGVhc2Ugc2VlCisgKiAgIGh0dHA6Ly90cmFjLnBqc2lwLm9yZy9yZXBvcy93aWtpL05va2lhX0FQU19WQVNfRGlyZWN0IGZvciBtb3JlIAorICogICBpbmZvLgorICoKKyAqICNkZWZpbmUgUEpfQ09ORklHX1dJTjMyX1dNTUVfRElSRUNUCisgKiAgIENvbmZpZ3VyYXRpb24gdG8gYWN0aXZhdGUgIkFQUy1EaXJlY3QiIG1lZGlhIG1vZGUgb24gV2luZG93cyBvcgorICogICBXaW5kb3dzIE1vYmlsZSwgdXNlZnVsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuCisgKi8KKworCisvKgorICogVHlwaWNhbCBjb25maWd1cmF0aW9uIGZvciBXaW5DRSB0YXJnZXQuCisgKi8KKyNpZiBkZWZpbmVkKFBKX1dJTjMyX1dJTkNFKSAmJiBQSl9XSU4zMl9XSU5DRSE9MAorCisgICAgLyoKKyAgICAgKiBQSkxJQiBzZXR0aW5ncy4KKyAgICAgKi8KKworICAgIC8qIERpc2FibGUgZmxvYXRpbmcgcG9pbnQgc3VwcG9ydCAqLworICAgICNkZWZpbmUgUEpfSEFTX0ZMT0FUSU5HX1BPSU5UCQkwCisKKyAgICAvKgorICAgICAqIFBKTUVESUEgc2V0dGluZ3MKKyAgICAgKi8KKworICAgIC8qIFNlbGVjdCBjb2RlY3MgdG8gZGlzYWJsZSAqLworICAgICNkZWZpbmUgUEpNRURJQV9IQVNfTDE2X0NPREVDCQkwCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19JTEJDX0NPREVDCQkwCisKKyAgICAvKiBXZSBwcm9iYWJseSBuZWVkIG1vcmUgYnVmZmVycyBvbiBXTSwgc28gaW5jcmVhc2UgdGhlIGxpbWl0ICovCisgICAgI2RlZmluZSBQSk1FRElBX1NPVU5EX0JVRkZFUl9DT1VOVAkJMzIKKworICAgIC8qIEZpbmUgdHVuZSBTcGVleCdzIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGJlc3QgcGVyZm9ybWFuY2UvcXVhbGl0eSAqLworICAgICNkZWZpbmUgUEpNRURJQV9DT0RFQ19TUEVFWF9ERUZBVUxUX1FVQUxJVFkJNQorCisgICAgLyogRm9yIENQVSByZWFzb24sIGRpc2FibGUgc3BlZXggQUVDIGFuZCB1c2UgdGhlIGVjaG8gc3VwcHJlc3Nvci4gKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX1NQRUVYX0FFQwkJMAorCisgICAgLyogUHJldmlvdXNseSwgcmVzYW1wbGluZyBpcyBkaXNhYmxlZCBkdWUgdG8gcGVyZm9ybWFuY2UgcmVhc29uIGFuZAorICAgICAqIHRoaXMgY29uZGl0aW9uIHByZXZlbnRlZCBzb21lICdsaWdodCcgd2lkZWJhbmQgY29kZWNzIChlLmc6IEc3MjIuMSkKKyAgICAgKiB0byB3b3JrIGFsb25nIHdpdGggbmFycm93YmFuZCBjb2RlY3MuIExhdGVseSwgc29tZSB0ZXN0cyBzaG93ZWQKKyAgICAgKiB0aGF0IDE2a0h6IDwtPiA4a0h6IHJlc2FtcGxpbmcgdXNpbmcgbGlicmVzYW1wbGUgc21hbGwgZmlsdGVyIHdhcyAKKyAgICAgKiBhZmZvcmRhYmxlIG9uIEFSTTkgMjYwIE1Ieiwgc28gaGVyZSB3ZSBkZWNpZGVkIHRvIGVuYWJsZSByZXNhbXBsaW5nLgorICAgICAqIE5vdGUgdGhhdCBpdCBpcyBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHRoYXQgbGlicmVzYW1wbGUgaXMgY3JlYXRlZAorICAgICAqIHVzaW5nIHNtYWxsIGZpbHRlci4gRm9yIGV4YW1wbGUgUEpTVUFfREVGQVVMVF9DT0RFQ19RVUFMSVRZIG11c3QKKyAgICAgKiBiZSBzZXQgdG8gMyBvciA0IHNvIHBqc3VhLWxpYiB3aWxsIGFwcGx5IHNtYWxsIGZpbHRlciByZXNhbXBsaW5nLgorICAgICAqLworICAgIC8vI2RlZmluZSBQSk1FRElBX1JFU0FNUExFX0lNUAkJUEpNRURJQV9SRVNBTVBMRV9OT05FCisgICAgI2RlZmluZSBQSk1FRElBX1JFU0FNUExFX0lNUAkJUEpNRURJQV9SRVNBTVBMRV9MSUJSRVNBTVBMRQorCisgICAgLyogVXNlIHRoZSBsaWdodGVyIFdTT0xBIGltcGxlbWVudGF0aW9uICovCisgICAgI2RlZmluZSBQSk1FRElBX1dTT0xBX0lNUAkJCVBKTUVESUFfV1NPTEFfSU1QX1dTT0xBX0xJVEUKKworICAgIC8qCisgICAgICogUEpTSVAgc2V0dGluZ3MuCisgICAgICovCisKKyAgICAvKiBTZXQgbWF4aW11bSBudW1iZXIgb2YgZGlhbG9nL3RyYW5zYWN0aW9uL2NhbGxzIHRvIG1pbmltdW0gdG8gcmVkdWNlCisgICAgICogbWVtb3J5IHVzYWdlIAorICAgICAqLworICAgICNkZWZpbmUgUEpTSVBfTUFYX1RTWF9DT1VOVCAJCTMxCisgICAgI2RlZmluZSBQSlNJUF9NQVhfRElBTE9HX0NPVU5UIAkJMzEKKyAgICAjZGVmaW5lIFBKU1VBX01BWF9DQUxMUwkJCTQKKworICAgIC8qCisgICAgICogUEpTVUEgc2V0dGluZ3MKKyAgICAgKi8KKworICAgIC8qIERlZmF1bHQgY29kZWMgcXVhbGl0eSwgcHJldmlvdXNseSB3YXMgc2V0IHRvIDUsIGhvd2V2ZXIgaXQgaXMgbm93CisgICAgICogc2V0IHRvIDQgdG8gbWFrZSBzdXJlIHBqc3VhIGluc3RhbnRpYXRlcyByZXNhbXBsZXIgd2l0aCBzbWFsbCBmaWx0ZXIuCisgICAgICovCisgICAgI2RlZmluZSBQSlNVQV9ERUZBVUxUX0NPREVDX1FVQUxJVFkJCTQKKworICAgIC8qIFNldCBtYXhpbXVtIG51bWJlciBvZiBvYmplY3RzIHRvIG1pbmltdW0gdG8gcmVkdWNlIG1lbW9yeSB1c2FnZSAqLworICAgICNkZWZpbmUgUEpTVUFfTUFYX0FDQwkJCTQKKyAgICAjZGVmaW5lIFBKU1VBX01BWF9QTEFZRVJTCQkJNAorICAgICNkZWZpbmUgUEpTVUFfTUFYX1JFQ09SREVSUwkJCTQKKyAgICAjZGVmaW5lIFBKU1VBX01BWF9DT05GX1BPUlRTCQkoUEpTVUFfTUFYX0NBTExTKzIqUEpTVUFfTUFYX1BMQVlFUlMpCisgICAgI2RlZmluZSBQSlNVQV9NQVhfQlVERElFUwkJCTMyCisKKyNlbmRpZgkvKiBQSl9XSU4zMl9XSU5DRSAqLworCisKKy8qCisgKiBUeXBpY2FsIGNvbmZpZ3VyYXRpb24gZm9yIFN5bWJpYW4gT1MgdGFyZ2V0CisgKi8KKyNpZiBkZWZpbmVkKFBKX1NZTUJJQU4pICYmIFBKX1NZTUJJQU4hPTAKKworICAgIC8qCisgICAgICogUEpMSUIgc2V0dGluZ3MuCisgICAgICovCisKKyAgICAvKiBEaXNhYmxlIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQgKi8KKyAgICAjZGVmaW5lIFBKX0hBU19GTE9BVElOR19QT0lOVAkJMAorCisgICAgLyogTWlzYyBQSkxJQiBzZXR0aW5nICovCisgICAgI2RlZmluZSBQSl9NQVhQQVRICQkJCTgwCisKKyAgICAvKiBUaGlzIGlzIGltcG9ydGFudCBmb3IgU3ltYmlhbi4gU3ltYmlhbiBsYWNrcyB2c25wcmludGYoKSwgc28KKyAgICAgKiBpZiB0aGUgbG9nIGJ1ZmZlciBpcyBub3QgbG9uZyBlbm91Z2ggaXQncyBwb3NzaWJsZSB0aGF0CisgICAgICogbGFyZ2UgaW5jb21pbmcgcGFja2V0IHdpbGwgY29ycnVwdCBtZW1vcnkgd2hlbiB0aGUgbG9nIHRyaWVzCisgICAgICogdG8gbG9nIHRoZSBwYWNrZXQuCisgICAgICovCisgICAgI2RlZmluZSBQSl9MT0dfTUFYX1NJWkUJCQkoUEpTSVBfTUFYX1BLVF9MRU4rNTAwKQorCisgICAgLyogU2luY2Ugd2UgZG9uJ3QgaGF2ZSB0aHJlYWRzLCBsb2cgYnVmZmVyIGNhbiB1c2Ugc3RhdGljIGJ1ZmZlcgorICAgICAqIHJhdGhlciB0aGFuIHN0YWNrCisgICAgICovCisgICAgI2RlZmluZSBQSl9MT0dfVVNFX1NUQUNLX0JVRkZFUgkJMAorCisgICAgLyogRGlzYWJsZSBjaGVjayBzdGFjayBzaW5jZSBpdCBpbmNyZWFzZXMgZm9vdHByaW50ICovCisgICAgI2RlZmluZSBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sJCTAKKworCisgICAgLyoKKyAgICAgKiBQSk1FRElBIHNldHRpbmdzCisgICAgICovCisKKyAgICAvKiBEaXNhYmxlIG5vbi1TeW1iaWFuIGF1ZGlvIGRldmljZXMgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfQVVESU9fREVWX0hBU19QT1JUQVVESU8JMAorICAgICNkZWZpbmUgUEpNRURJQV9BVURJT19ERVZfSEFTX1dNTUUJCTAKKworICAgIC8qIFNlbGVjdCBjb2RlY3MgdG8gZGlzYWJsZSAqLworICAgICNkZWZpbmUgUEpNRURJQV9IQVNfTDE2X0NPREVDCQkwCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19JTEJDX0NPREVDCQkwCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19HNzIyX0NPREVDCQkwCisKKyAgICAvKiBGaW5lIHR1bmUgU3BlZXgncyBkZWZhdWx0IHNldHRpbmdzIGZvciBiZXN0IHBlcmZvcm1hbmNlL3F1YWxpdHkgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfQ09ERUNfU1BFRVhfREVGQVVMVF9RVUFMSVRZCTUKKworICAgIC8qIEZvciBDUFUgcmVhc29uLCBkaXNhYmxlIHNwZWV4IEFFQyBhbmQgdXNlIHRoZSBlY2hvIHN1cHByZXNzb3IuICovCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19TUEVFWF9BRUMJCTAKKworICAgIC8qIFByZXZpb3VzbHksIHJlc2FtcGxpbmcgaXMgZGlzYWJsZWQgZHVlIHRvIHBlcmZvcm1hbmNlIHJlYXNvbiBhbmQKKyAgICAgKiB0aGlzIGNvbmRpdGlvbiBwcmV2ZW50ZWQgc29tZSAnbGlnaHQnIHdpZGViYW5kIGNvZGVjcyAoZS5nOiBHNzIyLjEpCisgICAgICogdG8gd29yayBhbG9uZyB3aXRoIG5hcnJvd2JhbmQgY29kZWNzLiBMYXRlbHksIHNvbWUgdGVzdHMgc2hvd2VkCisgICAgICogdGhhdCAxNmtIeiA8LT4gOGtIeiByZXNhbXBsaW5nIHVzaW5nIGxpYnJlc2FtcGxlIHNtYWxsIGZpbHRlciB3YXMgCisgICAgICogYWZmb3JkYWJsZSBvbiBBUk05IDIyMiBNSHosIHNvIGhlcmUgd2UgZGVjaWRlZCB0byBlbmFibGUgcmVzYW1wbGluZy4KKyAgICAgKiBOb3RlIHRoYXQgaXQgaXMgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGxpYnJlc2FtcGxlIGlzIGNyZWF0ZWQKKyAgICAgKiB1c2luZyBzbWFsbCBmaWx0ZXIuIEZvciBleGFtcGxlIFBKU1VBX0RFRkFVTFRfQ09ERUNfUVVBTElUWSBtdXN0CisgICAgICogYmUgc2V0IHRvIDMgb3IgNCBzbyBwanN1YS1saWIgd2lsbCBhcHBseSBzbWFsbCBmaWx0ZXIgcmVzYW1wbGluZy4KKyAgICAgKi8KKyAgICAvLyNkZWZpbmUgUEpNRURJQV9SRVNBTVBMRV9JTVAJCVBKTUVESUFfUkVTQU1QTEVfTk9ORQorICAgICNkZWZpbmUgUEpNRURJQV9SRVNBTVBMRV9JTVAJCVBKTUVESUFfUkVTQU1QTEVfTElCUkVTQU1QTEUKKworICAgIC8qIFVzZSB0aGUgbGlnaHRlciBXU09MQSBpbXBsZW1lbnRhdGlvbiAqLworICAgICNkZWZpbmUgUEpNRURJQV9XU09MQV9JTVAJCQlQSk1FRElBX1dTT0xBX0lNUF9XU09MQV9MSVRFCisKKyAgICAvKiBXZSBwcm9iYWJseSBuZWVkIG1vcmUgYnVmZmVycyBlc3BlY2lhbGx5IGlmIE1EQSBhdWRpbyBiYWNrZW5kIAorICAgICAqIGlzIHVzZWQsIHNvIGluY3JlYXNlIHRoZSBsaW1pdCAKKyAgICAgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfU09VTkRfQlVGRkVSX0NPVU5UCQkzMgorCisgICAgLyoKKyAgICAgKiBQSlNJUCBzZXR0aW5ncy4KKyAgICAgKi8KKworICAgIC8qIERpc2FibGUgc2FmZSBtb2R1bGUgYWNjZXNzLCBzaW5jZSB3ZSBkb24ndCB1c2UgbXVsdGl0aHJlYWRpbmcgKi8KKyAgICAjZGVmaW5lIFBKU0lQX1NBRkVfTU9EVUxFCQkJMAorCisgICAgLyogVXNlIGxhcmdlIGVub3VnaCBwYWNrZXQgc2l6ZSAgKi8KKyAgICAjZGVmaW5lIFBKU0lQX01BWF9QS1RfTEVOCQkJMjAwMAorCisgICAgLyogU3ltYmlhbiBoYXMgcHJvYmxlbSB3aXRoIHRvbyBtYW55IGxhcmdlIGJsb2NrcyAqLworICAgICNkZWZpbmUgUEpTSVBfUE9PTF9MRU5fRU5EUFQJCTEwMDAKKyAgICAjZGVmaW5lIFBKU0lQX1BPT0xfSU5DX0VORFBUCQkxMDAwCisgICAgI2RlZmluZSBQSlNJUF9QT09MX1JEQVRBX0xFTgkJMjAwMAorICAgICNkZWZpbmUgUEpTSVBfUE9PTF9SREFUQV9JTkMJCTIwMDAKKyAgICAjZGVmaW5lIFBKU0lQX1BPT0xfTEVOX1REQVRBCQkyMDAwCisgICAgI2RlZmluZSBQSlNJUF9QT09MX0lOQ19UREFUQQkJNTEyCisgICAgI2RlZmluZSBQSlNJUF9QT09MX0xFTl9VQQkJCTIwMDAKKyAgICAjZGVmaW5lIFBKU0lQX1BPT0xfSU5DX1VBCQkJMTAwMAorICAgICNkZWZpbmUgUEpTSVBfUE9PTF9UU1hfTEFZRVJfTEVOCQkyNTYKKyAgICAjZGVmaW5lIFBKU0lQX1BPT0xfVFNYX0xBWUVSX0lOQwkJMjU2CisgICAgI2RlZmluZSBQSlNJUF9QT09MX1RTWF9MRU4JCQk1MTIKKyAgICAjZGVmaW5lIFBKU0lQX1BPT0xfVFNYX0lOQwkJCTEyOAorCisgICAgLyoKKyAgICAgKiBQSlNVQSBzZXR0aW5ncy4KKyAgICAgKi8KKworICAgIC8qIERlZmF1bHQgY29kZWMgcXVhbGl0eSwgcHJldmlvdXNseSB3YXMgc2V0IHRvIDUsIGhvd2V2ZXIgaXQgaXMgbm93CisgICAgICogc2V0IHRvIDQgdG8gbWFrZSBzdXJlIHBqc3VhIGluc3RhbnRpYXRlcyByZXNhbXBsZXIgd2l0aCBzbWFsbCBmaWx0ZXIuCisgICAgICovCisgICAgI2RlZmluZSBQSlNVQV9ERUZBVUxUX0NPREVDX1FVQUxJVFkJCTQKKworICAgIC8qIFNldCBtYXhpbXVtIG51bWJlciBvZiBkaWFsb2cvdHJhbnNhY3Rpb24vY2FsbHMgdG8gbWluaW11bSAqLworICAgICNkZWZpbmUgUEpTSVBfTUFYX1RTWF9DT1VOVCAJCTMxCisgICAgI2RlZmluZSBQSlNJUF9NQVhfRElBTE9HX0NPVU5UIAkJMzEKKyAgICAjZGVmaW5lIFBKU1VBX01BWF9DQUxMUwkJCTQKKworICAgIC8qIE90aGVyIHBqc3VhIHNldHRpbmdzICovCisgICAgI2RlZmluZSBQSlNVQV9NQVhfQUNDCQkJNAorICAgICNkZWZpbmUgUEpTVUFfTUFYX1BMQVlFUlMJCQk0CisgICAgI2RlZmluZSBQSlNVQV9NQVhfUkVDT1JERVJTCQkJNAorICAgICNkZWZpbmUgUEpTVUFfTUFYX0NPTkZfUE9SVFMJCShQSlNVQV9NQVhfQ0FMTFMrMipQSlNVQV9NQVhfUExBWUVSUykKKyAgICAjZGVmaW5lIFBKU1VBX01BWF9CVURESUVTCQkJMzIKKyNlbmRpZgorCisKKy8qCisgKiBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdG8gYWN0aXZhdGUgQVBTLURpcmVjdCBmZWF0dXJlIGZvcgorICogTm9raWEgUzYwIHRhcmdldAorICoKKyAqIFBsZWFzZSBzZWUgaHR0cDovL3RyYWMucGpzaXAub3JnL3JlcG9zL3dpa2kvTm9raWFfQVBTX1ZBU19EaXJlY3QKKyAqLworI2lmZGVmIFBKX0NPTkZJR19OT0tJQV9BUFNfRElSRUNUCisKKyAgICAvKiBNVVNUIHVzZSBzd2l0Y2hib2FyZCByYXRoZXIgdGhhbiB0aGUgY29uZmVyZW5jZSBicmlkZ2UgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfQ09ORl9VU0VfU1dJVENIX0JPQVJECTEKKworICAgIC8qIEVuYWJsZSBBUFMgc291bmQgZGV2aWNlIGJhY2tlbmQgYW5kIGRpc2FibGUgTURBICYgVkFTICovCisgICAgI2RlZmluZSBQSk1FRElBX0FVRElPX0RFVl9IQVNfU1lNQl9NREEJMAorICAgICNkZWZpbmUgUEpNRURJQV9BVURJT19ERVZfSEFTX1NZTUJfQVBTCTEKKyAgICAjZGVmaW5lIFBKTUVESUFfQVVESU9fREVWX0hBU19TWU1CX1ZBUwkwCisKKyAgICAvKiBFbmFibGUgcGFzc3Rocm91Z2ggY29kZWMgZnJhbWV3b3JrICovCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19QQVNTVEhST1VHSF9DT0RFQ1MJMQorCisgICAgLyogQW5kIHNlbGVjdGl2ZWx5IGVuYWJsZSB3aGljaCBjb2RlY3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgaGFuZHNldCAqLworICAgICNkZWZpbmUgUEpNRURJQV9IQVNfUEFTU1RIUk9VR0hfQ09ERUNfUENNVQkxCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19QQVNTVEhST1VHSF9DT0RFQ19QQ01BCTEKKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX1BBU1NUSFJPVUdIX0NPREVDX0FNUgkxCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19QQVNTVEhST1VHSF9DT0RFQ19HNzI5CTEKKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX1BBU1NUSFJPVUdIX0NPREVDX0lMQkMJMQorCisjZW5kaWYKKworCisvKgorICogQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIHRvIGFjdGl2YXRlIFZBUy1EaXJlY3QgZmVhdHVyZSBmb3IKKyAqIE5va2lhIFM2MCB0YXJnZXQKKyAqCisgKiBQbGVhc2Ugc2VlIGh0dHA6Ly90cmFjLnBqc2lwLm9yZy9yZXBvcy93aWtpL05va2lhX0FQU19WQVNfRGlyZWN0CisgKi8KKyNpZmRlZiBQSl9DT05GSUdfTk9LSUFfVkFTX0RJUkVDVAorCisgICAgLyogTVVTVCB1c2Ugc3dpdGNoYm9hcmQgcmF0aGVyIHRoYW4gdGhlIGNvbmZlcmVuY2UgYnJpZGdlICovCisgICAgI2RlZmluZSBQSk1FRElBX0NPTkZfVVNFX1NXSVRDSF9CT0FSRAkxCisKKyAgICAvKiBFbmFibGUgVkFTIHNvdW5kIGRldmljZSBiYWNrZW5kIGFuZCBkaXNhYmxlIE1EQSAmIEFQUyAqLworICAgICNkZWZpbmUgUEpNRURJQV9BVURJT19ERVZfSEFTX1NZTUJfTURBCTAKKyAgICAjZGVmaW5lIFBKTUVESUFfQVVESU9fREVWX0hBU19TWU1CX0FQUwkwCisgICAgI2RlZmluZSBQSk1FRElBX0FVRElPX0RFVl9IQVNfU1lNQl9WQVMJMQorCisgICAgLyogRW5hYmxlIHBhc3N0aHJvdWdoIGNvZGVjIGZyYW1ld29yayAqLworICAgICNkZWZpbmUgUEpNRURJQV9IQVNfUEFTU1RIUk9VR0hfQ09ERUNTCTEKKworICAgIC8qIEFuZCBzZWxlY3RpdmVseSBlbmFibGUgd2hpY2ggY29kZWNzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGhhbmRzZXQgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX1BBU1NUSFJPVUdIX0NPREVDX1BDTVUJMQorICAgICNkZWZpbmUgUEpNRURJQV9IQVNfUEFTU1RIUk9VR0hfQ09ERUNfUENNQQkxCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19QQVNTVEhST1VHSF9DT0RFQ19BTVIJMQorICAgICNkZWZpbmUgUEpNRURJQV9IQVNfUEFTU1RIUk9VR0hfQ09ERUNfRzcyOQkxCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19QQVNTVEhST1VHSF9DT0RFQ19JTEJDCTEKKworI2VuZGlmCisKKworLyoKKyAqIENvbmZpZ3VyYXRpb24gdG8gYWN0aXZhdGUgIkFQUy1EaXJlY3QiIG1lZGlhIG1vZGUgb24gV2luZG93cywKKyAqIHVzZWZ1bCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LgorICovCisjaWZkZWYgUEpfQ09ORklHX1dJTjMyX1dNTUVfRElSRUNUCisKKyAgICAvKiBNVVNUIHVzZSBzd2l0Y2hib2FyZCByYXRoZXIgdGhhbiB0aGUgY29uZmVyZW5jZSBicmlkZ2UgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfQ09ORl9VU0VfU1dJVENIX0JPQVJECTEKKworICAgIC8qIE9ubHkgV01NRSBzdXBwb3J0cyB0aGUgImRpcmVjdCIgZmVhdHVyZSAqLworICAgICNkZWZpbmUgUEpNRURJQV9BVURJT19ERVZfSEFTX1BPUlRBVURJTwkwCisgICAgI2RlZmluZSBQSk1FRElBX0FVRElPX0RFVl9IQVNfV01NRQkJMQorCisgICAgLyogRW5hYmxlIHBhc3N0aHJvdWdoIGNvZGVjIGZyYW1ld29yayAqLworICAgICNkZWZpbmUgUEpNRURJQV9IQVNfUEFTU1RIUk9VR0hfQ09ERUNTCTEKKworICAgIC8qIE9ubHkgUENNQSBhbmQgUENNVSBhcmUgc3VwcG9ydGVkIGJ5IFdNTUUtZGlyZWN0ICovCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19QQVNTVEhST1VHSF9DT0RFQ19QQ01VCTEKKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX1BBU1NUSFJPVUdIX0NPREVDX1BDTUEJMQorICAgICNkZWZpbmUgUEpNRURJQV9IQVNfUEFTU1RIUk9VR0hfQ09ERUNfQU1SCTAKKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX1BBU1NUSFJPVUdIX0NPREVDX0c3MjkJMAorICAgICNkZWZpbmUgUEpNRURJQV9IQVNfUEFTU1RIUk9VR0hfQ09ERUNfSUxCQwkwCisKKyNlbmRpZgorCisvKgorICogaVBob25lIHNhbXBsZSBzZXR0aW5ncy4KKyAqLworI2lmIFBKX0NPTkZJR19JUEhPTkUKKyAgICAvKgorICAgICAqIFBKTElCIHNldHRpbmdzLgorICAgICAqLworCisgICAgLyogQm90aCBhcm12NiBhbmQgYXJtdjcgaGFzIEZQIGhhcmR3YXJlIHN1cHBvcnQuCisgICAgICogU2VlIGh0dHBzOi8vdHJhYy5wanNpcC5vcmcvcmVwb3MvdGlja2V0LzE1ODkgZm9yIG1vcmUgaW5mbworICAgICAqLworICAgICNkZWZpbmUgUEpfSEFTX0ZMT0FUSU5HX1BPSU5UCQkxCisKKyAgICAvKgorICAgICAqIFBKTUVESUEgc2V0dGluZ3MKKyAgICAgKi8KKworICAgIC8qIFdlIGhhdmUgb3VyIG93biBuYXRpdmUgQ29yZUF1ZGlvIGJhY2tlbmQgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfQVVESU9fREVWX0hBU19QT1JUQVVESU8JMAorICAgICNkZWZpbmUgUEpNRURJQV9BVURJT19ERVZfSEFTX1dNTUUJCTAKKyAgICAjZGVmaW5lIFBKTUVESUFfQVVESU9fREVWX0hBU19DT1JFQVVESU8JMQorCisgICAgLyogVGhlIENvcmVBdWRpbyBiYWNrZW5kIGhhcyBidWlsdC1pbiBlY2hvIGNhbmNlbGxlciEgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX1NQRUVYX0FFQyAgICAwCisKKyAgICAvKiBEaXNhYmxlIHNvbWUgY29kZWNzICovCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19MMTZfQ09ERUMJCTAKKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX0c3MjJfQ09ERUMJCTAKKworICAgIC8qIFVzZSB0aGUgYnVpbHQtaW4gQ29yZUF1ZGlvJ3MgaUxCQyBjb2RlYyAoeWF5ISkgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX0lMQkNfQ09ERUMJCTEKKyAgICAjZGVmaW5lIFBKTUVESUFfSUxCQ19DT0RFQ19VU0VfQ09SRUFVRElPCTEKKworICAgIC8qIEZpbmUgdHVuZSBTcGVleCdzIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGJlc3QgcGVyZm9ybWFuY2UvcXVhbGl0eSAqLworICAgICNkZWZpbmUgUEpNRURJQV9DT0RFQ19TUEVFWF9ERUZBVUxUX1FVQUxJVFkJNQorCisgICAgLyoKKyAgICAgKiBQSlNJUCBzZXR0aW5ncy4KKyAgICAgKi8KKworICAgIC8qIEluY3JlYXNlIGFsbG93YWJsZSBwYWNrZXQgc2l6ZSwganVzdCBpbiBjYXNlICovCisgICAgLy8jZGVmaW5lIFBKU0lQX01BWF9QS1RfTEVOCQkJMjAwMAorCisgICAgLyoKKyAgICAgKiBQSlNVQSBzZXR0aW5ncy4KKyAgICAgKi8KKworICAgIC8qIERlZmF1bHQgY29kZWMgcXVhbGl0eSwgcHJldmlvdXNseSB3YXMgc2V0IHRvIDUsIGhvd2V2ZXIgaXQgaXMgbm93CisgICAgICogc2V0IHRvIDQgdG8gbWFrZSBzdXJlIHBqc3VhIGluc3RhbnRpYXRlcyByZXNhbXBsZXIgd2l0aCBzbWFsbCBmaWx0ZXIuCisgICAgICovCisgICAgI2RlZmluZSBQSlNVQV9ERUZBVUxUX0NPREVDX1FVQUxJVFkJCTQKKworICAgIC8qIFNldCBtYXhpbXVtIG51bWJlciBvZiBkaWFsb2cvdHJhbnNhY3Rpb24vY2FsbHMgdG8gbWluaW11bSAqLworICAgICNkZWZpbmUgUEpTSVBfTUFYX1RTWF9DT1VOVCAJCTMxCisgICAgI2RlZmluZSBQSlNJUF9NQVhfRElBTE9HX0NPVU5UIAkJMzEKKyAgICAjZGVmaW5lIFBKU1VBX01BWF9DQUxMUwkJCTQKKworICAgIC8qIE90aGVyIHBqc3VhIHNldHRpbmdzICovCisgICAgI2RlZmluZSBQSlNVQV9NQVhfQUNDCQkJNAorICAgICNkZWZpbmUgUEpTVUFfTUFYX1BMQVlFUlMJCQk0CisgICAgI2RlZmluZSBQSlNVQV9NQVhfUkVDT1JERVJTCQkJNAorICAgICNkZWZpbmUgUEpTVUFfTUFYX0NPTkZfUE9SVFMJCShQSlNVQV9NQVhfQ0FMTFMrMipQSlNVQV9NQVhfUExBWUVSUykKKyAgICAjZGVmaW5lIFBKU1VBX01BWF9CVURESUVTCQkJMzIKKworI2VuZGlmCisKKy8qCisgKiBBbmRyb2lkIHNhbXBsZSBzZXR0aW5ncy4KKyAqLworI2lmIFBKX0NPTkZJR19BTkRST0lECisKKyAgICAjZGVmaW5lIFBKX0FORFJPSUQgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKworICAgIC8qCisgICAgICogUEpMSUIgc2V0dGluZ3MuCisgICAgICovCisKKyAgICAvKiBEaXNhYmxlIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQgKi8KKyAgICAjdW5kZWYgUEpfSEFTX0ZMT0FUSU5HX1BPSU5UCisgICAgI2RlZmluZSBQSl9IQVNfRkxPQVRJTkdfUE9JTlQJCTAKKworICAgIC8qCisgICAgICogUEpNRURJQSBzZXR0aW5ncworICAgICAqLworCisgICAgLyogV2UgaGF2ZSBvdXIgb3duIE9wZW5TTCBFUyBiYWNrZW5kICovCisgICAgI2RlZmluZSBQSk1FRElBX0FVRElPX0RFVl9IQVNfUE9SVEFVRElPCTAKKyAgICAjZGVmaW5lIFBKTUVESUFfQVVESU9fREVWX0hBU19XTU1FCQkwCisgICAgI2RlZmluZSBQSk1FRElBX0FVRElPX0RFVl9IQVNfT1BFTlNMICAgICAgICAxCisgICAgI2RlZmluZSBQSk1FRElBX0FVRElPX0RFVl9IQVNfQU5EUk9JRF9KTkkJMAorCisgICAgLyogRGlzYWJsZSBzb21lIGNvZGVjcyAqLworICAgICNkZWZpbmUgUEpNRURJQV9IQVNfTDE2X0NPREVDCQkwCisgICAgI2RlZmluZSBQSk1FRElBX0hBU19HNzIyX0NPREVDCQkwCisKKyAgICAvKiBGaW5lIHR1bmUgU3BlZXgncyBkZWZhdWx0IHNldHRpbmdzIGZvciBiZXN0IHBlcmZvcm1hbmNlL3F1YWxpdHkgKi8KKyAgICAjZGVmaW5lIFBKTUVESUFfQ09ERUNfU1BFRVhfREVGQVVMVF9RVUFMSVRZCTUKKworICAgIC8qCisgICAgICogUEpTSVAgc2V0dGluZ3MuCisgICAgICovCisKKyAgICAvKiBJbmNyZWFzZSBhbGxvd2FibGUgcGFja2V0IHNpemUsIGp1c3QgaW4gY2FzZSAqLworICAgIC8vI2RlZmluZSBQSlNJUF9NQVhfUEtUX0xFTgkJCTIwMDAKKworICAgIC8qCisgICAgICogUEpTVUEgc2V0dGluZ3MuCisgICAgICovCisKKyAgICAvKiBEZWZhdWx0IGNvZGVjIHF1YWxpdHksIHByZXZpb3VzbHkgd2FzIHNldCB0byA1LCBob3dldmVyIGl0IGlzIG5vdworICAgICAqIHNldCB0byA0IHRvIG1ha2Ugc3VyZSBwanN1YSBpbnN0YW50aWF0ZXMgcmVzYW1wbGVyIHdpdGggc21hbGwgZmlsdGVyLgorICAgICAqLworICAgICNkZWZpbmUgUEpTVUFfREVGQVVMVF9DT0RFQ19RVUFMSVRZCQk0CisKKyAgICAvKiBTZXQgbWF4aW11bSBudW1iZXIgb2YgZGlhbG9nL3RyYW5zYWN0aW9uL2NhbGxzIHRvIG1pbmltdW0gKi8KKyAgICAjZGVmaW5lIFBKU0lQX01BWF9UU1hfQ09VTlQgCQkzMQorICAgICNkZWZpbmUgUEpTSVBfTUFYX0RJQUxPR19DT1VOVCAJCTMxCisgICAgI2RlZmluZSBQSlNVQV9NQVhfQ0FMTFMJCQk0CisKKyAgICAvKiBPdGhlciBwanN1YSBzZXR0aW5ncyAqLworICAgICNkZWZpbmUgUEpTVUFfTUFYX0FDQwkJCTQKKyAgICAjZGVmaW5lIFBKU1VBX01BWF9QTEFZRVJTCQkJNAorICAgICNkZWZpbmUgUEpTVUFfTUFYX1JFQ09SREVSUwkJCTQKKyAgICAjZGVmaW5lIFBKU1VBX01BWF9DT05GX1BPUlRTCQkoUEpTVUFfTUFYX0NBTExTKzIqUEpTVUFfTUFYX1BMQVlFUlMpCisgICAgI2RlZmluZSBQSlNVQV9NQVhfQlVERElFUwkJCTMyCisjZW5kaWYKKworCisvKgorICogQkIxMAorICovCisjaWYgZGVmaW5lZChQSl9DT05GSUdfQkIxMCkgJiYgUEpfQ09ORklHX0JCMTAKKyAgICAvKiBRdWFsaXR5IDMgLSA0IHRvIHVzZSByZXNhbXBsaW5nIHNtYWxsIGZpbHRlciAqLworICAgICNkZWZpbmUgUEpTVUFfREVGQVVMVF9DT0RFQ19RVUFMSVRZCQkJNAorICAgICNkZWZpbmUgUEpNRURJQV9IQVNfTEVHQUNZX1NPVU5EX0FQSQkJMAorICAgICN1bmRlZiBQSk1FRElBX0hBU19TUEVFWF9BRUMKKyAgICAjZGVmaW5lIFBKTUVESUFfSEFTX1NQRUVYX0FFQwkJCTAKKyAgICAjdW5kZWYgUEpNRURJQV9BVURJT19ERVZfSEFTX1BPUlRBVURJTworICAgICNkZWZpbmUgUEpNRURJQV9BVURJT19ERVZfSEFTX1BPUlRBVURJTwkJMAorI2VuZGlmCisKKworLyoKKyAqIE1pbmltdW0gc2l6ZQorICovCisjaWZkZWYgUEpfQ09ORklHX01JTklNQUxfU0laRQorCisjICAgdW5kZWYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLCisjICAgZGVmaW5lIFBKX09TX0hBU19DSEVDS19TVEFDSwkwCisjICAgZGVmaW5lIFBKX0xPR19NQVhfTEVWRUwJCTAKKyMgICBkZWZpbmUgUEpfRU5BQkxFX0VYVFJBX0NIRUNLCTAKKyMgICBkZWZpbmUgUEpfSEFTX0VSUk9SX1NUUklORwkJMAorIyAgIHVuZGVmIFBKX0lPUVVFVUVfTUFYX0hBTkRMRVMKKy8qIFB1dHRpbmcgbWF4IGhhbmRsZXMgdG8gbG93ZXIgdGhhbiAzMiB3aWxsIG1ha2UgcGpfZmRfc2V0X3Qgc2l6ZSBzbWFsbGVyCisgKiB0aGFuIG5hdGl2ZSBmZHNldF90IGFuZCB3aWxsIHRyaWdnZXIgYXNzZXJ0aW9uIG9uIHNvY2tfc2VsZWN0LmMuCisgKi8KKyMgICBkZWZpbmUgUEpfSU9RVUVVRV9NQVhfSEFORExFUwkzMgorIyAgIGRlZmluZSBQSl9DUkMzMl9IQVNfVEFCTEVTCQkwCisjICAgZGVmaW5lIFBKU0lQX01BWF9UU1hfQ09VTlQJCTE1CisjICAgZGVmaW5lIFBKU0lQX01BWF9ESUFMT0dfQ09VTlQJMTUKKyMgICBkZWZpbmUgUEpTSVBfVURQX1NPX1NOREJVRl9TSVpFCTQwMDAKKyMgICBkZWZpbmUgUEpTSVBfVURQX1NPX1JDVkJVRl9TSVpFCTQwMDAKKyMgICBkZWZpbmUgUEpNRURJQV9IQVNfQUxBV19VTEFXX1RBQkxFCTAKKworI2VsaWYgZGVmaW5lZChQSl9DT05GSUdfTUFYSU1VTV9TUEVFRCkKKyMgICBkZWZpbmUgUEpfU0NBTk5FUl9VU0VfQklUV0lTRQkwCisjICAgdW5kZWYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLCisjICAgZGVmaW5lIFBKX09TX0hBU19DSEVDS19TVEFDSwkwCisjICAgZGVmaW5lIFBKX0xPR19NQVhfTEVWRUwJCTMKKyMgICBkZWZpbmUgUEpfRU5BQkxFX0VYVFJBX0NIRUNLCTAKKyMgICBkZWZpbmUgUEpfSU9RVUVVRV9NQVhfSEFORExFUwk1MDAwCisjICAgZGVmaW5lIFBKU0lQX01BWF9UU1hfQ09VTlQJCSgoNjQwKjEwMjQpLTEpCisjICAgZGVmaW5lIFBKU0lQX01BWF9ESUFMT0dfQ09VTlQJKCg2NDAqMTAyNCktMSkKKyMgICBkZWZpbmUgUEpTSVBfVURQX1NPX1NOREJVRl9TSVpFCSgyNCoxMDI0KjEwMjQpCisjICAgZGVmaW5lIFBKU0lQX1VEUF9TT19SQ1ZCVUZfU0laRQkoMjQqMTAyNCoxMDI0KQorIyAgIGRlZmluZSBQSl9ERUJVRwkJCTAKKyMgICBkZWZpbmUgUEpTSVBfU0FGRV9NT0RVTEUJCTAKKyMgICBkZWZpbmUgUEpfSEFTX1NUUklDTVBfQUxOVU0JCTAKKyMgICBkZWZpbmUgUEpfSEFTSF9VU0VfT1dOX1RPTE9XRVIJMQorIyAgIGRlZmluZSBQSlNJUF9VTkVTQ0FQRV9JTl9QTEFDRQkxCisKKyMgICBpZiBkZWZpbmVkKFBKX1dJTjMyKSB8fCBkZWZpbmVkKFBKX1dJTjY0KSAKKyMgICAgIGRlZmluZSBQSlNJUF9NQVhfTkVUX0VWRU5UUwkxMAorIyAgIGVuZGlmCisKKyMgICBkZWZpbmUgUEpTVUFfTUFYX0NBTExTCQk1MTIKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY3R5cGUuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovY3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGFkZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9jdHlwZS5oCkBAIC0wLDAgKzEsMTc1IEBACisvKiAkSWQ6IGN0eXBlLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9DVFlQRV9IX18KKyNkZWZpbmUgX19QSl9DVFlQRV9IX18KKworLyoqCisgKiBAZmlsZSBjdHlwZS5oCisgKiBAYnJpZWYgQyB0eXBlIGhlbHBlciBtYWNyb3MuCisgKi8KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L2N0eXBlLmg+CisKK1BKX0JFR0lOX0RFQ0wKKworLyoqCisgKiBAZGVmZ3JvdXAgcGpfY3R5cGUgY3R5cGUgLSBDaGFyYWN0ZXIgVHlwZQorICogQGluZ3JvdXAgUEpfTUlTQworICogQHsKKyAqCisgKiBUaGlzIG1vZHVsZSBjb250YWlucyBzZXZlcmFsIGlubGluZSBmdW5jdGlvbnMvbWFjcm9zIGZvciB0ZXN0aW5nIG9yCisgKiBtYW5pcHVsYXRpbmcgY2hhcmFjdGVyIHR5cGVzLiBJdCBpcyBwcm92aWRlZCBpbiBQSkxJQiBiZWNhdXNlIFBKTElCCisgKiBtdXN0IG5vdCBkZXBlbmQgdG8gTElCQy4KKyAqLworCisvKiogCisgKiBSZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUgaWYgZWl0aGVyIGlzYWxwaGEgb3IgaXNkaWdpdCBpcyB0cnVlIGZvciBjLgorICogQHBhcmFtIGMgICAgIFRoZSBpbnRlZ2VyIGNoYXJhY3RlciB0byB0ZXN0LgorICogQHJldHVybiAgICAgIE5vbi16ZXJvIHZhbHVlIGlmIGVpdGhlciBpc2FscGhhIG9yIGlzZGlnaXQgaXMgdHJ1ZSBmb3IgYy4KKyAqLworUEpfSU5MSU5FKGludCkgcGpfaXNhbG51bSh1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGlzYWxudW0oYyk7IH0KKworLyoqIAorICogUmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlIGlmIGMgaXMgYSBwYXJ0aWN1bGFyIHJlcHJlc2VudGF0aW9uIG9mIGFuIAorICogYWxwaGFiZXRpYyBjaGFyYWN0ZXIuCisgKiBAcGFyYW0gYyAgICAgVGhlIGludGVnZXIgY2hhcmFjdGVyIHRvIHRlc3QuCisgKiBAcmV0dXJuICAgICAgTm9uLXplcm8gdmFsdWUgaWYgYyBpcyBhIHBhcnRpY3VsYXIgcmVwcmVzZW50YXRpb24gb2YgYW4gCisgKiAgICAgICAgICAgICAgYWxwaGFiZXRpYyBjaGFyYWN0ZXIuCisgKi8KK1BKX0lOTElORShpbnQpIHBqX2lzYWxwaGEodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBpc2FscGhhKGMpOyB9CisKKy8qKiAKKyAqIFJldHVybnMgYSBub24temVybyB2YWx1ZSBpZiBjIGlzIGEgcGFydGljdWxhciByZXByZXNlbnRhdGlvbiBvZiBhbiAKKyAqIEFTQ0lJIGNoYXJhY3Rlci4KKyAqIEBwYXJhbSBjICAgICBUaGUgaW50ZWdlciBjaGFyYWN0ZXIgdG8gdGVzdC4KKyAqIEByZXR1cm4gICAgICBOb24temVybyB2YWx1ZSBpZiBjIGlzIGEgcGFydGljdWxhciByZXByZXNlbnRhdGlvbiBvZiAKKyAqICAgICAgICAgICAgICBhbiBBU0NJSSBjaGFyYWN0ZXIuCisgKi8KK1BKX0lOTElORShpbnQpIHBqX2lzYXNjaWkodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBjPDEyODsgfQorCisvKiogCisgKiBSZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUgaWYgYyBpcyBhIHBhcnRpY3VsYXIgcmVwcmVzZW50YXRpb24gb2YgCisgKiBhIGRlY2ltYWwtZGlnaXQgY2hhcmFjdGVyLgorICogQHBhcmFtIGMgICAgIFRoZSBpbnRlZ2VyIGNoYXJhY3RlciB0byB0ZXN0LgorICogQHJldHVybiAgICAgIE5vbi16ZXJvIHZhbHVlIGlmIGMgaXMgYSBwYXJ0aWN1bGFyIHJlcHJlc2VudGF0aW9uIG9mIAorICogICAgICAgICAgICAgIGEgZGVjaW1hbC1kaWdpdCBjaGFyYWN0ZXIuCisgKi8KK1BKX0lOTElORShpbnQpIHBqX2lzZGlnaXQodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBpc2RpZ2l0KGMpOyB9CisKKy8qKiAKKyAqIFJldHVybnMgYSBub24temVybyB2YWx1ZSBpZiBjIGlzIGEgcGFydGljdWxhciByZXByZXNlbnRhdGlvbiBvZiAKKyAqIGEgc3BhY2UgY2hhcmFjdGVyICgweDA5IC0gMHgwRCBvciAweDIwKS4KKyAqIEBwYXJhbSBjICAgICBUaGUgaW50ZWdlciBjaGFyYWN0ZXIgdG8gdGVzdC4KKyAqIEByZXR1cm4gICAgICBOb24temVybyB2YWx1ZSBpZiBjIGlzIGEgcGFydGljdWxhciByZXByZXNlbnRhdGlvbiBvZiAKKyAqICAgICAgICAgICAgICBhIHNwYWNlIGNoYXJhY3RlciAoMHgwOSAtIDB4MEQgb3IgMHgyMCkuCisgKi8KK1BKX0lOTElORShpbnQpIHBqX2lzc3BhY2UodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBpc3NwYWNlKGMpOyB9CisKKy8qKiAKKyAqIFJldHVybnMgYSBub24temVybyB2YWx1ZSBpZiBjIGlzIGEgcGFydGljdWxhciByZXByZXNlbnRhdGlvbiBvZiAKKyAqIGEgbG93ZXJjYXNlIGNoYXJhY3Rlci4KKyAqIEBwYXJhbSBjICAgICBUaGUgaW50ZWdlciBjaGFyYWN0ZXIgdG8gdGVzdC4KKyAqIEByZXR1cm4gICAgICBOb24temVybyB2YWx1ZSBpZiBjIGlzIGEgcGFydGljdWxhciByZXByZXNlbnRhdGlvbiBvZiAKKyAqICAgICAgICAgICAgICBhIGxvd2VyY2FzZSBjaGFyYWN0ZXIuCisgKi8KK1BKX0lOTElORShpbnQpIHBqX2lzbG93ZXIodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBpc2xvd2VyKGMpOyB9CisKKworLyoqIAorICogUmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlIGlmIGMgaXMgYSBwYXJ0aWN1bGFyIHJlcHJlc2VudGF0aW9uIG9mIAorICogYSB1cHBlcmNhc2UgY2hhcmFjdGVyLgorICogQHBhcmFtIGMgICAgIFRoZSBpbnRlZ2VyIGNoYXJhY3RlciB0byB0ZXN0LgorICogQHJldHVybiAgICAgIE5vbi16ZXJvIHZhbHVlIGlmIGMgaXMgYSBwYXJ0aWN1bGFyIHJlcHJlc2VudGF0aW9uIG9mIAorICogICAgICAgICAgICAgIGEgdXBwZXJjYXNlIGNoYXJhY3Rlci4KKyAqLworUEpfSU5MSU5FKGludCkgcGpfaXN1cHBlcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGlzdXBwZXIoYyk7IH0KKworLyoqCisgKiBSZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUgaWYgYyBpcyBhIGVpdGhlciBhIHNwYWNlICgnICcpIG9yIGhvcml6b250YWwKKyAqIHRhYiAoJ1xcdCcpIGNoYXJhY3Rlci4KKyAqIEBwYXJhbSBjICAgICBUaGUgaW50ZWdlciBjaGFyYWN0ZXIgdG8gdGVzdC4KKyAqIEByZXR1cm4gICAgICBOb24temVybyB2YWx1ZSBpZiBjIGlzIGEgZWl0aGVyIGEgc3BhY2UgKCcgJykgb3IgaG9yaXpvbnRhbAorICogICAgICAgICAgICAgIHRhYiAoJ1xcdCcpIGNoYXJhY3Rlci4KKyAqLworUEpfSU5MSU5FKGludCkgcGpfaXNibGFuayh1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGlzYmxhbmsoYyk7IH0KKworLyoqCisgKiBDb252ZXJ0cyBjaGFyYWN0ZXIgdG8gbG93ZXJjYXNlLgorICogQHBhcmFtIGMgICAgIFRoZSBpbnRlZ2VyIGNoYXJhY3RlciB0byBjb252ZXJ0LgorICogQHJldHVybiAgICAgIExvd2VyY2FzZSBjaGFyYWN0ZXIgb2YgYy4KKyAqLworUEpfSU5MSU5FKGludCkgcGpfdG9sb3dlcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIHRvbG93ZXIoYyk7IH0KKworLyoqCisgKiBDb252ZXJ0cyBjaGFyYWN0ZXIgdG8gdXBwZXJjYXNlLgorICogQHBhcmFtIGMgICAgIFRoZSBpbnRlZ2VyIGNoYXJhY3RlciB0byBjb252ZXJ0LgorICogQHJldHVybiAgICAgIFVwcGVyY2FzZSBjaGFyYWN0ZXIgb2YgYy4KKyAqLworUEpfSU5MSU5FKGludCkgcGpfdG91cHBlcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIHRvdXBwZXIoYyk7IH0KKworLyoqCisgKiBSZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUgaWYgYyBpcyBhIHBhcnRpY3VsYXIgcmVwcmVzZW50YXRpb24gb2YgCisgKiBhbiBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuCisgKiBAcGFyYW0gYyAgICAgVGhlIGludGVnZXIgY2hhcmFjdGVyIHRvIHRlc3QuCisgKiBAcmV0dXJuICAgICAgTm9uLXplcm8gdmFsdWUgaWYgYyBpcyBhIHBhcnRpY3VsYXIgcmVwcmVzZW50YXRpb24gb2YgCisgKiAgICAgICAgICAgICAgYW4gaGV4YWRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLgorICovCitQSl9JTkxJTkUoaW50KSBwal9pc3hkaWdpdCh1bnNpZ25lZCBjaGFyIGMpeyByZXR1cm4gaXN4ZGlnaXQoYyk7IH0KKworLyoqCisgKiBBcnJheSBvZiBoZXggZGlnaXRzLCBpbiBsb3dlcnNwYWNlLgorICovCisvKmV4dGVybiBjaGFyIHBqX2hleF9kaWdpdHNbXTsqLworI2RlZmluZSBwal9oZXhfZGlnaXRzCSIwMTIzNDU2Nzg5YWJjZGVmIgorCisvKioKKyAqIENvbnZlcnQgYSB2YWx1ZSB0byBoZXggcmVwcmVzZW50YXRpb24uCisgKiBAcGFyYW0gdmFsdWUJICAgIEludGVncmFsIHZhbHVlIHRvIGNvbnZlcnQuCisgKiBAcGFyYW0gcAkgICAgQnVmZmVyIHRvIGhvbGQgdGhlIGhleCByZXByZXNlbnRhdGlvbiwgd2hpY2ggbXVzdCBiZQorICoJCSAgICBhdCBsZWFzdCB0d28gYnl0ZXMgbGVuZ3RoLgorICovCitQSl9JTkxJTkUodm9pZCkgcGpfdmFsX3RvX2hleF9kaWdpdCh1bnNpZ25lZCB2YWx1ZSwgY2hhciAqcCkKK3sKKyAgICAqcCsrID0gcGpfaGV4X2RpZ2l0c1sgKHZhbHVlICYgMHhGMCkgPj4gNCBdOworICAgICpwICAgPSBwal9oZXhfZGlnaXRzWyAodmFsdWUgJiAweDBGKSBdOworfQorCisvKioKKyAqIENvbnZlcnQgaGV4IGRpZ2l0IGMgdG8gaW50ZWdyYWwgdmFsdWUuCisgKiBAcGFyYW0gYwlUaGUgaGV4IGRpZ2l0IGNoYXJhY3Rlci4KKyAqIEByZXR1cm4JVGhlIGludGVncmFsIHZhbHVlIGJldHdlZW4gMCBhbmQgMTUuCisgKi8KK1BKX0lOTElORSh1bnNpZ25lZCkgcGpfaGV4X2RpZ2l0X3RvX3ZhbCh1bnNpZ25lZCBjaGFyIGMpCit7CisgICAgaWYgKGMgPD0gJzknKQorCXJldHVybiAoYy0nMCcpICYgMHgwRjsKKyAgICBlbHNlIGlmIChjIDw9ICdGJykKKwlyZXR1cm4gIChjLSdBJysxMCkgJiAweDBGOworICAgIGVsc2UKKwlyZXR1cm4gKGMtJ2EnKzEwKSAmIDB4MEY7Cit9CisKKy8qKiBAfSAqLworCitQSl9FTkRfREVDTAorCisjZW5kaWYJLyogX19QSl9DVFlQRV9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9kb3h5Z2VuLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2RveHlnZW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmUxOThiCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9kb3h5Z2VuLmgKQEAgLTAsMCArMSw5OTYgQEAKKy8qICRJZDogZG94eWdlbi5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfRE9YWUdFTl9IX18KKyNkZWZpbmUgX19QSl9ET1hZR0VOX0hfXworCisvKioKKyAqIEBmaWxlIGRveHlnZW4uaAorICogQGJyaWVmIERveHlnZW4ncyBtYWlucGFnZS4KKyAqLworCisvKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICovCisvKgorCUlOVFJPRFVDVElPTiBQQUdFCisgKi8KKworLyoqCisgKiBAbWFpbnBhZ2UgV2VsY29tZSB0byBQSkxJQiEKKyAqCisgKiBAc2VjdGlvbiBpbnRyb19zZWMgV2hhdCBpcyBQSkxJQgorICoKKyAqIFBKTElCIGlzIGFuIE9wZW4gU291cmNlLCBzbWFsbCBmb290cHJpbnQgZnJhbWV3b3JrIGxpYnJhcnkgd3JpdHRlbiBpbiBDIGZvciAKKyAqIG1ha2luZyBzY2FsYWJsZSBhcHBsaWNhdGlvbnMuIEJlY2F1c2Ugb2YgaXRzIHNtYWxsIGZvb3RwcmludCwgaXQgY2FuIGJlIHVzZWQKKyAqIGluIGVtYmVkZGVkIGFwcGxpY2F0aW9ucyAod2UgaG9wZSBzbyEpLCBidXQgeWV0IHRoZSBsaWJyYXJ5IGlzIGFsc28gYWltZWQgZm9yCisgKiBmYWNpbGl0YXRpbmcgdGhlIGNyZWF0aW9uIG9mIGhpZ2ggcGVyZm9ybWFuY2UgcHJvdG9jb2wgc3RhY2tzLgorICoKKyAqIFBKTElCIGlzIHJlbGVhc2VkIHVuZGVyIEdQTCB0ZXJtcy4KKyAqCisgKiBAc2VjdGlvbiBkb3dubG9hZF9zZWMgRG93bmxvYWQKKyAqCisgKiBQSkxJQiBhbmQgYWxsIGRvY3VtZW50YXRpb24gY2FuIGJlIGRvd25sb2FkZWQgZnJvbSAKKyAqIGh0dHA6Ly93d3cucGpzaXAub3JnLgorICoKKyAqCisgKiBAc2VjdGlvbiBob3dfdG9fdXNlX3NlYyBBYm91dCBUaGlzIERvY3VtZW50YXRpb24KKyAqCisgKiBUaGlzIGRvY3VtZW50IGlzIGdlbmVyYXRlZCBkaXJlY3RseSBmcm9tIFBKTElCIHNvdXJjZSBmaWxlIHVzaW5nCisgKiBcYSBkb3h5Z2VuIChodHRwOi8vd3d3LmRveHlnZW4ub3JnKS4gRG94eWdlbiBpcyBhIGdyZWF0IChhbmQgZnJlZSEpIAorICogdG9vbHMgZm9yIGdlbmVyYXRpbmcgc3VjaCBkb2N1bWVudGF0aW9uLgorICoKKyAqCisgKiBAc3Vic2VjdGlvbiBmaW5kX3NhbXBsZXNfc3Vic2VjIEhvdyB0byBSZWFkIFRoaXMgRG9jdW1lbnQKKyAqCisgKiBUaGlzIGRvY3VtZW50YXRpb24gaXMgbGFpZCBvdXQgbW9yZSB0byBiZSBhIHJlZmVyZW5jZSBndWlkZSBpbnN0ZWFkCisgKiBvZiB0dXRvcmlhbCwgdGhlcmVmb3JlIGZpcnN0IHRpbWUgdXNlcnMgbWF5IGZpbmQgaXQgZGlmZmljdWx0IHRvCisgKiBncmFzcCBQSkxJQiBieSByZWFkaW5nIHRoaXMgZG9jdW1lbnQgYWxvbmUuCisgKgorICogSG93ZXZlciwgd2UndmUgdHJpZWQgb3VyIGJlc3QgdG8gbWFrZSB0aGlzIGRvY3VtZW50IGVhc3kgdG8gZm9sbG93LgorICogRm9yIGZpcnN0IHRpbWUgdXNlcnMsIHdlIHdvdWxkIHN1Z2dlc3QgdGhhdCB5b3UgZm9sbG93IHRoZXNlIHN0ZXBzCisgKiB3aGVuIHJlYWRpbmcgdGhpcyBkb2N1bWVudGF0aW9uOgorICoKKyAqICAtIGNvbnRpbnVlIHJlYWRpbmcgdGhpcyBpbnRyb2R1Y3Rpb24gY2hhcHRlci4gQXQgdGhlIGVuZCBvZiB0aGlzCisgKiAgICBjaGFwdGVyLCB5b3UnbGwgZmluZCBzZWN0aW9uIGNhbGxlZCBccmVmIHBqbGliX2Z1bmRhbWVudGFsc19zZWMKKyAqICAgIHdoaWNoIHNob3VsZCBndWlkZSB5b3UgdG8gdW5kZXJzdGFuZCBiYXNpYyB0aGluZ3MgYWJvdXQgUEpMSUIuCisgKgorICogIC0gZmluZCBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWZpYyBmZWF0dXJlcyB0aGF0IHlvdSB3YW50IHRvIHVzZQorICogICAgaW4gUEpMSUIuIFVzZSB0aGUgPGI+TW9kdWxlIEluZGV4PC9iPiB0byBmaW5kIG91dCBhYm91dCBhbGwgCisgKiAgICBmZWF0dXJlcyBpbiBQSkxJQiAoaWYgeW91J3JlIGJyb3dzaW5nIHRoZSBIVE1MIGRvY3VtZW50YXRpb24sCisgKiAgICBjbGljayBvbiB0aGUgXGEgTW9kdWxlIGxpbmsgb24gdG9wIG9mIHRoZSBwYWdlLCBvciBpZiB5b3UncmUKKyAqICAgIHJlYWRpbmcgdGhlIFBERiBkb2N1bWVudGF0aW9uLCBjbGljayBvbiBcYSBNb2R1bGUgXGEgRG9jdW1lbnRhdGlvbgorICogICAgb24gdGhlIG5hdmlnYXRpb24gcGFuZSBvbiB0aGUgbGVmdCkuCisgKgorICogQHN1YnNlY3Rpb24gZG9jX29yZ2FuaXplX3NlYyBIb3cgVG8ncworICoKKyAqIFBsZWFzZSBmaW5kIGJlbG93IGxpbmtzIHRvIHNwZWNpZmljIHRhc2tzIHRoYXQgeW91IHByb2JhYmx5CisgKiB3YW50IHRvIGRvOgorICoKKyAqICAtIDxiPkhvdyB0byBCdWlsZCBQSkxJQjwvYj4KKyAqXG4KKyAqIFBsZWFzZSByZWZlciB0byBccmVmIHBqbGliX2J1aWxkX3N5c19wZyBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICoKKyAqICAtIDxiPkhvdyB0byBVc2UgUEpMSUIgaW4gTXkgQXBwbGljYXRpb248L2I+CisgKlxuCisgKiBQbGVhc2UgcmVmZXIgdG8gXHJlZiBjb25maWd1cmVfYXBwX3NlYyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqCisgKiAgLSA8Yj5Ib3cgdG8gUG9ydCBQSkxJQjwvYj4KKyAqXG4KKyAqIFBsZWFzZSByZWZlciB0byBccmVmIHBvcnRpbmdfcGpsaWJfcGcgcGFnZS4KKyAqCisgKiAgLSA8Yj5XaGVyZSB0byBSZWFkIFNhbXBsZXMgRG9jdW1lbnRhdGlvbjwvYj4KKyAqXG4KKyAqIE1vc3Qgb2YgdGhlIG1vZHVsZXMgcHJvdmlkZSBsaW5rIHRvIHRoZSBjb3JyZXNwb25kaW5nIHNhbXBsZSBmaWxlLgorICogQWx0ZXJuYXRpdmVseSwgdG8gZ2V0IHRoZSBsaXN0IG9mIGFsbCBleGFtcGxlcywgeW91IGNhbiBjbGljayBvbiAKKyAqIDxiPlJlbGF0ZWQgUGFnZXM8L2I+IG9uIHRoZSB0b3Agb2YgSFRNTCBkb2N1bWVudCBvciBvbiAKKyAqIDxiPlBKTElCIFBhZ2UgRG9jdW1lbnRhdGlvbjwvYj4gb24gbmF2aWdhdGlvbiBwYW5lIG9mIHlvdXIgUERGIHJlYWRlci4KKyAqCisgKiAgLSA8Yj5Ib3cgdG8gU3VibWl0IENvZGUgdG8gUEpMSUIgUHJvamVjdDwvYj4KKyAqXG4KKyAqIFBsZWFzZSByZWFkIFxyZWYgcGpsaWJfY29kaW5nX2NvbnZlbnRpb25fcGFnZSBiZWZvcmUgc3VibWl0dGluZworICogeW91ciBjb2RlLiBTZW5kIHlvdXIgY29kZSBhcyBwYXRjaCBhZ2FpbnN0IGN1cnJlbnQgU3VidmVyc2lvbiB0cmVlCisgKiB0byB0aGUgYXBwcm9wcmlhdGUgbWFpbGluZyBsaXN0LgorICoKKyAqCisgKiBAc2VjdGlvbiBmZWF0dXJlc19zZWMgRmVhdHVyZXMKKyAqCisgKiBAc3Vic2VjdGlvbiBvcGVuX3NvdXJjZV9mZWF0IEl0J3MgT3BlbiBTb3VyY2UhCisgKgorICogUEpMSUIgaXMgY3VycmVudGx5IHJlbGVhc2VkIG9uIEdQTCBsaWNlbnNlLCBidXQgb3RoZXIgYXJyYW5nZW1lbnRzCisgKiBjYW4gYmUgbWFkZSB3aXRoIHRoZSBhdXRob3IuCisgKgorICogQHN1YnNlY3Rpb24gZXh0cmVtZV9wb3J0YWJsZV9mZWF0IEV4dHJlbWUgUG9ydGFiaWxpdHkKKyAqCisgKiBQSkxJQiBpcyBkZXNpZ25lZCB0byBiZSBleHRyZW1lbHkgcG9ydGFibGUuIEl0IGNhbiBydW4gb24gYW55IGtpbmQKKyAqIG9mIHByb2Nlc3NvcnMgKDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQsIGJpZyBvciBsaXR0bGUgZW5kaWFuLCBzaW5nbGUKKyAqIG9yIG11bHRpLXByb2Nlc3NvcnMpIGFuZCBvcGVyYXRpbmcgc3lzdGVtcy4gRmxvYXRpbmcgcG9pbnQgb3Igbm8KKyAqIGZsb2F0aW5nIHBvaW50LiBNdWx0aS10aHJlYWRpbmcgb3Igbm90LgorICogSXQgY2FuIGV2ZW4gcnVuIGluIGVudmlyb25tZW50IHdoZXJlIG5vIEFOU0kgTElCQyBpcyBhdmFpbGFibGUuIAorICoKKyAqIEN1cnJlbnRseSBQSkxJQiBpcyBrbm93biB0byBydW4gb24gdGhlc2UgcGxhdGZvcm1zOgorICogIC0gV2luMzIveDg2IChXaW45NS85OC9NRSwgTlQvMjAwMC9YUC8yMDAzLCBtaW5ndykuCisgKiAgLSBhcm0sIFdpbkNFIGFuZCBXaW5kb3dzIE1vYmlsZS4KKyAqICAtIExpbnV4L3g4NiwgKHVzZXIgbW9kZSBhbmQgYXMgPGI+a2VybmVsIG1vZHVsZTwvYj4oISkpLgorICogIC0gTGludXgvYWxwaGEKKyAqICAtIFNvbGFyaXMvdWx0cmEuCisgKiAgLSBNYWNPUyBYL3Bvd2VycGMKKyAqICAtIFJURU1TICh4ODYgYW5kIHBvd2VycGMpLgorICoKKyAqIEFuZCBlZmZvcnRzIGlzIHVuZGVyIHdheSB0byBwb3J0IFBKTElCIG9uOgorICogIC0gU3ltYmlhbiBPUworICoKKyAqCisgKiBAc3Vic2VjdGlvbiBzbWFsbF9zaXplX2ZlYXQgU21hbGwgaW4gU2l6ZQorICoKKyAqIE9uZSBvZiB0aGUgcHJpbWFyeSBvYmplY3RpdmVzIGlzIHRvIGhhdmUgbGlicmFyeSB0aGF0IGlzIHNtYWxsIGluIHNpemUgZm9yCisgKiB0eXBpY2FsIGVtYmVkZGVkIGFwcGxpY2F0aW9ucy4gQXMgYSByb3VnaCBndWlkYW5jZSwgd2UgYWltIHRvIGtlZXAgdGhlIAorICogbGlicmFyeSBzaXplIGJlbG93IDEwMEtCIGZvciBpdCB0byBiZSBjb25zaWRlcmVkIGFzIHNtYWxsLgorICogQXMgdGhlIHJlc3VsdCwgbW9zdCBvZiB0aGUgZnVuY3Rpb25hbGl0aWVzIGluIHRoZSBsaWJyYXJ5IGNhbiBiZSB0YWlsb3JlZAorICogdG8gbWVldCB0aGUgcmVxdWlyZW1lbnRzOyB1c2VyIGNhbiBlbmFibGUvZGlzYWJsZSBzcGVjaWZpYyBmdW5jdGlvbmFsaXRpZXMKKyAqIHRvIGdldCB0aGUgZGVzaXJlZCBzaXplL3BlcmZvcm1hbmNlL2Z1bmN0aW9uYWxpdHkgYmFsYW5jZS4KKyAqCisgKiBGb3IgbW9yZSBpbmZvLCBwbGVhc2Ugc2VlIEByZWYgcGpfY29uZmlnLgorICoKKyAqCisgKiBAc3Vic2VjdGlvbiBiaWdfcGVyZm9ybV9mZWF0IEJpZyBpbiBQZXJmb3JtYW5jZQorICoKKyAqIEFsbW9zdCBldmVyeXRoaW5nIGluIFBKTElCIGlzIGRlc2lnbmVkIHRvIGFjaGlldmUgdGhlIGhpZ2hlc3QgcG9zc2libGUKKyAqIHBlcmZvcm1hbmNlIG91dCBvZiB0aGUgdGFyZ2V0IHBsYXRmb3JtLiAKKyAqCisgKgorICogQHN1YnNlY3Rpb24gbm9fZHluX21lbSBObyBEeW5hbWljIE1lbW9yeSBBbGxvY2F0aW9ucworICoKKyAqIFRoZSBjZW50cmFsIGlkZWEgb2YgUEpMSUIgaXMgdGhhdCBmb3IgYXBwbGljYXRpb25zIHRvIHJ1biBhcyBmYXN0IGFzIGl0IGNhbiwKKyAqIGl0IHNob3VsZCBub3QgdXNlIFxhIG1hbGxvYygpIGF0IGFsbCwgYnV0IGluc3RlYWQgc2hvdWxkIGdldCB0aGUgbWVtb3J5IAorICogZnJvbSBhIHByZWFsbG9jYXRlZCBzdG9yYWdlIHBvb2wuIFRoZXJlIGFyZSBmZXcgdGhpbmdzIHRoYXQgY2FuIGJlIAorICogb3B0aW1pemVkIHdpdGggdGhpcyBhcHByb2FjaDoKKyAqCisgKiAgLSBcYSBhbGxvYygpIGlzIGEgTygxKSBvcGVyYXRpb24uCisgKiAgLSBubyBtdXRleCBpcyB1c2VkIGluc2lkZSBhbGxvYygpLiBJdCBpcyBhc3N1bWVkIHRoYXQgc3luY2hyb25pemF0aW9uIAorICogICAgd2lsbCBiZSB1c2VkIGluIGhpZ2hlciBhYnN0cmFjdGlvbiBieSBhcHBsaWNhdGlvbiBhbnl3YXkuCisgKiAgLSBubyBcYSBmcmVlKCkgaXMgcmVxdWlyZWQuIEFsbCBjaHVua3Mgd2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIHBvb2wgaXMgCisgKiAgICBkZXN0cm95ZWQuCisgKgorICogVGhlIHBlcmZvcm1hbmNlIGdhaW5lZCBvbiBzb21lIHN5c3RlbXMgY2FuIGJlIGFzIGhpZ2ggYXMgMzB4IHNwZWVkIHVwCisgKiBhZ2FpbnN0IFxhIG1hbGxvYygpIGFuZCBcYSBmcmVlKCkgb24gY2VydGFpbiBjb25maWd1cmF0aW9ucywgYnV0IG9mCisgKiBjb3Vyc2UgeW91ciBtaWxlYWdlIG1heSB2YXJ5LiAKKyAqCisgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFxyZWYgUEpfUE9PTF9HUk9VUAorICoKKyAqIAorICogQHN1YnNlY3Rpb24gb3NfYWJzdHJhY3RfZmVhdCBPcGVyYXRpbmcgU3lzdGVtIEFic3RyYWN0aW9uCisgKgorICogUEpMSUIgaGFzIGFic3RyYWN0aW9ucyBmb3IgZmVhdHVyZXMgdGhhdCBhcmUgbm9ybWFsbHkgbm90IHBvcnRhYmxlIAorICogYWNyb3NzIG9wZXJhdGluZyBzeXN0ZW1zOiAKKyAqICAtIEByZWYgUEpfVEhSRUFECisgKlxuCisgKiAgICBQb3J0YWJsZSB0aHJlYWQgbWFuaXB1bGF0aW9uLgorICogIC0gQHJlZiBQSl9UTFMKKyAqXG4KKyAqICAgIFN0b3JpbmcgZGF0YSBpbiB0aHJlYWQncyBwcml2YXRlIGRhdGEuCisgKiAgLSBAcmVmIFBKX01VVEVYCisgKlxuCisgKiAgICBNdXR1YWwgZXhjbHVzaW9uIHByb3RlY3Rpb24uCisgKiAgLSBAcmVmIFBKX1NFTQorICpcbgorICogICAgU2VtYXBob3Jlcy4KKyAqICAtIEByZWYgUEpfQVRPTUlDCisgKlxuCisgKiAgICBBdG9taWMgdmFyaWFibGVzIGFuZCB0aGVpciBvcGVyYXRpb25zLgorICogIC0gQHJlZiBQSl9DUklUX1NFQworICpcbgorICogICAgRmFzdCBsb2NraW5nIG9mIGNyaXRpY2FsIHNlY3Rpb25zLgorICogIC0gQHJlZiBQSl9MT0NLCisgKlxuCisgKiAgICBIaWdoIGxldmVsIGFic3RyYWN0aW9uIGZvciBsb2NrIG9iamVjdHMuCisgKiAgLSBAcmVmIFBKX0VWRU5UCisgKlxuCisgKiAgICBFdmVudCBvYmplY3QuCisgKiAgLSBAcmVmIFBKX1RJTUUKKyAqXG4KKyAqICAgIFBvcnRhYmxlIHRpbWUgbWFuaXB1bGF0aW9uLgorICogIC0gQHJlZiBQSl9USU1FU1RBTVAKKyAqXG4KKyAqICAgIEhpZ2ggcmVzb2x1dGlvbiB0aW1lIHZhbHVlLgorICogIC0gZXRjLgorICoKKyAqCisgKiBAc3Vic2VjdGlvbiBsbF9uZXR3b3JrX2lvX3NlYyBMb3ctTGV2ZWwgTmV0d29yayBJL08KKyAqCisgKiBQSkxJQiBoYXMgdmVyeSBwb3J0YWJsZSBhYnN0cmFjdGlvbiBhbmQgZmFpcmx5IGNvbXBsZXRlIHNldCBvZiBBUEkgZm9yCisgKiBkb2luZyBuZXR3b3JrIEkvTyBjb21tdW5pY2F0aW9ucy4gQXQgdGhlIGxvd2VzdCBsZXZlbCwgUEpMSUIgcHJvdmlkZXM6CisgKgorICogIC0gQHJlZiBQSl9TT0NLCisgKlxuCisgKiAgICBBIGhpZ2hseSBwb3J0YWJsZSBzb2NrZXQgYWJzdHJhY3Rpb24sIHJ1bnMgb24gYWxsIGtpbmQgb2YKKyAqICAgIG5ldHdvcmsgQVBJcyBzdWNoIGFzIHN0YW5kYXJkIEJTRCBzb2NrZXQsIFdpbmRvd3Mgc29ja2V0LCBMaW51eAorICogICAgXGIga2VybmVsIHNvY2tldCwgUGFsbU9TIG5ldHdvcmtpbmcgQVBJLCBldGMuCisgKgorICogIC0gQHJlZiBwal9hZGRyX3Jlc29sdmUKKyAqXG4KKyAqICAgIFBvcnRhYmxlIGFkZHJlc3MgcmVzb2x1dGlvbiwgd2hpY2ggaW1wbGVtZW50cyAjcGpfZ2V0aG9zdGJ5bmFtZSgpLgorICoKKyAqICAtIEByZWYgUEpfU09DS19TRUxFQ1QKKyAqXG4KKyAqICAgIEEgcG9ydGFibGUgXGEgc2VsZWN0KCkgbGlrZSBBUEkgKCNwal9zb2NrX3NlbGVjdCgpKSB3aGljaCBjYW4gYmUKKyAqICAgIGltcGxlbWVudGVkIHdpdGggdmFyaW91cyBiYWNrLWVuZC4KKyAqCisgKgorICoKKyAqIEBzdWJzZWN0aW9uIHRpbWVyX21nbXRfc2VjIFRpbWVyIE1hbmFnZW1lbnQKKyAqCisgKiBBIHBhc3NpdmUgZnJhbWV3b3JrIGZvciBtYW5hZ2luZyB0aW1lciwgc2VlIEByZWYgUEpfVElNRVIgZm9yIG1vcmUgaW5mby4KKyAqIFRoZXJlIGlzIGFsc28gZnVuY3Rpb24gdG8gcmV0cmlldmUgaGlnaCByZXNvbHV0aW9uIHRpbWVzdGFtcAorICogZnJvbSB0aGUgc3lzdGVtIChzZWUgQHJlZiBQSl9USU1FU1RBTVApLgorICoKKyAqCisgKiBAc3Vic2VjdGlvbiBkYXRhX3N0cnVjdF9zZWMgVmFyaW91cyBEYXRhIFN0cnVjdHVyZXMKKyAqCisgKiBWYXJpb3VzIGRhdGEgc3RydWN0dXJlcyBhcmUgcHJvdmlkZWQgaW4gdGhlIGxpYnJhcnk6CisgKgorICogIC0gQHJlZiBQSl9QU1RSCisgKiAgLSBAcmVmIFBKX0FSUkFZCisgKiAgLSBAcmVmIFBKX0hBU0gKKyAqICAtIEByZWYgUEpfTElTVAorICogIC0gQHJlZiBQSl9SQlRSRUUKKyAqCisgKgorICogQHN1YnNlY3Rpb24gZXhjZXB0aW9uX3NlYyBFeGNlcHRpb24gQ29uc3RydWN0CisgKgorICogQSBjb252ZW5pZW50IFRSWS9DQVRDSCBsaWtlIGNvbnN0cnVjdCB0byBwcm9wYWdhdGUgZXJyb3JzLCB3aGljaCBieQorICogZGVmYXVsdCBhcmUgdXNlZCBieSB0aGUgQHJlZiBQSl9QT09MX0dST1VQICJtZW1vcnkgcG9vbCIgYW5kIAorICogdGhlIGxleGljYWwgc2Nhbm5lciBpbiBwamxpYi11dGlsLiBUaGUgZXhjZXB0aW9uCisgKiBjb25zdHJ1Y3QgY2FuIGJlIHVzZWQgdG8gd3JpdGUgcHJvZ3JhbXMgbGlrZSBiZWxvdzoKKyAqCisgKiA8cHJlPgorICogICAgI2RlZmluZSBTWU5UQVhfRVJST1IgIDEKKyAqCisgKiAgICBQSl9UUlkgeworICogICAgICAgbXNnID0gTlVMTDsKKyAqICAgICAgIG1zZyA9IHBhcnNlX21zZyhidWYsIGxlbik7CisgKiAgICB9CisgKiAgICBQSl9DQVRDSCAoIFNZTlRBWF9FUlJPUiApIHsKKyAqICAgICAgIC4uIGhhbmRsZSBlcnJvciAuLgorICogICAgfQorICogICAgUEpfRU5EOworICogPC9wcmU+CisgKgorICogUGxlYXNlIHNlZSBAcmVmIFBKX0VYQ0VQVCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqCisgKgorICogQHN1YnNlY3Rpb24gbG9nZ2luZ19zZWMgTG9nZ2luZyBGYWNpbGl0eQorICoKKyAqIFBKTElCIEByZWYgUEpfTE9HIGNvbnNpc3RzIG9mIG1hY3JvcyB0byB3cml0ZSBsb2dnaW5nIGluZm9ybWF0aW9uIHRvCisgKiBzb21lIG91dHB1dCBkZXZpY2UuIFNvbWUgb2YgdGhlIGZlYXR1cmVzIG9mIHRoZSBsb2dnaW5nIGZhY2lsaXR5OgorICoKKyAqICAtIHRoZSB2ZXJib3NpdHkgY2FuIGJlIGZpbmUtdHVuZWQgYm90aCBhdCBjb21waWxlIHRpbWUgKHRvIGNvbnRyb2wKKyAqICAgIHRoZSBsaWJyYXJ5IHNpemUpIG9yIHJ1bi10aW1lICh0byBjb250cm9sIHRoZSB2ZXJib3NpdHkgb2YgdGhlCisgKiAgICBpbmZvcm1hdGlvbikuCisgKiAgLSBvdXRwdXQgZGV2aWNlIGlzIGNvbmZpZ3VyYWJsZSAoZS5nLiBzdGRvdXQsIHByaW50aywgZmlsZSwgZXRjLikKKyAqICAtIGxvZyBkZWNvcmF0aW9uIGlzIGNvbmZpZ3VyYWJsZS4KKyAqCisgKiBTZWUgQHJlZiBQSl9MT0cgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKgorICoKKyAqIEBzdWJzZWN0aW9uIGd1aWRfZ2VuX3NlYyBSYW5kb20gYW5kIEdVSUQgR2VuZXJhdGlvbgorICoKKyAqIFBKTElCIHByb3ZpZGVzIGZhY2lsaXR5IHRvIGNyZWF0ZSByYW5kb20gc3RyaW5nIAorICogKCNwal9jcmVhdGVfcmFuZG9tX3N0cmluZygpKSBvciBnbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllcgorICogKHNlZSBAcmVmIFBKX0dVSUQpLgorICoKKyAqCisgKgorICogQHNlY3Rpb24gY29uZmlndXJlX2FwcF9zZWMgQ29uZmlndXJpbmcgQXBwbGljYXRpb24gdG8gdXNlIFBKTElCCisgKgorICogQHN1YnNlY3Rpb24gcGpsaWJfY29tcGlsX3NlYyBCdWlsZGluZyBQSkxJQgorICoKKyAqIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIFxyZWYgcGpsaWJfYnVpbGRfc3lzX3BnIHRvIGJ1aWxkCisgKiBQSkxJQi4KKyAqCisgKiBAc3Vic2VjdGlvbiBwamxpYl9jb21waWxfYXBwX3NlYyBCdWlsZGluZyBBcHBsaWNhdGlvbnMgd2l0aCBQSkxJQgorICoKKyAqIFVzZSB0aGUgZm9sbG93aW5nIHNldHRpbmdzIHdoZW4gYnVpbGRpbmcgYXBwbGljYXRpb25zIHdpdGggUEpMSUIuCisgKgorICogQHN1YnN1YnNlY3Rpb24gY29tcGlsX2luY19kaXJfc2VjIEluY2x1ZGUgU2VhcmNoIFBhdGgKKyAqCisgKiBBZGQgdGhpcyB0byB5b3VyIGluY2x1ZGUgc2VhcmNoIHBhdGggKCRQSkxJQiBpcyBQSkxJQiByb290IGRpcmVjdG9yeSk6CisgKiA8cHJlPgorICogICAkUEpMSUIvaW5jbHVkZQorICogPC9wcmU+CisgKgorICogQHN1YnN1YnNlY3Rpb24gY29tcGlsX2luY19maWxlX3NlYyBJbmNsdWRlIFBKTElCIEhlYWRlcgorICoKKyAqIFRvIGluY2x1ZGUgYWxsIFBKTElCIGhlYWRlcnM6CisgKiBcdmVyYmF0aW0KKyAgICAjaW5jbHVkZSA8cGpsaWIuaD4KKyAgIFxlbmR2ZXJiYXRpbQorICoKKyAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gaW5jbHVkZSBpbmRpdmlkdWFsIFBKTElCIGhlYWRlcnMgbGlrZSB0aGlzOgorICogXHZlcmJhdGltCisgICAgICNpbmNsdWRlIDxwai9sb2cuaD4KKyAgICAgI2luY2x1ZGUgPHBqL29zLmg+CisgIFxlbmR2ZXJiYXRpbQorICoKKyAqCisgKiBAc3Vic3Vic2VjdGlvbiBjb21waWxfbGliX2Rpcl9zZWMgTGlicmFyeSBQYXRoCisgKgorICogQWRkIHRoaXMgdG8geW91ciBsaWJyYXJ5IHNlYXJjaCBwYXRoOgorICogPHByZT4KKyAqICAgJFBKTElCL2xpYgorICogPC9wcmU+CisgKgorICogVGhlbiBhZGQgdGhlIGFwcHJvcHJpYXRlIFBKTElCIGxpYnJhcnkgdG8geW91ciBsaW5rIHNwZWNpZmljYXRpb24uIEZvcgorICogZXhhbXBsZSwgeW91IHdvdWxkIGFkZCBcYyBsaWJwai1pMzg2LWxpbnV4LWdjYy5hIHdoZW4geW91J3JlIGJ1aWxkaW5nCisgKiBhcHBsaWNhdGlvbnMgaW4gTGludXguCisgKgorICoKKyAqIEBzdWJzZWN0aW9uIHBqbGliX2Z1bmRhbWVudGFsc19zZWMgUHJpbmNpcGxlcyBpbiBVc2luZyBQSkxJQgorICoKKyAqIEZldyB0aGluZ3MgdGhhdCB5b3UgXGIgTVVTVCBkbyB3aGVuIHVzaW5nIFBKTElCLCB0byBtYWtlIHN1cmUgdGhhdAorICogeW91IGNyZWF0ZSB0cnVsbHkgcG9ydGFibGUgYXBwbGljYXRpb25zLgorICoKKyAqIEBzdWJzdWJzZWN0aW9uIGNhbGxfcGpsaWJfaW5pdF9zZWMgQ2FsbCBwal9pbml0KCkKKyAqCisgKiBCZWZvcmUgeW91IGRvIGFueXRoaW5nIGVsc2UsIGNhbGwgXGMgcGpfaW5pdCgpLiBUaGlzIHdvdWxkIG1ha2Ugc3VyZSB0aGF0CisgKiBQSkxJQiBzeXN0ZW0gaXMgcHJvcGVybHkgc2V0IHVwLgorICoKKyAqIEBzdWJzdWJzZWN0aW9uIG5vX2Fuc2lfc3Vic2VjIERvIE5PVCBVc2UgQU5TSSBDCisgKgorICogQ29udHJhcnkgdG8gcG9wdWxhciB0ZWFjaGluZywgQU5TSSBDIChhbmQgTElCQykgaXMgbm90IHRoZSBtb3N0IHBvcnRhYmxlCisgKiBsaWJyYXJ5IGluIHRoZSB3b3JsZCwgbm9yIGl0J3MgdGhlIG1vc3QgdWJpcXVpdG91cy4gRm9yIGV4YW1wbGUsIExJQkMKKyAqIGlzIG5vdCBhdmFpbGFibGUgaW4gTGludXgga2VybmVsLiBBbHNvIG5vcm1hbGx5IExJQkMgd2lsbCBiZSBleGNsdWRlZAorICogZnJvbSBjb21waWxhdGlvbiBvZiBSVE9TZXMgdG8gcmVkdWNlIHNpemUuCisgKgorICogU28gZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGRvIE5PVCB1c2UgQU5TSSBDLiBEbyBub3QgZXZlbiB0cnkgdG8gaW5jbHVkZQorICogYW55IG90aGVyIGhlYWRlciBmaWxlcyBvdXRzaWRlIDxpbmNsdWRlL3BqPi4gU3RpY2sgd2l0aCB0aGUgZnVuY3Rpb25hbGl0aWVzCisgKiBwcm92aWRlZCBieSBQSkxJQi4gCisgKgorICoKKyAqIEBzdWJzdWJzZWN0aW9uIHN0cmluZ19yZXBfc3Vic3Vic2VjIFVzZSBwal9zdHJfdCBpbnN0ZWFkIG9mIEMgU3RyaW5ncworICoKKyAqIFBKTElCIHVzZXMgcGpfc3RyX3QgaW5zdGVhZCBvZiBub3JtYWwgQyBzdHJpbmdzLiBZb3UgU0hPVUxEIGZvbGxvdyB0aGlzCisgKiBjb252ZW50aW9uIHRvby4gUmVtZW1iZXIsIEFOU0kgc3RyaW5nLWggaXMgbm90IGFsd2F5cyBhdmFpbGFibGUuIEFuZAorICogUEpMSUIgc3RyaW5nIGlzIGZhc3RlciEKKyAqCisgKiBAc3Vic3Vic2VjdGlvbiBtZW1fYWxsb2Nfc3Vic3Vic2VjIFVzZSBQb29sIGZvciBNZW1vcnkgQWxsb2NhdGlvbnMKKyAqCisgKiBZb3UgTVVTVCBOT1QgdXNlIFxhIG1hbGxvYygpIG9yIGFueSBvdGhlciBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMuCisgKiBVc2UgUEpMSUIgQHJlZiBQSl9QT09MX0dST1VQIGluc3RlYWQhIEl0J3MgZmFzdGVyIGFuZCBtb3N0IHBvcnRhYmxlLgorICoKKyAqIEBzdWJzZWN0aW9uIGxvZ2dpbmdfc3Vic3Vic2VjIFVzZSBMb2dnaW5nIGZvciBUZXh0IERpc3BsYXkKKyAqCisgKiBETyBOT1QgdXNlIDxzdGRpby5oPiBmb3IgdGV4dCBvdXRwdXQuIFVzZSBQSkxJQiBAcmVmIFBKX0xPRyBpbnN0ZWFkLgorICoKKyAqCisgKiBAc2VjdGlvbiBwb3J0aW5nX3BqbGliX3NlYzAgUG9ydGluZyBQSkxJQgorICoKKyAqIFBsZWFzZSBzZWUgXHJlZiBwb3J0aW5nX3BqbGliX3BnIHBhZ2Ugb24gbW9yZSBpbmZvcm1hdGlvbiB0byBwb3J0CisgKiBQSkxJQiB0byBuZXcgdGFyZ2V0LgorICoKKyAqIEBzZWN0aW9uIGVuam95X3NlYyBFbmpveSBVc2luZyBQSkxJQiEKKyAqCisgKiBXZSBob3BlIHRoYXQgeW91IGZpbmQgUEpMSUIgdXNlZnVsbCBmb3IgeW91ciBhcHBsaWNhdGlvbi4gSWYgeW91CisgKiBoYXZlIGFueSBxdWVzdGlvbnMsIHN1Z2dlc3Rpb25zLCBjcml0aWNzLCBidWcgZml4ZXMsIG9yIGFueXRoaW5nCisgKiBlbHNlLCB3ZSB3b3VsZCBiZSBoYXBweSB0byBoZWFyIGl0LgorICoKKyAqIEVuam95IHVzaW5nIFBKTElCIQorICoKKyAqIEJlbm55IFByaWpvbm8gPCBiZW5ueWxwIGF0IHBqc2lwIGRvdCBvcmcgPgorICovCisKKworCisvKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICovCisvKgorICAgICAgICAgQ09ESU5HIENPTlZFTlRJT04KKyAqLworCisvKioKKyAqIEBwYWdlIHBqbGliX2NvZGluZ19jb252ZW50aW9uX3BhZ2UgQ29kaW5nIENvbnZlbnRpb24KKyAqCisgKiBCZWZvcmUgeW91IHN1Ym1pdCB5b3VyIGNvZGUvcGF0Y2hlcyB0byBiZSBpbmNsdWRlZCB3aXRoIFBKTElCLCB5b3UgbXVzdAorICogbWFrZSBzdXJlIHRoYXQgeW91ciBjb2RlIGlzIGNvbXBsaWFudCB3aXRoIFBKTElCIGNvZGluZyBjb252ZW50aW9uLgorICogPGI+VGhpcyBpcyB2ZXJ5IGltcG9ydGFudCE8L2I+IE90aGVyd2lzZSB3ZSB3b3VsZCBub3QgYWNjZXB0IHlvdXIgY29kZS4KKyAqCisgKiBAc2VjdGlvbiBjb2RpbmdfY29udl9lZGl0b3Jfc2VjIEVkaXRvciBTZXR0aW5ncworICoKKyAqIFRoZSBzaW5nbGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgaW4gdGhlIHdob2xlIGNvZGluZyBjb252ZW50aW9uIGlzIGVkaXRvciAKKyAqIHNldHRpbmdzLiBJdCdzIG1vcmUgaW1wb3J0YW50IHRoYW4gdGhlIGNvcnJlY3RuZXNzIG9mIHlvdXIgY29kZSAoYnVncyB3aWxsCisgKiBvbmx5IGNyYXNoIHRoZSBzeXN0ZW0sIGJ1dCBpbmNvcnJlY3QgdGFiIHNpemUgaXMgbWVudGFsISkuCisgKgorICogS2luZGx5IHNldCB5b3VyIGVkaXRvciBhcyBmb2xsb3dzOgorICogIC0gdGFiIHNpemUgdG8gXGIgOC4KKyAqICAtIGluZGVudGF0aW9uIHRvIFxiIDQuCisgKgorICogV2l0aCBcYyB2aSwgeW91IGNhbiBkbyBpdCB3aXRoOgorICogPHByZT4KKyAqICA6c2UgdHM9OAorICogIDpzZSBzdHM9NAorICogPC9wcmU+CisgKgorICogWW91IHNob3VsZCByZXBsYWNlIHRhYiB3aXRoIGVpZ2h0IHNwYWNlcy4KKyAqCisgKiBAc2VjdGlvbiBjb2RpbmdfY29udl9kZXRhaWxfc2VjIENvZGluZyBTdHlsZQorICoKKyAqIENvZGluZyBzdHlsZSBNVVNUIHN0cmljdGx5IGZvbGxvdyBLJlIgc3R5bGUuIFRoZSByZXN0IG9mIGNvZGluZyBzdHlsZQorICogbXVzdCBmb2xsb3cgY3VycmVudCBzdHlsZS4gWW91IFNIT1VMRCBiZSBhYmxlIHRvIG9ic2VydmUgdGhlIHN0eWxlCisgKiBjdXJyZW50bHkgdXNlZCBieSBQSkxJQiBmcm9tIFBKTElCIHNvdXJjZXMsIGFuZCBhcHBseSB0aGUgc3R5bGUgdG8geW91ciAKKyAqIGNvZGUuIElmIHlvdSdyZSBub3QgYWJsZSB0byBkbyBzaW1wbGUgdGhpbmcgbGlrZSB0byBvYnNlcnZlIFBKTElCCisgKiBjb2Rpbmcgc3R5bGUgZnJvbSB0aGUgc291cmNlcywgdGhlbiBsb2dpYyBkaWN0YXRlcyB0aGF0IHlvdXIgYWJpbGl0eSB0bworICogb2JzZXJ2ZSBtb3JlIGRpZmZpY3VsdCBhcmVhIGluIFBKTElCIHN1Y2ggYXMgbWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ3ksIAorICogY29uY3VycmVuY3ksIGV0YyBpcyBxdWVzdGlvbmFibGUuCisgKgorICogQHNlY3Rpb24gY29kaW5nX2NvbnZfY29tbWVudF9zZWMgQ29tbWVudGluZyBZb3VyIENvZGUKKyAqCisgKiBQdWJsaWMgQVBJIChlLmcuIGluIGhlYWRlciBmaWxlcykgTVVTVCBoYXZlIGRveHlnZW4gY29tcGxpYW50IGNvbW1lbnRzLgorICoKKyAqLworCisKKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gKi8KKy8qCisJQlVJTERJTkcgQU5EIElOU1RBTExJTkcgUEpMSUIKKyAqLworCisKKworLyoqCisgKiBAcGFnZSBwamxpYl9idWlsZF9zeXNfcGcgQnVpbGRpbmcsIGFuZCBJbnN0YWxsaW5nIFBKTElCCisgKgorICogQHNlY3Rpb24gYnVpbGRfc3lzX2luc3RhbGxfc2VjIEJ1aWxkIGFuZCBJbnN0YWxsYXRpb24KKyAqCisgKiBcbm90ZQorICogPGI+VGhlIG1vc3QgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbiBvbiBidWlsZGluZyBhbmQgaW5zdGFsbGluZyBQSkxJQgorICogIHNob3VsZCBiZSBmb3VuZCBpbiB0aGUgd2Vic2l0ZSwgdW5kZXIgIkdldHRpbmcgU3RhcnRlZCIgZG9jdW1lbnQuCisgKiAgTW9yZSBvdmVyLCB0aGUgbmV3IFBKTElCIGJ1aWxkIHN5c3RlbSBpcyBub3cgYmFzZWQgb24gYXV0b2NvbmYsCisgKiAgc28gc29tZSBvZiB0aGUgaW5mb3JtYXRpb24gaGVyZSBtaWdodCBub3QgYmUgcmVsZXZhbnQgYW55bW9yZSAKKyAqICAoYWx0aG91Z2ggbW9zdCBzdGlsbCBhcmUsIHNpbmNlIHRoZSBhdXRvY29uZiBzY3JpcHQgc3RpbGwgdXNlCisgKiAgdGhlIG9sZCBNYWtlZmlsZSBzeXN0ZW0gYXMgdGhlIGJhY2tlbmQpLjwvYj4KKyAqCisgKiBAc3Vic2VjdGlvbiBidWlsZF9zeXNfaW5zdGFsbF93aW4zMl9zZWMgVmlzdWFsIFN0dWRpbworICoKKyAqIFRoZSBQSkxJQiBWaXN1YWwgU3R1ZGlvIHdvcmtzcGFjZSBzdXBwb3J0cyB0aGUgYnVpbGRpbmcgb2YgUEpMSUIKKyAqIGZvciBXaW4zMiB0YXJnZXQuIEFsdGhvdWdoIGN1cnJlbnRseSBvbmx5IHRoZSBWaXN1YWwgU3R1ZGlvIDYgV29ya3NwYWNlIGlzCisgKiBhY3RpdmVseSBtYWludGFpbmVkLCBkZXZlbG9wZXJzIHdpdGggbGF0ZXIgdmVyc2lvbiBvZiBWaXN1YWwgU3R1ZGlvCisgKiBjYW4gZWFzaWx5IGltcG9ydHMgVlM2IHdvcmtzcGFjZSBpbnRvIHRoZWlyIElERS4KKyAqCisgKiBUbyBzdGFydCBidWlsZGluZyBQSkxJQiBwcm9qZWN0cyB3aXRoIFZpc3VhbCBTdHVkaW8gNiBvciBsYXRlciwgb3BlbgorICogdGhlIFxhIHdvcmtzcGFjZSBmaWxlIGluIHRoZSBjb3JyZXNwb25kaW5nIFxiIFxjIGJ1aWxkIGRpcmVjdG9yeS4gWW91IGhhdmUKKyAqIHNldmVyYWwgY2hvaWNlcyBvbiB3aGljaCBcYSBkc3cgZmlsZSB0byBvcGVuOgorIFx2ZXJiYXRpbQorICAkUEpQUk9KRUNUL3BqbGliL2J1aWxkL3BqbGliLmRzdworICAkUEpQUk9KRUNUL3Bqc2lwL2J1aWxkL3Bqc2lwLmRzdworIC4uZXRjCisgXGVuZHZlcmJhdGltCisgKgorICogVGhlIGVhc2llc3Qgd2F5IGlzIHRvIG9wZW4gPHR0PnBqc2lwX2FwcHMuZHN3PC90dD4gZmlsZSBpbiBcYiBcYyAkUEpQUk9KRUNUL3Bqc2lwLWFwcHMvYnVpbGQKKyAqIGRpcmVjdG9yeSwgYW5kIGJ1aWxkIHBqc3VhIHByb2plY3Qgb3IgdGhlIHNhbXBsZXMgcHJvamVjdC4gCisgKiBIb3dldmVyIHRoaXMgd2lsbCBub3QgYnVpbGQgdGhlIGNvbXBsZXRlIHByb2plY3RzLiAKKyAqIEZvciBleGFtcGxlLCB0aGUgUEpMSUIgdGVzdCBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcyB3b3Jrc3BhY2UuIAorICogVG8gYnVpbGQgdGhlIGNvbXBsZXRlIHByb2plY3RzLCB5b3UgbXVzdAorICogb3BlbiBhbmQgYnVpbGQgZWFjaCBcYSBkc3cgZmlsZSBpbiBcYyBidWlsZCBkaXJlY3RvcnkgaW4gZWFjaAorICogc3VicHJvamVjdHMuIEZvciBleGFtcGxlLCB0byBvcGVuIHRoZSBjb21wbGV0ZSBQSkxJQiB3b3Jrc3BhY2UsIG9wZW4KKyAqIDx0dD5wamxpYi5kc3c8L3R0PiBpbiA8dHQ+JFBKUFJPSkVDVC9wamxpYi9idWlsZDwvdHQ+IGRpcmVjdG9yeS4KKyAqCisgKgorICogQHN1YnN1YnNlY3Rpb24gY29uZmlnX3NpdGVfY3JlYXRlX3ZjX3NlYyBDcmVhdGUgY29uZmlnX3NpdGUuaAorICoKKyAqIFRoZSBmaWxlIDx0dD48Yj4kUEpQUk9KRUNUL3BqbGliL2luY2x1ZGUvcGovY29uZmlnX3NpdGUuaDwvYj48L3R0PgorICogaXMgc3VwcG9zZWQgdG8gY29udGFpbiBjb25maWd1cmF0aW9uIHRoYXQgaXMgc3BlY2lmaWMgdG8geW91ciBzaXRlL3RhcmdldC4KKyAqIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiBQSkxJQiwgc28geW91IG11c3QgY3JlYXRlIGl0IHlvdXJzZWxmLiBOb3JtYWxseQorICogeW91IGp1c3QgbmVlZCB0byBjcmVhdGUgYSBibGFuayBmaWxlLgorICoKKyAqIFRoZSByZWFzb24gd2h5IGl0J3Mgbm90IGluY2x1ZGVkIGluIFBKTElCIGlzIHNvIHRoYXQgeW91IHdvdWxkIG5vdCBhY2NpZGVudGx5CisgKiBvdmVyd3JpdGUgeW91ciBzaXRlIGNvbmZpZ3VyYXRpb24uCisgKgorICogSWYgeW91IGZhaWwgdG8gZG8gdGhpcywgVmlzdWFsIEMgd2lsbCBjb21wbGFpbiB3aXRoIGVycm9yIGxpa2U6IAorICoKKyAqIDxiPiJmYXRhbCBlcnJvciBDMTA4MzogQ2Fubm90IG9wZW4gaW5jbHVkZSBmaWxlOiAncGovY29uZmlnX3NpdGUuaCc6IE5vIHN1Y2ggZmlsZSAKKyAqIG9yIGRpcmVjdG9yeSI8L2I+LgorICoKKyAqIEBzdWJzdWJzZWN0aW9uIGJ1aWxkX3ZjX3N1YnN1YnNlYyBCdWlsZCB0aGUgUHJvamVjdHMKKyAqCisgKiBKdXN0IGhpdCB0aGUgYnVpbGQgYnV0dG9uIQorICoKKyAqCisgKiBAc3Vic2VjdGlvbiBidWlsZF9zeXNfaW5zdGFsbF91bml4X3NlYyBNYWtlIFN5c3RlbQorICoKKyAqIEZvciBvdGhlciB0YXJnZXRzLCBQSkxJQiBwcm92aWRlcyBhIHJhdGhlciBjb21wcmVoZW5zaXZlIGJ1aWxkIHN5c3RlbQorICogdGhhdCB1c2VzIEdOVSBcYSBtYWtlIChhbmQgb25seSBHTlUgXGEgbWFrZSB3aWxsIHdvcmspLiAKKyAqIEN1cnJlbnRseSwgdGhlIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyBidWlsZGluZyAqIFBKTElCIGZvciB0aGVzZSB0YXJnZXRzOgorICogIC0gaTM4Ni9XaW4zMi9taW5ndworICogIC0gaTM4Ni9MaW51eAorICogIC0gaTM4Ni9MaW51eCAoa2VybmVsKQorICogIC0gYWxwaGEvbGludXgKKyAqICAtIHNwYXJjL1N1bk9TCisgKiAgLSBldGMuLgorICoKKyAqCisgKiBAc3Vic3Vic2VjdGlvbiBidWlsZF9yZXFfc2VjIFJlcXVpcmVtZW50cworICoKKyAqIEluIG9yZGVyIHRvIHVzZSB0aGUgXGMgbWFrZSBiYXNlZCBidWlsZCBzeXN0ZW0sIHlvdSBNVVNUIGhhdmU6CisgKgorICogIC0gPGI+R05VIG1ha2U8L2I+CisgKlxuCisgKiAgICBUaGUgTWFrZWZpbGVzIGhlYXZpbHkgdXRpbGl6ZSBHTlUgbWFrZSBjb21tYW5kcyB3aGljaCBtb3N0IGxpa2VseQorICogICAgYXJlIG5vdCBhdmFpbGFibGUgaW4gb3RoZXIgXGMgbWFrZSBzeXN0ZW0uCisgKiAgLSA8Yj5iYXNoPC9iPiBzaGVsbCBpcyByZWNvbW1lbmRlZC4KKyAqXG4KKyAqICAgIFNwZWNpZmljbHksIHRoZXJlIGlzIGEgY29tbWFuZCA8dHQ+ImVjaG8gLW4iPC90dD4gd2hpY2ggbWF5IG5vdCB3b3JrCisgKiAgICBpbiBvdGhlciBzaGVsbHMuIFRoaXMgY29tbWFuZCBpcyB1c2VkIHdoZW4gZ2VuZXJhdGluZyBkZXBlbmRlbmNpZXMKKyAqICAgICg8dHQ+bWFrZSBkZXA8L3R0PikgYW5kIGl0J3MgbG9jYXRlZCBpbiAKKyAqICAgIDx0dD4kUEpQUk9KRUNUL2J1aWxkL3J1bGVzLm1hazwvdHQ+LgorICogIC0gPGI+YXI8L2I+LCA8Yj5yYW5saWI8L2I+IGZyb20gR05VIGJpbnV0aWxzCisgKlxuCisgKiAgICBJbiB5b3VyIHN5c3RlbSBoYXMgZGlmZmVyZW50IDx0dD5hcjwvdHQ+IG9yIDx0dD5yYW5saWI8L3R0PiAoZS5nLiB0aGV5CisgKiAgICBtYXkgaGF2ZSBiZWVuIGluc3RhbGxlZCBhcyA8dHQ+Z2FyPC90dD4gYW5kIDx0dD5ncmFubGliPC90dD4pLCB0aGVuCisgKiAgICBlaXRoZXIgeW91IGNyZWF0ZSB0aGUgcmVsZXZhbnQgc3ltYm9saWMgbGlua3MsIDxiPm9yPC9iPiBtb2RpZnkKKyAqICAgIDx0dD4kUEpQUk9KRUNUL2J1aWxkL2NjLWdjYy5tYWs8L3R0PiBhbmQgcmVuYW1lIDx0dD5hcjwvdHQ+IGFuZAorICogICAgPHR0PnJhbmxpYjwvdHQ+IHRvIHRoZSBhcHByb3ByaWF0ZSBuYW1lcy4KKyAqICAtIDxiPmdjYzwvYj4gdG8gZ2VuZXJhdGUgZGVwZW5kZW5jeS4KKyAqXG4KKyAqICAgIEN1cnJlbnRseSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgPHR0PiJnY2MgLU1NIjwvdHQ+IHRvIGdlbmVyYXRlIGJ1aWxkCisgKiAgICBkZXBlbmRlbmNpZXMuIElmIDx0dD5nY2M8L3R0PiBpcyBub3QgZGVzaXJlZCB0byBnZW5lcmF0ZSBkZXBlbmRlbmN5LAorICogICAgdGhlbiBlaXRoZXIgeW91IGRvbid0IHJ1biA8dHQ+bWFrZSBkZXA8L3R0PiwgPGI+b3I8L2I+IGVkaXQKKyAqICAgIDx0dD4kUEpQUk9KRUNUL2J1aWxkL3J1bGVzLm1hazwvdHQ+IHRvIGNhbGN1bGF0ZSBkZXBlbmRlbmN5IHVzaW5nCisgKiAgICB5b3VyIHByZWZlcmVkIG1ldGhvZC4gKEFuZCBsZXQgbWUga25vdyB3aGVuIHlvdSBkbyBzbyBzbyB0aGF0IEkgY2FuCisgKiAgICB1cGRhdGUgdGhlIGZpbGUuIDopICkKKyAqCisgKiBAc3Vic3Vic2VjdGlvbiBidWlsZF9vdmVydmlld19zZWMgQnVpbGRpbmcgdGhlIFByb2plY3QKKyAqCisgKiBHZW5lcmFsbHksIHN0ZXBzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSBQSkxJQiBhcmU6CisgKgorIFx2ZXJiYXRpbQorICAgJCBjZCAvaG9tZS91c2VyL3BqcHJvamVjdAorICAgJCAuL2NvbmZpZ3VyZQorICAgJCB0b3VjaCBwamxpYi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmgKKyAgICQgbWFrZSBkZXAKKyAgICQgbWFrZQorIFxlbmR2ZXJiYXRpbQorICoKKyAqIFRoZSBhYm92ZSBwcm9jZXNzIHdpbGwgYnVpbGQgYWxsIHN0YXRpYyBsaWJyYXJpZXMgYW5kIGFsbCBhcHBsaWNhdGlvbnMuCisgKgorICogXG5vdGUgdGhlIDx0dD5jb25maWd1cmU8L3R0PiBzY3JpcHQgaXMgbm90IGEgcHJvcGVyIGF1dG9jb25mIHNjcmlwdCwKKyAqIGJ1dCByYXRoZXIgYSBzaW1wbGUgc2hlbGwgc2NyaXB0IHRvIGRldGVjdCBjdXJyZW50IGhvc3QuIFRoaXMgc2NyaXB0CisgKiBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCBjcm9zcy1jb21waWxhdGlvbi4KKyAqCisgKiBcbm90ZSBGb3IgTGludXgga2VybmVsIHRhcmdldCwgdGhlcmUgYXJlIGFkZGl0aW9uYWwgc3RlcHMgcmVxdWlyZWQsIHdoaWNoCisgKiB3aWxsIGJlIGV4cGxhaW5lZCBpbiBzZWN0aW9uIFxyZWYgbGludXhfa2Vybl90YXJnZXRfc3Vic2VjLgorICoKKyAqIEBzdWJzdWJzZWN0aW9uIGJ1aWxkX21ha19zZWMgQ3Jvc3MgQ29tcGlsYXRpb24KKyAqIAorICogRm9yIGNyb3NzIGNvbXBpbGF0aW9uLCB5b3Ugd2lsbCBuZWVkIHRvIGVkaXQgdGhlIFxjIGJ1aWxkLm1hayBmaWxlIGluIAorICogXGMgJFBKUFJPSkVDVCByb290IGRpcmVjdG9yeSBtYW51YWxseS4gUGxlYXNlIHNlZSA8Yj5SRUFETUUtY29uZmlndXJlPC9iPiBmaWxlCisgKiBpbiB0aGUgcm9vdCBkaXJlY3RvcnkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKgorICogRm9yIExpbnV4IGtlcm5lbCB0YXJnZXQsIHlvdSBhcmUgYWxzbyByZXF1aXJlZCB0byBkZWNsYXJlIHRoZSBmb2xsb3dpbmcKKyAqIHZhcmlhYmxlcyBpbiB0aGlzIGZpbGU6CisgKgktIFxjIEtFUk5FTF9ESVI6IGZ1bGwgcGF0aCBvZiBrZXJuZWwgc291cmNlIHRyZWUuCisgKgktIFxjIEtFUk5FTF9BUkNIOiBrZXJuZWwgQVJDSCBvcHRpb25zIChlLmcuICJBUkNIPXVtIiksIG9yIGxlYXZlIGJsYW5rCisgKiAJICAgICBmb3IgZGVmYXVsdC4KKyAqCS0gXGMgUEpQUk9KRUNUX0RJUjogZnVsbCBwYXRoIG9mIFBKUFJPSkVDVCBzb3VyY2UgdHJlZS4KKyAqCisgKiBBcGFydCBmcm9tIHRoZXNlLCB0aGVyZSBhcmUgYWxzbyBhZGRpdGlvbmFsIHN0ZXBzIHJlcXVpcmVkIHRvIGJ1aWxkCisgKiBMaW51eCBrZXJuZWwgdGFyZ2V0LCB3aGljaCB3aWxsIGJlIGV4cGxhaW5lZCBpbiBccmVmIGxpbnV4X2tlcm5fdGFyZ2V0X3N1YnNlYy4KKyAqCisgKiBAc3Vic3Vic2VjdGlvbiBidWlsZF9kaXJfc2VjIEZpbGVzIGluICJidWlsZCIgRGlyZWN0b3J5CisgKgorICogVGhlIDx0dD4qLm1hazwvdHQ+IGZpbGVzIGluIFxjICRQSlBST0pFQ1QvYnVpbGQgZGlyZWN0b3J5IGFyZSB1c2VkIHRvIHNwZWNpZnkKKyAqIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGNvbXBpbGVyLCB0YXJnZXQgbWFjaGluZSB0YXJnZXQgCisgKiBvcGVyYXRpbmcgc3lzdGVtLCBhbmQgaG9zdCBvcHRpb25zLiBUaGVzZSBmaWxlcyB3aWxsIGJlIGV4ZWN1dGVkCisgKiAoaW5jbHVkZWQpIGJ5IFxhIG1ha2UgZHVyaW5nIGJ1aWxkaW5nIHByb2Nlc3MsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzCisgKiBzcGVjaWZpZWQgaW4gPGI+JFBKUFJPSkVDVC9idWlsZC5tYWs8L2I+IGZpbGUuCisgKgorICogTm9ybWFsbHkgeW91IGRvbid0IG5lZWQgdG8gZWRpdCB0aGVzZSBmaWxlcywgZXhjZXB0IHdoZW4geW91J3JlIHBvcnRpbmcKKyAqIFBKTElCIHRvIG5ldyB0YXJnZXQuCisgKgorICogQmVsb3cgYXJlIHRoZSBkZXNjcmlwdGlvbiBvZiBzb21lIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5OgorICoKKyAqICAtIDx0dD5ydWxlcy5tYWs8L3R0PjogY29udGFpbnMgZ2VuZXJpYyBydWxlcyBhbHdheXMgaW5jbHVkZWQgZHVyaW5nIG1ha2UuCisgKiAgLSA8dHQ+Y2MtZ2NjLm1hazwvdHQ+OiBydWxlcyB3aGVuIGdjYyBpcyB1c2VkIGZvciBjb21waWxlci4KKyAqICAtIDx0dD5jYy12Yy5tYWs8L3R0PjogcnVsZXMgd2hlbiBNU1ZDIGNvbXBpbGVyIGlzIHVzZWQuCisgKiAgLSA8dHQ+aG9zdC1taW5ndy5tYWs8L3R0PjogcnVsZXMgZm9yIGJ1aWxkaW5nIGluIG1pbmd3IGhvc3QuCisgKiAgLSA8dHQ+aG9zdC11bml4Lm1hazwvdHQ+OiBydWxlcyBmb3IgYnVpbGRpbmcgaW4gVW5peC9Qb3NpeCBob3N0LgorICogIC0gPHR0Pmhvc3Qtd2luMzIubWFrPC90dD46IHJ1bGVzIGZvciBidWlsZGluZyBpbiBXaW4zMiBjb21tYW5kIGNvbnNvbGUKKyAqICAgIChvbmx5IHZhbGlkIHdoZW4gVkMgaXMgdXNlZCkuCisgKiAgLSA8dHQ+bS1pMzg2Lm1hazwvdHQ+OiBydWxlcyB3aGVuIHRhcmdldCBtYWNoaW5lIGlzIGFuIGkzODYgcHJvY2Vzc29yLgorICogIC0gPHR0Pm0tbTY4ay5tYWs8L3R0PjogcnVsZXMgd2hlbiB0YXJnZXQgbWFjaGluZSBpcyBhbiBtNjhrIHByb2Nlc3Nvci4KKyAqICAtIDx0dD5vcy1saW51eC5tYWs8L3R0PjogcnVsZXMgd2hlbiB0YXJnZXQgT1MgaXMgTGludXguCisgKiAgLSA8dHQ+b3MtbGludXgta2VybmVsLm1hazwvdHQ+OiBydWxlcyB3aGVuIFBKTElCIGlzIHRvIGJlIGJ1aWxkIGFzCisgKiAgICBwYXJ0IG9mIExpbnV4IGtlcm5lbC4KKyAqICAtIDx0dD5vcy13aW4zMi5tYWs8L3R0PjogcnVsZXMgd2hlbiB0YXJnZXQgT1MgaXMgV2luMzIuCisgKgorICoKKyAqIEBzdWJzdWJzZWN0aW9uIGNvbmZpZ19zaXRlX2NyZWF0ZV9zZWMgQ3JlYXRlIGNvbmZpZ19zaXRlLmgKKyAqCisgKiBUaGUgZmlsZSA8dHQ+PGI+JFBKUFJPSkVDVC9wamxpYi9pbmNsdWRlL3BqL2NvbmZpZ19zaXRlLmg8L2I+PC90dD4KKyAqIGlzIHN1cHBvc2VkIHRvIGNvbnRhaW4gY29uZmlndXJhdGlvbiB0aGF0IGlzIHNwZWNpZmljIHRvIHlvdXIgc2l0ZS90YXJnZXQuCisgKiBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgUEpMSUIsIHNvIHlvdSBtdXN0IGNyZWF0ZSBpdCB5b3Vyc2VsZi4KKyAqCisgKiBUaGUgcmVhc29uIHdoeSBpdCdzIG5vdCBpbmNsdWRlZCBpbiBQSkxJQiBpcyBzbyB0aGF0IHlvdSB3b3VsZCBub3QgYWNjaWRlbnRseQorICogb3ZlcndyaXRlIHlvdXIgc2l0ZSBjb25maWd1cmF0aW9uLgorICoKKyAqCisgKiBAc3Vic3Vic2VjdGlvbiBpbnZva2luZ19tYWtlX3NlYyBJbnZva2luZyBtYWtlCisgKgorICogTm9ybWFsbHksIFxhIG1ha2UgaXMgaW52b2tlZCBpbiBcYyBidWlsZCBkaXJlY3RvcnkgdW5kZXIgZWFjaCBwcm9qZWN0LgorICogRm9yIGV4YW1wbGUsIHRvIGJ1aWxkIFBKTElCLCB5b3Ugd291bGQgaW52b2tlIFxhIG1ha2UgaW4KKyAqIFxjICRQSlBST0pFQ1QvcGpsaWIvYnVpbGQgZGlyZWN0b3J5IGxpa2UgYmVsb3c6CisgKgorIFx2ZXJiYXRpbQorICAgJCBjZCBwamxpYi9idWlsZAorICAgJCBtYWtlCisgXGVuZHZlcmJhdGltCisgKgorICogQWx0ZXJuYXRpdmVseSB5b3UgbWF5IGludm9rZSA8dHQ+bWFrZTwvdHQ+IGluIDx0dD4kUEpQUk9KRUNUPC90dD4gCisgKiBkaXJlY3RvcnksIHRvIGJ1aWxkIGFsbCBwcm9qZWN0cyB1bmRlciB0aGF0IGRpcmVjdG9yeSAoZS5nLiAKKyAqIFBKTElCLCBQSlNJUCwgZXRjLikuCisgKgorICoKKyAqIEBzdWJzdWJzZWN0aW9uIGxpbnV4X2tlcm5fdGFyZ2V0X3N1YnNlYyBMaW51eCBLZXJuZWwgVGFyZ2V0CisgKgorICogXG5vdGUKKyAqIDxiPkJVSUxESU5HIEFQUExJQ0FUSU9OUyBJTiBMSU5VWCBLRVJORUwgTU9ERSBJUyBBIFZFUlkgREFOR0VST1VTIEJVU0lORVNTLgorICogWU9VIE1BWSBDUkFTSCBUSEUgV0hPTEUgT0YgWU9VUiBTWVNURU0sIENPUlJVUFQgWU9VUiBIQVJESVNLLCBFVEMuIFBKTElCCisgKiBLRVJORUwgTU9EVUxFUyBBUkUgU1RJTEwgSU4gRVhQRVJJTUVOVEFMIFBIQVNFLiBETyBOT1QgUlVOIElUIElOIFBST0RVQ1RJT04KKyAqIFNZU1RFTVMgT1IgT1RIRVIgU1lTVEVNUyBXSEVSRSBSSVNLIE9GIExPU1MgT0YgREFUQSBJUyBOT1QgQUNDRVBUQUJMRS4KKyAqIFlPVSBIQVZFIEJFRU4gV0FSTkVELjwvYj4KKyAqCisgKiBcbm90ZQorICogPGI+VXNlciBNb2RlIExpbnV4IChVTUwpPC9iPiBwcm92aWRlcyBleGNlbGxlbnQgd2F5IHRvIGV4cGVyaW1lbnQgd2l0aCBMaW51eAorICoga2VybmVsIHdpdGhvdXQgcmlza2luZyB0aGUgc3RhYmlsaXR5IG9mIHRoZSBob3N0IHN5c3RlbS4gU2VlCisgKiBodHRwOi8vdXNlci1tb2RlLWxpbnV4LnNvdXJjZWZvcmdlLm5ldCBmb3IgZGV0YWlscy4KKyAqCisgKiBcbm90ZQorICogSSBvbmx5IHVzZSA8Yj5VTUw8L2I+IHRvIGV4cGVyaW1lbnQgd2l0aCBQSkxJQiBrZXJuZWwgbW9kdWxlcy4KKyAqIDxiPkkgd291bGRuJ3QgYmUgc28gZm9vbGlzaCB0byB1c2UgbXkgaG9zdCBMaW51eCBtYWNoaW5lIHRvIGV4cGVyaW1lbnQKKyAqIHdpdGggdGhpcy48L2I+IAorICoKKyAqIFxub3RlCisgKiBZb3UgaGF2ZSBiZWVuIHdhcm5lZC4KKyAqCisgKiBGb3IgYnVpbGRpbmcgUEpMSUIgZm9yIExpbnV4IGtlcm5lbCB0YXJnZXQsIHRoZXJlIGFyZSBhZGRpdGlvbmFsIHN0ZXBzIHJlcXVpcmVkLgorICogSW4gZ2VuZXJhbCwgdGhlIGFkZGl0aW9uYWwgdGFza3MgYXJlOgorICoJLSBEZWNsYXJlIHNvbWUgbW9yZSB2YXJpYWJsZXMgaW4gPGI+PHR0PmJ1aWxkLm1hazwvdHQ+PC9iPiBmaWxlICh0aGlzCisgKiAgICAgICAgaGFzIGJlZW4gZXhwbGFpbmVkIGluIFxyZWYgYnVpbGRfbWFrX3NlYyBhYm92ZSkuCisgKiAgICAgIC0gUGVyZm9ybSB0aGVzZSB0d28gc21hbGwgbW9kaWZpY2F0aW9ucyBpbiBrZXJuZWwgc291cmNlIHRyZWUuCisgKgorICogVGhlcmUgYXJlIHR3byBzbWFsbCBtb2RpZmljYXRpb24gbmVlZCB0byBiZSBhcHBsaWVkIHRvIHRoZSBrZXJuZWwgdHJlZS4KKyAqCisgKiA8Yj4xLiBFZGl0IDx0dD5NYWtlZmlsZTwvdHQ+IGluIGtlcm5lbCByb290IHNvdXJjZSB0cmVlLjwvYj4KKyAqCisgKiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lcyBhdCB0aGUgZW5kIG9mIHRoZSA8dHQ+TWFrZWZpbGU8L3R0PiBpbiB5b3VyIAorICogPHR0PiRLRVJORUxfU1JDPC90dD4gZGlyOgorIFx2ZXJiYXRpbQorc2NyaXB0OgorICAgICAgICQoU0NSSVBUKQorIFxlbmR2ZXJiYXRpbQorICoKKyAqIFxub3RlIFJlbWVtYmVyIHRvIHJlcGxhY2Ugc3BhY2VzIHdpdGggPGI+dGFiPC9iPiBpbiB0aGUgTWFrZWZpbGUuCisgKgorICogVGhlIG1vZGlmaWNhdGlvbiBhYm92ZSBpcyBuZWVkZWQgdG8gY2FwdHVyZSBrZXJuZWwncyBcYyAkQ0ZMQUdTIGFuZCAKKyAqIFxjICRDRkxBR1NfTU9EVUxFIHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgUEpMSUIncyBjb21waWxhdGlvbi4KKyAqCisgKiA8Yj4yLiBBZGQgQWRkaXRpb25hbCBFeHBvcnRzLjwvYj4KKyAqCisgKiBXZSBuZWVkIHRoZSBrZXJuZWwgdG8gZXhwb3J0IHNvbWUgbW9yZSBzeW1ib2xzIGZvciBvdXIgdXNlLiBTbyB3ZSBkZWNsYXJlCisgKiB0aGUgYWRkaXRpb25hbCBzeW1ib2xzIHRvIGJlIGV4cG9ydGVkIGluIDx0dD5leHRyYS1leHBvcnRzLmM8L3R0PiBmaWxlLCBhbmQgYWRkCisgKiBhIHRoaXMgZmlsZSB0byBiZSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWw6CisgKgorICoJLSBDb3B5IHRoZSBmaWxlIDx0dD5leHRyYS1leHBvcnRzLmM8L3R0PiBmcm9tIDx0dD5wamxpYi9zcmMvcGo8L3R0PiAKKyAqCSAgZGlyZWN0b3J5IHRvIDx0dD4kS0VSTkVMX1NSQy9rZXJuZWwvPC90dD4gZGlyZWN0b3J5LgorICoJLSBFZGl0IDx0dD5NYWtlZmlsZTwvdHQ+IGluIHRoYXQgZGlyZWN0b3J5LCBhbmQgYWRkIHRoaXMgbGluZQorICogICAgICAgIHNvbWV3aGVyZSBhZnRlciB0aGUgZGVjbGFyYXRpb24gb2YgdGhhdCB2YXJpYWJsZToKKyBcdmVyYmF0aW0KK29iai15ICAgKz0gZXh0cmEtZXhwb3J0cy5vCisgXGVuZHZlcmJhdGltCisgKgorICogVG8gaWxsdXN0cmF0ZSB3aGF0IGhhdmUgYmVlbiBkb25lIGluIHlvdXIga2VybmVsIHNvdXJjZSB0cmVlLCBiZWxvdworICogaXMgc2NyZWVuc2hvdCBvZiBteSBrZXJuZWwgc291cmNlIHRyZWUgX2FmdGVyXyB0aGUgbW9kaWZpY2F0aW9uLgorICoKKyBcdmVyYmF0aW0KK1tyb290QHZwYy1saW51eCBsaW51eC0yLjYuN10jIHB3ZAorL3Vzci9zcmMvbGludXgtMi42LjcKK1tyb290QHZwYy1saW51eCBsaW51eC0yLjYuN10jIAorW3Jvb3RAdnBjLWxpbnV4IGxpbnV4LTIuNi43XSMgCitbcm9vdEB2cGMtbGludXggbGludXgtMi42LjddIyB0YWlsIE1ha2VmaWxlIAorCitlbmRpZiAgICMgc2tpcC1tYWtlZmlsZQorCitGT1JDRToKKworLlBIT05ZOiBzY3JpcHQKKworc2NyaXB0OgorICAgICAgICAkKFNDUklQVCkKKworW3Jvb3RAdnBjLWxpbnV4IGxpbnV4LTIuNi43XSMgCitbcm9vdEB2cGMtbGludXggbGludXgtMi42LjddIyAKK1tyb290QHZwYy1saW51eCBsaW51eC0yLjYuN10jIGhlYWQga2VybmVsL2V4dHJhLWV4cG9ydHMuYyAKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPgorCitFWFBPUlRfU1lNQk9MKHN5c19zZWxlY3QpOworCitFWFBPUlRfU1lNQk9MKHN5c19lcG9sbF9jcmVhdGUpOworRVhQT1JUX1NZTUJPTChzeXNfZXBvbGxfY3RsKTsKK0VYUE9SVF9TWU1CT0woc3lzX2Vwb2xsX3dhaXQpOworCitFWFBPUlRfU1lNQk9MKHN5c19zb2NrZXQpOworW3Jvb3RAdnBjLWxpbnV4IGxpbnV4LTIuNi43XSMgCitbcm9vdEB2cGMtbGludXggbGludXgtMi42LjddIyAKK1tyb290QHZwYy1saW51eCBsaW51eC0yLjYuN10jIGhlYWQgLTE1IGtlcm5lbC9NYWtlZmlsZSAKKyMKKyMgTWFrZWZpbGUgZm9yIHRoZSBsaW51eCBrZXJuZWwuCisjCisKK29iai15ICAgICA9IHNjaGVkLm8gZm9yay5vIGV4ZWNfZG9tYWluLm8gcGFuaWMubyBwcmludGsubyBwcm9maWxlLm8gXAorICAgICAgICAgICAgZXhpdC5vIGl0aW1lci5vIHRpbWUubyBzb2Z0aXJxLm8gcmVzb3VyY2UubyBcCisgICAgICAgICAgICBzeXNjdGwubyBjYXBhYmlsaXR5Lm8gcHRyYWNlLm8gdGltZXIubyB1c2VyLm8gXAorICAgICAgICAgICAgc2lnbmFsLm8gc3lzLm8ga21vZC5vIHdvcmtxdWV1ZS5vIHBpZC5vIFwKKyAgICAgICAgICAgIHJjdXBkYXRlLm8gaW50ZXJtb2R1bGUubyBleHRhYmxlLm8gcGFyYW1zLm8gcG9zaXgtdGltZXJzLm8gXAorICAgICAgICAgICAga3RocmVhZC5vCisKK29iai15ICAgKz0gIGV4dHJhLWV4cG9ydHMubworCitvYmotJChDT05GSUdfRlVURVgpICs9IGZ1dGV4Lm8KK29iai0kKENPTkZJR19HRU5FUklDX0lTQV9ETUEpICs9IGRtYS5vCitbcm9vdEB2cGMtbGludXggbGludXgtMi42LjddIyAKKworIFxlbmR2ZXJiYXRpbQorICoKKyAqIFRoZW4geW91IG11c3QgcmVidWlsZCB0aGUga2VybmVsLgorICogSWYgeW91IGZhaWwgdG8gZG8gdGhpcywgeW91IHdvbid0IGJlIGFibGUgdG8gPGI+aW5zbW9kPC9iPiBwamxpYi4KKyAqCisgKiBcbm90ZSBZb3Ugd2lsbCBzZWUgYSBsb3RzIG9mIHdhcm5pbmcgbWVzc2FnZXMgZHVyaW5nIHBqbGliLXRlc3QgY29tcGlsYXRpb24uCisgKiBUaGUgd2FybmluZyBtZXNzYWdlcyBjb21wbGFpbiBhYm91dCB1bnJlc29sdmVkIHN5bWJvbHMgd2hpY2ggYXJlIGRlZmluZWQKKyAqIGluIHBqbGliIG1vZHVsZS4gWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIHdhcm5pbmdzLiBIb3dldmVyLCB5b3UgY2FuIG5vdAorICogaWdub3JlIHdhcm5pbmdzIGFib3V0IG5vbi1wamxpYiB1bnJlc29sdmVkIHN5bWJvbHMuCisgKgorICogCisgKiBAc3Vic2VjdGlvbiBtYWtlZmlsZV9leHBsYWluZWRfc2VjIE1ha2VmaWxlIEV4cGxhaW5lZAorICoKKyAqIFRoZSBcYSBNYWtlZmlsZSBmb3IgZWFjaCBwcm9qZWN0IChlLmcuIFBKTElCLCBQSlNJUCwgZXRjKSBzaG91bGQgYmUKKyAqIHZlcnkgc2ltaWxhciBpbiB0aGUgY29udGVudHMuIFRoZSBNYWtlZmlsZSBpcyBsb2NhdGVkIHVuZGVyIFxjIGJ1aWxkCisgKiBkaXJlY3RvcnkgaW4gZWFjaCBwcm9qZWN0IHN1YmRpci4KKyAqCisgKiBAc3Vic3Vic2VjdGlvbiBwamxpYl9tYWtlZmlsZV9zdWJzZWMgUEpMSUIgTWFrZWZpbGUuCisgKgorICogQmVsb3cgaXMgUEpMSUIncyBNYWtlZmlsZToKKyAqCisgKiBcaW5jbHVkZSBidWlsZC9NYWtlZmlsZQorICoKKyAqIEBzdWJzdWJzZWN0aW9uIHBqbGliX29zX21ha2VmaWxlX3N1YnNlYyBQSkxJQiBvcy1saW51eC5tYWsuCisgKgorICogQmVsb3cgaXMgZmlsZSA8dHQ+PGI+b3MtbGludXgubWFrPC9iPjwvdHQ+IGZpbGUgaW4gCisgKiA8dHQ+JFBKUFJPSkVDVC9wamxpYi9idWlsZDwvdHQ+IGRpcmVjdG9yeSwKKyAqIHdoaWNoIGlzIE9TIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgTGludXggdGFyZ2V0IHRoYXQgaXMgc3BlY2lmaWMgCisgKiBmb3IgUEpMSUIgcHJvamVjdC4gRm9yIFxiIGdsb2JhbCBPUyBzcGVjaWZpYyBjb25maWd1cmF0aW9uLCBwbGVhc2Ugc2VlCisgKiA8dHQ+JFBKUFJPSkVDVC9idWlsZC9vcy0qLm1hazwvdHQ+LgorICoKKyAqIFxpbmNsdWRlIGJ1aWxkL29zLWxpbnV4Lm1haworICoKKyAqLworCisKKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gKi8KKy8qCisgICAgICAgICBQT1JUSU5HIFBKTElCCisgKi8KKworCisKKy8qKgorICogQHBhZ2UgcG9ydGluZ19wamxpYl9wZyBQb3J0aW5nIFBKTElCCisgKgorICogXG5vdGUKKyAqIDxiPlNpbmNlIHZlcnNpb24gMC41LjgsIFBKTElCIGJ1aWxkIHN5c3RlbSBpcyBub3cgYmFzZWQgb24gYXV0b2NvbmYsIHNvCisgKiBtb3N0IG9mIHRoZSB0aW1lIHdlIHNob3VsZG4ndCBuZWVkIHRvIGFwcGx5IHRoZSB0d2Vha2luZ3MgYmVsb3cgdG8gZ2V0CisgKiBQSkxJQiB3b3JraW5nIG9uIGEgbmV3IHBsYXRmb3JtLiBIb3dldmVyLCBzaW5jZSB0aGUgYXV0b2NvbmYgYnVpbGQgc3lzdGVtCisgKiBzdGlsbCB1c2VzIHRoZSBvbGQgTWFrZWZpbGUgYnVpbGQgc3lzdGVtLCB0aGUgaW5mb3JtYXRpb24gYmVsb3cgbWF5IHN0aWxsCisgKiBiZSB1c2VmdWwgZm9yIHJlZmVyZW5jZS4KKyAqIDwvYj4KKyAqCisgKiBAc2VjdGlvbiBuZXdfYXJjaF9zZWMgUG9ydGluZyB0byBOZXcgQ1BVIEFyY2hpdGVjdHVyZQorICoKKyAqIEJlbG93IGlzIHN0ZXAtYnktc3RlcCBndWlkZSB0byBhZGQgc3VwcG9ydCBmb3IgbmV3IENQVSBhcmNoaXRlY3R1cmUuCisgKiBUaGlzIHNhbXBsZSBpcyBiYXNlZCBvbiBwb3J0aW5nIHRvIEFscGhhIGFyY2hpdGVjdHVyZTsgaG93ZXZlciBzdGVwcyBmb3IgCisgKiBwb3J0aW5nIHRvIG90aGVyIENQVSBhcmNoaXRlY3R1cmVzIHNob3VsZCBiZSBwcmV0dHkgc2ltaWxhci4gCisgKgorICogQWxzbyBub3RlIHRoYXQgaW4gdGhpcyBleGFtcGxlLCB0aGUgb3BlcmF0aW5nIHN5c3RlbSB1c2VkIGlzIDxiPkxpbnV4PC9iPi4KKyAqIFNob3VsZCB5b3Ugd2lzaCB0byBhZGQgc3VwcG9ydCBmb3IgbmV3IG9wZXJhdGluZyBzeXN0ZW0sIHRoZW4gZm9sbG93CisgKiB0aGUgbmV4dCBzZWN0aW9uIFxyZWYgcG9ydGluZ19vc19zZWMuCisgKgorICogU3RlcC1ieS1zdGVwIGd1aWRlIHRvIHBvcnQgdG8gbmV3IENQVSBhcmNoaXRlY3R1cmU6CisgKiAgLSBkZWNpZGUgdGhlIG5hbWUgZm9yIHRoZSBuZXcgYXJjaGl0ZWN0dXJlLiBJbiB0aGlzIGNhc2UsIHdlIGNob29zZQorICogICAgPHR0PjxiPmFscGhhPC9iPjwvdHQ+LgorICogIC0gZWRpdCBmaWxlIDx0dD4kUEpQUk9KRUNUL2J1aWxkLm1hazwvdHQ+LCBhbmQgYWRkIG5ldyBzZWN0aW9uIGZvcgorICogICAgdGhlIG5ldyB0YXJnZXQ6CisgKiAgICA8cHJlPgorICogICAgICAjCisgKiAgICAgICMgTGludXggYWxwaGEsIGdjYworICogICAgICAjCisgKiAgICAgIGV4cG9ydCBNQUNISU5FX05BTUUgOj0gPGI+YWxwaGE8L2I+CisgKiAgICAgIGV4cG9ydCBPU19OQU1FIDo9IGxpbnV4CisgKiAgICAgIGV4cG9ydCBDQ19OQU1FIDo9IGdjYworICogICAgICBleHBvcnQgSE9TVF9OQU1FIDo9IHVuaXgKKyAqICAgIDwvcHJlPgorICoKKyAqICAtIGNyZWF0ZSBhIG5ldyBmaWxlIDx0dD4kUEpQUk9KRUNUL2J1aWxkLzxiPm0tYWxwaGE8L2I+Lm1hazwvdHQ+LgorICogICAgQWx0ZXJuYXRpdmVseSBjcmVhdGUgYSBjb3B5IGZyb20gb3RoZXIgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeS4KKyAqICAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgd2lsbCBsb29rIHNvbWV0aGluZyBsaWtlOgorICogICAgPHByZT4KKyAqICAgICAgZXhwb3J0IE1fQ0ZMQUdTIDo9ICQoQ0NfREVGKTxiPlBKX01fQUxQSEE9MTwvYj4KKyAqICAgICAgZXhwb3J0IE1fQ1hYRkxBR1MgOj0KKyAqICAgICAgZXhwb3J0IE1fTERGTEFHUyA6PQorICogICAgICBleHBvcnQgTV9TT1VSQ0VTIDo9CisgKiAgICA8L3ByZT4KKyAqICAtIGNyZWF0ZSBhIG5ldyBmaWxlIDx0dD4kUEpQUk9KRUNUL3BqbGliL2luY2x1ZGUvcGovY29tcGF0LzxiPm1fYWxwaGEuaDwvYj48L3R0Pi4KKyAqICAgIEFsdGVybmF0aXZlbHkgY3JlYXRlIGEgY29weSBmcm9tIG90aGVyIGhlYWRlciBmaWxlIGluIHRoaXMgZGlyZWN0b3J5LgorICogICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3aWxsIGxvb2sgc29tZXRoaW5nIGxpa2U6CisgKiAgICA8cHJlPgorICogICAgICAjZGVmaW5lIFBKX0hBU19QRU5USVVNICAgICAgICAgIDAKKyAqICAgICAgI2RlZmluZSBQSl9JU19MSVRUTEVfRU5ESUFOICAgICAxCisgKiAgICAgICNkZWZpbmUgUEpfSVNfQklHX0VORElBTiAgICAgICAgMAorICogICAgPC9wcmU+CisgKiAgLSBlZGl0IDx0dD5wamxpYi9pbmNsdWRlL3BqLzxiPmNvbmZpZy5oPC9iPjwvdHQ+LiBBZGQgbmV3IHByb2Nlc3NvcgorICogICAgY29uZmlndXJhdGlvbiBpbiB0aGlzIGhlYWRlciBmaWxlLCBsaWtlIGZvbGxvd3M6CisgKiAgICA8cHJlPgorICogICAgICAuLi4KKyAqICAgICAgI2VsaWYgZGVmaW5lZCAoUEpfTV9BTFBIQSkgJiYgUEpfTV9BTFBIQSAhPSAwCisgKiAgICAgICMgICBpbmNsdWRlIDxwai9jb21wYXQvbV9hbHBoYS5oPgorICogICAgICAuLi4KKyAqICAgIDwvcHJlPgorICogIC0gZG9uZS4gQnVpbGQgUEpMSUIgd2l0aDoKKyAqICAgIDxwcmU+CisgKiAgICAgICQgY2QgJFBKUFJPSkVDVC9wamxpYi9idWlsZAorICogICAgICAkIG1ha2UgZGVwCisgKiAgICAgICQgbWFrZSBjbGVhbgorICogICAgICAkIG1ha2UKKyAqICAgIDwvcHJlPgorICoKKyAqIEBzZWN0aW9uIHBvcnRpbmdfb3Nfc2VjIFBvcnRpbmcgdG8gTmV3IE9wZXJhdGluZyBTeXN0ZW0gVGFyZ2V0CisgKgorICogVGhpcyBzZWN0aW9uIHdpbGwgdHJ5IHRvIGdpdmUgeW91IHJvdWdoIGd1aWRlbGluZSBvbiBob3cgdG8KKyAqIHBvcnQgUEpMSUIgdG8gYSBuZXcgdGFyZ2V0LiBBcyBhIHNhbXBsZSwgd2UgZ2l2ZSB0aGUgdGFyZ2V0IGEgbmFtZSB0YWcsIAorICogZm9yIGV4YW1wbGUgPHR0PjxiPnhvczwvYj48L3R0PiAoZm9yIFggT1MpLiAKKyAqCisgKiBAc3Vic2VjdGlvbiBuZXdfY29tcGF0X29zX2hfZmlsZV9zZWMgQ3JlYXRlIE5ldyBDb21wYXQgSGVhZGVyIEZpbGUKKyAqCisgKiBZb3UnbGwgbmVlZCB0byBjcmVhdGUgYSBuZXcgaGVhZGVyIGZpbGUgCisgKiA8Yj48dHQ+aW5jbHVkZS9wai9jb21wYXQvb3NfeG9zLmg8L3R0PjwvYj4uIFlvdSBjYW4gY29weSBhcyBhIAorICogdGVtcGxhdGUgb3RoZXIgaGVhZGVyIGZpbGUgYW5kIGVkaXQgaXQgYWNjb3JkaW5nbHkuCisgKgorICogQHN1YnNlY3Rpb24gbW9kaWZ5X2NvbmZpZ19oX2ZpbGVfc2VjIE1vZGlmeSBjb25maWcuaAorICoKKyAqIFRoZW4gbW9kaWZ5IGZpbGUgPGI+PHR0PmluY2x1ZGUvcGovY29uZmlnLmg8L3R0PjwvYj4gdG8gaW5jbHVkZQorICogdGhpcyBmaWxlIGFjY29yZGluZ2x5IChlLmcuIHdoZW4gbWFjcm8gPHR0PjxiPlBKX1hPUzwvYj48L3R0PiBpcworICogZGVmaW5lZCk6CisgKgorIFx2ZXJiYXRpbQorIC4uLgorICNlbGlmIGRlZmluZWQoUEpfWE9TKQorICMgIGluY2x1ZGUgPHBqL2NvbXBhdC9vc194b3MuaD4KKyAjZWxzZQorICMuLi4KKyBcZW5kdmVyYmF0aW0KKyAqIAorICogQHN1YnNlY3Rpb24gbmV3X3RhcmdldF9tYWtfZmlsZV9zZWMgQ3JlYXRlIE5ldyBHbG9iYWwgTWFrZSBDb25maWcgRmlsZQorICoKKyAqIFRoZW4geW91J2xsIG5lZWQgdG8gY3JlYXRlIGdsb2JhbCBjb25maWd1cmF0aW9uIGZpbGUgdGhhdAorICogaXMgc3BlY2lmaWMgZm9yIHRoaXMgT1MsIGkuZS4gPHR0PjxiPm9zLXhvcy5tYWs8L2I+PC90dD4gaW4gCisgKiA8dHQ+PGI+JFBKUFJPSkVDVC9idWlsZDwvYj48L3R0PiBkaXJlY3RvcnkuCisgKgorICogQXQgdmVyeSBtaW5pbXVtLCB0aGUgZmlsZSB3aWxsIG5vcm1hbGx5IG5lZWQgdG8gZGVmaW5lCisgKiA8dHQ+PGI+UEpfWE9TPTE8L2I+PC90dD4gaW4gdGhlIFxjIENGTEFHUyBzZWN0aW9uOgorICoKKyBcdmVyYmF0aW0KKyMKKyMgJFBKUFJPSkVDVC9idWlsZC9vcy14b3MubWFrOgorIworZXhwb3J0IE9TX0NGTEFHUyAgIDo9ICQoQ0NfREVGKVBKX1hPUz0xCitleHBvcnQgT1NfQ1hYRkxBR1MgOj0gCitleHBvcnQgT1NfTERGTEFHUyAgOj0KK2V4cG9ydCBPU19TT1VSQ0VTICA6PSAKKyBcZW5kdmVyYmF0aW0KKyAqCisgKgorICogQHN1YnNlY3Rpb24gbmV3X3RhcmdldF9wcmpfbWFrX2ZpbGVfc2VjIENyZWF0ZSBOZXcgUHJvamVjdCdzIE1ha2UgQ29uZmlnIEZpbGUKKyAqCisgKiBUaGVuIHlvdSdsbCBuZWVkIHRvIGNyZWF0ZSB4b3Mtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlCisgKiBmb3IgUEpMSUIuIFRoaXMgZmlsZSBpcyBhbHNvIG5hbWVkIDx0dD48Yj5vcy14b3MubWFrPC9iPjwvdHQ+LAorICogYnV0IGl0cyBsb2NhdGVkIGluIDx0dD48Yj5wamxpYi9idWlsZDwvYj48L3R0PiBkaXJlY3RvcnkuCisgKiBUaGlzIGZpbGUgd2lsbCBzcGVjaWZ5IHNvdXJjZSBmaWxlcyB0aGF0IGFyZSBzcGVjaWZpYyB0bworICogdGhpcyBPUyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4KKyAqCisgKiBCZWxvdyBpcyBhIHNhbXBsZToKKyBcdmVyYmF0aW0KKyMKKyMgcGpsaWIvYnVpbGQvb3MteG9zLm1hazoKKyMgIFhPUyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBQSkxJQi4KKyMKK2V4cG9ydCBQSkxJQl9PQkpTICs9IAlvc19jb3JlX3hvcy5vIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zX2Vycm9yX3VuaXgubyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvc190aW1lX2Fuc2kubworZXhwb3J0IFRFU1RfT0JKUyArPQltYWluLm8KK2V4cG9ydCBUQVJHRVRTCSAgICA9CXBqbGliIHBqbGliLXRlc3QKKyBcZW5kdmVyYmF0aW0KKyAqCisgKiBAc3Vic2VjdGlvbiBuZXdfdGFyZ2V0X3NyY19zZWMgQ3JlYXRlIGFuZCBFZGl0IFNvdXJjZSBGaWxlcworICoKKyAqIFlvdSdsbCBub3JtYWxseSBuZWVkIHRvIGNyZWF0ZSBhdCBsZWFzdCB0aGVzZSBmaWxlczoKKyAqICAtIDx0dD48Yj5vc19jb3JlX3hvcy5jPC9iPjwvdHQ+OiBjb3JlIE9TIHNwZWNpZmljCisgKiAgICBmdW5jdGlvbmFsaXR5LgorICogIC0gPHR0PjxiPm9zX3RpbWVzdGFtcF94b3MuYzwvYj48L3R0PjogaG93IHRvIGdldCB0aW1lc3RhbXAKKyAqICAgIGluIHRoaXMgT1MuCisgKgorICogRGVwZW5kaW5nIG9uIGhvdyB0aGluZ3MgYXJlIGRvbmUgaW4geW91ciBPUywgeW91IG1heSBuZWVkCisgKiB0byBjcmVhdGUgdGhlc2UgZmlsZXM6CisgKiAgLSA8dHQ+PGI+b3NfZXJyb3JfKi5jPC9iPjwvdHQ+OiBob3cgdG8gbWFuaXB1bGF0ZQorICogICAgT1MgZXJyb3IgY29kZXMuIEFsdGVybmF0aXZlbHkgeW91IG1heSB1c2UgZXhpc3RpbmcKKyAqICAgIDx0dD5vc19lcnJvcl91bml4LmM8L3R0PiBpZiB0aGUgT1MgaGFzIFxjIGVycm5vIGFuZAorICogICAgXGMgc3RyZXJyb3IoKSBmdW5jdGlvbi4KKyAqICAtIDx0dD48Yj5pb3F1ZXVlXyouYzwvYj48L3R0PjogaWYgdGhlIE9TIGhhcyBzcGVjaWZpYyBtZXRob2QKKyAqICAgIHRvIHBlcmZvcm0gYXN5bmNocm9ub3VzIEkvTy4gQWx0ZXJuYXRpdmVseSB5b3UgbWF5CisgKiAgICB1c2UgZXhpc3RpbmcgPHR0PmlvcXVldWVfc2VsZWN0LmM8L3R0PiBpZiB0aGUgT1Mgc3VwcG9ydHMKKyAqICAgIFxjIHNlbGVjdCgpIGZ1bmN0aW9uIGNhbGwuCisgKiAgLSA8dHQ+PGI+c29ja18qLmM8L2I+PC90dD46IGlmIHRoZSBPUyBoYXMgc3BlY2lmaWMgbWV0aG9kCisgKiAgICB0byBwZXJmb3JtIHNvY2tldCBjb21tdW5pY2F0aW9uLiBBbHRlcm5hdGl2ZWx5IHlvdSBtYXkKKyAqICAgIHVzZSBleGlzdGluZyA8dHQ+c29ja19ic2QuYzwvdHQ+IGlmIHRoZSBPUyBzdXBwb3J0cworICogICAgQlNEIHNvY2tldCBBUEksIGFuZCBlZGl0IDx0dD5pbmNsdWRlL3BqL2NvbXBhdC9zb2NrZXQuaDwvdHQ+CisgKiAgICBmaWxlIGFjY29yZGluZ2x5LgorICoKKyAqIFlvdSB3aWxsIGFsc28gbmVlZCB0byBjaGVjayB2YXJpb3VzIGZpbGVzIGluIAorICogPHR0PjxiPmluY2x1ZGUvcGovY29tcGF0LyouaDwvYj48L3R0PiwgdG8gc2VlIGlmIHRoZXkncmUgCisgKiBjb21wYXRpYmxlIHdpdGggeW91ciBPUy4KKyAqCisgKiBAc3Vic2VjdGlvbiBuZXdfdGFyZ2V0X2J1aWxkX2ZpbGVfc2VjIEJ1aWxkIFRoZSBQcm9qZWN0CisgKgorICogQWZ0ZXIgYmFzaWMgYnVpbGRpbmcgYmxvY2tzIGhhdmUgYmVlbiBjcmVhdGVkIGZvciB0aGUgT1MsIHRoZW4KKyAqIHRoZSBlYXNpZXN0IHdheSB0byBzZWUgd2hpY2ggcGFydHMgbmVlZCB0byBiZSBmaXhlZCBpcyBieSBidWlsZGluZworICogdGhlIHByb2plY3QgYW5kIHNlZSB0aGUgZXJyb3IgbWVzc2FnZXMuCisgKgorICogQHN1YnNlY3Rpb24gbmV3X3RhcmdldF9lZGl0X3ZzX25ld19maWxlX3NlYyBFZGl0aW5nIEV4aXN0aW5nIEZpbGVzIHZzIENyZWF0aW5nIE5ldyBGaWxlCisgKgorICogV2hlbiB5b3UgZW5jb3VudGVyIGNvbXBhdGliaWxpdHkgZXJyb3JzIGluIFBKTElCIGR1cmluZyBwb3J0aW5nLAorICogeW91IGhhdmUgdGhyZWUgb3B0aW9ucyBvbiBob3cgdG8gZml4IHRoZSBlcnJvcjoKKyAqICAtIGVkaXQgdGhlIGV4aXN0aW5nIDx0dD4qLmM8L3R0PiBmaWxlLCBhbmQgZ2l2ZSBpdCA8dHQ+I2lmZGVmPC90dD4KKyAqICAgIHN3aXRjaCBmb3IgdGhlIG5ldyBPUywgb3IKKyAqICAtIGVkaXQgPHR0PmluY2x1ZGUvcGovY29tcGF0LyouaDwvdHQ+IGluc3RlYWQsIG9yCisgKiAgLSBjcmVhdGUgYSB0b3RhbGx5IG5ldyBmaWxlLgorICoKKyAqIEJhc2ljbHkgdGhlcmUgaXMgbm8gc3RyaWN0IHJ1bGUgb24gd2hpY2ggYXBwcm9hY2ggaXMgdGhlIGJlc3QKKyAqIHRvIHVzZSwgaG93ZXZlciB0aGUgZm9sbG93aW5nIGd1aWRlbGluZXMgbWF5IGJlIHVzZWQ6CisgKiAgLSBpZiB0aGUgZmlsZSBpcyBleHBlY3RlZCB0byBiZSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0aGFuCisgKiAgICBhbnkgZXhpc3RpbmcgZmlsZSwgdGhlbiBwZXJoYXBzIHlvdSBzaG91bGQgY3JlYXRlIGEgY29tcGxldGVseQorICogICAgbmV3IGZpbGUuIEZvciBleGFtcGxlLCBmaWxlIDx0dD5vc19jb3JlX3h4eC5jPC90dD4gd2lsbCAKKyAqICAgIG5vcm1hbGx5IGJlIGRpZmZlcmVudCBmb3IgZWFjaCBPUyBmbGF2b3VyLgorICogIC0gaWYgdGhlIGRpZmZlcmVuY2UgY2FuIGJlIGxvY2FsaXplZCBpbiA8dHQ+aW5jbHVkZS9jb21wYXQ8L3R0PgorICogICAgaGVhZGVyIGZpbGUsIGFuZCBleGlzdGluZyA8dHQ+I2lmZGVmPC90dD4gc3dpdGNoIGlzIHRoZXJlLAorICogICAgdGhlbiBwcmVmZXJhYmx5IHlvdSBzaG91bGQgZWRpdCB0aGlzIDx0dD5pbmNsdWRlL2NvbXBhdDwvdHQ+CisgKiAgICBoZWFkZXIgZmlsZS4KKyAqICAtIGlmIHRoZSBleGlzdGluZyA8dHQ+Ki5jPC90dD4gZmlsZSBoYXMgPHR0PiNpZmRlZjwvdHQ+IHN3aXRjaCwKKyAqICAgIHRoZW4geW91IG1heSBhZGQgYW5vdGhlciA8dHQ+I2VsaWY8L3R0PiBzd2l0Y2ggdGhlcmUuIFRoaXMKKyAqICAgIG5vcm1hbGx5IGlzIHVzZWQgZm9yIGJlaGF2aW9ycyB0aGF0IGFyZSBub3QgdG90YWxseQorICogICAgZGlmZmVyZW50IG9uIGVhY2ggcGxhdGZvcm0uCisgKiAgLSBvdGhlciB0aGFuIHRoYXQgYWJvdmUsIHVzZSB5b3VyIG93biBqdWRnZW1lbnQgb24gd2hldGhlcgorICogICAgdG8gZWRpdCB0aGUgZmlsZSBvciBjcmVhdGUgbmV3IGZpbGUgZXRjLgorICovCisKKyNlbmRpZgkvKiBfX1BKX0RPWFlHRU5fSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovZXJybm8uaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovZXJybm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjk2ZmFhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9lcnJuby5oCkBAIC0wLDAgKzEsNTg3IEBACisvKiAkSWQ6IGVycm5vLmggNDQ2MSAyMDEzLTA0LTA1IDAzOjAyOjE5WiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfRVJSTk9fSF9fCisjZGVmaW5lIF9fUEpfRVJSTk9fSF9fCisKKy8qKgorICogQGZpbGUgZXJybm8uaAorICogQGJyaWVmIFBKTElCIEVycm9yIFN1YnN5c3RlbQorICovCisjaW5jbHVkZSA8cGovdHlwZXMuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworUEpfQkVHSU5fREVDTAorCisvKioKKyAqIEBkZWZncm91cCBwal9lcnJubyBFcnJvciBTdWJzeXN0ZW0KKyAqIEB7CisgKgorICogVGhlIFBKTElCIEVycm9yIFN1YnN5c3RlbSBpcyBhIGZyYW1ld29yayB0byB1bmlmeSBhbGwgZXJyb3IgY29kZXMKKyAqIHByb2R1Y2VkIGJ5IGFsbCBjb21wb25lbnRzIGludG8gYSBzaW5nbGUgZXJyb3Igc3BhY2UsIGFuZCBwcm92aWRlCisgKiB1bmlmb3JtIHNldCBvZiBBUElzIHRvIGFjY2VzcyB0aGVtLiBXaXRoIHRoaXMgZnJhbWV3b3JrLCBhbnkgZXJyb3IKKyAqIGNvZGVzIGFyZSBlbmNvZGVkIGFzIHBqX3N0YXR1c190IHZhbHVlLiBUaGUgZnJhbWV3b3JrIGlzIGV4dGVuc2libGUsCisgKiBhcHBsaWNhdGlvbiBtYXkgcmVnaXN0ZXIgbmV3IGVycm9yIHNwYWNlcyB0byBiZSByZWNvZ25pemVkIGJ5CisgKiB0aGUgZnJhbWV3b3JrLgorICoKKyAqIEBzZWN0aW9uIHBqX2Vycm5vX3JldHZhbCBSZXR1cm4gVmFsdWVzCisgKgorICogQWxsIGZ1bmN0aW9ucyB0aGF0IHJldHVybnMgQGEgcGpfc3RhdHVzX3QgcmV0dXJucyBAYSBQSl9TVUNDRVNTIGlmIHRoZQorICogb3BlcmF0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LCBvciBub24temVybyB2YWx1ZSB0byBpbmRpY2F0ZSAKKyAqIGVycm9yLiBJZiB0aGUgZXJyb3IgY2FtZSBmcm9tIG9wZXJhdGluZyBzeXN0ZW0sIHRoZW4gdGhlIG5hdGl2ZSBlcnJvcgorICogY29kZSBpcyB0cmFuc2xhdGVkL2ZvbGRlZCBpbnRvIFBKTElCJ3MgZXJyb3IgbmFtZXNwYWNlIGJ5IHVzaW5nCisgKiAjUEpfU1RBVFVTX0ZST01fT1MoKSBtYWNyby4gVGhlIGZ1bmN0aW9uIHdpbGwgZG8gdGhpcyBhdXRvbWF0aWNhbGx5CisgKiBiZWZvcmUgcmV0dXJuaW5nIHRoZSBlcnJvciB0byBjYWxsZXIuCisgKgorICogQHNlY3Rpb24gZXJyX3NlcnZpY2VzIFJldHJpZXZpbmcgYW5kIERpc3BsYXlpbmcgRXJyb3IgTWVzc2FnZXMKKyAqCisgKiBUaGUgZnJhbWV3b3JrIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgQVBJcyB0byByZXRyaWV2ZSBhbmQvb3IgZGlzcGxheQorICogZXJyb3IgbWVzc2FnZXM6CisgKgorICogICAtICNwal9zdHJlcnJvcigpOiB0aGlzIGlzIHRoZSBiYXNlIEFQSSB0byByZXRyaWV2ZSBlcnJvciBzdHJpbmcKKyAqICAgICAgZGVzY3JpcHRpb24gZm9yIHRoZSBzcGVjaWZpZWQgcGpfc3RhdHVzX3QgZXJyb3IgY29kZS4KKyAqCisgKiAgIC0gI1BKX1BFUlJPUigpIG1hY3JvOiB1c2UgdGhpcyBtYWNybyBzaW1pbGFyIHRvIFBKX0xPRyB0byBmb3JtYXQKKyAqICAgICAgYW4gZXJyb3IgbWVzc2FnZSBhbmQgZGlzcGxheSB0aGVtIHRvIHRoZSBsb2cKKyAqCisgKiAgIC0gI3BqX3BlcnJvcigpOiB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gUEpfUEVSUk9SKCkgYnV0IHVubGlrZQorICogICAgICAjUEpfUEVSUk9SKCksIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgYmUgaW5jbHVkZWQgaW4gdGhlCisgKiAgICAgIGxpbmsgcHJvY2Vzcy4gRHVlIHRvIHRoaXMgcmVhc29uLCBwcmVmZXIgdG8gdXNlICNQSl9QRVJST1IoKQorICogICAgICBpZiB0aGUgYXBwbGljYXRpb24gaXMgY29uY2VybmVkIGFib3V0IHRoZSBleGVjdXRhYmxlIHNpemUuCisgKgorICogQXBwbGljYXRpb24gTVVTVCBOT1QgcGFzcyBuYXRpdmUgZXJyb3IgY29kZXMgKHN1Y2ggYXMgZXJyb3IgY29kZSBmcm9tCisgKiBmdW5jdGlvbnMgbGlrZSBHZXRMYXN0RXJyb3IoKSBvciBlcnJubykgdG8gUEpMSUIgZnVuY3Rpb25zIGV4cGVjdGluZworICogQGEgcGpfc3RhdHVzX3QuCisgKgorICogQHNlY3Rpb24gZXJyX2V4dGVuZGluZyBFeHRlbmRpbmcgdGhlIEVycm9yIFNwYWNlCisgKgorICogQXBwbGljYXRpb24gbWF5IHJlZ2lzdGVyIG5ldyBlcnJvciBzcGFjZSB0byBiZSByZWNvZ25pemVkIGJ5IHRoZQorICogZnJhbWV3b3JrIGJ5IHVzaW5nICNwal9yZWdpc3Rlcl9zdHJlcnJvcigpLiBVc2UgdGhlIHJhbmdlIHN0YXJ0ZWQKKyAqIGZyb20gUEpfRVJSTk9fU1RBUlRfVVNFUiB0byBhdm9pZCBjb25mbGljdCB3aXRoIGV4aXN0aW5nIGVycm9yCisgKiBzcGFjZXMuCisgKgorICovCisKKy8qKgorICogR3VpZGVsaW5lcyBvbiBlcnJvciBtZXNzYWdlIGxlbmd0aC4KKyAqLworI2RlZmluZSBQSl9FUlJfTVNHX1NJWkUgIDgwCisKKy8qKgorICogQnVmZmVyIGZvciB0aXRsZSBzdHJpbmcgb2YgI1BKX1BFUlJPUigpLgorICovCisjaWZuZGVmIFBKX1BFUlJPUl9USVRMRV9CVUZfU0laRQorIyAgIGRlZmluZSBQSl9QRVJST1JfVElUTEVfQlVGX1NJWkUJMTIwCisjZW5kaWYKKworCisvKioKKyAqIEdldCB0aGUgbGFzdCBwbGF0Zm9ybSBlcnJvci9zdGF0dXMsIGZvbGRlZCBpbnRvIHBqX3N0YXR1c190LgorICogQHJldHVybglPUyBkZXBlbmRlbnQgZXJyb3IgY29kZSwgZm9sZGVkIGludG8gcGpfc3RhdHVzX3QuCisgKiBAcmVtYXJrCVRoaXMgZnVuY3Rpb24gZ2V0cyBlcnJubywgb3IgY2FsbHMgR2V0TGFzdEVycm9yKCkgZnVuY3Rpb24gYW5kCisgKgkJY29udmVydCB0aGUgY29kZSBpbnRvIHBqX3N0YXR1c190IHdpdGggUEpfU1RBVFVTX0ZST01fT1MuIERvCisgKgkJbm90IGNhbGwgdGhpcyBmb3Igc29ja2V0IGZ1bmN0aW9ucyEKKyAqIEBzZWUJcGpfZ2V0X25ldG9zX2Vycm9yKCkKKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZ2V0X29zX2Vycm9yKHZvaWQpOworCisvKioKKyAqIFNldCBsYXN0IGVycm9yLgorICogQHBhcmFtIGNvZGUJcGpfc3RhdHVzX3QKKyAqLworUEpfREVDTCh2b2lkKSBwal9zZXRfb3NfZXJyb3IocGpfc3RhdHVzX3QgY29kZSk7CisKKy8qKgorICogR2V0IHRoZSBsYXN0IGVycm9yIGZyb20gc29ja2V0IG9wZXJhdGlvbnMuCisgKiBAcmV0dXJuCUxhc3Qgc29ja2V0IGVycm9yLCBmb2xkZWQgaW50byBwal9zdGF0dXNfdC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZ2V0X25ldG9zX2Vycm9yKHZvaWQpOworCisvKioKKyAqIFNldCBlcnJvciBjb2RlLgorICogQHBhcmFtIGNvZGUJcGpfc3RhdHVzX3QuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfc2V0X25ldG9zX2Vycm9yKHBqX3N0YXR1c190IGNvZGUpOworCisKKy8qKgorICogR2V0IHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGUgc3BlY2lmaWVkIGVycm9yIGNvZGUuIFRoZSBtZXNzYWdlCisgKiBzdHJpbmcgd2lsbCBiZSBOVUxMIHRlcm1pbmF0ZWQuCisgKgorICogQHBhcmFtIHN0YXRjb2RlICBUaGUgZXJyb3IgY29kZS4KKyAqIEBwYXJhbSBidWYJICAgIEJ1ZmZlciB0byBob2xkIHRoZSBlcnJvciBtZXNzYWdlIHN0cmluZy4KKyAqIEBwYXJhbSBidWZzaXplICAgU2l6ZSBvZiB0aGUgYnVmZmVyLgorICoKKyAqIEByZXR1cm4JICAgIFRoZSBlcnJvciBtZXNzYWdlIGFzIE5VTEwgdGVybWluYXRlZCBzdHJpbmcsCisgKiAgICAgICAgICAgICAgICAgIHdyYXBwZWQgd2l0aCBwal9zdHJfdC4KKyAqLworUEpfREVDTChwal9zdHJfdCkgcGpfc3RyZXJyb3IoIHBqX3N0YXR1c190IHN0YXRjb2RlLCAKKwkJCSAgICAgICBjaGFyICpidWYsIHBqX3NpemVfdCBidWZzaXplKTsKKworLyoqCisgKiBBIHV0aWxpdHkgbWFjcm8gdG8gcHJpbnQgZXJyb3IgbWVzc2FnZSBwZXJ0YWluaW5nIHRvIHRoZSBzcGVjaWZpZWQgZXJyb3IgCisgKiBjb2RlIHRvIHRoZSBsb2cuIFRoaXMgbWFjcm8gd2lsbCBjb25zdHJ1Y3QgdGhlIGVycm9yIG1lc3NhZ2UgdGl0bGUgCisgKiBhY2NvcmRpbmcgdG8gdGhlICd0aXRsZV9mbXQnIGFyZ3VtZW50LCBhbmQgYWRkIHRoZSBlcnJvciBzdHJpbmcgcGVydGFpbmluZworICogdG8gdGhlIGVycm9yIGNvZGUgYWZ0ZXIgdGhlIHRpdGxlIHN0cmluZy4gQSBjb2xvbiAoJzonKSB3aWxsIGJlIGFkZGVkIAorICogYXV0b21hdGljYWxseSBiZXR3ZWVuIHRoZSB0aXRsZSBhbmQgdGhlIGVycm9yIHN0cmluZy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gcGpfcGVycm9yKCkgZnVuY3Rpb24sIGJ1dCBoYXMgdGhlIGFkdmFudGFnZQorICogdGhhdCB0aGUgZnVuY3Rpb24gY2FsbCBjYW4gYmUgb21pdHRlZCBmcm9tIHRoZSBsaW5rIHByb2Nlc3MgaWYgdGhlCisgKiBsb2cgbGV2ZWwgYXJndW1lbnQgaXMgYmVsb3cgUEpfTE9HX01BWF9MRVZFTCB0aHJlc2hvbGQuCisgKgorICogTm90ZSB0aGF0IHRoZSB0aXRsZSBzdHJpbmcgY29uc3RydWN0ZWQgZnJvbSB0aGUgdGl0bGVfZm10IHdpbGwgYmUgYnVpbHQgb24KKyAqIGEgc3RyaW5nIGJ1ZmZlciB3aGljaCBzaXplIGlzIFBKX1BFUlJPUl9USVRMRV9CVUZfU0laRSwgd2hpY2ggbm9ybWFsbHkgaXMKKyAqIGFsbG9jYXRlZCBmcm9tIHRoZSBzdGFjay4gQnkgZGVmYXVsdCB0aGlzIGJ1ZmZlciBzaXplIGlzIHNtYWxsIChhcm91bmQKKyAqIDEyMCBjaGFyYWN0ZXJzKS4gQXBwbGljYXRpb24gTVVTVCBlbnN1cmUgdGhhdCB0aGUgY29uc3RydWN0ZWQgdGl0bGUgc3RyaW5nCisgKiB3aWxsIG5vdCBleGNlZWQgdGhpcyBsaW1pdCwgc2luY2Ugbm90IGFsbCBwbGF0Zm9ybXMgc3VwcG9ydCB0cnVuY2F0aW5nCisgKiB0aGUgc3RyaW5nLgorICoKKyAqIEBzZWUgcGpfcGVycm9yKCkKKyAqCisgKiBAcGFyYW0gbGV2ZWwJICAgIFRoZSBsb2dnaW5nIHZlcmJvc2l0eSBsZXZlbCwgdmFsaWQgdmFsdWVzIGFyZSAwLTYuIExvd2VyCisgKgkJICAgIG51bWJlciBpbmRpY2F0ZXMgaGlnaGVyIGltcG9ydGFuY2UsIHdpdGggbGV2ZWwgemVybyAKKyAqCQkgICAgaW5kaWNhdGVzIGZhdGFsIGVycm9yLiBPbmx5IG51bWVyYWwgYXJndW1lbnQgaXMgCisgKgkJICAgIHBlcm1pdHRlZCAoZS5nLiBub3QgdmFyaWFibGUpLgorICogQHBhcmFtIGFyZwkgICAgRW5jbG9zZWQgJ3ByaW50ZicgbGlrZSBhcmd1bWVudHMsIHdpdGggdGhlIGZvbGxvd2luZworICoJCSAgICBhcmd1bWVudHM6CisgKgkJICAgICAtIHRoZSBzZW5kZXIgKE5VTEwgdGVybWluYXRlZCBzdHJpbmcpLAorICoJCSAgICAgLSB0aGUgZXJyb3IgY29kZSAocGpfc3RhdHVzX3QpCisgKgkJICAgICAtIHRoZSBmb3JtYXQgc3RyaW5nICh0aXRsZV9mbXQpLCBhbmQgCisgKgkJICAgICAtIG9wdGlvbmFsIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMgc3VpdGFibGUgZm9yIHRoZSAKKyAqCQkgICAgICAgZm9ybWF0IHN0cmluZy4KKyAqCisgKiBTYW1wbGU6CisgKiBcdmVyYmF0aW0KKyAgIFBKX1BFUlJPUigyLCAoX19GSUxFX18sIFBKX0VCVVNZLCAiRXJyb3IgbWFraW5nICVzIiwgImNvZmZlZSIpKTsKKyAgIFxlbmR2ZXJiYXRpbQorICogQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFBKX1BFUlJPUihsZXZlbCxhcmcpCWRvIHsgXAorCQkJCSAgICBwal9wZXJyb3Jfd3JhcHBlcl8jI2xldmVsKGFyZyk7IFwKKwkJCQl9IHdoaWxlICgwKQorCisvKioKKyAqIEEgdXRpbGl0eSBmdW5jdGlvbiB0byBwcmludCBlcnJvciBtZXNzYWdlIHBlcnRhaW5pbmcgdG8gdGhlIHNwZWNpZmllZCBlcnJvciAKKyAqIGNvZGUgdG8gdGhlIGxvZy4gVGhpcyBmdW5jdGlvbiB3aWxsIGNvbnN0cnVjdCB0aGUgZXJyb3IgbWVzc2FnZSB0aXRsZSAKKyAqIGFjY29yZGluZyB0byB0aGUgJ3RpdGxlX2ZtdCcgYXJndW1lbnQsIGFuZCBhZGQgdGhlIGVycm9yIHN0cmluZyBwZXJ0YWluaW5nCisgKiB0byB0aGUgZXJyb3IgY29kZSBhZnRlciB0aGUgdGl0bGUgc3RyaW5nLiBBIGNvbG9uICgnOicpIHdpbGwgYmUgYWRkZWQgCisgKiBhdXRvbWF0aWNhbGx5IGJldHdlZW4gdGhlIHRpdGxlIGFuZCB0aGUgZXJyb3Igc3RyaW5nLgorICoKKyAqIFVubGlrZSB0aGUgUEpfUEVSUk9SKCkgbWFjcm8sIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIFxhIGxvZ19sZXZlbCBhcmd1bWVudAorICogYXMgYSBub3JtYWwgYXJndW1lbnQsIHVubGlrZSBpbiBQSl9QRVJST1IoKSB3aGVyZSBhIG51bWVyYWwgdmFsdWUgbXVzdCBiZQorICogZ2l2ZW4uIEhvd2V2ZXIgdGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyBiZSBsaW5rZWQgdG8gdGhlIGV4ZWN1dGFibGUsCisgKiB1bmxpa2UgUEpfUEVSUk9SKCkgd2hpY2ggY2FuIGJlIG9taXR0ZWQgd2hlbiB0aGUgbGV2ZWwgaXMgYmVsb3cgdGhlIAorICogUEpfTE9HX01BWF9MRVZFTC4KKyAqCisgKiBOb3RlIHRoYXQgdGhlIHRpdGxlIHN0cmluZyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSB0aXRsZV9mbXQgd2lsbCBiZSBidWlsdCBvbgorICogYSBzdHJpbmcgYnVmZmVyIHdoaWNoIHNpemUgaXMgUEpfUEVSUk9SX1RJVExFX0JVRl9TSVpFLCB3aGljaCBub3JtYWxseSBpcworICogYWxsb2NhdGVkIGZyb20gdGhlIHN0YWNrLiBCeSBkZWZhdWx0IHRoaXMgYnVmZmVyIHNpemUgaXMgc21hbGwgKGFyb3VuZAorICogMTIwIGNoYXJhY3RlcnMpLiBBcHBsaWNhdGlvbiBNVVNUIGVuc3VyZSB0aGF0IHRoZSBjb25zdHJ1Y3RlZCB0aXRsZSBzdHJpbmcKKyAqIHdpbGwgbm90IGV4Y2VlZCB0aGlzIGxpbWl0LCBzaW5jZSBub3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHRydW5jYXRpbmcKKyAqIHRoZSBzdHJpbmcuCisgKgorICogQHNlZSBQSl9QRVJST1IoKQorICovCitQSl9ERUNMKHZvaWQpIHBqX3BlcnJvcihpbnQgbG9nX2xldmVsLCBjb25zdCBjaGFyICpzZW5kZXIsIHBqX3N0YXR1c190IHN0YXR1cywKKwkJICAgICAgICBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLik7CisKKworLyoqCisgKiBUeXBlIG9mIGNhbGxiYWNrIHRvIGJlIHNwZWNpZmllZCBpbiAjcGpfcmVnaXN0ZXJfc3RyZXJyb3IoKQorICoKKyAqIEBwYXJhbSBlCSAgICBUaGUgZXJyb3IgY29kZSB0byBsb29rdXAuCisgKiBAcGFyYW0gbXNnCSAgICBCdWZmZXIgdG8gc3RvcmUgdGhlIGVycm9yIG1lc3NhZ2UuCisgKiBAcGFyYW0gbWF4CSAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4KKyAqCisgKiBAcmV0dXJuCSAgICBUaGUgZXJyb3Igc3RyaW5nLgorICovCit0eXBlZGVmIHBqX3N0cl90ICgqcGpfZXJyb3JfY2FsbGJhY2spKHBqX3N0YXR1c190IGUsIGNoYXIgKm1zZywgcGpfc2l6ZV90IG1heCk7CisKKworLyoqCisgKiBSZWdpc3RlciBzdHJlcnJvciBtZXNzYWdlIGhhbmRsZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXJyb3Igc3BhY2UuCisgKiBBcHBsaWNhdGlvbiBjYW4gcmVnaXN0ZXIgaXRzIG93biBoYW5kbGVyIHRvIHN1cHBseSB0aGUgZXJyb3IgbWVzc2FnZQorICogZm9yIHRoZSBzcGVjaWZpZWQgZXJyb3IgY29kZSByYW5nZS4gVGhpcyBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkCisgKiBieSAjcGpfc3RyZXJyb3IoKS4KKyAqCisgKiBAcGFyYW0gc3RhcnRfY29kZQlUaGUgc3RhcnRpbmcgZXJyb3IgY29kZSB3aGVyZSB0aGUgaGFuZGxlciBzaG91bGQKKyAqCQkJYmUgY2FsbGVkIHRvIHJldHJpZXZlIHRoZSBlcnJvciBtZXNzYWdlLgorICogQHBhcmFtIGVycl9zcGFjZQlUaGUgc2l6ZSBvZiBlcnJvciBzcGFjZS4gVGhlIGVycm9yIGNvZGUgcmFuZ2UgdGhlbgorICoJCQl3aWxsIGZhbGwgaW4gc3RhcnRfY29kZSB0byBzdGFydF9jb2RlK2Vycl9zcGFjZS0xCisgKgkJCXJhbmdlLgorICogQHBhcmFtIGYJCVRoZSBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuICNwal9zdHJlcnJvcigpIGlzCisgKgkJCXN1cHBsaWVkIHdpdGggZXJyb3IgY29kZSB0aGF0IGZhbGxzIGludG8gdGhpcyByYW5nZS4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9yIHRoZSBzcGVjaWZpZWQgZXJyb3IgY29kZS4gVGhlIAorICoJCQlyZWdpc3RyYXRpb24gbWF5IGZhaWwgd2hlbiB0aGUgZXJyb3Igc3BhY2UgaGFzIGJlZW4KKyAqCQkJb2NjdXBpZWQgYnkgb3RoZXIgaGFuZGxlciwgb3Igd2hlbiB0aGVyZSBhcmUgdG9vIG1hbnkKKyAqCQkJaGFuZGxlcnMgcmVnaXN0ZXJlZCB0byBQSkxJQi4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfcmVnaXN0ZXJfc3RyZXJyb3IocGpfc3RhdHVzX3Qgc3RhcnRfY29kZSwKKwkJCQkJICBwal9zdGF0dXNfdCBlcnJfc3BhY2UsCisJCQkJCSAgcGpfZXJyb3JfY2FsbGJhY2sgZik7CisKKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogUmV0dXJuIHBsYXRmb3JtIG9zIGVycm9yIGNvZGUgZm9sZGVkIGludG8gcGpfc3RhdHVzX3QgY29kZS4gVGhpcyBpcworICogdGhlIG1hY3JvIHRoYXQgaXMgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5IGZvciBhbGwgUEpMSUIncyBmdW5jdGlvbnMKKyAqIHRoYXQgcmV0dXJucyBlcnJvciBmcm9tIG9wZXJhdGluZyBzeXN0ZW0uIEFwcGxpY2F0aW9uIG1heSBvdmVycmlkZQorICogdGhpcyBtYWNybyB0byByZWR1Y2Ugc2l6ZSAoZS5nLiBieSBkZWZpbmluZyBpdCB0byBhbHdheXMgcmV0dXJuIAorICogI1BKX0VVTktOT1dOKS4KKyAqCisgKiBOb3RlOgorICogIFRoaXMgbWFjcm8gTVVTVCByZXR1cm4gbm9uLXplcm8gdmFsdWUgcmVnYXJkbGVzcyB3aGV0aGVyIHplcm8gaXMKKyAqICBwYXNzZWQgYXMgdGhlIGFyZ3VtZW50LiBUaGUgcmVhc29uIGlzIHRvIHByb3RlY3QgbG9naWMgZXJyb3Igd2hlbgorICogIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QgcmVwb3J0IGVycm9yIGNvZGVzIHByb3Blcmx5LgorICoKKyAqIEBwYXJhbSBvc19jb2RlICAgUGxhdGZvcm0gT1MgZXJyb3IgY29kZS4gVGhpcyB2YWx1ZSBtYXkgYmUgZXZhbHVhdGVkCisgKgkJICAgIG1vcmUgdGhhbiBvbmNlLgorICogQHJldHVybgkgICAgVGhlIHBsYXRmb3JtIG9zIGVycm9yIGNvZGUgZm9sZGVkIGludG8gcGpfc3RhdHVzX3QuCisgKi8KKyNpZm5kZWYgUEpfUkVUVVJOX09TX0VSUk9SCisjICAgZGVmaW5lIFBKX1JFVFVSTl9PU19FUlJPUihvc19jb2RlKSAgIChvc19jb2RlID8gXAorCQkJCQkgICAgUEpfU1RBVFVTX0ZST01fT1Mob3NfY29kZSkgOiAtMSkKKyNlbmRpZgorCisKKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogRm9sZCBhIHBsYXRmb3JtIHNwZWNpZmljIGVycm9yIGludG8gYW4gcGpfc3RhdHVzX3QgY29kZS4KKyAqCisgKiBAcGFyYW0gZQlUaGUgcGxhdGZvcm0gb3MgZXJyb3IgY29kZS4KKyAqIEByZXR1cm4JcGpfc3RhdHVzX3QKKyAqIEB3YXJuaW5nCU1hY3JvIGltcGxlbWVudGF0aW9uOyB0aGUgc3lzZXJyIGFyZ3VtZW50IG1heSBiZSBldmFsdWF0ZWQKKyAqCQltdWx0aXBsZSB0aW1lcy4KKyAqLworI2lmIFBKX05BVElWRV9FUlJfUE9TSVRJVkUKKyMgICBkZWZpbmUgUEpfU1RBVFVTX0ZST01fT1MoZSkgKGUgPT0gMCA/IFBKX1NVQ0NFU1MgOiBlICsgUEpfRVJSTk9fU1RBUlRfU1lTKQorI2Vsc2UKKyMgICBkZWZpbmUgUEpfU1RBVFVTX0ZST01fT1MoZSkgKGUgPT0gMCA/IFBKX1NVQ0NFU1MgOiBQSl9FUlJOT19TVEFSVF9TWVMgLSBlKQorI2VuZGlmCisKKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogRm9sZCBhbiBwal9zdGF0dXNfdCBjb2RlIGJhY2sgdG8gdGhlIG5hdGl2ZSBwbGF0Zm9ybSBkZWZpbmVkIGVycm9yLgorICoKKyAqIEBwYXJhbSBlCVRoZSBwal9zdGF0dXNfdCBmb2xkZWQgcGxhdGZvcm0gb3MgZXJyb3IgY29kZS4KKyAqIEByZXR1cm4JcGpfb3NfZXJyX3R5cGUKKyAqIEB3YXJuaW5nCW1hY3JvIGltcGxlbWVudGF0aW9uOyB0aGUgc3RhdGNvZGUgYXJndW1lbnQgbWF5IGJlIGV2YWx1YXRlZAorICoJCW11bHRpcGxlIHRpbWVzLiAgSWYgdGhlIHN0YXRjb2RlIHdhcyBub3QgY3JlYXRlZCBieSAKKyAqCQlwal9nZXRfb3NfZXJyb3Igb3IgUEpfU1RBVFVTX0ZST01fT1MsIHRoZSByZXN1bHRzIGFyZSB1bmRlZmluZWQuCisgKi8KKyNpZiBQSl9OQVRJVkVfRVJSX1BPU0lUSVZFCisjICAgZGVmaW5lIFBKX1NUQVRVU19UT19PUyhlKSAoZSA9PSAwID8gUEpfU1VDQ0VTUyA6IGUgLSBQSl9FUlJOT19TVEFSVF9TWVMpCisjZWxzZQorIyAgIGRlZmluZSBQSl9TVEFUVVNfVE9fT1MoZSkgKGUgPT0gMCA/IFBKX1NVQ0NFU1MgOiBQSl9FUlJOT19TVEFSVF9TWVMgLSBlKQorI2VuZGlmCisKKworLyoqCisgKiBAZGVmZ3JvdXAgcGpfZXJybnVtIFBKTElCJ3MgT3duIEVycm9yIENvZGVzCisgKiBAaW5ncm91cCBwal9lcnJubworICogQHsKKyAqLworCisvKioKKyAqIFVzZSB0aGlzIG1hY3JvIHRvIGdlbmVyYXRlIGVycm9yIG1lc3NhZ2UgdGV4dCBmb3IgeW91ciBlcnJvciBjb2RlLAorICogc28gdGhhdCB0aGV5IGxvb2sgdW5pZm9ybWx5IGFzIHRoZSByZXN0IG9mIHRoZSBsaWJyYXJpZXMuCisgKgorICogQHBhcmFtIGNvZGUJVGhlIGVycm9yIGNvZGUKKyAqIEBwYXJhbSBtc2cJVGhlIGVycm9yIHRlc3QuCisgKi8KKyNpZm5kZWYgUEpfQlVJTERfRVJSCisjICAgZGVmaW5lIFBKX0JVSUxEX0VSUihjb2RlLG1zZykgeyBjb2RlLCBtc2cgIiAoIiAjY29kZSAiKSIgfQorI2VuZGlmCisKKworLyoqCisgKiBAaGlkZWluaXRpYWxpemVyCisgKiBVbmtub3duIGVycm9yIGhhcyBiZWVuIHJlcG9ydGVkLgorICovCisjZGVmaW5lIFBKX0VVTktOT1dOCSAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgMSkJLyogNzAwMDEgKi8KKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogVGhlIG9wZXJhdGlvbiBpcyBwZW5kaW5nIGFuZCB3aWxsIGJlIGNvbXBsZXRlZCBsYXRlci4KKyAqLworI2RlZmluZSBQSl9FUEVORElORwkgICAgKFBKX0VSUk5PX1NUQVJUX1NUQVRVUyArIDIpCS8qIDcwMDAyICovCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIFRvbyBtYW55IGNvbm5lY3Rpbmcgc29ja2V0cy4KKyAqLworI2RlZmluZSBQSl9FVE9PTUFOWUNPTk4JICAgIChQSl9FUlJOT19TVEFSVF9TVEFUVVMgKyAzKQkvKiA3MDAwMyAqLworLyoqCisgKiBAaGlkZWluaXRpYWxpemVyCisgKiBJbnZhbGlkIGFyZ3VtZW50LgorICovCisjZGVmaW5lIFBKX0VJTlZBTAkgICAgKFBKX0VSUk5PX1NUQVJUX1NUQVRVUyArIDQpCS8qIDcwMDA0ICovCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIE5hbWUgdG9vIGxvbmcgKGVnLiBob3N0bmFtZSB0b28gbG9uZykuCisgKi8KKyNkZWZpbmUgUEpfRU5BTUVUT09MT05HCSAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgNSkJLyogNzAwMDUgKi8KKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogTm90IGZvdW5kLgorICovCisjZGVmaW5lIFBKX0VOT1RGT1VORAkgICAgKFBKX0VSUk5PX1NUQVJUX1NUQVRVUyArIDYpCS8qIDcwMDA2ICovCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIE5vdCBlbm91Z2ggbWVtb3J5LgorICovCisjZGVmaW5lIFBKX0VOT01FTQkgICAgKFBKX0VSUk5PX1NUQVJUX1NUQVRVUyArIDcpCS8qIDcwMDA3ICovCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIEJ1ZyBkZXRlY3RlZCEKKyAqLworI2RlZmluZSBQSl9FQlVHICAgICAgICAgICAgIChQSl9FUlJOT19TVEFSVF9TVEFUVVMgKyA4KQkvKiA3MDAwOCAqLworLyoqCisgKiBAaGlkZWluaXRpYWxpemVyCisgKiBPcGVyYXRpb24gdGltZWQgb3V0LgorICovCisjZGVmaW5lIFBKX0VUSU1FRE9VVCAgICAgICAgKFBKX0VSUk5PX1NUQVJUX1NUQVRVUyArIDkpCS8qIDcwMDA5ICovCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIFRvbyBtYW55IG9iamVjdHMuCisgKi8KKyNkZWZpbmUgUEpfRVRPT01BTlkgICAgICAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgMTApLyogNzAwMTAgKi8KKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogT2JqZWN0IGlzIGJ1c3kuCisgKi8KKyNkZWZpbmUgUEpfRUJVU1kgICAgICAgICAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgMTEpLyogNzAwMTEgKi8KKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogVGhlIHNwZWNpZmllZCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZC4KKyAqLworI2RlZmluZSBQSl9FTk9UU1VQCSAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgMTIpLyogNzAwMTIgKi8KKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogSW52YWxpZCBvcGVyYXRpb24uCisgKi8KKyNkZWZpbmUgUEpfRUlOVkFMSURPUAkgICAgKFBKX0VSUk5PX1NUQVJUX1NUQVRVUyArIDEzKS8qIDcwMDEzICovCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIE9wZXJhdGlvbiBpcyBjYW5jZWxsZWQuCisgKi8KKyNkZWZpbmUgUEpfRUNBTkNFTExFRAkgICAgKFBKX0VSUk5PX1NUQVJUX1NUQVRVUyArIDE0KS8qIDcwMDE0ICovCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIE9iamVjdCBhbHJlYWR5IGV4aXN0cy4KKyAqLworI2RlZmluZSBQSl9FRVhJU1RTICAgICAgICAgIChQSl9FUlJOT19TVEFSVF9TVEFUVVMgKyAxNSkvKiA3MDAxNSAqLworLyoqCisgKiBAaGlkZWluaXRpYWxpemVyCisgKiBFbmQgb2YgZmlsZS4KKyAqLworI2RlZmluZSBQSl9FRU9GCQkgICAgKFBKX0VSUk5PX1NUQVJUX1NUQVRVUyArIDE2KS8qIDcwMDE2ICovCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIFNpemUgaXMgdG9vIGJpZy4KKyAqLworI2RlZmluZSBQSl9FVE9PQklHCSAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgMTcpLyogNzAwMTcgKi8KKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogRXJyb3IgaW4gZ2V0aG9zdGJ5bmFtZSgpLiBUaGlzIGlzIGEgZ2VuZXJpYyBlcnJvciByZXR1cm5lZCB3aGVuCisgKiBnZXRob3N0YnluYW1lKCkgaGFzIHJldHVybmVkIGFuIGVycm9yLgorICovCisjZGVmaW5lIFBKX0VSRVNPTFZFCSAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgMTgpLyogNzAwMTggKi8KKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogU2l6ZSBpcyB0b28gc21hbGwuCisgKi8KKyNkZWZpbmUgUEpfRVRPT1NNQUxMCSAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgMTkpLyogNzAwMTkgKi8KKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogSWdub3JlZAorICovCisjZGVmaW5lIFBKX0VJR05PUkVECSAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgMjApLyogNzAwMjAgKi8KKy8qKgorICogQGhpZGVpbml0aWFsaXplcgorICogSVB2NiBpcyBub3Qgc3VwcG9ydGVkCisgKi8KKyNkZWZpbmUgUEpfRUlQVjZOT1RTVVAJICAgIChQSl9FUlJOT19TVEFSVF9TVEFUVVMgKyAyMSkvKiA3MDAyMSAqLworLyoqCisgKiBAaGlkZWluaXRpYWxpemVyCisgKiBVbnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseQorICovCisjZGVmaW5lIFBKX0VBRk5PVFNVUAkgICAgKFBKX0VSUk5PX1NUQVJUX1NUQVRVUyArIDIyKS8qIDcwMDIyICovCisvKioKKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqIE9iamVjdCBubyBsb25nZXIgZXhpc3RzCisgKi8KKyNkZWZpbmUgUEpfRUdPTkUJICAgIChQSl9FUlJOT19TVEFSVF9TVEFUVVMgKyAyMykvKiA3MDAyMyAqLworLyoqCisgKiBAaGlkZWluaXRpYWxpemVyCisgKiBTb2NrZXQgaXMgc3RvcHBlZAorICovCisjZGVmaW5lIFBKX0VTT0NLRVRTVE9QCSAgICAoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgMjQpLyogNzAwMjQgKi8KKworLyoqIEB9ICovICAgLyogcGpfZXJybnVtICovCisKKy8qKiBAfSAqLyAgIC8qIHBqX2Vycm5vICovCisKKworLyoqCisgKiBQSl9FUlJOT19TVEFSVCBpcyB3aGVyZSBQSkxJQiBzcGVjaWZpYyBlcnJvciB2YWx1ZXMgc3RhcnQuCisgKi8KKyNkZWZpbmUgUEpfRVJSTk9fU1RBUlQJCTIwMDAwCisKKy8qKgorICogUEpfRVJSTk9fU1BBQ0VfU0laRSBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZXJyb3JzIGluIG9uZSBvZiAKKyAqIHRoZSBlcnJvci9zdGF0dXMgcmFuZ2UgYmVsb3cuCisgKi8KKyNkZWZpbmUgUEpfRVJSTk9fU1BBQ0VfU0laRQk1MDAwMAorCisvKioKKyAqIFBKX0VSUk5PX1NUQVJUX1NUQVRVUyBpcyB3aGVyZSBQSkxJQiBzcGVjaWZpYyBzdGF0dXMgY29kZXMgc3RhcnQuCisgKiBFZmZlY3RpdmVseSB0aGUgZXJyb3IgaW4gdGhpcyBjbGFzcyB3b3VsZCBiZSA3MDAwMCAtIDExOTAwMC4KKyAqLworI2RlZmluZSBQSl9FUlJOT19TVEFSVF9TVEFUVVMJKFBKX0VSUk5PX1NUQVJUICsgUEpfRVJSTk9fU1BBQ0VfU0laRSkKKworLyoqCisgKiBQSl9FUlJOT19TVEFSVF9TWVMgY29udmVydHMgcGxhdGZvcm0gc3BlY2lmaWMgZXJyb3IgY29kZXMgaW50bworICogcGpfc3RhdHVzX3QgdmFsdWVzLgorICogRWZmZWN0aXZlbHkgdGhlIGVycm9yIGluIHRoaXMgY2xhc3Mgd291bGQgYmUgMTIwMDAwIC0gMTY5MDAwLgorICovCisjZGVmaW5lIFBKX0VSUk5PX1NUQVJUX1NZUwkoUEpfRVJSTk9fU1RBUlRfU1RBVFVTICsgUEpfRVJSTk9fU1BBQ0VfU0laRSkKKworLyoqCisgKiBQSl9FUlJOT19TVEFSVF9VU0VSIGFyZSByZXNlcnZlZCBmb3IgYXBwbGljYXRpb25zIHRoYXQgdXNlIGVycm9yCisgKiBjb2RlcyBhbG9uZyB3aXRoIFBKTElCIGNvZGVzLgorICogRWZmZWN0aXZlbHkgdGhlIGVycm9yIGluIHRoaXMgY2xhc3Mgd291bGQgYmUgMTcwMDAwIC0gMjE5MDAwLgorICovCisjZGVmaW5lIFBKX0VSUk5PX1NUQVJUX1VTRVIJKFBKX0VSUk5PX1NUQVJUX1NZUyArIFBKX0VSUk5PX1NQQUNFX1NJWkUpCisKKworLyoKKyAqIEJlbG93IGFyZSBsaXN0IG9mIGVycm9yIHNwYWNlcyB0aGF0IGhhdmUgYmVlbiB0YWtlbiBzbyBmYXI6CisgKiAgLSBQSlNJUF9FUlJOT19TVEFSVAkJKFBKX0VSUk5PX1NUQVJUX1VTRVIpCisgKiAgLSBQSk1FRElBX0VSUk5PX1NUQVJUCShQSl9FUlJOT19TVEFSVF9VU0VSICsgUEpfRVJSTk9fU1BBQ0VfU0laRSkKKyAqICAtIFBKU0lQX1NJTVBMRV9FUlJOT19TVEFSVAkoUEpfRVJSTk9fU1RBUlRfVVNFUiArIFBKX0VSUk5PX1NQQUNFX1NJWkUqMikKKyAqICAtIFBKTElCX1VUSUxfRVJSTk9fU1RBUlQJKFBKX0VSUk5PX1NUQVJUX1VTRVIgKyBQSl9FUlJOT19TUEFDRV9TSVpFKjMpCisgKiAgLSBQSk5BVEhfRVJSTk9fU1RBUlQJKFBKX0VSUk5PX1NUQVJUX1VTRVIgKyBQSl9FUlJOT19TUEFDRV9TSVpFKjQpCisgKiAgLSBQSk1FRElBX0FVRElPREVWX0VSUk5PX1NUQVJUIChQSl9FUlJOT19TVEFSVF9VU0VSICsgUEpfRVJSTk9fU1BBQ0VfU0laRSo1KQorICogIC0gUEpfU1NMX0VSUk5PX1NUQVJUCSAgIChQSl9FUlJOT19TVEFSVF9VU0VSICsgUEpfRVJSTk9fU1BBQ0VfU0laRSo2KQorICogIC0gUEpNRURJQV9WSURFT0RFVl9FUlJOT19TVEFSVCAoUEpfRVJSTk9fU1RBUlRfVVNFUiArIFBKX0VSUk5PX1NQQUNFX1NJWkUqNykKKyAqLworCisvKiBJbnRlcm5hbCAqLwordm9pZCBwal9lcnJub19jbGVhcl9oYW5kbGVycyh2b2lkKTsKKworCisvKioqKioqIEludGVybmFsIGZvciBQSl9QRVJST1IgKioqKioqKi8KKworLyoqCisgKiBAZGVmIHBqX3BlcnJvcl93cmFwcGVyXzEoYXJnKQorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gd3JpdGUgbG9nIHdpdGggdmVyYm9zaXR5IDEuIFdpbGwgZXZhbHVhdGUgdG8KKyAqIGVtcHR5IGV4cHJlc3Npb24gaWYgUEpfTE9HX01BWF9MRVZFTCBpcyBiZWxvdyAxLgorICogQHBhcmFtIGFyZyAgICAgICBMb2cgZXhwcmVzc2lvbi4KKyAqLworI2lmIFBKX0xPR19NQVhfTEVWRUwgPj0gMQorICAgICNkZWZpbmUgcGpfcGVycm9yX3dyYXBwZXJfMShhcmcpCXBqX3BlcnJvcl8xIGFyZworICAgIC8qKiBJbnRlcm5hbCBmdW5jdGlvbi4gKi8KKyAgICBQSl9ERUNMKHZvaWQpIHBqX3BlcnJvcl8xKGNvbnN0IGNoYXIgKnNlbmRlciwgcGpfc3RhdHVzX3Qgc3RhdHVzLCAKKwkJCSAgICAgIGNvbnN0IGNoYXIgKnRpdGxlX2ZtdCwgLi4uKTsKKyNlbHNlCisgICAgI2RlZmluZSBwal9wZXJyb3Jfd3JhcHBlcl8xKGFyZykKKyNlbmRpZgorCisvKioKKyAqIEBkZWYgcGpfcGVycm9yX3dyYXBwZXJfMihhcmcpCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byB3cml0ZSBsb2cgd2l0aCB2ZXJib3NpdHkgMi4gV2lsbCBldmFsdWF0ZSB0bworICogZW1wdHkgZXhwcmVzc2lvbiBpZiBQSl9MT0dfTUFYX0xFVkVMIGlzIGJlbG93IDIuCisgKiBAcGFyYW0gYXJnICAgICAgIExvZyBleHByZXNzaW9uLgorICovCisjaWYgUEpfTE9HX01BWF9MRVZFTCA+PSAyCisgICAgI2RlZmluZSBwal9wZXJyb3Jfd3JhcHBlcl8yKGFyZykJcGpfcGVycm9yXzIgYXJnCisgICAgLyoqIEludGVybmFsIGZ1bmN0aW9uLiAqLworICAgIFBKX0RFQ0wodm9pZCkgcGpfcGVycm9yXzIoY29uc3QgY2hhciAqc2VuZGVyLCBwal9zdGF0dXNfdCBzdGF0dXMsIAorCQkJICAgICAgY29uc3QgY2hhciAqdGl0bGVfZm10LCAuLi4pOworI2Vsc2UKKyAgICAjZGVmaW5lIHBqX3BlcnJvcl93cmFwcGVyXzIoYXJnKQorI2VuZGlmCisKKy8qKgorICogQGRlZiBwal9wZXJyb3Jfd3JhcHBlcl8zKGFyZykKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIHdyaXRlIGxvZyB3aXRoIHZlcmJvc2l0eSAzLiBXaWxsIGV2YWx1YXRlIHRvCisgKiBlbXB0eSBleHByZXNzaW9uIGlmIFBKX0xPR19NQVhfTEVWRUwgaXMgYmVsb3cgMy4KKyAqIEBwYXJhbSBhcmcgICAgICAgTG9nIGV4cHJlc3Npb24uCisgKi8KKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDMKKyAgICAjZGVmaW5lIHBqX3BlcnJvcl93cmFwcGVyXzMoYXJnKQlwal9wZXJyb3JfMyBhcmcKKyAgICAvKiogSW50ZXJuYWwgZnVuY3Rpb24uICovCisgICAgUEpfREVDTCh2b2lkKSBwal9wZXJyb3JfMyhjb25zdCBjaGFyICpzZW5kZXIsIHBqX3N0YXR1c190IHN0YXR1cywgCisJCQkgICAgICBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLik7CisjZWxzZQorICAgICNkZWZpbmUgcGpfcGVycm9yX3dyYXBwZXJfMyhhcmcpCisjZW5kaWYKKworLyoqCisgKiBAZGVmIHBqX3BlcnJvcl93cmFwcGVyXzQoYXJnKQorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gd3JpdGUgbG9nIHdpdGggdmVyYm9zaXR5IDQuIFdpbGwgZXZhbHVhdGUgdG8KKyAqIGVtcHR5IGV4cHJlc3Npb24gaWYgUEpfTE9HX01BWF9MRVZFTCBpcyBiZWxvdyA0LgorICogQHBhcmFtIGFyZyAgICAgICBMb2cgZXhwcmVzc2lvbi4KKyAqLworI2lmIFBKX0xPR19NQVhfTEVWRUwgPj0gNAorICAgICNkZWZpbmUgcGpfcGVycm9yX3dyYXBwZXJfNChhcmcpCXBqX3BlcnJvcl80IGFyZworICAgIC8qKiBJbnRlcm5hbCBmdW5jdGlvbi4gKi8KKyAgICBQSl9ERUNMKHZvaWQpIHBqX3BlcnJvcl80KGNvbnN0IGNoYXIgKnNlbmRlciwgcGpfc3RhdHVzX3Qgc3RhdHVzLCAKKwkJCSAgICAgIGNvbnN0IGNoYXIgKnRpdGxlX2ZtdCwgLi4uKTsKKyNlbHNlCisgICAgI2RlZmluZSBwal9wZXJyb3Jfd3JhcHBlcl80KGFyZykKKyNlbmRpZgorCisvKioKKyAqIEBkZWYgcGpfcGVycm9yX3dyYXBwZXJfNShhcmcpCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byB3cml0ZSBsb2cgd2l0aCB2ZXJib3NpdHkgNS4gV2lsbCBldmFsdWF0ZSB0bworICogZW1wdHkgZXhwcmVzc2lvbiBpZiBQSl9MT0dfTUFYX0xFVkVMIGlzIGJlbG93IDUuCisgKiBAcGFyYW0gYXJnICAgICAgIExvZyBleHByZXNzaW9uLgorICovCisjaWYgUEpfTE9HX01BWF9MRVZFTCA+PSA1CisgICAgI2RlZmluZSBwal9wZXJyb3Jfd3JhcHBlcl81KGFyZykJcGpfcGVycm9yXzUgYXJnCisgICAgLyoqIEludGVybmFsIGZ1bmN0aW9uLiAqLworICAgIFBKX0RFQ0wodm9pZCkgcGpfcGVycm9yXzUoY29uc3QgY2hhciAqc2VuZGVyLCBwal9zdGF0dXNfdCBzdGF0dXMsIAorCQkJICAgICAgY29uc3QgY2hhciAqdGl0bGVfZm10LCAuLi4pOworI2Vsc2UKKyAgICAjZGVmaW5lIHBqX3BlcnJvcl93cmFwcGVyXzUoYXJnKQorI2VuZGlmCisKKy8qKgorICogQGRlZiBwal9wZXJyb3Jfd3JhcHBlcl82KGFyZykKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIHdyaXRlIGxvZyB3aXRoIHZlcmJvc2l0eSA2LiBXaWxsIGV2YWx1YXRlIHRvCisgKiBlbXB0eSBleHByZXNzaW9uIGlmIFBKX0xPR19NQVhfTEVWRUwgaXMgYmVsb3cgNi4KKyAqIEBwYXJhbSBhcmcgICAgICAgTG9nIGV4cHJlc3Npb24uCisgKi8KKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDYKKyAgICAjZGVmaW5lIHBqX3BlcnJvcl93cmFwcGVyXzYoYXJnKQlwal9wZXJyb3JfNiBhcmcKKyAgICAvKiogSW50ZXJuYWwgZnVuY3Rpb24uICovCisgICAgUEpfREVDTCh2b2lkKSBwal9wZXJyb3JfNihjb25zdCBjaGFyICpzZW5kZXIsIHBqX3N0YXR1c190IHN0YXR1cywgCisJCQkgICAgICBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLik7CisjZWxzZQorICAgICNkZWZpbmUgcGpfcGVycm9yX3dyYXBwZXJfNihhcmcpCisjZW5kaWYKKworCisKKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpfRVJSTk9fSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovZXhjZXB0LmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2V4Y2VwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4N2RkOGYKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2V4Y2VwdC5oCkBAIC0wLDAgKzEsNDIxIEBACisvKiAkSWQ6IGV4Y2VwdC5oIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0VYQ0VQVElPTl9IX18KKyNkZWZpbmUgX19QSl9FWENFUFRJT05fSF9fCisKKy8qKgorICogQGZpbGUgZXhjZXB0LmgKKyAqIEBicmllZiBFeGNlcHRpb24gSGFuZGxpbmcgaW4gQy4KKyAqLworCisjaW5jbHVkZSA8cGovdHlwZXMuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvc2V0am1wLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisKKworUEpfQkVHSU5fREVDTAorCisKKy8qKgorICogQGRlZmdyb3VwIFBKX0VYQ0VQVCBFeGNlcHRpb24gSGFuZGxpbmcKKyAqIEBpbmdyb3VwIFBKX01JU0MKKyAqIEB7CisgKgorICogXHNlY3Rpb24gcGpfZXhjZXB0X3NhbXBsZV9zZWMgUXVpY2sgRXhhbXBsZQorICoKKyAqIEZvciB0aGUgaW1wYXRpZW50LCB0YWtlIGEgbG9vayBhdCBzb21lIGV4YW1wbGVzOgorICogIC0gQHJlZiBwYWdlX3BqbGliX3NhbXBsZXNfZXhjZXB0X2MKKyAqICAtIEByZWYgcGFnZV9wamxpYl9leGNlcHRpb25fdGVzdAorICoKKyAqIFxzZWN0aW9uIHBqX2V4Y2VwdF9leGNlcHQgRXhjZXB0aW9uIEhhbmRsaW5nCisgKgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZXhjZXB0aW9uIGhhbmRsaW5nIHN5bnRhY3RpY2FsbHkgc2ltaWxhciB0byBDKysgaW4KKyAqIEMgbGFuZ3VhZ2UuIEluIFdpbjMyIHN5c3RlbXMsIGl0IHVzZXMgV2luZG93cyBTdHJ1Y3R1cmVkIEV4Y2VwdGlvbgorICogSGFuZGxpbmcgKFNFSCkgaWYgbWFjcm8gUEpfRVhDRVBUSU9OX1VTRV9XSU4zMl9TRUggaXMgbm9uLXplcm8uCisgKiBPdGhlcndpc2UgaXQgd2lsbCB1c2Ugc2V0am1wKCkgYW5kIGxvbmdqbXAoKS4KKyAqCisgKiBPbiBzb21lIHBsYXRmb3JtcyB3aGVyZSBzZXRqbXAvbG9uZ2ptcCBpcyBub3QgYXZhaWxhYmxlLCBzZXRqbXAvbG9uZ2ptcCAKKyAqIGltcGxlbWVudGF0aW9uIGlzIHByb3ZpZGVkLiBTZWUgPHBqL2NvbXBhdC9zZXRqbXAuaD4gZm9yIGNvbXBhdGliaWxpdHkuCisgKgorICogVGhlIGV4Y2VwdGlvbiBoYW5kbGluZyBtZWNoYW5pc20gaXMgY29tcGxldGVseSB0aHJlYWQgc2FmZSwgc28gdGhlIGV4Y2VwdGlvbgorICogdGhyb3duIGJ5IG9uZSB0aHJlYWQgd2lsbCBub3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgdGhyZWFkLgorICoKKyAqIFRoZSBleGNlcHRpb24gaGFuZGxpbmcgY29uc3RydWN0cyBhcmUgc2ltaWxhciB0byBDKysuIFRoZSBibG9ja3Mgd2lsbCBiZQorICogY29uc3RydWN0ZWQgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nIHNhbXBsZToKKyAqCisgKiBcdmVyYmF0aW0KKyAgICNkZWZpbmUgTk9fTUVNT1JZICAgICAxCisgICAjZGVmaW5lIFNZTlRBWF9FUlJPUiAgMgorICAKKyAgIGludCBzYW1wbGUxKCkKKyAgIHsKKyAgICAgIFBKX1VTRV9FWENFUFRJT047ICAvLyBkZWNsYXJlIGxvY2FsIGV4Y2VwdGlvbiBzdGFjay4KKyAgCisgICAgICBQSl9UUlkgeworICAgICAgICAuLi4vLyBkbyBzb21ldGhpbmcuLgorICAgICAgfQorICAgICAgUEpfQ0FUQ0goTk9fTUVNT1JZKSB7CisgICAgICAgIC4uLiAvLyBoYW5kbGUgZXhjZXB0aW9uIDEKKyAgICAgIH0KKyAgICAgIFBKX0VORDsKKyAgIH0KKworICAgaW50IHNhbXBsZTIoKQorICAgeworICAgICAgUEpfVVNFX0VYQ0VQVElPTjsgIC8vIGRlY2xhcmUgbG9jYWwgZXhjZXB0aW9uIHN0YWNrLgorICAKKyAgICAgIFBKX1RSWSB7CisgICAgICAgIC4uLi8vIGRvIHNvbWV0aGluZy4uCisgICAgICB9CisgICAgICBQSl9DQVRDSF9BTlkgeworICAgICAgICAgaWYgKFBKX0dFVF9FWENFUFRJT04oKSA9PSBOT19NRU1PUlkpCisJICAgIC4uLjsgLy8gaGFuZGxlIG5vIG1lbW9yeSBzaXR1YXRpb24KKwkgZWxzZSBpZiAoUEpfR0VUX0VYQ0VQVElPTigpID09IFNZTlRBWF9FUlJPUikKKwkgICAgLi4uOyAvLyBoYW5kbGUgc3ludGF4IGVycm9yCisgICAgICB9CisgICAgICBQSl9FTkQ7CisgICB9CisgICBcZW5kdmVyYmF0aW0KKyAqCisgKiBUaGUgYWJvdmUgc2FtcGxlIHVzZXMgaGFyZCBjb2RlZCBleGNlcHRpb24gSUQuIEl0IGlzIEBiIHN0cm9uZ2x5CisgKiByZWNvbW1lbmRlZCB0aGF0IGFwcGxpY2F0aW9ucyByZXF1ZXN0IGEgdW5pcXVlIGV4Y2VwdGlvbiBJRCBpbnN0ZWFkCisgKiBvZiBoYXJkIGNvZGVkIHZhbHVlIGxpa2UgYWJvdmUuCisgKgorICogXHNlY3Rpb24gcGpfZXhjZXB0X3JlZyBFeGNlcHRpb24gSUQgQWxsb2NhdGlvbgorICoKKyAqIFRvIGVuc3VyZSB0aGF0IGV4Y2VwdGlvbiBJRCAobnVtYmVyKSBhcmUgdXNlZCBjb25zaXN0ZW50bHkgYW5kIHRvCisgKiBwcmV2ZW50IElEIGNvbGxpc2lvbnMgaW4gYW4gYXBwbGljYXRpb24sIGl0IGlzIHN0cm9uZ2x5IHN1Z2dlc3RlZCB0aGF0IAorICogYXBwbGljYXRpb25zIGFsbG9jYXRlIGFuIGV4Y2VwdGlvbiBJRCBmb3IgZWFjaCBwb3NzaWJsZSBleGNlcHRpb24KKyAqIHR5cGUuIEFzIGEgYm9udXMgb2YgdGhpcyBwcm9jZXNzLCB0aGUgYXBwbGljYXRpb24gY2FuIGlkZW50aWZ5CisgKiB0aGUgbmFtZSBvZiB0aGUgZXhjZXB0aW9uIHdoZW4gdGhlIHBhcnRpY3VsYXIgZXhjZXB0aW9uIGlzIHRocm93bi4KKyAqCisgKiBFeGNlcHRpb24gSUQgbWFuYWdlbWVudCBhcmUgcGVyZm9ybWVkIHdpdGggdGhlIGZvbGxvd2luZyBBUElzOgorICogIC0gI3BqX2V4Y2VwdGlvbl9pZF9hbGxvYygpLgorICogIC0gI3BqX2V4Y2VwdGlvbl9pZF9mcmVlKCkuCisgKiAgLSAjcGpfZXhjZXB0aW9uX2lkX25hbWUoKS4KKyAqCisgKgorICogUEpMSUIgaXRzZWxmIGF1dG9tYXRpY2FsbHkgYWxsb2NhdGVzIG9uZSBleGNlcHRpb24gaWQsIGkuZS4KKyAqICNQSl9OT19NRU1PUllfRVhDRVBUSU9OIHdoaWNoIGlzIGRlY2xhcmVkIGluIDxwai9wb29sLmg+LiBUaGlzIGV4Y2VwdGlvbgorICogSUQgaXMgcmFpc2VkIGJ5IGRlZmF1bHQgcG9vbCBwb2xpY3kgd2hlbiBpdCBmYWlscyB0byBhbGxvY2F0ZSBtZW1vcnkuCisgKgorICogQ0FWRUFUUzoKKyAqICAtIHVubGlrZSBDKysgZXhjZXB0aW9uLCB0aGUgc2NoZW1lIGhlcmUgd29uJ3QgY2FsbCBkZXN0cnVjdG9ycyBvZiBsb2NhbAorICogICAgb2JqZWN0cyBpZiBleGNlcHRpb24gaXMgdGhyb3duLiBDYXJlIG11c3QgYmUgdGFrZW4gd2hlbiBhIGZ1bmN0aW9uCisgKiAgICBob2xkIHNvbWUgcmVzb3JjZSBzdWNoIGFzIHBvb2wgb3IgbXV0ZXggZXRjLgorICogIC0gWW91IENBTiBOT1QgbWFrZSBuZXN0ZWQgZXhjZXB0aW9uIGluIG9uZSBzaW5nbGUgZnVuY3Rpb24gd2l0aG91dCB1c2luZworICogICAgYSBuZXN0ZWQgUEpfVVNFX0VYQ0VQVElPTi4gU2FtcGxlczoKKyAgXHZlcmJhdGltCisJdm9pZCB3cm9uZ19zYW1wbGUoKQorCXsKKwkgICAgUEpfVVNFX0VYQ0VQVElPTjsKKworCSAgICBQSl9UUlkgeworCQkvLyBEbyBzdHVmZnMKKwkJLi4uCisJICAgIH0KKwkgICAgUEpfQ0FUQ0hfQU5ZIHsKKwkJLy8gRG8gb3RoZXIgc3R1ZmZzCisJCS4uLi4KKwkJLi4KKworCQkvLyBUaGUgZm9sbG93aW5nIGJsb2NrIGlzIFdST05HISBZb3UgTVVTVCBkZWNsYXJlIAorCQkvLyBQSl9VU0VfRVhDRVBUSU9OIG9uY2UgYWdhaW4gaW4gdGhpcyBibG9jay4KKwkJUEpfVFJZIHsKKwkJICAgIC4uCisJCX0KKwkJUEpfQ0FUQ0hfQU5ZIHsKKwkJICAgIC4uCisJCX0KKwkJUEpfRU5EOworCSAgICB9CisJICAgIFBKX0VORDsKKwl9CisKKyAgXGVuZHZlcmJhdGltCisKKyAqICAtIFlvdSBNVVNUIE5PVCBleGl0IHRoZSBmdW5jdGlvbiBpbnNpZGUgdGhlIFBKX1RSWSBibG9jay4gVGhlIGNvcnJlY3Qgd2F5CisgKiAgICBpcyB0byByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24gYWZ0ZXIgUEpfRU5EIGJsb2NrIGlzIGV4ZWN1dGVkLiAKKyAqICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCB5aWVsZCBjcmFzaCBub3QgaW4gdGhpcyBjb2RlLAorICogICAgYnV0IHJhdGhlciBpbiB0aGUgc3Vic2VxdWVudCBleGVjdXRpb24gb2YgUEpfVFJZIGJsb2NrOgorICBcdmVyYmF0aW0KKyAgICAgICAgdm9pZCB3cm9uZ19zYW1wbGUoKQorCXsKKwkgICAgUEpfVVNFX0VYQ0VQVElPTjsKKworCSAgICBQSl9UUlkgeworCQkvLyBkbyBzb21lIHN0dWZmcworCQkuLi4KKwkJcmV0dXJuOwkgICAgICAgIDw9PT09PT09IERPIE5PVCBETyBUSElTIQorCSAgICB9CisJICAgIFBKX0NBVENIX0FOWSB7CisJICAgIH0KKwkgICAgUEpfRU5EOworCX0KKyAgXGVuZHZlcmJhdGltCisgIAorICogIC0gWW91IGNhbiBub3QgcHJvdmlkZSBtb3JlIHRoYW4gUEpfQ0FUQ0ggb3IgUEpfQ0FUQ0hfQU5ZIG5vciB1c2UgUEpfQ0FUQ0gKKyAqICAgIGFuZCBQSl9DQVRDSF9BTlkgZm9yIGEgc2luZ2xlIFBKX1RSWS4KKyAqICAtIEV4Y2VwdGlvbnMgd2lsbCBhbHdheXMgYmUgY2F1Z2h0IGJ5IHRoZSBmaXJzdCBoYW5kbGVyICh1bmxpa2UgQysrIHdoZXJlCisgKiAgICBleGNlcHRpb24gaXMgb25seSBjYXVnaHQgaWYgdGhlIHR5cGUgbWF0Y2hlcy4KKworICogXHNlY3Rpb24gUEpfRVhfS0VZV09SRFMgS2V5d29yZHMKKyAqCisgKiBcc3Vic2VjdGlvbiBQSl9USFJPVyBQSl9USFJPVyhleHByZXNzaW9uKQorICogVGhyb3cgYW4gZXhjZXB0aW9uLiBUaGUgZXhwcmVzc2lvbiB0aHJvd24gaXMgYW4gaW50ZWdlciBhcyB0aGUgcmVzdWx0IG9mCisgKiB0aGUgXGEgZXhwcmVzc2lvbi4gVGhpcyBrZXl3b3JkIGNhbiBiZSBzcGVjaWZpZWQgYW55d2hlcmUgd2l0aGluIHRoZSAKKyAqIHByb2dyYW0uCisgKgorICogXHN1YnNlY3Rpb24gUEpfVVNFX0VYQ0VQVElPTiBQSl9VU0VfRVhDRVBUSU9OCisgKiBTcGVjaWZ5IHRoaXMgaW4gdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gc2VjdGlvbiBvZiB0aGUgZnVuY3Rpb24gYmxvY2sgCisgKiAob3IgYW55IGJsb2NrcykgdG8gc3BlY2lmeSB0aGF0IHRoZSBibG9jayBoYXMgXGEgUEpfVFJZL1BKX0NBVENIIGV4Y2VwdGlvbiAKKyAqIGJsb2NrLiAKKyAqIEFjdHVhbGx5LCB0aGlzIGlzIGp1c3QgYSBtYWNybyB0byBkZWNsYXJlIGxvY2FsIHZhcmlhYmxlIHdoaWNoIGlzIHVzZWQgdG8KKyAqIHB1c2ggdGhlIGV4Y2VwdGlvbiBzdGF0ZSB0byB0aGUgZXhjZXB0aW9uIHN0YWNrLgorICogTm90ZTogeW91IG11c3Qgc3BlY2lmeSBQSl9VU0VfRVhDRVBUSU9OIGFzIHRoZSBsYXN0IHN0YXRlbWVudCBpbiB0aGUKKyAqIGxvY2FsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucywgc2luY2UgaXQgbWF5IGV2YWx1YXRlIHRvIG5vdGhpbmcuCisgKgorICogXHN1YnNlY3Rpb24gUEpfVFJZIFBKX1RSWQorICogVGhlIFxhIFBKX1RSWSBrZXl3b3JkIGlzIHR5cGljYWxseSBmb2xsb3dlZCBieSBhIGJsb2NrLiBJZiBhbiBleGNlcHRpb24gaXMKKyAqIHRocm93biBpbiB0aGlzIGJsb2NrLCB0aGVuIHRoZSBleGVjdXRpb24gd2lsbCByZXN1bWUgdG8gdGhlIFxhIFBKX0NBVENIIAorICogaGFuZGxlci4KKyAqCisgKiBcc3Vic2VjdGlvbiBQSl9DQVRDSCBQSl9DQVRDSChleHByZXNzaW9uKQorICogVGhlIFxhIFBKX0NBVENIIGlzIG5vcm1hbGx5IGZvbGxvd2VkIGJ5IGEgYmxvY2suIFRoaXMgYmxvY2sgd2lsbCBiZSBleGVjdXRlZAorICogaWYgdGhlIGV4Y2VwdGlvbiBiZWluZyB0aHJvd24gaXMgZXF1YWwgdG8gdGhlIGV4cHJlc3Npb24gc3BlY2lmaWVkIGluIHRoZQorICogXGEgUEpfQ0FUQ0guCisgKgorICogXHN1YnNlY3Rpb24gUEpfQ0FUQ0hfQU5ZIFBKX0NBVENIX0FOWQorICogVGhlIFxhIFBKX0NBVENIIGlzIG5vcm1hbGx5IGZvbGxvd2VkIGJ5IGEgYmxvY2suIFRoaXMgYmxvY2sgd2lsbCBiZSBleGVjdXRlZAorICogaWYgYW55IGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGluIHRoZSBUUlkgYmxvY2suCisgKgorICogXHN1YnNlY3Rpb24gUEpfRU5EIFBKX0VORAorICogU3BlY2lmeSB0aGlzIGtleXdvcmQgdG8gbWFyayB0aGUgZW5kIG9mIFxhIFBKX1RSWSAvIFxhIFBKX0NBVENIIGJsb2Nrcy4KKyAqCisgKiBcc3Vic2VjdGlvbiBQSl9HRVRfRVhDRVBUSU9OIFBKX0dFVF9FWENFUFRJT04odm9pZCkKKyAqIEdldCB0aGUgbGFzdCBleGNlcHRpb24gdGhyb3duLiBUaGlzIG1hY3JvIGlzIG5vcm1hbGx5IGNhbGxlZCBpbnNpZGUgdGhlCisgKiBcYSBQSl9DQVRDSCBvciBcYSBQSl9DQVRDSF9BTlkgYmxvY2ssIGFsdG91Z2ggaXQgY2FuIGJlIHVzZWQgYW55d2hlcmUgd2hlcmUKKyAqIHRoZSBcYSBQSl9VU0VfRVhDRVBUSU9OIGRlZmluaXRpb24gaXMgaW4gc2NvcGUuCisgKgorICogCisgKiBcc2VjdGlvbiBwal9leGNlcHRfZXhhbXBsZXNfc2VjIEV4YW1wbGVzCisgKgorICogRm9yIHNvbWUgZXhhbXBsZXMgb24gaG93IHRvIHVzZSB0aGUgZXhjZXB0aW9uIGNvbnN0cnVjdCwgcGxlYXNlIHNlZToKKyAqICAtIEByZWYgcGFnZV9wamxpYl9zYW1wbGVzX2V4Y2VwdF9jCisgKiAgLSBAcmVmIHBhZ2VfcGpsaWJfZXhjZXB0aW9uX3Rlc3QKKyAqLworCisvKioKKyAqIEFsbG9jYXRlIGEgdW5pcXVlIGV4Y2VwdGlvbiBpZC4KKyAqIEFwcGxpY2F0aW9ucyBkb24ndCBoYXZlIHRvIGFsbG9jYXRlIGEgdW5pcXVlIGV4Y2VwdGlvbiBJRCBiZWZvcmUgdXNpbmcKKyAqIHRoZSBleGNlcHRpb24gY29uc3RydWN0LiBIb3dldmVyLCBieSBkb2luZyBzbyBpdCBlbnN1cmVzIHRoYXQgdGhlcmUgaXMKKyAqIG5vIGNvbGxpc2lvbnMgb2YgZXhjZXB0aW9uIElELgorICoKKyAqIEFzIGEgYm9udXMsIHdoZW4gZXhjZXB0aW9uIG51bWJlciBpcyBhY3F1aXJlZCB0aHJvdWdoIHRoaXMgZnVuY3Rpb24sCisgKiB0aGUgbGlicmFyeSBjYW4gYXNzaWduIG5hbWUgdG8gdGhlIGV4Y2VwdGlvbiAob25seSBpZiAKKyAqIFBKX0hBU19FWENFUFRJT05fTkFNRVMgaXMgZW5hYmxlZCAoZGVmYXVsdCBpcyB5ZXMpKSBhbmQgZmluZCBvdXQgdGhlCisgKiBleGNlcHRpb24gbmFtZSB3aGVuIGl0IGNhdGNoZXMgYW4gZXhjZXB0aW9uLgorICoKKyAqIEBwYXJhbSBuYW1lICAgICAgTmFtZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4Y2VwdGlvbiBJRC4KKyAqIEBwYXJhbSBpZCAgICAgICAgUG9pbnRlciB0byByZWNlaXZlIHRoZSBJRC4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2VzcyBvciBQSl9FVE9PTUFOWSBpZiB0aGUgbGlicmFyeSAKKyAqICAgICAgICAgICAgICAgICAgaXMgcnVubmluZyBvdXQgb3V0IGlkcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZXhjZXB0aW9uX2lkX2FsbG9jKGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfZXhjZXB0aW9uX2lkX3QgKmlkKTsKKworLyoqCisgKiBGcmVlIGFuIGV4Y2VwdGlvbiBpZC4KKyAqCisgKiBAcGFyYW0gaWQgICAgICAgIFRoZSBleGNlcHRpb24gSUQuCisgKgorICogQHJldHVybiAgICAgICAgICBQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9leGNlcHRpb25faWRfZnJlZShwal9leGNlcHRpb25faWRfdCBpZCk7CisKKy8qKgorICogUmV0cmlldmUgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4Y2VwdGlvbiBpZC4KKyAqCisgKiBAcGFyYW0gaWQgICAgICAgIFRoZSBleGNlcHRpb24gSUQuCisgKgorICogQHJldHVybiAgICAgICAgICBUaGUgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBJRC4KKyAqLworUEpfREVDTChjb25zdCBjaGFyKikgcGpfZXhjZXB0aW9uX2lkX25hbWUocGpfZXhjZXB0aW9uX2lkX3QgaWQpOworCisKKy8qKiBAfSAqLworCisjaWYgZGVmaW5lZChQSl9FWENFUFRJT05fVVNFX1dJTjMyX1NFSCkgJiYgUEpfRVhDRVBUSU9OX1VTRV9XSU4zMl9TRUggIT0gMAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKyAqKiBJTVBMRU1FTlRBVElPTiBPRiBFWENFUFRJT04gVVNJTkcgV0lORE9XUyBTRUgKKyAqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKK1BKX0lERUNMX05PX1JFVFVSTih2b2lkKQorcGpfdGhyb3dfZXhjZXB0aW9uXyhwal9leGNlcHRpb25faWRfdCBpZCkgUEpfQVRUUl9OT1JFVFVSTgoreworICAgIFJhaXNlRXhjZXB0aW9uKGlkLDEsMCxOVUxMKTsKK30KKworI2RlZmluZSBQSl9VU0VfRVhDRVBUSU9OICAgIAorI2RlZmluZSBQSl9UUlkJCSAgICBfX3RyeQorI2RlZmluZSBQSl9DQVRDSChpZCkJICAgIF9fZXhjZXB0KEdldEV4Y2VwdGlvbkNvZGUoKT09aWQgPyBcCisJCQkJICAgICAgRVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUiA6IFwKKwkJCQkgICAgICBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIKQorI2RlZmluZSBQSl9DQVRDSF9BTlkJICAgIF9fZXhjZXB0KEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIpCisjZGVmaW5lIFBKX0VORAkJICAgIAorI2RlZmluZSBQSl9USFJPVyhpZCkJICAgIHBqX3Rocm93X2V4Y2VwdGlvbl8oaWQpCisjZGVmaW5lIFBKX0dFVF9FWENFUFRJT04oKSAgR2V0RXhjZXB0aW9uQ29kZSgpCisKKworI2VsaWYgZGVmaW5lZChQSl9TWU1CSUFOKSAmJiBQSl9TWU1CSUFOIT0wCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorICoqIElNUExFTUVOVEFUSU9OIE9GIEVYQ0VQVElPTiBVU0lORyBTWU1CSUFOIExFQVZFL1RSQVAgRlJBTUVXT1JLCisgKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBUbyBpbmNsdWRlIHRoaXMgZmlsZSwgdGhlIHNvdXJjZSBmaWxlIG11c3QgYmUgY29tcGlsZWQgYXMKKyAqIEMrKyBjb2RlIQorICovCisjaWZkZWYgX19jcGx1c3BsdXMKKworY2xhc3MgVFBqRXhjZXB0aW9uCit7CitwdWJsaWM6CisgICAgaW50IGNvZGVfOworfTsKKworI2RlZmluZSBQSl9VU0VfRVhDRVBUSU9OCisjZGVmaW5lIFBKX1RSWQkJCXRyeQorLy8jZGVmaW5lIFBKX0NBVENIKGlkKQkJCisjZGVmaW5lIFBKX0NBVENIX0FOWQkJY2F0Y2ggKGNvbnN0IFRQakV4Y2VwdGlvbiAmIHBqX2V4Y3BfKQorI2RlZmluZSBQSl9FTkQKKyNkZWZpbmUgUEpfVEhST1coeF9pZCkJCWRvIHsgVFBqRXhjZXB0aW9uIGU7IGUuY29kZV89eF9pZDsgdGhyb3cgZTt9IFwKKwkJCQl3aGlsZSAoMCkKKyNkZWZpbmUgUEpfR0VUX0VYQ0VQVElPTigpCXBqX2V4Y3BfLmNvZGVfCisKKyNlbHNlCisKKyNkZWZpbmUgUEpfVVNFX0VYQ0VQVElPTgorI2RlZmluZSBQSl9UUlkJCQkJCisjZGVmaW5lIFBKX0NBVENIX0FOWQkJaWYgKDApCisjZGVmaW5lIFBKX0VORAorI2RlZmluZSBQSl9USFJPVyh4X2lkKQkJZG8geyBQSl9MT0coMSwoIlBKX1RIUk9XIiwiIGVycm9yIGNvZGUgPSAlZCIseF9pZCkpOyB9IHdoaWxlICgwKQorI2RlZmluZSBQSl9HRVRfRVhDRVBUSU9OKCkJMAorCisjZW5kaWYJLyogX19jcGx1c3BsdXMgKi8KKworI2Vsc2UKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCisgKiogSU1QTEVNRU5UQVRJT04gT0YgRVhDRVBUSU9OIFVTSU5HIEdFTkVSSUMgU0VUSk1QL0xPTkdKTVAKKyAqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgKHdoaWNoIHNob3VsZCBiZSBpbnZpc2libGUgdG8gdXNlcikgbWFuYWdlcyB0aGUgVFJZIGhhbmRsZXIKKyAqIHN0YWNrLgorICovCitzdHJ1Y3QgcGpfZXhjZXB0aW9uX3N0YXRlX3QKK3sgICAgCisgICAgcGpfam1wX2J1ZiBzdGF0ZTsgICAgICAgICAgICAgICAgICAgLyoqPCBqbXBfYnVmLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBzdHJ1Y3QgcGpfZXhjZXB0aW9uX3N0YXRlX3QgKnByZXY7ICAvKio8IFByZXZpb3VzIHN0YXRlIGluIHRoZSBsaXN0LiAqLworfTsKKworLyoqCisgKiBUaHJvdyBleGNlcHRpb24uCisgKiBAcGFyYW0gaWQgICAgRXhjZXB0aW9uIElkLgorICovCitQSl9ERUNMX05PX1JFVFVSTih2b2lkKSAKK3BqX3Rocm93X2V4Y2VwdGlvbl8ocGpfZXhjZXB0aW9uX2lkX3QgaWQpIFBKX0FUVFJfTk9SRVRVUk47CisKKy8qKgorICogUHVzaCBleGNlcHRpb24gaGFuZGxlci4KKyAqLworUEpfREVDTCh2b2lkKSBwal9wdXNoX2V4Y2VwdGlvbl9oYW5kbGVyXyhzdHJ1Y3QgcGpfZXhjZXB0aW9uX3N0YXRlX3QgKnJlYyk7CisKKy8qKgorICogUG9wIGV4Y2VwdGlvbiBoYW5kbGVyLgorICovCitQSl9ERUNMKHZvaWQpIHBqX3BvcF9leGNlcHRpb25faGFuZGxlcl8oc3RydWN0IHBqX2V4Y2VwdGlvbl9zdGF0ZV90ICpyZWMpOworCisvKioKKyAqIERlY2xhcmUgdGhhdCB0aGUgZnVuY3Rpb24gd2lsbCB1c2UgZXhjZXB0aW9uLgorICogQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFBKX1VTRV9FWENFUFRJT04gICAgc3RydWN0IHBqX2V4Y2VwdGlvbl9zdGF0ZV90IHBqX3hfZXhjZXB0X187IGludCBwal94X2NvZGVfXworCisvKioKKyAqIFN0YXJ0IGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIGJsb2NrLgorICogQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFBKX1RSWQkJICAgIGlmICgxKSB7IFwKKwkJCQlwal9wdXNoX2V4Y2VwdGlvbl9oYW5kbGVyXygmcGpfeF9leGNlcHRfXyk7IFwKKwkJCQlwal94X2NvZGVfXyA9IHBqX3NldGptcChwal94X2V4Y2VwdF9fLnN0YXRlKTsgXAorCQkJCWlmIChwal94X2NvZGVfXyA9PSAwKQorLyoqCisgKiBDYXRjaCB0aGUgc3BlY2lmaWVkIGV4Y2VwdGlvbiBJZC4KKyAqIEBwYXJhbSBpZCAgICBUaGUgZXhjZXB0aW9uIG51bWJlciB0byBjYXRjaC4KKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqLworI2RlZmluZSBQSl9DQVRDSChpZCkJICAgIGVsc2UgaWYgKHBqX3hfY29kZV9fID09IChpZCkpCisKKy8qKgorICogQ2F0Y2ggYW55IGV4Y2VwdGlvbiBudW1iZXIuCisgKiBAaGlkZWluaXRpYWxpemVyCisgKi8KKyNkZWZpbmUgUEpfQ0FUQ0hfQU5ZCSAgICBlbHNlCisKKy8qKgorICogRW5kIG9mIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIGJsb2NrLgorICogQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFBKX0VORAkJCXBqX3BvcF9leGNlcHRpb25faGFuZGxlcl8oJnBqX3hfZXhjZXB0X18pOyBcCisJCQkgICAgfSBlbHNlIHt9CisKKy8qKgorICogVGhyb3cgZXhjZXB0aW9uLgorICogQHBhcmFtIGV4Y2VwdGlvbl9pZCAgVGhlIGV4Y2VwdGlvbiBudW1iZXIuCisgKiBAaGlkZWluaXRpYWxpemVyCisgKi8KKyNkZWZpbmUgUEpfVEhST1coZXhjZXB0aW9uX2lkKQlwal90aHJvd19leGNlcHRpb25fKGV4Y2VwdGlvbl9pZCkKKworLyoqCisgKiBHZXQgY3VycmVudCBleGNlcHRpb24uCisgKiBAcmV0dXJuICAgICAgQ3VycmVudCBleGNlcHRpb24gY29kZS4KKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqLworI2RlZmluZSBQSl9HRVRfRVhDRVBUSU9OKCkJKHBqX3hfY29kZV9fKQorCisjZW5kaWYJLyogUEpfRVhDRVBUSU9OX1VTRV9XSU4zMl9TRUggKi8KKworCitQSl9FTkRfREVDTAorCisKKworI2VuZGlmCS8qIF9fUEpfRVhDRVBUSU9OX0hfXyAqLworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovZmlmb2J1Zi5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9maWZvYnVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcwMDJiMAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovZmlmb2J1Zi5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qICRJZDogZmlmb2J1Zi5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfRklGT0JVRl9IX18KKyNkZWZpbmUgX19QSl9GSUZPQlVGX0hfXworCisjaW5jbHVkZSA8cGovdHlwZXMuaD4KKworUEpfQkVHSU5fREVDTAorCit0eXBlZGVmIHN0cnVjdCBwal9maWZvYnVmX3QgcGpfZmlmb2J1Zl90Oworc3RydWN0IHBqX2ZpZm9idWZfdAoreworICAgIGNoYXIgKmZpcnN0LCAqbGFzdDsKKyAgICBjaGFyICp1YmVnaW4sICp1ZW5kOworICAgIGludCBmdWxsOworfTsKKworUEpfREVDTCh2b2lkKQkgICAgIHBqX2ZpZm9idWZfaW5pdCAocGpfZmlmb2J1Zl90ICpmYiwgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBzaXplKTsKK1BKX0RFQ0wodW5zaWduZWQpICAgIHBqX2ZpZm9idWZfbWF4X3NpemUgKHBqX2ZpZm9idWZfdCAqZmIpOworUEpfREVDTCh2b2lkKikJICAgICBwal9maWZvYnVmX2FsbG9jIChwal9maWZvYnVmX3QgKmZiLCB1bnNpZ25lZCBzaXplKTsKK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2ZpZm9idWZfdW5hbGxvYyAocGpfZmlmb2J1Zl90ICpmYiwgdm9pZCAqYnVmKTsKK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2ZpZm9idWZfZnJlZSAocGpfZmlmb2J1Zl90ICpmYiwgdm9pZCAqYnVmKTsKKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpfRklGT0JVRl9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9maWxlX2FjY2Vzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NDA2YjEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2ZpbGVfYWNjZXNzLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qICRJZDogZmlsZV9hY2Nlc3MuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0ZJTEVfQUNDRVNTX0hfXworI2RlZmluZSBfX1BKX0ZJTEVfQUNDRVNTX0hfXworCisvKioKKyAqIEBmaWxlIGZpbGVfYWNjZXNzLmgKKyAqIEBicmllZiBGaWxlIG1hbmlwdWxhdGlvbiBhbmQgYWNjZXNzLgorICovCisjaW5jbHVkZSA8cGovdHlwZXMuaD4KKworUEpfQkVHSU5fREVDTCAKKworLyoqCisgKiBAZGVmZ3JvdXAgUEpfRklMRV9BQ0NFU1MgRmlsZSBBY2Nlc3MKKyAqIEBpbmdyb3VwIFBKX0lPCisgKiBAeworICoKKyAqLworCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBmaWxlIGluZm9ybWF0aW9uLCB0byBiZSBvYnRhaW5lZCBieQorICogY2FsbGluZyAjcGpfZmlsZV9nZXRzdGF0KCkuIFRoZSB0aW1lIGluZm9ybWF0aW9uIGluIHRoaXMgc3RydWN0dXJlCisgKiBpcyBpbiBsb2NhbCB0aW1lLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9maWxlX3N0YXQKK3sKKyAgICBwal9vZmZfdCAgICAgICAgc2l6ZTsgICAvKio8IFRvdGFsIGZpbGUgc2l6ZS4gICAgICAgICAgICAgICAqLworICAgIHBqX3RpbWVfdmFsICAgICBhdGltZTsgIC8qKjwgVGltZSBvZiBsYXN0IGFjY2Vzcy4gICAgICAgICAgICovCisgICAgcGpfdGltZV92YWwgICAgIG10aW1lOyAgLyoqPCBUaW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uLiAgICAgKi8KKyAgICBwal90aW1lX3ZhbCAgICAgY3RpbWU7ICAvKio8IFRpbWUgb2YgbGFzdCBjcmVhdGlvbi4gICAgICAgICAqLworfSBwal9maWxlX3N0YXQ7CisKKworLyoqCisgKiBSZXR1cm5zIG5vbi16ZXJvIGlmIHRoZSBzcGVjaWZpZWQgZmlsZSBleGlzdHMuCisgKgorICogQHBhcmFtIGZpbGVuYW1lICAgICAgVGhlIGZpbGUgbmFtZS4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgICAgICBOb24temVybyBpZiB0aGUgZmlsZSBleGlzdHMuCisgKi8KK1BKX0RFQ0wocGpfYm9vbF90KSBwal9maWxlX2V4aXN0cyhjb25zdCBjaGFyICpmaWxlbmFtZSk7CisKKy8qKgorICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZmlsZS4KKyAqCisgKiBAcGFyYW0gZmlsZW5hbWUgICAgICBUaGUgZmlsZSBuYW1lLgorICoKKyAqIEByZXR1cm4gICAgICAgICAgICAgIFRoZSBmaWxlIHNpemUgaW4gYnl0ZXMgb3IgLTEgb24gZXJyb3IuCisgKi8KK1BKX0RFQ0wocGpfb2ZmX3QpIHBqX2ZpbGVfc2l6ZShjb25zdCBjaGFyICpmaWxlbmFtZSk7CisKKy8qKgorICogRGVsZXRlIGEgZmlsZS4KKyAqCisgKiBAcGFyYW0gZmlsZW5hbWUgICAgICBUaGUgZmlsZW5hbWUuCisgKgorICogQHJldHVybiAgICAgICAgICAgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9maWxlX2RlbGV0ZShjb25zdCBjaGFyICpmaWxlbmFtZSk7CisKKy8qKgorICogTW92ZSBhIFxjIG9sZG5hbWUgdG8gXGMgbmV3bmFtZS4gSWYgXGMgbmV3bmFtZSBhbHJlYWR5IGV4aXN0cywKKyAqIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uCisgKgorICogQHBhcmFtIG9sZG5hbWUgICAgICAgVGhlIGZpbGUgdG8gcmVuYW1lLgorICogQHBhcmFtIG5ld25hbWUgICAgICAgTmV3IGZpbGVuYW1lIHRvIGFzc2lnbi4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgICAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2ZpbGVfbW92ZSggY29uc3QgY2hhciAqb2xkbmFtZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld25hbWUpOworCisKKy8qKgorICogUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQgZmlsZS4gVGhlIHRpbWUgaW5mb3JtYXRpb24gaW4KKyAqIHRoZSBcYyBzdGF0IHN0cnVjdHVyZSB3aWxsIGJlIGluIGxvY2FsIHRpbWUuCisgKgorICogQHBhcmFtIGZpbGVuYW1lICAgICAgVGhlIGZpbGVuYW1lLgorICogQHBhcmFtIHN0YXQgICAgICAgICAgUG9pbnRlciB0byB2YXJpYWJsZSB0byByZWNlaXZlIGZpbGUgaW5mb3JtYXRpb24uCisgKgorICogQHJldHVybiAgICAgICAgICAgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9maWxlX2dldHN0YXQoY29uc3QgY2hhciAqZmlsZW5hbWUsIHBqX2ZpbGVfc3RhdCAqc3RhdCk7CisKKworLyoqIEB9ICovCisKK1BKX0VORF9ERUNMCisKKworI2VuZGlmCS8qIF9fUEpfRklMRV9BQ0NFU1NfSF9fICovCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2ZpbGVfaW8uaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovZmlsZV9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYjdjYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2ZpbGVfaW8uaApAQCAtMCwwICsxLDE4MyBAQAorLyogJElkOiBmaWxlX2lvLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9GSUxFX0lPX0hfXworI2RlZmluZSBfX1BKX0ZJTEVfSU9fSF9fCisKKy8qKgorICogQGZpbGUgZmlsZV9pby5oCisgKiBAYnJpZWYgU2ltcGxlIGZpbGUgSS9PIGFic3RyYWN0aW9uLgorICovCisjaW5jbHVkZSA8cGovdHlwZXMuaD4KKworUEpfQkVHSU5fREVDTCAKKworLyoqCisgKiBAZGVmZ3JvdXAgUEpfRklMRV9JTyBGaWxlIEkvTworICogQGluZ3JvdXAgUEpfSU8KKyAqIEB7CisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9uYWxpdGllcyB0byBwZXJmb3JtIGZpbGUgSS9PLiBUaGUgZmlsZQorICogSS9PIGNhbiBiZSBpbXBsZW1lbnRlZCB3aXRoIHZhcmlvdXMgYmFjay1lbmQsIGVpdGhlciB1c2luZyBuYXRpdmUKKyAqIGZpbGUgQVBJIG9yIEFOU0kgc3RyZWFtLiAKKyAqCisgKiBAc2VjdGlvbiBwal9maWxlX3NpemVfbGltaXRfc2VjIFNpemUgTGltaXRzCisgKgorICogVGhlcmUgbWF5IGJlIGxpbWl0YXRpb24gb24gdGhlIHNpemUgdGhhdCBjYW4gYmUgaGFuZGxlZCBieSB0aGUKKyAqICNwal9maWxlX3NldHBvcygpIG9yICNwal9maWxlX2dldHBvcygpIGZ1bmN0aW9ucy4gVGhlIEFQSSBpdHNlbGYKKyAqIHVzZXMgNjQtYml0IGludGVnZXIgZm9yIHRoZSBmaWxlIG9mZnNldC9wb3NpdGlvbiAod2hlcmUgYXZhaWxhYmxlKTsgCisgKiBob3dldmVyIHNvbWUgYmFja2VuZHMgKHN1Y2ggYXMgQU5TSSkgbWF5IG9ubHkgc3VwcG9ydCBzaWduZWQgMzItYml0IAorICogb2Zmc2V0IHJlc29sdXRpb24uCisgKgorICogUmVhZGluZyBhbmQgd3JpdGluZyBvcGVyYXRpb24gdXNlcyBzaWduZWQgMzItYml0IGludGVnZXIgdG8gaW5kaWNhdGUKKyAqIHRoZSBzaXplLgorICoKKyAqCisgKi8KKworLyoqCisgKiBUaGVzZSBlbnVtZXJhdGlvbnMgYXJlIHVzZWQgd2hlbiBvcGVuaW5nIGZpbGUuIFZhbHVlcyBQSl9PX1JET05MWSwKKyAqIFBKX09fV1JPTkxZLCBhbmQgUEpfT19SRFdSIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFZhbHVlIFBKX09fQVBQRU5ECisgKiBjYW4gb25seSBiZSB1c2VkIHdoZW4gdGhlIGZpbGUgaXMgb3BlbmVkIGZvciB3cml0aW5nLiAKKyAqLworZW51bSBwal9maWxlX2FjY2VzcworeworICAgIFBKX09fUkRPTkxZICAgICA9IDB4MTEwMSwgICAvKio8IE9wZW4gZmlsZSBmb3IgcmVhZGluZy4gICAgICAgICAgICAgKi8KKyAgICBQSl9PX1dST05MWSAgICAgPSAweDExMDIsICAgLyoqPCBPcGVuIGZpbGUgZm9yIHdyaXRpbmcuICAgICAgICAgICAgICovCisgICAgUEpfT19SRFdSICAgICAgID0gMHgxMTAzLCAgIC8qKjwgT3BlbiBmaWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlIHdpbGwgYmUgdHJ1bmNhdGVkLiAgICAgICAgICAgICovCisgICAgUEpfT19BUFBFTkQgICAgID0gMHgxMTA4ICAgIC8qKjwgQXBwZW5kIHRvIGV4aXN0aW5nIGZpbGUuICAgICAgICAgICAqLworfTsKKworLyoqCisgKiBUaGUgc2VlayBkaXJlY3RpdmUgd2hlbiBzZXR0aW5nIHRoZSBmaWxlIHBvc2l0aW9uIHdpdGggI3BqX2ZpbGVfc2V0cG9zLgorICovCitlbnVtIHBqX2ZpbGVfc2Vla190eXBlCit7CisgICAgUEpfU0VFS19TRVQgICAgID0gMHgxMjAxLCAgIC8qKjwgT2Zmc2V0IGZyb20gYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiAqLworICAgIFBKX1NFRUtfQ1VSICAgICA9IDB4MTIwMiwgICAvKio8IE9mZnNldCBmcm9tIGN1cnJlbnQgcG9zaXRpb24uICAgICAgKi8KKyAgICBQSl9TRUVLX0VORCAgICAgPSAweDEyMDMgICAgLyoqPCBTaXplIG9mIHRoZSBmaWxlIHBsdXMgb2Zmc2V0LiAgICAgICovCit9OworCisvKioKKyAqIE9wZW4gdGhlIGZpbGUgYXMgc3BlY2lmaWVkIGluIFxjIHBhdGhuYW1lIHdpdGggdGhlIHNwZWNpZmllZAorICogbW9kZSwgYW5kIHJldHVybiB0aGUgaGFuZGxlIGluIFxjIGZkLiBBbGwgZmlsZXMgd2lsbCBiZSBvcGVuZWQKKyAqIGFzIGJpbmFyeS4KKyAqCisgKiBAcGFyYW0gcG9vbCAgICAgICAgICBQb29sIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIG5ldyBmaWxlIGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gcGF0aG5hbWUgICAgICBUaGUgZmlsZSBuYW1lIHRvIG9wZW4uCisgKiBAcGFyYW0gZmxhZ3MgICAgICAgICBPcGVuIGZsYWdzLCB3aGljaCBpcyBiaXRtYXNrIGNvbWJpbmF0aW9uIG9mCisgKiAgICAgICAgICAgICAgICAgICAgICAjcGpfZmlsZV9hY2Nlc3MgZW51bS4gVGhlIGZsYWcgbXVzdCBiZSBlaXRoZXIKKyAqICAgICAgICAgICAgICAgICAgICAgIFBKX09fUkRPTkxZLCBQSl9PX1dST05MWSwgb3IgUEpfT19SRFdSLiBXaGVuIGZpbGUKKyAqICAgICAgICAgICAgICAgICAgICAgIHdyaXRpbmcgaXMgc3BlY2lmaWVkLCBleGlzdGluZyBmaWxlIHdpbGwgYmUgCisgKiAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZWQgdW5sZXNzIFBKX09fQVBQRU5EIGlzIHNwZWNpZmllZC4KKyAqIEBwYXJhbSBmZCAgICAgICAgICAgIFRoZSByZXR1cm5lZCBkZXNjcmlwdG9yLgorICoKKyAqIEByZXR1cm4gICAgICAgICAgICAgIFBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZXJyb3IuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2ZpbGVfb3Blbihwal9wb29sX3QgKnBvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX29zaGFuZGxlX3QgKmZkKTsKKworLyoqCisgKiBDbG9zZSBhbiBvcGVuZWQgZmlsZSBkZXNjcmlwdG9yLgorICoKKyAqIEBwYXJhbSBmZCAgICAgICAgICAgIFRoZSBmaWxlIGRlc2NyaXB0b3IuCisgKgorICogQHJldHVybiAgICAgICAgICAgICAgUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBvbiBlcnJvci4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZmlsZV9jbG9zZShwal9vc2hhbmRsZV90IGZkKTsKKworLyoqCisgKiBXcml0ZSBkYXRhIHdpdGggdGhlIHNwZWNpZmllZCBzaXplIHRvIGFuIG9wZW5lZCBmaWxlLgorICoKKyAqIEBwYXJhbSBmZCAgICAgICAgICAgIFRoZSBmaWxlIGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gZGF0YSAgICAgICAgICBEYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGZpbGUuCisgKiBAcGFyYW0gc2l6ZSAgICAgICAgICBPbiBpbnB1dCwgc3BlY2lmaWVzIHRoZSBzaXplIG9mIGRhdGEgdG8gYmUgd3JpdHRlbi4KKyAqICAgICAgICAgICAgICAgICAgICAgIE9uIHJldHVybiwgaXQgY29udGFpbnMgdGhlIG51bWJlciBvZiBkYXRhIGFjdHVhbGx5CisgKiAgICAgICAgICAgICAgICAgICAgICB3cml0dGVuIHRvIHRoZSBmaWxlLgorICoKKyAqIEByZXR1cm4gICAgICAgICAgICAgIFBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZXJyb3IuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2ZpbGVfd3JpdGUocGpfb3NoYW5kbGVfdCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCAqc2l6ZSk7CisKKy8qKgorICogUmVhZCBkYXRhIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlLiBXaGVuIGVuZC1vZi1maWxlIGNvbmRpdGlvbiBpcyBzZXQsCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIFBKX1NVQ0NFU1MgYnV0IHRoZSBzaXplIHdpbGwgY29udGFpbiB6ZXJvLgorICoKKyAqIEBwYXJhbSBmZCAgICAgICAgICAgIFRoZSBmaWxlIGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gZGF0YSAgICAgICAgICBQb2ludGVyIHRvIGJ1ZmZlciB0byByZWNlaXZlIHRoZSBkYXRhLgorICogQHBhcmFtIHNpemUgICAgICAgICAgT24gaW5wdXQsIHNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGF0YSB0bworICogICAgICAgICAgICAgICAgICAgICAgcmVhZCBmcm9tIHRoZSBmaWxlLiBPbiBvdXRwdXQsIGl0IGNvbnRhaW5zIHRoZSBzaXplCisgKiAgICAgICAgICAgICAgICAgICAgICBvZiBkYXRhIGFjdHVhbGx5IHJlYWQgZnJvbSB0aGUgZmlsZS4gSXQgd2lsbCBjb250YWluCisgKiAgICAgICAgICAgICAgICAgICAgICB6ZXJvIHdoZW4gRU9GIG9jY3Vycy4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgICAgICBQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG9uIGVycm9yLgorICogICAgICAgICAgICAgICAgICAgICAgV2hlbiBFT0Ygb2NjdXJzLCB0aGUgcmV0dXJuIGlzIFBKX1NVQ0NFU1MgYnV0IHNpemUKKyAqICAgICAgICAgICAgICAgICAgICAgIHdpbGwgcmVwb3J0IHplcm8uCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2ZpbGVfcmVhZChwal9vc2hhbmRsZV90IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCAqc2l6ZSk7CisKKy8qKgorICogU2V0IGZpbGUgcG9zaXRpb24gdG8gbmV3IG9mZnNldCBhY2NvcmRpbmcgdG8gZGlyZWN0aXZlIFxjIHdoZW5jZS4KKyAqCisgKiBAcGFyYW0gZmQgICAgICAgICAgICBUaGUgZmlsZSBkZXNjcmlwdG9yLgorICogQHBhcmFtIG9mZnNldCAgICAgICAgVGhlIG5ldyBmaWxlIHBvc2l0aW9uIHRvIHNldC4KKyAqIEBwYXJhbSB3aGVuY2UgICAgICAgIFRoZSBkaXJlY3RpdmUuCisgKgorICogQHJldHVybiAgICAgICAgICAgICAgUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBvbiBlcnJvci4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZmlsZV9zZXRwb3MocGpfb3NoYW5kbGVfdCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX29mZl90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcGpfZmlsZV9zZWVrX3R5cGUgd2hlbmNlKTsKKworLyoqCisgKiBHZXQgY3VycmVudCBmaWxlIHBvc2l0aW9uLgorICoKKyAqIEBwYXJhbSBmZCAgICAgICAgICAgIFRoZSBmaWxlIGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gcG9zICAgICAgICAgICBPbiByZXR1cm4gY29udGFpbnMgdGhlIGZpbGUgcG9zaXRpb24gYXMgbWVhc3VyZWQKKyAqICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgICAgICBQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG9uIGVycm9yLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9maWxlX2dldHBvcyhwal9vc2hhbmRsZV90IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfb2ZmX3QgKnBvcyk7CisKKy8qKgorICogRmx1c2ggZmlsZSBidWZmZXJzLgorICoKKyAqIEBwYXJhbSBmZAkJVGhlIGZpbGUgZGVzY3JpcHRvci4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG9uIGVycm9yLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9maWxlX2ZsdXNoKHBqX29zaGFuZGxlX3QgZmQpOworCisKKy8qKiBAfSAqLworCisKK1BKX0VORF9ERUNMCisKKyNlbmRpZiAgLyogX19QSl9GSUxFX0lPX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2d1aWQuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovZ3VpZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNzZhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2d1aWQuaApAQCAtMCwwICsxLDEyMCBAQAorLyogJElkOiBndWlkLmggNDIwOCAyMDEyLTA3LTE4IDA3OjUyOjMzWiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfR1VJRF9IX18KKyNkZWZpbmUgX19QSl9HVUlEX0hfXworCisKKy8qKgorICogQGZpbGUgZ3VpZC5oCisgKiBAYnJpZWYgR1VJRCBHbG9iYWxseSBVbmlxdWUgSWRlbnRpZmllci4KKyAqLworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisKKworUEpfQkVHSU5fREVDTAorCisKKy8qKgorICogQGRlZmdyb3VwIFBKX0RTIERhdGEgU3RydWN0dXJlLgorICovCisvKioKKyAqIEBkZWZncm91cCBQSl9HVUlEIEdsb2JhbGx5IFVuaXF1ZSBJZGVudGlmaWVyCisgKiBAaW5ncm91cCBQSl9EUworICogQHsKKyAqCisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBBUEkgdG8gY3JlYXRlIHN0cmluZyB0aGF0IGlzIGdsb2JhbGx5IHVuaXF1ZS4KKyAqIElmIGFwcGxpY2F0aW9uIGRvZXNuJ3QgcmVxdWlyZSB0aGF0IHN0cm9uZyByZXF1aXJlbWVudCwgaXQgY2FuIGp1c3QKKyAqIHVzZSAjcGpfY3JlYXRlX3JhbmRvbV9zdHJpbmcoKSBpbnN0ZWFkLgorICovCisKKworLyoqCisgKiBQSl9HVUlEX1NUUklOR19MRU5HVEggc3BlY2lmaWVzIGxlbmd0aCBvZiBHVUlEIHN0cmluZy4gVGhlIHZhbHVlIGlzCisgKiBkZXBlbmRlbnQgb24gdGhlIGFsZ29yaXRobSB1c2VkIGludGVybmFsbHkgdG8gZ2VuZXJhdGUgdGhlIEdVSUQgc3RyaW5nLgorICogSWYgcmVhbCBHVUlEIGdlbmVyYXRvciBpcyB1c2VkLCB0aGVuIHRoZSBsZW5ndGggd2lsbCBiZSBiZXR3ZWVuIDMyIGFuZAorICogMzYgYnl0ZXMuIEFwcGxpY2F0aW9uIHNob3VsZCBub3QgYXNzdW1lIHdoaWNoIGFsZ29yaXRobSB3aWxsCisgKiBiZSB1c2VkIGJ5IEdVSUQgZ2VuZXJhdG9yLgorICoKKyAqIFJlZ2FyZGxlc3Mgb2YgdGhlIGFjdHVhbCBsZW5ndGggb2YgdGhlIEdVSUQsIGl0IHdpbGwgbm90IGV4Y2VlZAorICogUEpfR1VJRF9NQVhfTEVOR1RIIGNoYXJhY3RlcnMuCisgKgorICogQHNlZSBwal9HVUlEX1NUUklOR19MRU5HVEgoKQorICogQHNlZSBQSl9HVUlEX01BWF9MRU5HVEgKKyAqLworUEpfREVDTF9EQVRBKGNvbnN0IHVuc2lnbmVkKSBQSl9HVUlEX1NUUklOR19MRU5HVEg7CisKKy8qKgorICogR2V0ICNQSl9HVUlEX1NUUklOR19MRU5HVEggY29uc3RhbnQuCisgKi8KK1BKX0RFQ0wodW5zaWduZWQpIHBqX0dVSURfU1RSSU5HX0xFTkdUSCh2b2lkKTsKKworLyoqCisgKiBQSl9HVUlEX01BWF9MRU5HVEggc3BlY2lmaWVzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBHVUlEIHN0cmluZywKKyAqIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggYWxnb3JpdGhtIHRvIHVzZS4KKyAqLworI2RlZmluZSBQSl9HVUlEX01BWF9MRU5HVEggIDM2CisKKy8qKgorICogQ3JlYXRlIGEgZ2xvYmFsbHkgdW5pcXVlIHN0cmluZywgd2hpY2ggbGVuZ3RoIGlzIFBKX0dVSURfU1RSSU5HX0xFTkdUSAorICogY2hhcmFjdGVycy4gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwcmVhbGxvY2F0aW5nIHRoZSBzdG9yYWdlIHVzZWQKKyAqIGluIHRoZSBzdHJpbmcuCisgKgorICogQHBhcmFtIHN0ciAgICAgICBUaGUgc3RyaW5nIHRvIHN0b3JlIHRoZSByZXN1bHQuCisgKgorICogQHJldHVybiAgICAgICAgICBUaGUgc3RyaW5nLgorICovCitQSl9ERUNMKHBqX3N0cl90KikgcGpfZ2VuZXJhdGVfdW5pcXVlX3N0cmluZyhwal9zdHJfdCAqc3RyKTsKKworLyoqCisgKiBDcmVhdGUgYSBnbG9iYWxseSB1bmlxdWUgc3RyaW5nIGluIGxvd2VyY2FzZSwgd2hpY2ggbGVuZ3RoIGlzCisgKiBQSl9HVUlEX1NUUklOR19MRU5HVEggY2hhcmFjdGVycy4gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwcmVhbGxvY2F0aW5nCisgKiB0aGUgc3RvcmFnZSB1c2VkIGluIHRoZSBzdHJpbmcuCisgKgorICogQHBhcmFtIHN0ciAgICAgICBUaGUgc3RyaW5nIHRvIHN0b3JlIHRoZSByZXN1bHQuCisgKgorICogQHJldHVybiAgICAgICAgICBUaGUgc3RyaW5nLgorICovCitQSl9ERUNMKHBqX3N0cl90KikgcGpfZ2VuZXJhdGVfdW5pcXVlX3N0cmluZ19sb3dlcihwal9zdHJfdCAqc3RyKTsKKworLyoqCisgKiBHZW5lcmF0ZSBhIHVuaXF1ZSBzdHJpbmcuCisgKgorICogQHBhcmFtIHBvb2wJICAgIFBvb2wgdG8gYWxsb2NhdGUgbWVtb3J5IGZyb20uCisgKiBAcGFyYW0gc3RyCSAgICBUaGUgc3RyaW5nLgorICovCitQSl9ERUNMKHZvaWQpIHBqX2NyZWF0ZV91bmlxdWVfc3RyaW5nKHBqX3Bvb2xfdCAqcG9vbCwgcGpfc3RyX3QgKnN0cik7CisKKy8qKgorICogR2VuZXJhdGUgYSB1bmlxdWUgc3RyaW5nIGluIGxvd2VyY2FzZS4KKyAqCisgKiBAcGFyYW0gcG9vbAkgICAgUG9vbCB0byBhbGxvY2F0ZSBtZW1vcnkgZnJvbS4KKyAqIEBwYXJhbSBzdHIJICAgIFRoZSBzdHJpbmcuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfY3JlYXRlX3VuaXF1ZV9zdHJpbmdfbG93ZXIocGpfcG9vbF90ICpwb29sLCBwal9zdHJfdCAqc3RyKTsKKworCisvKioKKyAqIEB9CisgKi8KKworUEpfRU5EX0RFQ0wKKworI2VuZGlmLyogX19QSl9HVUlEX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2hhc2guaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovaGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOWEyZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2hhc2guaApAQCAtMCwwICsxLDI1NCBAQAorLyogJElkOiBoYXNoLmggNDIwOCAyMDEyLTA3LTE4IDA3OjUyOjMzWiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfSEFTSF9IX18KKyNkZWZpbmUgX19QSl9IQVNIX0hfXworCisvKioKKyAqIEBmaWxlIGhhc2guaAorICogQGJyaWVmIEhhc2ggVGFibGUuCisgKi8KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisKK1BKX0JFR0lOX0RFQ0wKKworLyoqCisgKiBAZGVmZ3JvdXAgUEpfSEFTSCBIYXNoIFRhYmxlCisgKiBAaW5ncm91cCBQSl9EUworICogQHsKKyAqIEEgaGFzaCB0YWJsZSBpcyBhIGRpY3Rpb25hcnkgaW4gd2hpY2gga2V5cyBhcmUgbWFwcGVkIHRvIGFycmF5IHBvc2l0aW9ucyBieQorICogaGFzaCBmdW5jdGlvbnMuIEhhdmluZyB0aGUga2V5cyBvZiBtb3JlIHRoYW4gb25lIGl0ZW0gbWFwIHRvIHRoZSBzYW1lIAorICogcG9zaXRpb24gaXMgY2FsbGVkIGEgY29sbGlzaW9uLiBJbiB0aGlzIGxpYnJhcnksIHdlIHdpbGwgY2hhaW4gdGhlIG5vZGVzCisgKiB0aGF0IGhhdmUgdGhlIHNhbWUga2V5IGluIGEgbGlzdC4KKyAqLworCisvKioKKyAqIElmIHRoaXMgY29uc3RhbnQgaXMgdXNlZCBhcyBrZXlsZW4sIHRoZW4gdGhlIGtleSBpcyBpbnRlcnByZXRlZCBhcworICogTlVMTCB0ZXJtaW5hdGVkIHN0cmluZy4KKyAqLworI2RlZmluZSBQSl9IQVNIX0tFWV9TVFJJTkcJKCh1bnNpZ25lZCktMSkKKworLyoqCisgKiBUaGlzIGluZGljYXRlcyB0aGUgc2l6ZSBvZiBvZiBlYWNoIGhhc2ggZW50cnkuCisgKi8KKyNkZWZpbmUgUEpfSEFTSF9FTlRSWV9CVUZfU0laRQkoMypzaXplb2Yodm9pZCopICsgMipzaXplb2YocGpfdWludDMyX3QpKQorCisvKioKKyAqIFR5cGUgZGVjbGFyYXRpb24gZm9yIGVudHJ5IGJ1ZmZlciwgdXNlZCBieSAjcGpfaGFzaF9zZXRfbnAoKQorICovCit0eXBlZGVmIHZvaWQgKnBqX2hhc2hfZW50cnlfYnVmWyhQSl9IQVNIX0VOVFJZX0JVRl9TSVpFK3NpemVvZih2b2lkKiktMSkvKHNpemVvZih2b2lkKikpXTsKKworLyoqCisgKiBUaGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgYnkgdGhlIGhhc2ggdGFibGUgdG8gY2FsY3VsYXRlIGhhc2ggdmFsdWUKKyAqIG9mIHRoZSBzcGVjaWZpZWQga2V5LgorICoKKyAqIEBwYXJhbSBodmFsCSAgICB0aGUgaW5pdGlhbCBoYXNoIHZhbHVlLCBvciB6ZXJvLgorICogQHBhcmFtIGtleQkgICAgdGhlIGtleSB0byBjYWxjdWxhdGUuCisgKiBAcGFyYW0ga2V5bGVuICAgIHRoZSBsZW5ndGggb2YgdGhlIGtleSwgb3IgUEpfSEFTSF9LRVlfU1RSSU5HIHRvIHRyZWF0IAorICoJCSAgICB0aGUga2V5IGFzIG51bGwgdGVybWluYXRlZCBzdHJpbmcuCisgKgorICogQHJldHVybiAgICAgICAgICB0aGUgaGFzaCB2YWx1ZS4KKyAqLworUEpfREVDTChwal91aW50MzJfdCkgcGpfaGFzaF9jYWxjKHBqX3VpbnQzMl90IGh2YWwsIAorCQkJCSAgY29uc3Qgdm9pZCAqa2V5LCB1bnNpZ25lZCBrZXlsZW4pOworCisKKy8qKgorICogQ29udmVydCB0aGUga2V5IHRvIGxvd2VyY2FzZSBhbmQgY2FsY3VsYXRlIHRoZSBoYXNoIHZhbHVlLiBUaGUgcmVzdWx0aW5nCisgKiBzdHJpbmcgaXMgc3RvcmVkIGluIFxjIHJlc3VsdC4KKyAqCisgKiBAcGFyYW0gaHZhbCAgICAgIFRoZSBpbml0aWFsIGhhc2ggdmFsdWUsIG5vcm1hbGx5IHplcm8uCisgKiBAcGFyYW0gcmVzdWx0ICAgIE9wdGlvbmFsLiBCdWZmZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCwgd2hpY2ggbXVzdCBiZSBlbm91Z2gKKyAqICAgICAgICAgICAgICAgICAgdG8gaG9sZCB0aGUgc3RyaW5nLgorICogQHBhcmFtIGtleSAgICAgICBUaGUgaW5wdXQga2V5IHRvIGJlIGNvbnZlcnRlZCBhbmQgY2FsY3VsYXRlZC4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgIFRoZSBoYXNoIHZhbHVlLgorICovCitQSl9ERUNMKHBqX3VpbnQzMl90KSBwal9oYXNoX2NhbGNfdG9sb3dlcihwal91aW50MzJfdCBodmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGpfc3RyX3QgKmtleSk7CisKKy8qKgorICogQ3JlYXRlIGEgaGFzaCB0YWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgJ2J1Y2tldCcgc2l6ZS4KKyAqCisgKiBAcGFyYW0gcG9vbAl0aGUgcG9vbCBmcm9tIHdoaWNoIHRoZSBoYXNoIHRhYmxlIHdpbGwgYmUgYWxsb2NhdGVkIGZyb20uCisgKiBAcGFyYW0gc2l6ZQl0aGUgYnVja2V0IHNpemUsIHdoaWNoIHdpbGwgYmUgcm91bmQtdXAgdG8gdGhlIG5lYXJlc3QgMl5uLTEKKyAqCisgKiBAcmV0dXJuIHRoZSBoYXNoIHRhYmxlLgorICovCitQSl9ERUNMKHBqX2hhc2hfdGFibGVfdCopIHBqX2hhc2hfY3JlYXRlKHBqX3Bvb2xfdCAqcG9vbCwgdW5zaWduZWQgc2l6ZSk7CisKKworLyoqCisgKiBHZXQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS4KKyAqCisgKiBAcGFyYW0gaHQJICAgIHRoZSBoYXNoIHRhYmxlLgorICogQHBhcmFtIGtleQkgICAgdGhlIGtleSB0byBsb29rIGZvci4KKyAqIEBwYXJhbSBrZXlsZW4gICAgdGhlIGxlbmd0aCBvZiB0aGUga2V5LCBvciBQSl9IQVNIX0tFWV9TVFJJTkcgdG8gdXNlIHRoZQorICoJCSAgICBzdHJpbmcgbGVuZ3RoIG9mIHRoZSBrZXkuCisgKiBAcGFyYW0gaHZhbAkgICAgaWYgdGhpcyBhcmd1bWVudCBpcyBub3QgTlVMTCBhbmQgdGhlIHZhbHVlIGlzIG5vdCB6ZXJvLAorICoJCSAgICB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIHRoZSBjb21wdXRlZCBoYXNoIHZhbHVlLiBJZgorICoJCSAgICB0aGUgYXJndW1lbnQgaXMgbm90IE5VTEwgYW5kIHRoZSB2YWx1ZSBpcyB6ZXJvLCBpdCB3aWxsCisgKgkJICAgIGJlIGZpbGxlZCB3aXRoIHRoZSBjb21wdXRlZCBoYXNoIHVwb24gcmV0dXJuLgorICoKKyAqIEByZXR1cm4gdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5LCBvciBOVUxMIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kLgorICovCitQSl9ERUNMKHZvaWQgKikgcGpfaGFzaF9nZXQoIHBqX2hhc2hfdGFibGVfdCAqaHQsCisJCQkgICAgIGNvbnN0IHZvaWQgKmtleSwgdW5zaWduZWQga2V5bGVuLAorCQkJICAgICBwal91aW50MzJfdCAqaHZhbCApOworCisKKy8qKgorICogVmFyaWFudCBvZiAjcGpfaGFzaF9nZXQoKSB3aXRoIHRoZSBrZXkgYmVpbmcgY29udmVydGVkIHRvIGxvd2VyY2FzZSB3aGVuCisgKiBjYWxjdWxhdGluZyB0aGUgaGFzaCB2YWx1ZS4KKyAqCisgKiBAc2VlIHBqX2hhc2hfZ2V0KCkKKyAqLworUEpfREVDTCh2b2lkICopIHBqX2hhc2hfZ2V0X2xvd2VyKCBwal9oYXNoX3RhYmxlX3QgKmh0LAorCQkJICAgICAgICAgICBjb25zdCB2b2lkICprZXksIHVuc2lnbmVkIGtleWxlbiwKKwkJCSAgICAgICAgICAgcGpfdWludDMyX3QgKmh2YWwgKTsKKworCisvKioKKyAqIEFzc29jaWF0ZS9kaXNhc3NvY2lhdGUgYSB2YWx1ZSB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LiBJZiB2YWx1ZSBpcyBub3QKKyAqIE5VTEwgYW5kIGVudHJ5IGFscmVhZHkgZXhpc3RzLCB0aGUgZW50cnkncyB2YWx1ZSB3aWxsIGJlIG92ZXJ3cml0dGVuLgorICogSWYgdmFsdWUgaXMgbm90IE5VTEwgYW5kIGVudHJ5IGRvZXMgbm90IGV4aXN0LCBhIG5ldyBvbmUgd2lsbCBiZSBjcmVhdGVkCisgKiB3aXRoIHRoZSBzcGVjaWZpZWQgcG9vbC4gT3RoZXJ3aXNlIGlmIHZhbHVlIGlzIE5VTEwsIGVudHJ5IHdpbGwgYmUKKyAqIGRlbGV0ZWQgaWYgaXQgZXhpc3RzLgorICoKKyAqIEBwYXJhbSBwb29sCSAgICB0aGUgcG9vbCB0byBhbGxvY2F0ZSB0aGUgbmV3IGVudHJ5IGlmIGEgbmV3IGVudHJ5IGhhcyB0byBiZQorICoJCSAgICBjcmVhdGVkLgorICogQHBhcmFtIGh0CSAgICB0aGUgaGFzaCB0YWJsZS4KKyAqIEBwYXJhbSBrZXkJICAgIHRoZSBrZXkuIElmIHBvb2wgaXMgbm90IHNwZWNpZmllZCwgdGhlIGtleSBNVVNUIHBvaW50IHRvCisgKiAJCSAgICBidWZmZXIgdGhhdCByZW1haW5zIHZhbGlkIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGVudHJ5LgorICogQHBhcmFtIGtleWxlbiAgICB0aGUgbGVuZ3RoIG9mIHRoZSBrZXksIG9yIFBKX0hBU0hfS0VZX1NUUklORyB0byB1c2UgdGhlIAorICoJCSAgICBzdHJpbmcgbGVuZ3RoIG9mIHRoZSBrZXkuCisgKiBAcGFyYW0gaHZhbAkgICAgaWYgdGhlIHZhbHVlIGlzIG5vdCB6ZXJvLCB0aGVuIHRoZSBoYXNoIHRhYmxlIHdpbGwgdXNlCisgKgkJICAgIHRoaXMgdmFsdWUgdG8gc2VhcmNoIHRoZSBlbnRyeSdzIGluZGV4LCBvdGhlcndpc2UgaXQgd2lsbAorICoJCSAgICBjb21wdXRlIHRoZSBrZXkuIFRoaXMgdmFsdWUgY2FuIGJlIG9idGFpbmVkIHdoZW4gY2FsbGluZworICoJCSAgICAjcGpfaGFzaF9nZXQoKS4KKyAqIEBwYXJhbSB2YWx1ZQkgICAgdmFsdWUgdG8gYmUgYXNzb2NpYXRlZCwgb3IgTlVMTCB0byBkZWxldGUgdGhlIGVudHJ5IHdpdGgKKyAqCQkgICAgdGhlIHNwZWNpZmllZCBrZXkuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfaGFzaF9zZXQoIHBqX3Bvb2xfdCAqcG9vbCwgcGpfaGFzaF90YWJsZV90ICpodCwKKwkJCSAgIGNvbnN0IHZvaWQgKmtleSwgdW5zaWduZWQga2V5bGVuLCBwal91aW50MzJfdCBodmFsLAorCQkJICAgdm9pZCAqdmFsdWUgKTsKKworCisvKioKKyAqIFZhcmlhbnQgb2YgI3BqX2hhc2hfc2V0KCkgd2l0aCB0aGUga2V5IGJlaW5nIGNvbnZlcnRlZCB0byBsb3dlcmNhc2Ugd2hlbgorICogY2FsY3VsYXRpbmcgdGhlIGhhc2ggdmFsdWUuCisgKgorICogQHNlZSBwal9oYXNoX3NldCgpCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfaGFzaF9zZXRfbG93ZXIoIHBqX3Bvb2xfdCAqcG9vbCwgcGpfaGFzaF90YWJsZV90ICpodCwKKwkJCSAgICAgICAgIGNvbnN0IHZvaWQgKmtleSwgdW5zaWduZWQga2V5bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfdWludDMyX3QgaHZhbCwgdm9pZCAqdmFsdWUgKTsKKworCisvKioKKyAqIEFzc29jaWF0ZS9kaXNhc3NvY2lhdGUgYSB2YWx1ZSB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LiBUaGlzIGZ1bmN0aW9uIHdvcmtzCisgKiBsaWtlICNwal9oYXNoX3NldCgpLCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IHVzZSBwb29sIChoZW5jZSB0aGUgbnAgLS0gbm8gCisgKiBwb29sIHN1ZmZpeCkuIElmIG5ldyBlbnRyeSBuZWVkcyB0byBiZSBhbGxvY2F0ZWQsIGl0IHdpbGwgdXNlIHRoZSBlbnRyeV9idWYuCisgKgorICogQHBhcmFtIGh0CSAgICB0aGUgaGFzaCB0YWJsZS4KKyAqIEBwYXJhbSBrZXkJICAgIHRoZSBrZXkuCisgKiBAcGFyYW0ga2V5bGVuICAgIHRoZSBsZW5ndGggb2YgdGhlIGtleSwgb3IgUEpfSEFTSF9LRVlfU1RSSU5HIHRvIHVzZSB0aGUgCisgKgkJICAgIHN0cmluZyBsZW5ndGggb2YgdGhlIGtleS4KKyAqIEBwYXJhbSBodmFsCSAgICBpZiB0aGUgdmFsdWUgaXMgbm90IHplcm8sIHRoZW4gdGhlIGhhc2ggdGFibGUgd2lsbCB1c2UKKyAqCQkgICAgdGhpcyB2YWx1ZSB0byBzZWFyY2ggdGhlIGVudHJ5J3MgaW5kZXgsIG90aGVyd2lzZSBpdCB3aWxsCisgKgkJICAgIGNvbXB1dGUgdGhlIGtleS4gVGhpcyB2YWx1ZSBjYW4gYmUgb2J0YWluZWQgd2hlbiBjYWxsaW5nCisgKgkJICAgICNwal9oYXNoX2dldCgpLgorICogQHBhcmFtIGVudHJ5X2J1ZiBCdWZmZXIgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciB0aGUgbmV3IGVudHJ5LCB3aGVuIG9uZSBuZWVkcworICoJCSAgICB0byBiZSBjcmVhdGVkLgorICogQHBhcmFtIHZhbHVlCSAgICB2YWx1ZSB0byBiZSBhc3NvY2lhdGVkLCBvciBOVUxMIHRvIGRlbGV0ZSB0aGUgZW50cnkgd2l0aAorICoJCSAgICB0aGUgc3BlY2lmaWVkIGtleS4KKyAqLworUEpfREVDTCh2b2lkKSBwal9oYXNoX3NldF9ucChwal9oYXNoX3RhYmxlX3QgKmh0LAorCQkJICAgICBjb25zdCB2b2lkICprZXksIHVuc2lnbmVkIGtleWxlbiwgCisJCQkgICAgIHBqX3VpbnQzMl90IGh2YWwsIHBqX2hhc2hfZW50cnlfYnVmIGVudHJ5X2J1ZiwgCisJCQkgICAgIHZvaWQgKnZhbHVlKTsKKworLyoqCisgKiBWYXJpYW50IG9mICNwal9oYXNoX3NldF9ucCgpIHdpdGggdGhlIGtleSBiZWluZyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlCisgKiB3aGVuIGNhbGN1bGF0aW5nIHRoZSBoYXNoIHZhbHVlLgorICoKKyAqIEBzZWUgcGpfaGFzaF9zZXRfbnAoKQorICovCitQSl9ERUNMKHZvaWQpIHBqX2hhc2hfc2V0X25wX2xvd2VyKHBqX2hhc2hfdGFibGVfdCAqaHQsCisJCQkgICAgICAgICAgIGNvbnN0IHZvaWQgKmtleSwgdW5zaWduZWQga2V5bGVuLAorCQkJICAgICAgICAgICBwal91aW50MzJfdCBodmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9oYXNoX2VudHJ5X2J1ZiBlbnRyeV9idWYsCisJCQkgICAgICAgICAgIHZvaWQgKnZhbHVlKTsKKworLyoqCisgKiBHZXQgdGhlIHRvdGFsIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBoYXNoIHRhYmxlLgorICoKKyAqIEBwYXJhbSBodAl0aGUgaGFzaCB0YWJsZS4KKyAqCisgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgaGFzaCB0YWJsZS4KKyAqLworUEpfREVDTCh1bnNpZ25lZCkgcGpfaGFzaF9jb3VudCggcGpfaGFzaF90YWJsZV90ICpodCApOworCisKKy8qKgorICogR2V0IHRoZSBpdGVyYXRvciB0byB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaGFzaCB0YWJsZS4gCisgKgorICogQHBhcmFtIGh0CXRoZSBoYXNoIHRhYmxlLgorICogQHBhcmFtIGl0CXRoZSBpdGVyYXRvciBmb3IgaXRlcmF0aW5nIGhhc2ggZWxlbWVudHMuCisgKgorICogQHJldHVybiB0aGUgaXRlcmF0b3IgdG8gdGhlIGhhc2ggZWxlbWVudCwgb3IgTlVMTCBpZiBubyBlbGVtZW50IHByZXNlbnRzLgorICovCitQSl9ERUNMKHBqX2hhc2hfaXRlcmF0b3JfdCopIHBqX2hhc2hfZmlyc3QoIHBqX2hhc2hfdGFibGVfdCAqaHQsCisJCQkJCSAgICBwal9oYXNoX2l0ZXJhdG9yX3QgKml0ICk7CisKKworLyoqCisgKiBHZXQgdGhlIG5leHQgZWxlbWVudCBmcm9tIHRoZSBpdGVyYXRvci4KKyAqCisgKiBAcGFyYW0gaHQJdGhlIGhhc2ggdGFibGUuCisgKiBAcGFyYW0gaXQJdGhlIGhhc2ggaXRlcmF0b3IuCisgKgorICogQHJldHVybiB0aGUgbmV4dCBpdGVyYXRvciwgb3IgTlVMTCBpZiB0aGVyZSdzIG5vIG1vcmUgZWxlbWVudC4KKyAqLworUEpfREVDTChwal9oYXNoX2l0ZXJhdG9yX3QqKSBwal9oYXNoX25leHQoIHBqX2hhc2hfdGFibGVfdCAqaHQsIAorCQkJCQkgICBwal9oYXNoX2l0ZXJhdG9yX3QgKml0ICk7CisKKy8qKgorICogR2V0IHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBoYXNoIGl0ZXJhdG9yLgorICoKKyAqIEBwYXJhbSBodAl0aGUgaGFzaCB0YWJsZS4KKyAqIEBwYXJhbSBpdAl0aGUgaGFzaCBpdGVyYXRvci4KKyAqCisgKiBAcmV0dXJuIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgZWxlbWVudCBpbiBpdGVyYXRvci4KKyAqLworUEpfREVDTCh2b2lkKikgcGpfaGFzaF90aGlzKCBwal9oYXNoX3RhYmxlX3QgKmh0LAorCQkJICAgICBwal9oYXNoX2l0ZXJhdG9yX3QgKml0ICk7CisKKworLyoqCisgKiBAfQorICovCisKK1BKX0VORF9ERUNMCisKKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovaW9xdWV1ZS5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9pb3F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUzYmY0OAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovaW9xdWV1ZS5oCkBAIC0wLDAgKzEsODE4IEBACisvKiAkSWQ6IGlvcXVldWUuaCA0MzU5IDIwMTMtMDItMjEgMTE6MTg6MzZaIGJlbm55bHAgJAorICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0lPUVVFVUVfSF9fCisjZGVmaW5lIF9fUEpfSU9RVUVVRV9IX18KKworLyoqCisgKiBAZmlsZSBpb3F1ZXVlLmgKKyAqIEBicmllZiBJL08gRGlzcGF0Y2hpbmcgTWVjaGFuaXNtCisgKi8KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisKK1BKX0JFR0lOX0RFQ0wKKworLyoqCisgKiBAZGVmZ3JvdXAgUEpfSU8gSW5wdXQvT3V0cHV0CisgKiBAYnJpZWYgSW5wdXQvT3V0cHV0CisgKiBAaW5ncm91cCBQSl9PUworICoKKyAqIFRoaXMgc2VjdGlvbiBjb250YWlucyBBUEkgYnVpbGRpbmcgYmxvY2tzIHRvIHBlcmZvcm0gbmV0d29yayBJL08gYW5kIAorICogY29tbXVuaWNhdGlvbnMuIElmIHByb3ZpZGVzOgorICogIC0gQHJlZiBQSl9TT0NLCisgKlxuCisgKiAgICBBIGhpZ2hseSBwb3J0YWJsZSBzb2NrZXQgYWJzdHJhY3Rpb24sIHJ1bnMgb24gYWxsIGtpbmQgb2YKKyAqICAgIG5ldHdvcmsgQVBJcyBzdWNoIGFzIHN0YW5kYXJkIEJTRCBzb2NrZXQsIFdpbmRvd3Mgc29ja2V0LCBMaW51eAorICogICAgXGIga2VybmVsIHNvY2tldCwgUGFsbU9TIG5ldHdvcmtpbmcgQVBJLCBldGMuCisgKgorICogIC0gQHJlZiBwal9hZGRyX3Jlc29sdmUKKyAqXG4KKyAqICAgIFBvcnRhYmxlIGFkZHJlc3MgcmVzb2x1dGlvbiwgd2hpY2ggaW1wbGVtZW50cyAjcGpfZ2V0aG9zdGJ5bmFtZSgpLgorICoKKyAqICAtIEByZWYgUEpfU09DS19TRUxFQ1QKKyAqXG4KKyAqICAgIEEgcG9ydGFibGUgXGEgc2VsZWN0KCkgbGlrZSBBUEkgKCNwal9zb2NrX3NlbGVjdCgpKSB3aGljaCBjYW4gYmUKKyAqICAgIGltcGxlbWVudGVkIHdpdGggdmFyaW91cyBiYWNrLWVuZHMuCisgKgorICogIC0gQHJlZiBQSl9JT1FVRVVFCisgKlxuCisgKiAgICBGcmFtZXdvcmsgZm9yIGRpc3BhdGNoaW5nIG5ldHdvcmsgZXZlbnRzLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgbW9kdWxlcyBiZWxvdy4KKyAqLworCisvKioKKyAqIEBkZWZncm91cCBQSl9JT1FVRVVFIElPUXVldWU6IEkvTyBFdmVudCBEaXNwYXRjaGluZyB3aXRoIFByb2FjdG9yIFBhdHRlcm4KKyAqIEBpbmdyb3VwIFBKX0lPCisgKiBAeworICoKKyAqIEkvTyBRdWV1ZSBwcm92aWRlcyBBUEkgZm9yIHBlcmZvcm1pbmcgYXN5bmNocm9ub3VzIEkvTyBvcGVyYXRpb25zLiBJdAorICogY29uZm9ybXMgdG8gcHJvYWN0b3IgcGF0dGVybiwgd2hpY2ggYWxsb3dzIGFwcGxpY2F0aW9uIHRvIHN1Ym1pdCBhbgorICogYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBhbmQgdG8gYmUgbm90aWZpZWQgbGF0ZXIgd2hlbiB0aGUgb3BlcmF0aW9uIGhhcworICogY29tcGxldGVkLgorICoKKyAqIFRoZSBJL08gUXVldWUgY2FuIHdvcmsgb24gYm90aCBzb2NrZXQgYW5kIGZpbGUgZGVzY3JpcHRvcnMuIEZvciAKKyAqIGFzeW5jaHJvbm91cyBmaWxlIG9wZXJhdGlvbnMgaG93ZXZlciwgb25lIG11c3QgbWFrZSBzdXJlIHRoYXQgdGhlIGNvcnJlY3QKKyAqIGZpbGUgSS9PIGJhY2stZW5kIGlzIHVzZWQsIGJlY2F1c2Ugbm90IGFsbCBmaWxlIEkvTyBiYWNrLWVuZCBjYW4gYmUKKyAqIHVzZWQgd2l0aCB0aGUgaW9xdWV1ZS4gUGxlYXNlIHNlZSBccmVmIFBKX0ZJTEVfSU8gZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBUaGUgZnJhbWV3b3JrIHdvcmtzIG5hdGl2ZWx5IGluIHBsYXRmb3JtcyB3aGVyZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uIEFQSQorICogZXhpc3RzLCBzdWNoIGFzIGluIFdpbmRvd3MgTlQgd2l0aCBJb0NvbXBsZXRpb25Qb3J0L0lPQ1AuIEluIG90aGVyIAorICogcGxhdGZvcm1zLCB0aGUgSS9PIHF1ZXVlIGFic3RyYWN0cyB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIGV2ZW50IHBvbGwgQVBJCisgKiB0byBwcm92aWRlIHNlbWFudGljcyBzaW1pbGFyIHRvIElvQ29tcGxldGlvblBvcnQgd2l0aCBtaW5pbWFsIHBlbmFsdGllcworICogKGkuZS4gcGVyIGlvcXVldWUgYW5kIHBlciBoYW5kbGUgbXV0ZXggcHJvdGVjdGlvbikuCisgKgorICogVGhlIEkvTyBxdWV1ZSBwcm92aWRlcyBtb3JlIHRoYW4ganVzdCB1bmlmaWVkIGFic3RyYWN0aW9uLiBJdCBhbHNvOgorICogIC0gbWFrZXMgc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gdXNlcyB0aGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIHV0aWxpemUKKyAqICAgIHRoZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSwgdG8gYWNoaWV2ZSB0aGUgbWF4aW11bSB0aGVvcml0aWNhbAorICogICAgdGhyb3VnaHB1dCBwb3NzaWJsZSBvbiBhIGdpdmVuIHBsYXRmb3JtLgorICogIC0gY2hvb3NlIHRoZSBtb3N0IGVmZmljaWVudCBtZWNoYW5pc20gZm9yIGV2ZW50IHBvbGxpbmcgb24gYSBnaXZlbgorICogICAgcGxhdGZvcm0uCisgKgorICogQ3VycmVudGx5LCB0aGUgSS9PIFF1ZXVlIGlzIGltcGxlbWVudGVkIHVzaW5nOgorICogIC0gPHR0PjxiPnNlbGVjdCgpPC9iPjwvdHQ+LCBhcyB0aGUgY29tbW9uIGRlbm9taW5hdG9yLCBidXQgdGhlIGxlYXN0IAorICogICAgZWZmaWNpZW50LiBBbHNvIHRoZSBudW1iZXIgb2YgZGVzY3JpcHRvciBpcyBsaW1pdGVkIHRvIAorICogICAgXGMgUEpfSU9RVUVVRV9NQVhfSEFORExFUyAod2hpY2ggYnkgZGVmYXVsdCBpcyA2NCkuCisgKiAgLSA8dHQ+PGI+L2Rldi9lcG9sbDwvYj48L3R0PiBvbiBMaW51eCAodXNlciBtb2RlIGFuZCBrZXJuZWwgbW9kZSksIAorICogICAgYSBtdWNoIGZhc3RlciByZXBsYWNlbWVudCBmb3Igc2VsZWN0KCkgb24gTGludXggKGFuZCBtb3JlIGltcG9ydGFudGx5CisgKiAgICBkb2Vzbid0IGhhdmUgbGltaXRhdGlvbiBvbiBudW1iZXIgb2YgZGVzY3JpcHRvcnMpLgorICogIC0gPGI+SS9PIENvbXBsZXRpb24gcG9ydHM8L2I+IG9uIFdpbmRvd3MgTlQvMjAwMC9YUCwgd2hpY2ggaXMgdGhlIG1vc3QgCisgKiAgICBlZmZpY2llbnQgd2F5IHRvIGRpc3BhdGNoIGV2ZW50cyBpbiBXaW5kb3dzIE5UIGJhc2VkIE9TZXMsIGFuZCBtb3N0IAorICogICAgaW1wb3J0YW50bHksIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgbGltaXQgb24gaG93IG1hbnkgaGFuZGxlcyB0byBtb25pdG9yLgorICogICAgQW5kIGl0IHdvcmtzIHdpdGggZmlsZXMgKG5vdCBvbmx5IHNvY2tldHMpIGFzIHdlbGwuCisgKgorICoKKyAqIFxzZWN0aW9uIHBqX2lvcXVldWVfY29uY3VycmVuY3lfc2VjIENvbmN1cnJlbmN5IFJ1bGVzCisgKgorICogVGhlIGlvcXVldWUgaGFzIGJlZW4gZmluZSB0dW5lZCB0byBhbGxvdyBtdWx0aXBsZSB0aHJlYWRzIHRvIHBvbGwgdGhlCisgKiBoYW5kbGVzIHNpbXVsdGFuZW91c2x5LCB0byBtYXhpbWl6ZSBzY2FsYWJpbGl0eSB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcworICogcnVubmluZyBvbiBtdWx0aXByb2Nlc3NvciBzeXN0ZW1zLiBXaGVuIG1vcmUgdGhhbiBvbmUgdGhyZWFkcyBhcmUgcG9sbGluZworICogdGhlIGlvcXVldWUgYW5kIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGhhbmRsZXMgYXJlIHNpZ25hbGVkLCBtb3JlIHRoYW4KKyAqIG9uZSB0aHJlYWRzIHdpbGwgZXhlY3V0ZSB0aGUgY2FsbGJhY2sgc2ltdWx0YW5lb3VzbHkgdG8gc2VydmUgdGhlIGV2ZW50cy4KKyAqIFRoZXNlIHBhcmFsbGVsIGV4ZWN1dGlvbnMgYXJlIGNvbXBsZXRlbHkgc2FmZSB3aGVuIHRoZSBldmVudHMgaGFwcGVuIGZvcgorICogdHdvIGRpZmZlcmVudCBoYW5kbGVzLgorICoKKyAqIEhvd2V2ZXIsIHdpdGggbXVsdGl0aHJlYWRpbmcsIGNhcmUgbXVzdCBiZSB0YWtlbiB3aGVuIG11bHRpcGxlIGV2ZW50cyAKKyAqIGhhcHBlbiBvbiB0aGUgc2FtZSBoYW5kbGUsIG9yIHdoZW4gZXZlbnQgaXMgaGFwcGVuaW5nIG9uIGEgaGFuZGxlIChhbmQgCisgKiB0aGUgY2FsbGJhY2sgaXMgYmVpbmcgZXhlY3V0ZWQpIGFuZCBhcHBsaWNhdGlvbiBpcyBwZXJmb3JtaW5nIAorICogdW5yZWdpc3RyYXRpb24gdG8gdGhlIGhhbmRsZSBhdCB0aGUgc2FtZSB0aW1lLgorICoKKyAqIFRoZSB0cmVhdG1lbnRzIG9mIGFib3ZlIHNjZW5hcmlvIGRpZmZlciBhY2NvcmRpbmcgdG8gdGhlIGNvbmN1cnJlbmN5CisgKiBzZXR0aW5nIHRoYXQgYXJlIGFwcGxpZWQgdG8gdGhlIGhhbmRsZS4KKyAqCisgKiBcc3Vic2VjdGlvbiBwal9pb3FfY29uY3VyX3NldCBDb25jdXJyZW5jeSBTZXR0aW5ncyBmb3IgSGFuZGxlcworICoKKyAqIENvbmN1cnJlbmN5IGNhbiBiZSBzZXQgb24gcGVyIGhhbmRsZSAoa2V5KSBiYXNpcywgYnkgdXNpbmcKKyAqICNwal9pb3F1ZXVlX3NldF9jb25jdXJyZW5jeSgpIGZ1bmN0aW9uLiBUaGUgZGVmYXVsdCBrZXkgY29uY3VycmVuY3kgdmFsdWUgCisgKiBmb3IgdGhlIGhhbmRsZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUga2V5IGNvbmN1cnJlbmN5IHNldHRpbmcgb2YgdGhlIGlvcXVldWUsIAorICogYW5kIHRoZSBrZXkgY29uY3VycmVuY3kgc2V0dGluZyBmb3IgdGhlIGlvcXVldWUgY2FuIGJlIGNoYW5nZWQgYnkgdXNpbmcKKyAqICNwal9pb3F1ZXVlX3NldF9kZWZhdWx0X2NvbmN1cnJlbmN5KCkuIFRoZSBkZWZhdWx0IGtleSBjb25jdXJyZW5jeSBzZXR0aW5nIAorICogZm9yIGlvcXVldWUgaXRzZWxmIGlzIGNvbnRyb2xsZWQgYnkgY29tcGlsZSB0aW1lIHNldHRpbmcKKyAqIFBKX0lPUVVFVUVfREVGQVVMVF9BTExPV19DT05DVVJSRU5DWS4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBrZXkgY29uY3VycmVuY3kgc2V0dGluZyBvbmx5IGNvbnRyb2xzIHdoZXRoZXIgbXVsdGlwbGUKKyAqIHRocmVhZHMgYXJlIGFsbG93ZWQgdG8gb3BlcmF0ZSA8Yj5vbiB0aGUgc2FtZSBrZXk8L2I+IGF0IHRoZSBzYW1lIHRpbWUuIAorICogVGhlIGlvcXVldWUgaXRzZWxmIGFsd2F5cyBhbGxvd3MgbXVsdGlwbGUgdGhyZWFkcyB0byBlbnRlciB0aGUgaW9xZXV1ZSBhdCAKKyAqIHRoZSBzYW1lIHRpbWUsIGFuZCBhbHNvIHNpbXVsdGFuZW91cyBjYWxsYmFjayBjYWxscyB0byA8Yj5kaWZmZXJyZW50IAorICoga2V5czwvYj4gaXMgYWx3YXlzIGFsbG93ZWQgcmVnYXJkbGVzcyB0byB0aGUga2V5IGNvbmN1cnJlbmN5IHNldHRpbmcuCisgKgorICogXHN1YnNlY3Rpb24gcGpfaW9xX3BhcmFsbGVsIFBhcmFsbGVsIENhbGxiYWNrIEV4ZWN1dGlvbnMgZm9yIHRoZSBTYW1lIEhhbmRsZQorICoKKyAqIE5vdGUgdGhhdCB3aGVuIGtleSBjb25jdXJyZW5jeSBpcyBlbmFibGVkIChpLmUuIHBhcmFsbGVsIGNhbGxiYWNrIGNhbGxzIG9uCisgKiB0aGUgc2FtZSBrZXkgaXMgYWxsb3dlZDsgdGhpcyBpcyB0aGUgZGVmYXVsdCBzZXR0aW5nKSwgdGhlIGlvcXVldWUgd2lsbCBvbmx5CisgKiBwZXJmb3JtIHNpbXVsdGFuZW91cyBjYWxsYmFjayBleGVjdXRpb25zIG9uIHRoZSBzYW1lIGtleSB3aGVuIHRoZSBrZXkgaGFzCisgKiBpbnZva2VkIG11bHRpcGxlIHBlbmRpbmcgb3BlcmF0aW9ucy4gVGhpcyBjb3VsZCBiZSBkb25lIGZvciBleGFtcGxlIGJ5CisgKiBjYWxsaW5nICNwal9pb3F1ZXVlX3JlY3Zmcm9tKCkgbW9yZSB0aGFuIG9uY2Ugb24gdGhlIHNhbWUga2V5LCBlYWNoIHdpdGgKKyAqIHRoZSBzYW1lIGtleSBidXQgZGlmZmVyZW50IG9wZXJhdGlvbiBrZXkgKHBqX2lvcXVldWVfb3Bfa2V5X3QpLiBXaXRoIHRoaXMKKyAqIHNjZW5hcmlvLCB3aGVuIG11bHRpcGxlIHBhY2tldHMgYXJyaXZlIG9uIHRoZSBrZXkgYXQgdGhlIHNhbWUgdGltZSwgbW9yZQorICogdGhhbiBvbmUgdGhyZWFkcyBtYXkgZXhlY3V0ZSB0aGUgY2FsbGJhY2sgc2ltdWx0YW5lb3VzbHksIGVhY2ggd2l0aCB0aGUKKyAqIHNhbWUga2V5IGJ1dCBkaWZmZXJlbnQgb3BlcmF0aW9uIGtleS4KKyAqCisgKiBXaGVuIHRoZXJlIGlzIG9ubHkgb25lIHBlbmRpbmcgb3BlcmF0aW9uIG9uIHRoZSBrZXkgKGUuZy4gdGhlcmUgaXMgb25seSBvbmUKKyAqICNwal9pb3F1ZXVlX3JlY3Zmcm9tKCkgaW52b2tlZCBvbiB0aGUga2V5KSwgdGhlbiBldmVudHMgb2NjdXJpbmcgdG8gdGhlCisgKiBzYW1lIGtleSB3aWxsIGJlIHF1ZXVlZCBieSB0aGUgaW9xdWV1ZSwgdGh1cyBubyBzaW11bHRhbmVvdXMgY2FsbGJhY2sgY2FsbHMKKyAqIHdpbGwgYmUgcGVyZm9ybWVkLgorICoKKyAqIFxzdWJzZWN0aW9uIHBqX2lvcV9hbGxvd19jb25jdXIgQ29uY3VycmVuY3kgaXMgRW5hYmxlZCAoRGVmYXVsdCBWYWx1ZSkKKyAqCisgKiBUaGUgZGVmYXVsdCBzZXR0aW5nIGZvciB0aGUgaW9xdWV1ZSBpcyB0byBhbGxvdyBtdWx0aXBsZSB0aHJlYWRzIHRvCisgKiBleGVjdXRlIGNhbGxiYWNrcyBmb3IgdGhlIHNhbWUgaGFuZGxlL2tleS4gVGhpcyBzZXR0aW5nIGlzIHNlbGVjdGVkIHRvCisgKiBwcm9tb3RlIGdvb2QgcGVyZm9ybWFuY2UgYW5kIHNjYWxhYmlsaXR5IGZvciBhcHBsaWNhdGlvbi4KKyAqCisgKiBIb3dldmVyIHRoaXMgc2V0dGluZyBoYXMgYSBtYWpvciBkcmF3YmFjayB3aXRoIHJlZ2FyZCB0byBzeW5jaHJvbml6YXRpb24sCisgKiBhbmQgYXBwbGljYXRpb24gTVVTVCBjYXJlZnVsbHkgZm9sbG93IHRoZSBmb2xsb3dpbmcgZ3VpZGVsaW5lcyB0byBlbnN1cmUgCisgKiB0aGF0IHBhcmFsbGVsIGFjY2VzcyB0byB0aGUga2V5IGRvZXMgbm90IGNhdXNlIHByb2JsZW1zOgorICoKKyAqICAtIEFsd2F5cyBub3RlIHRoYXQgY2FsbGJhY2sgbWF5IGJlIGNhbGxlZCBzaW11bHRhbmVvdXNseSBmb3IgdGhlIHNhbWUKKyAqICAgIGtleS4KKyAqICAtIDxiPkNhcmUgbXVzdCBiZSB0YWtlbiB3aGVuIHVucmVnaXN0ZXJpbmcgYSBrZXk8L2I+IGZyb20gdGhlCisgKiAgICBpb3F1ZXVlLiBBcHBsaWNhdGlvbiBtdXN0IHRha2UgY2FyZSB0aGF0IHdoZW4gb25lIHRocmVhZCBpcyBpc3N1aW5nCisgKiAgICBhbiB1bnJlZ2lzdHJhdGlvbiwgb3RoZXIgdGhyZWFkIGlzIG5vdCBzaW11bHRhbmVvdXNseSBpbnZva2luZyB0aGUKKyAqICAgIGNhbGxiYWNrIDxiPnRvIHRoZSBzYW1lIGtleTwvYj4uCisgKlxuCisgKiAgICBUaGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUgaW9xdWV1ZSBmdW5jdGlvbnMgYXJlIHdvcmtpbmcgd2l0aCBhIHBvaW50ZXIKKyAqICAgIHRvIHRoZSBrZXksIGFuZCB0aGVyZSBpcyBhIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBwb2ludGVyCisgKiAgICBoYXMgYmVlbiByZW5kZXJlZCBpbnZhbGlkIGJ5IG90aGVyIHRocmVhZHMgYmVmb3JlIHRoZSBpb3F1ZXVlIGhhcyBhCisgKiAgICBjaGFuY2UgdG8gYWNxdWlyZSBtdXRleCBvbiBpdC4KKyAqCisgKiBcc3Vic2VjdGlvbiBwal9pb3FfZGlzYWxsb3dfY29uY3VyIENvbmN1cnJlbmN5IGlzIERpc2FibGVkCisgKgorICogQWx0ZXJuYXRpdmVseSwgYXBwbGljYXRpb24gbWF5IGRpc2FibGUga2V5IGNvbmN1cnJlbmN5IHRvIG1ha2UgCisgKiBzeW5jaHJvbml6YXRpb24gZWFzaWVyLiBBcyBub3RlZCBhYm92ZSwgdGhlcmUgYXJlIHRocmVlIHdheXMgdG8gY29udHJvbAorICoga2V5IGNvbmN1cnJlbmN5IHNldHRpbmc6CisgKiAgLSBieSBjb250cm9sbGluZyBvbiBwZXIgaGFuZGxlL2tleSBiYXNpcywgd2l0aCAjcGpfaW9xdWV1ZV9zZXRfY29uY3VycmVuY3koKS4KKyAqICAtIGJ5IGNoYW5naW5nIGRlZmF1bHQga2V5IGNvbmN1cnJlbmN5IHNldHRpbmcgb24gdGhlIGlvcXVldWUsIHdpdGgKKyAqICAgICNwal9pb3F1ZXVlX3NldF9kZWZhdWx0X2NvbmN1cnJlbmN5KCkuCisgKiAgLSBieSBjaGFuZ2luZyB0aGUgZGVmYXVsdCBjb25jdXJyZW5jeSBvbiBjb21waWxlIHRpbWUsIGJ5IGRlY2xhcmluZworICogICAgUEpfSU9RVUVVRV9ERUZBVUxUX0FMTE9XX0NPTkNVUlJFTkNZIG1hY3JvIHRvIHplcm8gaW4geW91ciBjb25maWdfc2l0ZS5oCisgKgorICogXHNlY3Rpb24gcGpfaW9xZXV1ZV9leGFtcGxlc19zZWMgRXhhbXBsZXMKKyAqCisgKiBGb3Igc29tZSBleGFtcGxlcyBvbiBob3cgdG8gdXNlIHRoZSBJL08gUXVldWUsIHBsZWFzZSBzZWU6CisgKgorICogIC0gXHJlZiBwYWdlX3BqbGliX2lvcXVldWVfdGNwX3Rlc3QKKyAqICAtIFxyZWYgcGFnZV9wamxpYl9pb3F1ZXVlX3VkcF90ZXN0CisgKiAgLSBccmVmIHBhZ2VfcGpsaWJfaW9xdWV1ZV9wZXJmX3Rlc3QKKyAqLworCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIG9wZXJhdGlvbiBzcGVjaWZpYyBrZXkgdG8gYmUgc3VibWl0dGVkIHRvCisgKiBJL08gUXVldWUgd2hlbiBwZXJmb3JtaW5nIHRoZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uLiBUaGlzIGtleSB3aWxsCisgKiBiZSByZXR1cm5lZCB0byB0aGUgYXBwbGljYXRpb24gd2hlbiBjb21wbGV0aW9uIGNhbGxiYWNrIGlzIGNhbGxlZC4KKyAqCisgKiBBcHBsaWNhdGlvbiBub3JtYWxseSB3YW50cyB0byBhdHRhY2ggaXQncyBzcGVjaWZpYyBkYXRhIGluIHRoZQorICogXGMgdXNlcl9kYXRhIGZpZWxkIHNvIHRoYXQgaXQgY2FuIGtlZXAgdHJhY2sgb2Ygd2hpY2ggb3BlcmF0aW9uIGhhcworICogY29tcGxldGVkIHdoZW4gdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC4gQWx0ZXJuYXRpdmVseSwgYXBwbGljYXRpb24gY2FuCisgKiBhbHNvIGV4dGVuZCB0aGlzIHN0cnVjdCB0byBpbmNsdWRlIGl0cyBkYXRhLCBiZWNhdXNlIHRoZSBwb2ludGVyIHRoYXQKKyAqIGlzIHJldHVybmVkIGluIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrIHdpbGwgYmUgZXhhY3RseSB0aGUgc2FtZSBhcworICogdGhlIHBvaW50ZXIgc3VwcGxpZWQgd2hlbiB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfaW9xdWV1ZV9vcF9rZXlfdAoreyAKKyAgICB2b2lkICppbnRlcm5hbF9fWzMyXTsgICAgICAgICAgIC8qKjwgSW50ZXJuYWwgSS9PIFF1ZXVlIGRhdGEuICAgKi8KKyAgICB2b2lkICphY3RpdmVzb2NrX2RhdGE7CSAgICAvKio8IEFjdGl2ZSBzb2NrZXQgZGF0YS4JICAgICovCisgICAgdm9pZCAqdXNlcl9kYXRhOyAgICAgICAgICAgICAgICAvKio8IEFwcGxpY2F0aW9uIGRhdGEuICAgICAgICAgICovCit9IHBqX2lvcXVldWVfb3Bfa2V5X3Q7CisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIHRoZSBjYWxsYmFja3MgdG8gYmUgY2FsbGVkIHdoZW4gSS9PIG9wZXJhdGlvbgorICogY29tcGxldGVzLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9pb3F1ZXVlX2NhbGxiYWNrCit7CisgICAgLyoqCisgICAgICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiAjcGpfaW9xdWV1ZV9yZWN2IG9yICNwal9pb3F1ZXVlX3JlY3Zmcm9tCisgICAgICogY29tcGxldGVzLgorICAgICAqCisgICAgICogQHBhcmFtIGtleQkgICAgVGhlIGtleS4KKyAgICAgKiBAcGFyYW0gb3Bfa2V5ICAgICAgICBPcGVyYXRpb24ga2V5LgorICAgICAqIEBwYXJhbSBieXRlc19yZWFkICAgID49IDAgdG8gaW5kaWNhdGUgdGhlIGFtb3VudCBvZiBkYXRhIHJlYWQsIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBuZWdhdGl2ZSB2YWx1ZSBjb250YWluaW5nIHRoZSBlcnJvcgorICAgICAqICAgICAgICAgICAgICAgICAgICAgIGNvZGUuIFRvIG9idGFpbiB0aGUgcGpfc3RhdHVzX3QgZXJyb3IgY29kZSwgdXNlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgKHBqX3N0YXR1c190IGNvZGUgPSAtYnl0ZXNfcmVhZCkuCisgICAgICovCisgICAgdm9pZCAoKm9uX3JlYWRfY29tcGxldGUpKHBqX2lvcXVldWVfa2V5X3QgKmtleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NzaXplX3QgYnl0ZXNfcmVhZCk7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuICNwal9pb3F1ZXVlX3NlbmQgb3IgI3BqX2lvcXVldWVfc2VuZHRvCisgICAgICogY29tcGxldGVzLgorICAgICAqCisgICAgICogQHBhcmFtIGtleQkgICAgVGhlIGtleS4KKyAgICAgKiBAcGFyYW0gb3Bfa2V5ICAgICAgICBPcGVyYXRpb24ga2V5LgorICAgICAqIEBwYXJhbSBieXRlc19zZW50ICAgID49IDAgdG8gaW5kaWNhdGUgdGhlIGFtb3VudCBvZiBkYXRhIHdyaXR0ZW4sIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBuZWdhdGl2ZSB2YWx1ZSBjb250YWluaW5nIHRoZSBlcnJvcgorICAgICAqICAgICAgICAgICAgICAgICAgICAgIGNvZGUuIFRvIG9idGFpbiB0aGUgcGpfc3RhdHVzX3QgZXJyb3IgY29kZSwgdXNlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgKHBqX3N0YXR1c190IGNvZGUgPSAtYnl0ZXNfc2VudCkuCisgICAgICovCisgICAgdm9pZCAoKm9uX3dyaXRlX2NvbXBsZXRlKShwal9pb3F1ZXVlX2tleV90ICprZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NzaXplX3QgYnl0ZXNfc2VudCk7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuICNwal9pb3F1ZXVlX2FjY2VwdCBjb21wbGV0ZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2V5CSAgICBUaGUga2V5LgorICAgICAqIEBwYXJhbSBvcF9rZXkgICAgICAgIE9wZXJhdGlvbiBrZXkuCisgICAgICogQHBhcmFtIHNvY2sgICAgICAgICAgTmV3bHkgY29ubmVjdGVkIHNvY2tldC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzCSAgICBaZXJvIGlmIHRoZSBvcGVyYXRpb24gY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4KKyAgICAgKi8KKyAgICB2b2lkICgqb25fYWNjZXB0X2NvbXBsZXRlKShwal9pb3F1ZXVlX2tleV90ICprZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc29ja190IHNvY2ssIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3N0YXR1c190IHN0YXR1cyk7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuICNwal9pb3F1ZXVlX2Nvbm5lY3QgY29tcGxldGVzLgorICAgICAqCisgICAgICogQHBhcmFtIGtleQkgICAgVGhlIGtleS4KKyAgICAgKiBAcGFyYW0gc3RhdHVzCSAgICBQSl9TVUNDRVNTIGlmIHRoZSBvcGVyYXRpb24gY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4KKyAgICAgKi8KKyAgICB2b2lkICgqb25fY29ubmVjdF9jb21wbGV0ZSkocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3RhdHVzX3Qgc3RhdHVzKTsKK30gcGpfaW9xdWV1ZV9jYWxsYmFjazsKKworCisvKioKKyAqIFR5cGVzIG9mIHBlbmRpbmcgSS9PIFF1ZXVlIG9wZXJhdGlvbi4gVGhpcyBlbnVtZXJhdGlvbiBpcyBvbmx5IHVzZWQKKyAqIGludGVybmFsbHkgd2l0aGluIHRoZSBpb3F1ZXVlLgorICovCit0eXBlZGVmIGVudW0gcGpfaW9xdWV1ZV9vcGVyYXRpb25fZQoreworICAgIFBKX0lPUVVFVUVfT1BfTk9ORQkJPSAwLAkvKio8IE5vIG9wZXJhdGlvbi4gICAgICAgICAgKi8KKyAgICBQSl9JT1FVRVVFX09QX1JFQUQJCT0gMSwJLyoqPCByZWFkKCkgb3BlcmF0aW9uLiAgICAgICovCisgICAgUEpfSU9RVUVVRV9PUF9SRUNWICAgICAgICAgID0gMiwgICAgLyoqPCByZWN2KCkgb3BlcmF0aW9uLiAgICAgICovCisgICAgUEpfSU9RVUVVRV9PUF9SRUNWX0ZST00JPSA0LAkvKio8IHJlY3Zmcm9tKCkgb3BlcmF0aW9uLiAgKi8KKyAgICBQSl9JT1FVRVVFX09QX1dSSVRFCQk9IDgsCS8qKjwgd3JpdGUoKSBvcGVyYXRpb24uICAgICAqLworICAgIFBKX0lPUVVFVUVfT1BfU0VORCAgICAgICAgICA9IDE2LCAgIC8qKjwgc2VuZCgpIG9wZXJhdGlvbi4gICAgICAqLworICAgIFBKX0lPUVVFVUVfT1BfU0VORF9UTwk9IDMyLAkvKio8IHNlbmR0bygpIG9wZXJhdGlvbi4gICAgKi8KKyNpZiBkZWZpbmVkKFBKX0hBU19UQ1ApICYmIFBKX0hBU19UQ1AgIT0gMAorICAgIFBKX0lPUVVFVUVfT1BfQUNDRVBUCT0gNjQsCS8qKjwgYWNjZXB0KCkgb3BlcmF0aW9uLiAgICAqLworICAgIFBKX0lPUVVFVUVfT1BfQ09OTkVDVAk9IDEyOAkvKio8IGNvbm5lY3QoKSBvcGVyYXRpb24uICAgKi8KKyNlbmRpZgkvKiBQSl9IQVNfVENQICovCit9IHBqX2lvcXVldWVfb3BlcmF0aW9uX2U7CisKKworLyoqCisgKiBUaGlzIG1hY3JvIHNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIHRoYXQgY2FuIGJlCisgKiBwcm9jZXNzZWQgYnkgdGhlIGlvcXVldWUgb24gYSBzaW5nbGUgcG9sbCBjeWNsZSwgb24gaW1wbGVtZW50YXRpb24KKyAqIHRoYXQgc3VwcG9ydHMgaXQuIFRoZSB2YWx1ZSBpcyBvbmx5IG1lYW5pbmdmdWxsIHdoZW4gc3BlY2lmaWVkCisgKiBkdXJpbmcgUEpMSUIgYnVpbGQuCisgKi8KKyNpZm5kZWYgUEpfSU9RVUVVRV9NQVhfRVZFTlRTX0lOX1NJTkdMRV9QT0xMCisjICAgZGVmaW5lIFBKX0lPUVVFVUVfTUFYX0VWRU5UU19JTl9TSU5HTEVfUE9MTCAgICAgKDE2KQorI2VuZGlmCisKKy8qKgorICogV2hlbiB0aGlzIGZsYWcgaXMgc3BlY2lmaWVkIGluIGlvcXVldWUncyByZWN2KCkgb3Igc2VuZCgpIG9wZXJhdGlvbnMsCisgKiB0aGUgaW9xdWV1ZSB3aWxsIGFsd2F5cyBtYXJrIHRoZSBvcGVyYXRpb24gYXMgYXN5bmNocm9ub3VzLgorICovCisjZGVmaW5lIFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DCSAgICAoKHBqX3VpbnQzMl90KTEgPDwgKHBqX3VpbnQzMl90KTMxKQorCisvKioKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgaW9xdWV1ZSBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBAcmV0dXJuCQlJbXBsZW1lbnRhdGlvbiBuYW1lLgorICovCitQSl9ERUNMKGNvbnN0IGNoYXIqKSBwal9pb3F1ZXVlX25hbWUodm9pZCk7CisKKworLyoqCisgKiBDcmVhdGUgYSBuZXcgSS9PIFF1ZXVlIGZyYW1ld29yay4KKyAqCisgKiBAcGFyYW0gcG9vbAkJVGhlIHBvb2wgdG8gYWxsb2NhdGUgdGhlIEkvTyBxdWV1ZSBzdHJ1Y3R1cmUuIAorICogQHBhcmFtIG1heF9mZAlUaGUgbWF4aW11bSBudW1iZXIgb2YgaGFuZGxlcyB0byBiZSBzdXBwb3J0ZWQsIHdoaWNoIAorICoJCQlzaG91bGQgbm90IGV4Y2VlZCBQSl9JT1FVRVVFX01BWF9IQU5ETEVTLgorICogQHBhcmFtIGlvcXVldWUJUG9pbnRlciB0byBob2xkIHRoZSBuZXdseSBjcmVhdGVkIEkvTyBRdWV1ZS4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorCQkJCQlwal9zaXplX3QgbWF4X2ZkLAorCQkJCQlwal9pb3F1ZXVlX3QgKippb3F1ZXVlKTsKKworLyoqCisgKiBEZXN0cm95IHRoZSBJL08gcXVldWUuCisgKgorICogQHBhcmFtIGlvcXVlCSAgICAgICAgVGhlIEkvTyBRdWV1ZSB0byBiZSBkZXN0cm95ZWQuCisgKgorICogQHJldHVybiAgICAgICAgICAgICAgUEpfU1VDQ0VTUyBpZiBzdWNjZXNzLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2Rlc3Ryb3koIHBqX2lvcXVldWVfdCAqaW9xdWUgKTsKKworLyoqCisgKiBTZXQgdGhlIGxvY2sgb2JqZWN0IHRvIGJlIHVzZWQgYnkgdGhlIEkvTyBRdWV1ZS4gVGhpcyBmdW5jdGlvbiBjYW4gb25seQorICogYmUgY2FsbGVkIHJpZ2h0IGFmdGVyIHRoZSBJL08gcXVldWUgaXMgY3JlYXRlZCwgYmVmb3JlIGFueSBoYW5kbGUgaXMKKyAqIHJlZ2lzdGVyZWQgdG8gdGhlIEkvTyBxdWV1ZS4KKyAqCisgKiBJbml0aWFsbHkgdGhlIEkvTyBxdWV1ZSBpcyBjcmVhdGVkIHdpdGggbm9uLXJlY3Vyc2l2ZSBtdXRleCBwcm90ZWN0aW9uLiAKKyAqIEFwcGxpY2F0aW9ucyBjYW4gc3VwcGx5IGFsdGVybmF0aXZlIGxvY2sgdG8gYmUgdXNlZCBieSBjYWxsaW5nIHRoaXMgCisgKiBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0gaW9xdWUgICAgICAgICBUaGUgaW9xdWV1ZSBpbnN0YW5jZS4KKyAqIEBwYXJhbSBsb2NrICAgICAgICAgIFRoZSBsb2NrIHRvIGJlIHVzZWQgYnkgdGhlIGlvcXVldWUuCisgKiBAcGFyYW0gYXV0b19kZWxldGUgICBJbiBub24temVybywgdGhlIGxvY2sgd2lsbCBiZSBkZWxldGVkIGJ5IHRoZSBpb3F1ZXVlLgorICoKKyAqIEByZXR1cm4gICAgICAgICAgICAgIFBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2V0X2xvY2soIHBqX2lvcXVldWVfdCAqaW9xdWUsIAorCQkJCQkgIHBqX2xvY2tfdCAqbG9jaywKKwkJCQkJICBwal9ib29sX3QgYXV0b19kZWxldGUgKTsKKworLyoqCisgKiBTZXQgZGVmYXVsdCBjb25jdXJyZW5jeSBwb2xpY3kgZm9yIHRoaXMgaW9xdWV1ZS4gSWYgdGhpcyBmdW5jdGlvbiBpcyBub3QKKyAqIGNhbGxlZCwgdGhlIGRlZmF1bHQgY29uY3VycmVuY3kgcG9saWN5IGZvciB0aGUgaW9xdWV1ZSBpcyBjb250cm9sbGVkIGJ5IAorICogY29tcGlsZSB0aW1lIHNldHRpbmcgUEpfSU9RVUVVRV9ERUZBVUxUX0FMTE9XX0NPTkNVUlJFTkNZLgorICoKKyAqIE5vdGUgdGhhdCBjaGFuZ2luZyB0aGUgY29uY3VycmVuY3kgc2V0dGluZyB0byB0aGUgaW9xdWV1ZSB3aWxsIG9ubHkgYWZmZWN0CisgKiBzdWJzZXF1ZW50IGtleSByZWdpc3RyYXRpb25zLiBUbyBtb2RpZnkgdGhlIGNvbmN1cnJlbmN5IHNldHRpbmcgZm9yCisgKiBpbmRpdmlkdWFsIGtleSwgdXNlICNwal9pb3F1ZXVlX3NldF9jb25jdXJyZW5jeSgpLgorICoKKyAqIEBwYXJhbSBpb3F1ZXVlCVRoZSBpb3F1ZXVlIGluc3RhbmNlLgorICogQHBhcmFtIGFsbG93CQlOb24temVybyB0byBhbGxvdyBjb25jdXJyZW50IGNhbGxiYWNrIGNhbGxzLCBvcgorICoJCQlQSl9GQUxTRSB0byBkaXNhbGxvdyBpdC4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9uIHN1Y2Nlc3Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2V0X2RlZmF1bHRfY29uY3VycmVuY3kocGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorCQkJCQkJCXBqX2Jvb2xfdCBhbGxvdyk7CisKKy8qKgorICogUmVnaXN0ZXIgYSBzb2NrZXQgdG8gdGhlIEkvTyBxdWV1ZSBmcmFtZXdvcmsuIAorICogV2hlbiBhIHNvY2tldCBpcyByZWdpc3RlcmVkIHRvIHRoZSBJT1F1ZXVlLCBpdCBtYXkgYmUgbW9kaWZpZWQgdG8gdXNlCisgKiBub24tYmxvY2tpbmcgSU8uIElmIGl0IGlzIG1vZGlmaWVkLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGlzIAorICogbW9kaWZpY2F0aW9uIHdpbGwgYmUgcmVzdG9yZWQgYWZ0ZXIgdGhlIHNvY2tldCBpcyB1bnJlZ2lzdGVyZWQuCisgKgorICogQHBhcmFtIHBvb2wJICAgIFRvIGFsbG9jYXRlIHRoZSByZXNvdXJjZSBmb3IgdGhlIHNwZWNpZmllZCBoYW5kbGUsIAorICoJCSAgICB3aGljaCBtdXN0IGJlIHZhbGlkIHVudGlsIHRoZSBoYW5kbGUva2V5IGlzIHVucmVnaXN0ZXJlZCAKKyAqCQkgICAgZnJvbSBJL08gUXVldWUuCisgKiBAcGFyYW0gaW9xdWUJICAgIFRoZSBJL08gUXVldWUuCisgKiBAcGFyYW0gc29jawkgICAgVGhlIHNvY2tldC4KKyAqIEBwYXJhbSB1c2VyX2RhdGEgVXNlciBkYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5LCB3aGljaCBjYW4gYmUKKyAqCQkgICAgcmV0cmlldmVkIGxhdGVyLgorICogQHBhcmFtIGNiCSAgICBDYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBJL08gb3BlcmF0aW9uIGNvbXBsZXRlcy4gCisgKiBAcGFyYW0ga2V5ICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUga2V5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgKiAgICAgICAgICAgICAgICAgIHNvY2tldC4gU3Vic2VxdWVudCBJL08gcXVldWUgb3BlcmF0aW9uIHdpbGwgbmVlZCB0aGlzCisgKiAgICAgICAgICAgICAgICAgIGtleS4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2soIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICAgIHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkJCSAgICAgICBwal9zb2NrX3Qgc29jaywKKwkJCQkJICAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKwkJCQkJICAgICAgIGNvbnN0IHBqX2lvcXVldWVfY2FsbGJhY2sgKmNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX2tleV90ICoqa2V5ICk7CisKKy8qKgorICogVmFyaWFudCBvZiBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2soKSB3aXRoIGFkZGl0aW9uYWwgZ3JvdXAgbG9jayBwYXJhbWV0ZXIuCisgKiBJZiBncm91cCBsb2NrIGlzIHNldCBmb3IgdGhlIGtleSwgdGhlIGtleSB3aWxsIGFkZCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIKKyAqIHdoZW4gdGhlIHNvY2tldCBpcyByZWdpc3RlcmVkIGFuZCBkZWNyZWFzZSBpdCB3aGVuIGl0IGlzIGRlc3Ryb3llZC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrMihwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgICBwal9pb3F1ZXVlX3QgKmlvcXVlLAorCQkJCQkgICAgICAgcGpfc29ja190IHNvY2ssCisJCQkJCSAgICAgICBwal9ncnBfbG9ja190ICpncnBfbG9jaywKKwkJCQkJICAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKwkJCQkJICAgICAgIGNvbnN0IHBqX2lvcXVldWVfY2FsbGJhY2sgKmNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX2tleV90ICoqa2V5ICk7CisKKy8qKgorICogVW5yZWdpc3RlciBmcm9tIHRoZSBJL08gUXVldWUgZnJhbWV3b3JrLiBDYWxsZXIgbXVzdCBtYWtlIHN1cmUgdGhhdAorICogdGhlIGtleSBkb2Vzbid0IGhhdmUgYW55IHBlbmRpbmcgb3BlcmF0aW9ucyBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLAorICogYnkgY2FsbGluZyAjcGpfaW9xdWV1ZV9pc19wZW5kaW5nKCkgZm9yIGFsbCBwcmV2aW91c2x5IHN1Ym1pdHRlZAorICogb3BlcmF0aW9ucyBleGNlcHQgYXN5bmNocm9ub3VzIGNvbm5lY3QsIGFuZCBpZiBuZWNlc3NhcnkgY2FsbAorICogI3BqX2lvcXVldWVfcG9zdF9jb21wbGV0aW9uKCkgdG8gY2FuY2VsIHRoZSBwZW5kaW5nIG9wZXJhdGlvbnMuCisgKgorICogTm90ZSB0aGF0IGFzeW5jaHJvbm91cyBjb25uZWN0IG9wZXJhdGlvbiB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgCisgKiBjYW5jZWxsZWQgZHVyaW5nIHRoZSB1bnJlZ2lzdHJhdGlvbi4KKyAqCisgKiBBbHNvIG5vdGUgdGhhdCB3aGVuIEkvTyBDb21wbGV0aW9uIFBvcnQgYmFja2VuZCBpcyB1c2VkLCBhcHBsaWNhdGlvbgorICogTVVTVCBjbG9zZSB0aGUgaGFuZGxlIGltbWVkaWF0ZWx5IGFmdGVyIHVucmVnaXN0ZXJpbmcgdGhlIGtleS4gVGhpcyBpcworICogYmVjYXVzZSB0aGVyZSBpcyBubyB1bnJlZ2lzdGVyaW5nIEFQSSBmb3IgSU9DUC4gVGhlIG9ubHkgd2F5IHRvCisgKiB1bnJlZ2lzdGVyIHRoZSBoYW5kbGUgZnJvbSBJT0NQIGlzIHRvIGNsb3NlIHRoZSBoYW5kbGUuCisgKgorICogQHBhcmFtIGtleQkgICAgVGhlIGtleSB0aGF0IHdhcyBwcmV2aW91c2x5IG9idGFpbmVkIGZyb20gcmVnaXN0cmF0aW9uLgorICoKKyAqIEByZXR1cm4gICAgICAgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzIG9yIHRoZSBlcnJvciBjb2RlLgorICoKKyAqIEBzZWUgcGpfaW9xdWV1ZV9pc19wZW5kaW5nCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfdW5yZWdpc3RlciggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5ICk7CisKKworLyoqCisgKiBHZXQgdXNlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhbiBpb3F1ZXVlIGtleS4KKyAqCisgKiBAcGFyYW0ga2V5CSAgICBUaGUga2V5IHRoYXQgd2FzIHByZXZpb3VzbHkgb2J0YWluZWQgZnJvbSByZWdpc3RyYXRpb24uCisgKgorICogQHJldHVybiAgICAgICAgICBUaGUgdXNlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzY3JpcHRvciwgb3IgTlVMTCAKKyAqICAgICAgICAgICAgICAgICAgb24gZXJyb3Igb3IgaWYgbm8gZGF0YSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtleSBkdXJpbmcKKyAqICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uLgorICovCitQSl9ERUNMKHZvaWQqKSBwal9pb3F1ZXVlX2dldF91c2VyX2RhdGEoIHBqX2lvcXVldWVfa2V5X3QgKmtleSApOworCisvKioKKyAqIFNldCBvciBjaGFuZ2UgdGhlIHVzZXIgZGF0YSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUgZGVzY3JpcHRvciBvcgorICogaGFuZGxlIG9yIHNvY2tldCBkZXNjcmlwdG9yLgorICoKKyAqIEBwYXJhbSBrZXkJICAgIFRoZSBrZXkgdGhhdCB3YXMgcHJldmlvdXNseSBvYnRhaW5lZCBmcm9tIHJlZ2lzdHJhdGlvbi4KKyAqIEBwYXJhbSB1c2VyX2RhdGEgVXNlciBkYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzY3JpcHRvci4KKyAqIEBwYXJhbSBvbGRfZGF0YSAgT3B0aW9uYWwgcGFyYW1ldGVyIHRvIHJldHJpZXZlIHRoZSBvbGQgdXNlciBkYXRhLgorICoKKyAqIEByZXR1cm4gICAgICAgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3NldF91c2VyX2RhdGEoIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqb2xkX2RhdGEpOworCisvKioKKyAqIENvbmZpZ3VyZSB3aGV0aGVyIHRoZSBpb3F1ZXVlIGlzIGFsbG93ZWQgdG8gY2FsbCB0aGUga2V5J3MgY2FsbGJhY2sKKyAqIGNvbmN1cnJlbnRseS9pbiBwYXJhbGxlbC4gVGhlIGRlZmF1bHQgY29uY3VycmVuY3kgc2V0dGluZyBmb3IgdGhlIGtleQorICogaXMgY29udHJvbGxlZCBieSBpb3F1ZXVlJ3MgZGVmYXVsdCBjb25jdXJyZW5jeSB2YWx1ZSwgd2hpY2ggY2FuIGJlCisgKiBjaGFuZ2VkIGJ5IGNhbGxpbmcgI3BqX2lvcXVldWVfc2V0X2RlZmF1bHRfY29uY3VycmVuY3koKS4KKyAqCisgKiBJZiBjb25jdXJyZW5jeSBpcyBhbGxvd2VkIGZvciB0aGUga2V5LCBpdCBtZWFucyB0aGF0IGlmIHRoZXJlIGFyZSBtb3JlCisgKiB0aGFuIG9uZSBwZW5kaW5nIG9wZXJhdGlvbnMgY29tcGxldGUgc2ltdWx0YW5lb3VzbHksIG1vcmUgdGhhbiBvbmUKKyAqIHRocmVhZHMgbWF5IGNhbGwgdGhlIGtleSdzICBjYWxsYmFjayBhdCB0aGUgc2FtZSB0aW1lLiBUaGlzIGdlbmVyYWxseQorICogd291bGQgcHJvbW90ZSBnb29kIHNjYWxhYmlsaXR5IGZvciBhcHBsaWNhdGlvbiwgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZQorICogY29tcGxleGl0eSB0byBtYW5hZ2UgdGhlIGNvbmN1cnJlbnQgYWNjZXNzZXMgaW4gYXBwbGljYXRpb24ncyBjb2RlLgorICoKKyAqIEFsdGVybmF0aXZlbHkgYXBwbGljYXRpb24gbWF5IGRpc2FibGUgdGhlIGNvbmN1cnJlbnQgYWNjZXNzIGJ5CisgKiBzZXR0aW5nIHRoZSBcYSBhbGxvdyBmbGFnIHRvIGZhbHNlLiBXaXRoIGNvbmN1cnJlbmN5IGRpc2FibGVkLCBvbmx5CisgKiBvbmUgdGhyZWFkIGNhbiBjYWxsIHRoZSBrZXkncyBjYWxsYmFjayBhdCBvbmUgdGltZS4KKyAqCisgKiBAcGFyYW0ga2V5CSAgICBUaGUga2V5IHRoYXQgd2FzIHByZXZpb3VzbHkgb2J0YWluZWQgZnJvbSByZWdpc3RyYXRpb24uCisgKiBAcGFyYW0gYWxsb3cJICAgIFNldCB0aGlzIHRvIG5vbi16ZXJvIHRvIGFsbG93IGNvbmN1cnJlbnQgY2FsbGJhY2sgY2FsbHMKKyAqCQkgICAgYW5kIHplcm8gKFBKX0ZBTFNFKSB0byBkaXNhbGxvdyBpdC4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2V0X2NvbmN1cnJlbmN5KHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKwkJCQkJCXBqX2Jvb2xfdCBhbGxvdyk7CisKKy8qKgorICogQWNxdWlyZSB0aGUga2V5J3MgbXV0ZXguIFdoZW4gdGhlIGtleSdzIGNvbmN1cnJlbmN5IGlzIGRpc2FibGVkLCAKKyAqIGFwcGxpY2F0aW9uIG1heSBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gc3luY2hyb25pemUgaXRzIG9wZXJhdGlvbgorICogd2l0aCB0aGUga2V5J3MgY2FsbGJhY2sgKGkuZS4gdGhpcyBmdW5jdGlvbiB3aWxsIGJsb2NrIHVudGlsIHRoZQorICoga2V5J3MgY2FsbGJhY2sgcmV0dXJucykuCisgKgorICogQHBhcmFtIGtleQkgICAgVGhlIGtleSB0aGF0IHdhcyBwcmV2aW91c2x5IG9idGFpbmVkIGZyb20gcmVnaXN0cmF0aW9uLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2VzcyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9sb2NrX2tleShwal9pb3F1ZXVlX2tleV90ICprZXkpOworCisvKioKKyAqIFJlbGVhc2UgdGhlIGxvY2sgcHJldmlvdXNseSBhY3F1aXJlZCB3aXRoIHBqX2lvcXVldWVfbG9ja19rZXkoKS4KKyAqCisgKiBAcGFyYW0ga2V5CSAgICBUaGUga2V5IHRoYXQgd2FzIHByZXZpb3VzbHkgb2J0YWluZWQgZnJvbSByZWdpc3RyYXRpb24uCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3VubG9ja19rZXkocGpfaW9xdWV1ZV9rZXlfdCAqa2V5KTsKKworLyoqCisgKiBJbml0aWFsaXplIG9wZXJhdGlvbiBrZXkuCisgKgorICogQHBhcmFtIG9wX2tleSAgICBUaGUgb3BlcmF0aW9uIGtleSB0byBiZSBpbml0aWFsaWVkLgorICogQHBhcmFtIHNpemUJICAgIFRoZSBzaXplIG9mIHRoZSBvcGVyYXRpb24ga2V5LgorICovCitQSl9ERUNMKHZvaWQpIHBqX2lvcXVldWVfb3Bfa2V5X2luaXQoIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCQkgICAgICBwal9zaXplX3Qgc2l6ZSApOworCisvKioKKyAqIENoZWNrIGlmIG9wZXJhdGlvbiBpcyBwZW5kaW5nIG9uIHRoZSBzcGVjaWZpZWQgb3BlcmF0aW9uIGtleS4KKyAqIFRoZSBcYyBvcF9rZXkgbXVzdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aCAjcGpfaW9xdWV1ZV9vcF9rZXlfaW5pdCgpIAorICogb3Igc3VibWl0dGVkIGFzIHBlbmRpbmcgb3BlcmF0aW9uIGJlZm9yZSwgb3Igb3RoZXJ3aXNlIHRoZSByZXN1bHQgCisgKiBpcyB1bmRlZmluZWQuCisgKgorICogQHBhcmFtIGtleSAgICAgICBUaGUga2V5LgorICogQHBhcmFtIG9wX2tleSAgICBUaGUgb3BlcmF0aW9uIGtleSwgcHJldmlvdXNseSBzdWJtaXR0ZWQgdG8gYW55IG9mCisgKiAgICAgICAgICAgICAgICAgIHRoZSBJL08gZnVuY3Rpb25zIGFuZCBoYXMgcmV0dXJuZWQgUEpfRVBFTkRJTkcuCisgKgorICogQHJldHVybiAgICAgICAgICBOb24temVybyBpZiBvcGVyYXRpb24gaXMgc3RpbGwgcGVuZGluZy4KKyAqLworUEpfREVDTChwal9ib29sX3QpIHBqX2lvcXVldWVfaXNfcGVuZGluZyggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5ICk7CisKKworLyoqCisgKiBQb3N0IGNvbXBsZXRpb24gc3RhdHVzIHRvIHRoZSBzcGVjaWZpZWQgb3BlcmF0aW9uIGtleSBhbmQgY2FsbCB0aGUKKyAqIGFwcHJvcHJpYXRlIGNhbGxiYWNrLiBXaGVuIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQsIHRoZSBudW1iZXIgb2YgYnl0ZXMgCisgKiByZWNlaXZlZCBpbiByZWFkL3dyaXRlIGNhbGxiYWNrIG9yIHRoZSBzdGF0dXMgaW4gYWNjZXB0L2Nvbm5lY3QgY2FsbGJhY2sKKyAqIHdpbGwgYmUgc2V0IGZyb20gdGhlIFxjIGJ5dGVzX3N0YXR1cyBwYXJhbWV0ZXIuCisgKgorICogQHBhcmFtIGtleSAgICAgICAgICAgVGhlIGtleS4KKyAqIEBwYXJhbSBvcF9rZXkgICAgICAgIFBlbmRpbmcgb3BlcmF0aW9uIGtleS4KKyAqIEBwYXJhbSBieXRlc19zdGF0dXMgIE51bWJlciBvZiBieXRlcyBvciBzdGF0dXMgdG8gYmUgc2V0LiBBIGdvb2QgdmFsdWUKKyAqICAgICAgICAgICAgICAgICAgICAgIHRvIHB1dCBoZXJlIGlzIC1QSl9FQ0FOQ0VMTEVELgorICoKKyAqIEByZXR1cm4gICAgICAgICAgICAgIFBKX1NVQ0NFU1MgaWYgY29tcGxldGlvbiBzdGF0dXMgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5CisgKiAgICAgICAgICAgICAgICAgICAgICBzZW50LgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3Bvc3RfY29tcGxldGlvbiggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zc2l6ZV90IGJ5dGVzX3N0YXR1cyApOworCisKKworI2lmIGRlZmluZWQoUEpfSEFTX1RDUCkgJiYgUEpfSEFTX1RDUCAhPSAwCisvKioKKyAqIEluc3RydWN0IEkvTyBRdWV1ZSB0byBhY2NlcHQgaW5jb21pbmcgY29ubmVjdGlvbiBvbiB0aGUgc3BlY2lmaWVkIAorICogbGlzdGVuaW5nIHNvY2tldC4gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBpbW1lZGlhdGVseSAoaS5lLiBub24tYmxvY2tpbmcpCisgKiByZWdhcmRsZXNzIHdoZXRoZXIgYSBjb25uZWN0aW9uIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gSWYgdGhlIGZ1bmN0aW9uCisgKiBjYW4ndCBjb21wbGV0ZSBpbW1lZGlhdGVseSwgdGhlIGNhbGxlciB3aWxsIGJlIG5vdGlmaWVkIGFib3V0IHRoZSBpbmNvbWluZworICogY29ubmVjdGlvbiB3aGVuIGl0IGNhbGxzIHBqX2lvcXVldWVfcG9sbCgpLiBJZiBhIG5ldyBjb25uZWN0aW9uIGlzCisgKiBpbW1lZGlhdGVseSBhdmFpbGFibGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIFBKX1NVQ0NFU1Mgd2l0aCB0aGUgbmV3CisgKiBjb25uZWN0aW9uOyBpbiB0aGlzIGNhc2UsIHRoZSBjYWxsYmFjayBXSUxMIE5PVCBiZSBjYWxsZWQuCisgKgorICogQHBhcmFtIGtleQkgICAgVGhlIGtleSB3aGljaCByZWdpc3RlcmVkIHRvIHRoZSBzZXJ2ZXIgc29ja2V0LgorICogQHBhcmFtIG9wX2tleSAgICBBbiBvcGVyYXRpb24gc3BlY2lmaWMga2V5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAqICAgICAgICAgICAgICAgICAgcGVuZGluZyBvcGVyYXRpb24sIHNvIHRoYXQgYXBwbGljYXRpb24gY2FuIGtlZXAgdHJhY2sgb2YKKyAqICAgICAgICAgICAgICAgICAgd2hpY2ggb3BlcmF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlZCB3aGVuIHRoZSBjYWxsYmFjayBpcworICogICAgICAgICAgICAgICAgICBjYWxsZWQuCisgKiBAcGFyYW0gbmV3X3NvY2sgIEFyZ3VtZW50IHdoaWNoIGNvbnRhaW4gcG9pbnRlciB0byByZWNlaXZlIHRoZSBuZXcgc29ja2V0CisgKiAgICAgICAgICAgICAgICAgIGZvciB0aGUgaW5jb21pbmcgY29ubmVjdGlvbi4KKyAqIEBwYXJhbSBsb2NhbAkgICAgT3B0aW9uYWwgYXJndW1lbnQgd2hpY2ggY29udGFpbiBwb2ludGVyIHRvIHZhcmlhYmxlIHRvIAorICogICAgICAgICAgICAgICAgICByZWNlaXZlIGxvY2FsIGFkZHJlc3MuCisgKiBAcGFyYW0gcmVtb3RlICAgIE9wdGlvbmFsIGFyZ3VtZW50IHdoaWNoIGNvbnRhaW4gcG9pbnRlciB0byB2YXJpYWJsZSB0byAKKyAqICAgICAgICAgICAgICAgICAgcmVjZWl2ZSB0aGUgcmVtb3RlIGFkZHJlc3MuCisgKiBAcGFyYW0gYWRkcmxlbiAgIE9uIGlucHV0LCBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgZm9yIHRoZQorICoJCSAgICBhZGRyZXNzLCBhbmQgb24gb3V0cHV0LCBjb250YWlucyB0aGUgYWN0dWFsIGxlbmd0aCBvZiB0aGUKKyAqCQkgICAgYWRkcmVzcy4gVGhpcyBhcmd1bWVudCBpcyBvcHRpb25hbC4KKyAqIEByZXR1cm4KKyAqICAtIFBKX1NVQ0NFU1MgICAgV2hlbiBjb25uZWN0aW9uIGlzIGF2YWlsYWJsZSBpbW1lZGlhdGVseSwgYW5kIHRoZSAKKyAqICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycyB3aWxsIGJlIHVwZGF0ZWQgdG8gY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCAKKyAqICAgICAgICAgICAgICAgICAgdGhlIG5ldyBjb25uZWN0aW9uLiBJbiB0aGlzIGNhc2UsIGEgY29tcGxldGlvbiBjYWxsYmFjaworICogICAgICAgICAgICAgICAgICBXSUxMIE5PVCBiZSBjYWxsZWQuCisgKiAgLSBQSl9FUEVORElORyAgIElmIG5vIGNvbm5lY3Rpb24gaXMgYXZhaWxhYmxlIGltbWVkaWF0ZWx5LiBXaGVuIGEgbmV3CisgKiAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gYXJyaXZlcywgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICogIC0gbm9uLXplcm8gICAgICB3aGljaCBpbmRpY2F0ZXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfYWNjZXB0KCBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJCQlwal9zb2NrX3QgKm5ld19zb2NrLAorCQkJCQlwal9zb2NrYWRkcl90ICpsb2NhbCwKKwkJCQkJcGpfc29ja2FkZHJfdCAqcmVtb3RlLAorCQkJCQlpbnQgKmFkZHJsZW4gKTsKKworLyoqCisgKiBJbml0aWF0ZSBub24tYmxvY2tpbmcgc29ja2V0IGNvbm5lY3QuIElmIHRoZSBzb2NrZXQgY2FuIE5PVCBiZSBjb25uZWN0ZWQKKyAqIGltbWVkaWF0ZWx5LCBhc3luY2hyb25vdXMgY29ubmVjdCgpIHdpbGwgYmUgc2NoZWR1bGVkIGFuZCBjYWxsZXIgd2lsbCBiZQorICogbm90aWZpZWQgdmlhIGNvbXBsZXRpb24gY2FsbGJhY2sgd2hlbiBpdCBjYWxscyBwal9pb3F1ZXVlX3BvbGwoKS4gSWYKKyAqIHNvY2tldCBpcyBjb25uZWN0ZWQgaW1tZWRpYXRlbHksIHRoZSBmdW5jdGlvbiByZXR1cm5zIFBKX1NVQ0NFU1MgYW5kCisgKiBjb21wbGV0aW9uIGNhbGxiYWNrIFdJTEwgTk9UIGJlIGNhbGxlZC4KKyAqCisgKiBAcGFyYW0ga2V5CSAgICBUaGUga2V5IGFzc29jaWF0ZWQgd2l0aCBUQ1Agc29ja2V0CisgKiBAcGFyYW0gYWRkcgkgICAgVGhlIHJlbW90ZSBhZGRyZXNzLgorICogQHBhcmFtIGFkZHJsZW4gICBUaGUgcmVtb3RlIGFkZHJlc3MgbGVuZ3RoLgorICoKKyAqIEByZXR1cm4KKyAqICAtIFBKX1NVQ0NFU1MgICAgSWYgc29ja2V0IGlzIGNvbm5lY3RlZCBpbW1lZGlhdGVseS4gSW4gdGhpcyBjYXNlLCB0aGUKKyAqICAgICAgICAgICAgICAgICAgY29tcGxldGlvbiBjYWxsYmFjayBXSUxMIE5PVCBiZSBjYWxsZWQuCisgKiAgLSBQSl9FUEVORElORyAgIElmIG9wZXJhdGlvbiBpcyBxdWV1ZWQsIG9yIAorICogIC0gbm9uLXplcm8gICAgICBJbmRpY2F0ZXMgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfY29ubmVjdCggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJCQkgY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJIGludCBhZGRybGVuICk7CisKKyNlbmRpZgkvKiBQSl9IQVNfVENQICovCisKKy8qKgorICogUG9sbCB0aGUgSS9PIFF1ZXVlIGZvciBjb21wbGV0ZWQgZXZlbnRzLgorICoKKyAqIE5vdGU6IHBvbGxpbmcgdGhlIGlvcXVldWUgaXMgbm90IG5lY2Vzc2FyeSBpbiBTeW1iaWFuLiBQbGVhc2Ugc2VlCisgKiBAcmVmIFBKX1NZTUJJQU5fT1MgZm9yIG1vcmUgaW5mby4KKyAqCisgKiBAcGFyYW0gaW9xdWUJCXRoZSBJL08gUXVldWUuCisgKiBAcGFyYW0gdGltZW91dAlwb2xsaW5nIHRpbWVvdXQsIG9yIE5VTEwgaWYgdGhlIHRocmVhZCB3aXNoZXMgdG8gd2FpdAorICoJCQlpbmRlZmluZXRlbHkgZm9yIHRoZSBldmVudC4KKyAqCisgKiBAcmV0dXJuIAorICogIC0gemVybyBpZiB0aW1lZCBvdXQgKG5vIGV2ZW50KS4KKyAqICAtICg8MCkgaWYgZXJyb3Igb2NjdXJlZCBkdXJpbmcgcG9sbGluZy4gQ2FsbGJhY2sgd2lsbCBOT1QgYmUgY2FsbGVkLgorICogIC0gKD4xKSB0byBpbmRpY2F0ZSBudW1iZXJzIG9mIGV2ZW50cy4gQ2FsbGJhY2tzIGhhdmUgYmVlbiBjYWxsZWQuCisgKi8KK1BKX0RFQ0woaW50KSBwal9pb3F1ZXVlX3BvbGwoIHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkgICAgICBjb25zdCBwal90aW1lX3ZhbCAqdGltZW91dCk7CisKKworLyoqCisgKiBJbnN0cnVjdCB0aGUgSS9PIFF1ZXVlIHRvIHJlYWQgZnJvbSB0aGUgc3BlY2lmaWVkIGhhbmRsZS4gVGhpcyBmdW5jdGlvbgorICogcmV0dXJucyBpbW1lZGlhdGVseSAoaS5lLiBub24tYmxvY2tpbmcpIHJlZ2FyZGxlc3Mgd2hldGhlciBzb21lIGRhdGEgaGFzIAorICogYmVlbiB0cmFuc2ZlcmVkLiBJZiB0aGUgb3BlcmF0aW9uIGNhbid0IGNvbXBsZXRlIGltbWVkaWF0ZWx5LCBjYWxsZXIgd2lsbCAKKyAqIGJlIG5vdGlmaWVkIGFib3V0IHRoZSBjb21wbGV0aW9uIHdoZW4gaXQgY2FsbHMgcGpfaW9xdWV1ZV9wb2xsKCkuIElmIGRhdGEKKyAqIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSwgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIFBKX1NVQ0NFU1MgYW5kIHRoZQorICogY2FsbGJhY2sgV0lMTCBOT1QgYmUgY2FsbGVkLgorICoKKyAqIEBwYXJhbSBrZXkJICAgIFRoZSBrZXkgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBoYW5kbGUuCisgKiBAcGFyYW0gb3Bfa2V5ICAgIEFuIG9wZXJhdGlvbiBzcGVjaWZpYyBrZXkgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZQorICogICAgICAgICAgICAgICAgICBwZW5kaW5nIG9wZXJhdGlvbiwgc28gdGhhdCBhcHBsaWNhdGlvbiBjYW4ga2VlcCB0cmFjayBvZgorICogICAgICAgICAgICAgICAgICB3aGljaCBvcGVyYXRpb24gaGFzIGJlZW4gY29tcGxldGVkIHdoZW4gdGhlIGNhbGxiYWNrIGlzCisgKiAgICAgICAgICAgICAgICAgIGNhbGxlZC4gQ2FsbGVyIG11c3QgbWFrZSBzdXJlIHRoYXQgdGhpcyBrZXkgcmVtYWlucyAKKyAqICAgICAgICAgICAgICAgICAgdmFsaWQgdW50aWwgdGhlIGZ1bmN0aW9uIGNvbXBsZXRlcy4KKyAqIEBwYXJhbSBidWZmZXIgICAgVGhlIGJ1ZmZlciB0byBob2xkIHRoZSByZWFkIGRhdGEuIFRoZSBjYWxsZXIgTVVTVCBtYWtlIHN1cmUKKyAqCQkgICAgdGhhdCB0aGlzIGJ1ZmZlciByZW1haW4gdmFsaWQgdW50aWwgdGhlIGZyYW1ld29yayBjb21wbGV0ZXMKKyAqCQkgICAgcmVhZGluZyB0aGUgaGFuZGxlLgorICogQHBhcmFtIGxlbmd0aCAgICBPbiBpbnB1dCwgaXQgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIuIElmIGRhdGEgaXMKKyAqICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIHRvIGJlIHJlYWQgaW1tZWRpYXRlbHksIHRoZSBmdW5jdGlvbiByZXR1cm5zCisgKiAgICAgICAgICAgICAgICAgIFBKX1NVQ0NFU1MgYW5kIHRoaXMgYXJndW1lbnQgd2lsbCBiZSBmaWxsZWQgd2l0aCB0aGUKKyAqICAgICAgICAgICAgICAgICAgYW1vdW50IG9mIGRhdGEgcmVhZC4gSWYgdGhlIGZ1bmN0aW9uIGlzIHBlbmRpbmcsIGNhbGxlcgorICogICAgICAgICAgICAgICAgICB3aWxsIGJlIG5vdGlmaWVkIGFib3V0IHRoZSBhbW91bnQgb2YgZGF0YSByZWFkIGluIHRoZQorICogICAgICAgICAgICAgICAgICBjYWxsYmFjay4gVGhpcyBwYXJhbWV0ZXIgY2FuIHBvaW50IHRvIGxvY2FsIHZhcmlhYmxlIGluCisgKiAgICAgICAgICAgICAgICAgIGNhbGxlcidzIHN0YWNrIGFuZCBkb2Vzbid0IGhhdmUgdG8gcmVtYWluIHZhbGlkIGZvciB0aGUKKyAqICAgICAgICAgICAgICAgICAgZHVyYXRpb24gb2YgcGVuZGluZyBvcGVyYXRpb24uCisgKiBAcGFyYW0gZmxhZ3MgICAgIFJlY3YgZmxhZy4gSWYgZmxhZ3MgaGFzIFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DIHRoZW4KKyAqCQkgICAgdGhlIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgcmV0dXJuIFBKX1NVQ0NFU1MuCisgKgorICogQHJldHVybgorICogIC0gUEpfU1VDQ0VTUyAgICBJZiBpbW1lZGlhdGUgZGF0YSBoYXMgYmVlbiByZWNlaXZlZCBpbiB0aGUgYnVmZmVyLiBJbiB0aGlzCisgKiAgICAgICAgICAgICAgICAgIGNhc2UsIHRoZSBjYWxsYmFjayBXSUxMIE5PVCBiZSBjYWxsZWQuCisgKiAgLSBQSl9FUEVORElORyAgIElmIHRoZSBvcGVyYXRpb24gaGFzIGJlZW4gcXVldWVkLCBhbmQgdGhlIGNhbGxiYWNrIHdpbGwgYmUKKyAqICAgICAgICAgICAgICAgICAgY2FsbGVkIHdoZW4gZGF0YSBoYXMgYmVlbiByZWNlaXZlZC4KKyAqICAtIG5vbi16ZXJvICAgICAgVGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfcmVjdiggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJICAgICAgdm9pZCAqYnVmZmVyLAorCQkJCSAgICAgIHBqX3NzaXplX3QgKmxlbmd0aCwKKwkJCQkgICAgICBwal91aW50MzJfdCBmbGFncyApOworCisvKioKKyAqIFRoaXMgZnVuY3Rpb24gYmVoYXZlcyBzaW1pbGFybHkgYXMgI3BqX2lvcXVldWVfcmVjdigpLCBleGNlcHQgdGhhdCBpdCBpcworICogbm9ybWFsbHkgY2FsbGVkIGZvciBzb2NrZXQsIGFuZCB0aGUgcmVtb3RlIGFkZHJlc3Mgd2lsbCBhbHNvIGJlIHJldHVybmVkCisgKiBhbG9uZyB3aXRoIHRoZSBkYXRhLiBDYWxsZXIgTVVTVCBtYWtlIHN1cmUgdGhhdCBib3RoIGJ1ZmZlciBhbmQgYWRkcgorICogcmVtYWluIHZhbGlkIHVudGlsIHRoZSBmcmFtZXdvcmsgY29tcGxldGVzIHJlYWRpbmcgdGhlIGRhdGEuCisgKgorICogQHBhcmFtIGtleQkgICAgVGhlIGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGhhbmRsZS4KKyAqIEBwYXJhbSBvcF9rZXkgICAgQW4gb3BlcmF0aW9uIHNwZWNpZmljIGtleSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgKiAgICAgICAgICAgICAgICAgIHBlbmRpbmcgb3BlcmF0aW9uLCBzbyB0aGF0IGFwcGxpY2F0aW9uIGNhbiBrZWVwIHRyYWNrIG9mCisgKiAgICAgICAgICAgICAgICAgIHdoaWNoIG9wZXJhdGlvbiBoYXMgYmVlbiBjb21wbGV0ZWQgd2hlbiB0aGUgY2FsbGJhY2sgaXMKKyAqICAgICAgICAgICAgICAgICAgY2FsbGVkLgorICogQHBhcmFtIGJ1ZmZlciAgICBUaGUgYnVmZmVyIHRvIGhvbGQgdGhlIHJlYWQgZGF0YS4gVGhlIGNhbGxlciBNVVNUIG1ha2Ugc3VyZQorICoJCSAgICB0aGF0IHRoaXMgYnVmZmVyIHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgZnJhbWV3b3JrIGNvbXBsZXRlcworICoJCSAgICByZWFkaW5nIHRoZSBoYW5kbGUuCisgKiBAcGFyYW0gbGVuZ3RoICAgIE9uIGlucHV0LCBpdCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlci4gSWYgZGF0YSBpcworICogICAgICAgICAgICAgICAgICBhdmFpbGFibGUgdG8gYmUgcmVhZCBpbW1lZGlhdGVseSwgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAqICAgICAgICAgICAgICAgICAgUEpfU1VDQ0VTUyBhbmQgdGhpcyBhcmd1bWVudCB3aWxsIGJlIGZpbGxlZCB3aXRoIHRoZQorICogICAgICAgICAgICAgICAgICBhbW91bnQgb2YgZGF0YSByZWFkLiBJZiB0aGUgZnVuY3Rpb24gaXMgcGVuZGluZywgY2FsbGVyCisgKiAgICAgICAgICAgICAgICAgIHdpbGwgYmUgbm90aWZpZWQgYWJvdXQgdGhlIGFtb3VudCBvZiBkYXRhIHJlYWQgaW4gdGhlCisgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLiBUaGlzIHBhcmFtZXRlciBjYW4gcG9pbnQgdG8gbG9jYWwgdmFyaWFibGUgaW4KKyAqICAgICAgICAgICAgICAgICAgY2FsbGVyJ3Mgc3RhY2sgYW5kIGRvZXNuJ3QgaGF2ZSB0byByZW1haW4gdmFsaWQgZm9yIHRoZQorICogICAgICAgICAgICAgICAgICBkdXJhdGlvbiBvZiBwZW5kaW5nIG9wZXJhdGlvbi4KKyAqIEBwYXJhbSBmbGFncyAgICAgUmVjdiBmbGFnLiBJZiBmbGFncyBoYXMgUEpfSU9RVUVVRV9BTFdBWVNfQVNZTkMgdGhlbgorICoJCSAgICB0aGUgZnVuY3Rpb24gd2lsbCBuZXZlciByZXR1cm4gUEpfU1VDQ0VTUy4KKyAqIEBwYXJhbSBhZGRyICAgICAgT3B0aW9uYWwgUG9pbnRlciB0byBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgYWRkcmVzcy4KKyAqIEBwYXJhbSBhZGRybGVuICAgT24gaW5wdXQsIHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBhZGRyZXNzIGJ1ZmZlci4KKyAqICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIHRoZSBhY3R1YWwgbGVuZ3RoIG9mCisgKiAgICAgICAgICAgICAgICAgIHRoZSBhZGRyZXNzLiBUaGlzIGFyZ3VtZW50IGNhbiBiZSBOVUxMIGlmIFxjIGFkZHIgaXMgbm90CisgKiAgICAgICAgICAgICAgICAgIHNwZWNpZmllZC4KKyAqCisgKiBAcmV0dXJuCisgKiAgLSBQSl9TVUNDRVNTICAgIElmIGltbWVkaWF0ZSBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLiBJbiB0aGlzIGNhc2UsIHRoZSAKKyAqCQkgICAgY2FsbGJhY2sgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIAorICoJCSAgICByZXR1cm5zLCBhbmQgbm8gcGVuZGluZyBvcGVyYXRpb24gaXMgc2NoZWR1bGVkLgorICogIC0gUEpfRVBFTkRJTkcgICBJZiB0aGUgb3BlcmF0aW9uIGhhcyBiZWVuIHF1ZXVlZC4KKyAqICAtIG5vbi16ZXJvICAgICAgVGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfcmVjdmZyb20oIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCQkJICB2b2lkICpidWZmZXIsCisJCQkJCSAgcGpfc3NpemVfdCAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfdWludDMyX3QgZmxhZ3MsCisJCQkJCSAgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJICBpbnQgKmFkZHJsZW4pOworCisvKioKKyAqIEluc3RydWN0IHRoZSBJL08gUXVldWUgdG8gd3JpdGUgdG8gdGhlIGhhbmRsZS4gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybgorICogaW1tZWRpYXRlbHkgKGkuZS4gbm9uLWJsb2NraW5nKSByZWdhcmRsZXNzIHdoZXRoZXIgc29tZSBkYXRhIGhhcyBiZWVuIAorICogdHJhbnNmZXJlZC4gSWYgdGhlIGZ1bmN0aW9uIGNhbid0IGNvbXBsZXRlIGltbWVkaWF0ZWx5LCB0aGUgY2FsbGVyIHdpbGwKKyAqIGJlIG5vdGlmaWVkIGFib3V0IHRoZSBjb21wbGV0aW9uIHdoZW4gaXQgY2FsbHMgcGpfaW9xdWV1ZV9wb2xsKCkuIElmIAorICogb3BlcmF0aW9uIGNvbXBsZXRlcyBpbW1lZGlhdGVseSBhbmQgZGF0YSBoYXMgYmVlbiB0cmFuc2ZlcmVkLCB0aGUgZnVuY3Rpb24KKyAqIHJldHVybnMgUEpfU1VDQ0VTUyBhbmQgdGhlIGNhbGxiYWNrIHdpbGwgTk9UIGJlIGNhbGxlZC4KKyAqCisgKiBAcGFyYW0ga2V5CSAgICBUaGUga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgaGFuZGxlLgorICogQHBhcmFtIG9wX2tleSAgICBBbiBvcGVyYXRpb24gc3BlY2lmaWMga2V5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAqICAgICAgICAgICAgICAgICAgcGVuZGluZyBvcGVyYXRpb24sIHNvIHRoYXQgYXBwbGljYXRpb24gY2FuIGtlZXAgdHJhY2sgb2YKKyAqICAgICAgICAgICAgICAgICAgd2hpY2ggb3BlcmF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlZCB3aGVuIHRoZSBjYWxsYmFjayBpcworICogICAgICAgICAgICAgICAgICBjYWxsZWQuCisgKiBAcGFyYW0gZGF0YQkgICAgVGhlIGRhdGEgdG8gc2VuZC4gQ2FsbGVyIE1VU1QgbWFrZSBzdXJlIHRoYXQgdGhpcyBidWZmZXIgCisgKgkJICAgIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIHdyaXRlIG9wZXJhdGlvbiBjb21wbGV0ZXMuCisgKiBAcGFyYW0gbGVuZ3RoICAgIE9uIGlucHV0LCBpdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiBkYXRhIHRvIHNlbmQuIFdoZW4KKyAqICAgICAgICAgICAgICAgICAgZGF0YSB3YXMgc2VudCBpbW1lZGlhdGVseSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFBKX1NVQ0NFU1MKKyAqICAgICAgICAgICAgICAgICAgYW5kIHRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBsZW5ndGggb2YgZGF0YSBzZW50LiBJZgorICogICAgICAgICAgICAgICAgICBkYXRhIGNhbiBub3QgYmUgc2VudCBpbW1lZGlhdGVseSwgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbgorICogICAgICAgICAgICAgICAgICBpcyBzY2hlZHVsZWQgYW5kIGNhbGxlciB3aWxsIGJlIG5vdGlmaWVkIHZpYSBjYWxsYmFjayB0aGUKKyAqICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGJ5dGVzIHNlbnQuIFRoaXMgcGFyYW1ldGVyIGNhbiBwb2ludCB0byBsb2NhbCAKKyAqICAgICAgICAgICAgICAgICAgdmFyaWFibGUgb24gY2FsbGVyJ3Mgc3RhY2sgYW5kIGRvZXNuJ3QgaGF2ZSB0byByZW1haW4gCisgKiAgICAgICAgICAgICAgICAgIHZhbGlkIHVudGlsIHRoZSBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZC4KKyAqIEBwYXJhbSBmbGFncyAgICAgU2VuZCBmbGFncy4gSWYgZmxhZ3MgaGFzIFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DIHRoZW4KKyAqCQkgICAgdGhlIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgcmV0dXJuIFBKX1NVQ0NFU1MuCisgKgorICogQHJldHVybgorICogIC0gUEpfU1VDQ0VTUyAgICBJZiBkYXRhIHdhcyBpbW1lZGlhdGVseSB0cmFuc2ZlcmVkLiBJbiB0aGlzIGNhc2UsIG5vCisgKiAgICAgICAgICAgICAgICAgIHBlbmRpbmcgb3BlcmF0aW9uIGhhcyBiZWVuIHNjaGVkdWxlZCBhbmQgdGhlIGNhbGxiYWNrCisgKiAgICAgICAgICAgICAgICAgIFdJTEwgTk9UIGJlIGNhbGxlZC4KKyAqICAtIFBKX0VQRU5ESU5HICAgSWYgdGhlIG9wZXJhdGlvbiBoYXMgYmVlbiBxdWV1ZWQuIE9uY2UgZGF0YSBiYXNlIGJlZW4KKyAqICAgICAgICAgICAgICAgICAgdHJhbnNmZXJlZCwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICogIC0gbm9uLXplcm8gICAgICBUaGUgcmV0dXJuIHZhbHVlIGluZGljYXRlcyB0aGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9zZW5kKCBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCQkgICAgICBjb25zdCB2b2lkICpkYXRhLAorCQkJCSAgICAgIHBqX3NzaXplX3QgKmxlbmd0aCwKKwkJCQkgICAgICBwal91aW50MzJfdCBmbGFncyApOworCisKKy8qKgorICogSW5zdHJ1Y3QgdGhlIEkvTyBRdWV1ZSB0byB3cml0ZSB0byB0aGUgaGFuZGxlLiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCisgKiBpbW1lZGlhdGVseSAoaS5lLiBub24tYmxvY2tpbmcpIHJlZ2FyZGxlc3Mgd2hldGhlciBzb21lIGRhdGEgaGFzIGJlZW4gCisgKiB0cmFuc2ZlcmVkLiBJZiB0aGUgZnVuY3Rpb24gY2FuJ3QgY29tcGxldGUgaW1tZWRpYXRlbHksIHRoZSBjYWxsZXIgd2lsbAorICogYmUgbm90aWZpZWQgYWJvdXQgdGhlIGNvbXBsZXRpb24gd2hlbiBpdCBjYWxscyBwal9pb3F1ZXVlX3BvbGwoKS4gSWYgCisgKiBvcGVyYXRpb24gY29tcGxldGVzIGltbWVkaWF0ZWx5IGFuZCBkYXRhIGhhcyBiZWVuIHRyYW5zZmVyZWQsIHRoZSBmdW5jdGlvbgorICogcmV0dXJucyBQSl9TVUNDRVNTIGFuZCB0aGUgY2FsbGJhY2sgd2lsbCBOT1QgYmUgY2FsbGVkLgorICoKKyAqIEBwYXJhbSBrZXkJICAgIHRoZSBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBoYW5kbGUuCisgKiBAcGFyYW0gb3Bfa2V5ICAgIEFuIG9wZXJhdGlvbiBzcGVjaWZpYyBrZXkgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZQorICogICAgICAgICAgICAgICAgICBwZW5kaW5nIG9wZXJhdGlvbiwgc28gdGhhdCBhcHBsaWNhdGlvbiBjYW4ga2VlcCB0cmFjayBvZgorICogICAgICAgICAgICAgICAgICB3aGljaCBvcGVyYXRpb24gaGFzIGJlZW4gY29tcGxldGVkIHdoZW4gdGhlIGNhbGxiYWNrIGlzCisgKiAgICAgICAgICAgICAgICAgIGNhbGxlZC4KKyAqIEBwYXJhbSBkYXRhCSAgICB0aGUgZGF0YSB0byBzZW5kLiBDYWxsZXIgTVVTVCBtYWtlIHN1cmUgdGhhdCB0aGlzIGJ1ZmZlciAKKyAqCQkgICAgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgd3JpdGUgb3BlcmF0aW9uIGNvbXBsZXRlcy4KKyAqIEBwYXJhbSBsZW5ndGggICAgT24gaW5wdXQsIGl0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIGRhdGEgdG8gc2VuZC4gV2hlbgorICogICAgICAgICAgICAgICAgICBkYXRhIHdhcyBzZW50IGltbWVkaWF0ZWx5LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgUEpfU1VDQ0VTUworICogICAgICAgICAgICAgICAgICBhbmQgdGhpcyBwYXJhbWV0ZXIgY29udGFpbnMgdGhlIGxlbmd0aCBvZiBkYXRhIHNlbnQuIElmCisgKiAgICAgICAgICAgICAgICAgIGRhdGEgY2FuIG5vdCBiZSBzZW50IGltbWVkaWF0ZWx5LCBhbiBhc3luY2hyb25vdXMgb3BlcmF0aW9uCisgKiAgICAgICAgICAgICAgICAgIGlzIHNjaGVkdWxlZCBhbmQgY2FsbGVyIHdpbGwgYmUgbm90aWZpZWQgdmlhIGNhbGxiYWNrIHRoZQorICogICAgICAgICAgICAgICAgICBudW1iZXIgb2YgYnl0ZXMgc2VudC4gVGhpcyBwYXJhbWV0ZXIgY2FuIHBvaW50IHRvIGxvY2FsIAorICogICAgICAgICAgICAgICAgICB2YXJpYWJsZSBvbiBjYWxsZXIncyBzdGFjayBhbmQgZG9lc24ndCBoYXZlIHRvIHJlbWFpbiAKKyAqICAgICAgICAgICAgICAgICAgdmFsaWQgdW50aWwgdGhlIG9wZXJhdGlvbiBoYXMgY29tcGxldGVkLgorICogQHBhcmFtIGZsYWdzICAgICBzZW5kIGZsYWdzLiBJZiBmbGFncyBoYXMgUEpfSU9RVUVVRV9BTFdBWVNfQVNZTkMgdGhlbgorICoJCSAgICB0aGUgZnVuY3Rpb24gd2lsbCBuZXZlciByZXR1cm4gUEpfU1VDQ0VTUy4KKyAqIEBwYXJhbSBhZGRyICAgICAgT3B0aW9uYWwgcmVtb3RlIGFkZHJlc3MuCisgKiBAcGFyYW0gYWRkcmxlbiAgIFJlbW90ZSBhZGRyZXNzIGxlbmd0aCwgXGMgYWRkciBpcyBzcGVjaWZpZWQuCisgKgorICogQHJldHVybgorICogIC0gUEpfU1VDQ0VTUyAgICBJZiBkYXRhIHdhcyBpbW1lZGlhdGVseSB3cml0dGVuLgorICogIC0gUEpfRVBFTkRJTkcgICBJZiB0aGUgb3BlcmF0aW9uIGhhcyBiZWVuIHF1ZXVlZC4KKyAqICAtIG5vbi16ZXJvICAgICAgVGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2VuZHRvKCBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJCQljb25zdCB2b2lkICpkYXRhLAorCQkJCQlwal9zc2l6ZV90ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfdWludDMyX3QgZmxhZ3MsCisJCQkJCWNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJCWludCBhZGRybGVuKTsKKworCisvKioKKyAqICF9CisgKi8KKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpfSU9RVUVVRV9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9pcF9oZWxwZXIuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovaXBfaGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI0NDFkMwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovaXBfaGVscGVyLmgKQEAgLTAsMCArMSw5NyBAQAorLyogJElkOiBpcF9oZWxwZXIuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0lQX1JPVVRFX0hfXworI2RlZmluZSBfX1BKX0lQX1JPVVRFX0hfXworCisvKioKKyAqIEBmaWxlIGlwX2hlbHBlci5oCisgKiBAYnJpZWYgSVAgaGVscGVyIEFQSQorICovCisKKyNpbmNsdWRlIDxwai9zb2NrLmg+CisKK1BKX0JFR0lOX0RFQ0wKKworLyoqCisgKiBAZGVmZ3JvdXAgcGpfaXBfaGVscGVyIElQIEludGVyZmFjZSBhbmQgUm91dGluZyBIZWxwZXIKKyAqIEBpbmdyb3VwIFBKX0lPCisgKiBAeworICoKKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBxdWVyeSBsb2NhbCBob3N0J3MgSVAgaW50ZXJmYWNlIGFuZCAKKyAqIHJvdXRpbmcgdGFibGUuCisgKi8KKworLyoqCisgKiBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgSVAgcm91dGluZyBlbnRyeS4KKyAqLwordHlwZWRlZiB1bmlvbiBwal9pcF9yb3V0ZV9lbnRyeQoreworICAgIC8qKiBJUCByb3V0aW5nIGVudHJ5IGZvciBJUCB2ZXJzaW9uIDQgcm91dGluZyAqLworICAgIHN0cnVjdAorICAgIHsKKwlwal9pbl9hZGRyCWlmX2FkZHI7ICAgIC8qKjwgTG9jYWwgaW50ZXJmYWNlIElQIGFkZHJlc3MuCSovCisJcGpfaW5fYWRkcglkc3RfYWRkcjsgICAvKio8IERlc3RpbmF0aW9uIElQIGFkZHJlc3MuCSovCisJcGpfaW5fYWRkcgltYXNrOwkgICAgLyoqPCBEZXN0aW5hdGlvbiBtYXNrLgkJKi8KKyAgICB9IGlwdjQ7Cit9IHBqX2lwX3JvdXRlX2VudHJ5OworCisKKy8qKgorICogRW51bWVyYXRlIHRoZSBsb2NhbCBJUCBpbnRlcmZhY2VzIGN1cnJlbnRseSBhY3RpdmUgaW4gdGhlIGhvc3QuCisgKgorICogQHBhcmFtIGFmCSAgICBGYW1pbHkgb2YgdGhlIGFkZHJlc3MgdG8gYmUgcmV0cmlldmVkLiBBcHBsaWNhdGlvbgorICoJCSAgICBtYXkgc3BlY2lmeSBwal9BRl9VTlNQRUMoKSB0byByZXRyaWV2ZSBhbGwgYWRkcmVzc2VzLAorICoJCSAgICBvciBwal9BRl9JTkVUKCkgb3IgcGpfQUZfSU5FVDYoKSB0byByZXRyaWV2ZSBpbnRlcmZhY2VzCisgKgkJICAgIHdpdGggc3BlY2lmaWMgYWRkcmVzcyBmYW1pbHkuCisgKiBAcGFyYW0gY291bnQJICAgIE9uIGlucHV0LCBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgZW50cmllcy4gT24gb3V0cHV0LAorICoJCSAgICBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGVudHJpZXMuCisgKiBAcGFyYW0gaWZzCSAgICBBcnJheSBvZiBzb2NrZXQgYWRkcmVzc2VzLCB3aGljaCBhZGRyZXNzIHBhcnQgd2lsbAorICoJCSAgICBiZSBmaWxsZWQgd2l0aCB0aGUgaW50ZXJmYWNlIGFkZHJlc3MuIFRoZSBhZGRyZXNzCisgKgkJICAgIGZhbWlseSBwYXJ0IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgYWRkcmVzcworICoJCSAgICBmYW1pbHkgb2YgdGhlIElQIGFkZHJlc3MuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzLCBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZW51bV9pcF9pbnRlcmZhY2UoaW50IGFmLAorCQkJCQkgIHVuc2lnbmVkICpjb3VudCwKKwkJCQkJICBwal9zb2NrYWRkciBpZnNbXSk7CisKKworLyoqCisgKiBFbnVtZXJhdGUgdGhlIElQIHJvdXRpbmcgdGFibGUgZm9yIHRoaXMgaG9zdC4KKyAqCisgKiBAcGFyYW0gY291bnQJICAgIE9uIGlucHV0LCBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygcm91dGVzIGVudHJpZXMuIE9uIG91dHB1dCwKKyAqCQkgICAgaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCB0aGUgYWN0dWFsIG51bWJlciBvZiByb3V0ZSBlbnRyaWVzLgorICogQHBhcmFtIHJvdXRlcyAgICBBcnJheSBvZiBJUCByb3V0aW5nIGVudHJpZXMuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzLCBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZW51bV9pcF9yb3V0ZSh1bnNpZ25lZCAqY291bnQsCisJCQkJICAgICAgcGpfaXBfcm91dGVfZW50cnkgcm91dGVzW10pOworCisKKworLyoqIEB9ICovCisKK1BKX0VORF9ERUNMCisKKworI2VuZGlmCS8qIF9fUEpfSVBfUk9VVEVfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovbGlzdC5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9saXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGExM2RjYgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovbGlzdC5oCkBAIC0wLDAgKzEsMjczIEBACisvKiAkSWQ6IGxpc3QuaCA0NjI0IDIwMTMtMTAtMjEgMDY6Mzc6MzBaIG1pbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9MSVNUX0hfXworI2RlZmluZSBfX1BKX0xJU1RfSF9fCisKKy8qKgorICogQGZpbGUgbGlzdC5oCisgKiBAYnJpZWYgTGlua2VkIExpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKi8KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisKK1BKX0JFR0lOX0RFQ0wKKworLyoKKyAqIEBkZWZncm91cCBQSl9EUyBEYXRhIFN0cnVjdHVyZS4KKyAqLworCisvKioKKyAqIEBkZWZncm91cCBQSl9MSVNUIExpbmtlZCBMaXN0CisgKiBAaW5ncm91cCBQSl9EUworICogQHsKKyAqCisgKiBMaXN0IGluIFBKTElCIGlzIGltcGxlbWVudGVkIGFzIGRvdWJseS1saW5rZWQgbGlzdCwgYW5kIGl0IHdvbid0IHJlcXVpcmUKKyAqIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gKGp1c3QgYXMgYWxsIFBKTElCIGRhdGEgc3RydWN0dXJlcykuIFRoZSBsaXN0IGhlcmUKKyAqIHNob3VsZCBiZSB2aWV3ZWQgbW9yZSBsaWtlIGEgbG93IGxldmVsIEMgbGlzdCBpbnN0ZWFkIG9mIGhpZ2ggbGV2ZWwgQysrIGxpc3QKKyAqICh3aGljaCBub3JtYWxseSBhcmUgZWFzaWVyIHRvIHVzZSBidXQgcmVxdWlyZSBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9ucyksCisgKiB0aGVyZWZvcmUgYWxsIGNhdmVhdHMgd2l0aCBDIGxpc3QgYXBwbHkgaGVyZSB0b28gKHN1Y2ggYXMgeW91IGNhbiBOT1QgcHV0CisgKiBhIG5vZGUgaW4gbW9yZSB0aGFuIG9uZSBsaXN0cykuCisgKgorICogXHNlY3Rpb24gcGpfbGlzdF9leGFtcGxlX3NlYyBFeGFtcGxlcworICoKKyAqIFNlZSBiZWxvdyBmb3IgZXhhbXBsZXMgb24gaG93IHRvIG1hbmlwdWxhdGUgbGlua2VkIGxpc3Q6CisgKiAgLSBAcmVmIHBhZ2VfcGpsaWJfc2FtcGxlc19saXN0X2MKKyAqICAtIEByZWYgcGFnZV9wamxpYl9saXN0X3Rlc3QKKyAqLworCisKKy8qKgorICogVXNlIHRoaXMgbWFjcm8gaW4gdGhlIHN0YXJ0IG9mIHRoZSBzdHJ1Y3R1cmUgZGVjbGFyYXRpb24gdG8gZGVjbGFyZSB0aGF0CisgKiB0aGUgc3RydWN0dXJlIGNhbiBiZSB1c2VkIGluIHRoZSBsaW5rZWQgbGlzdCBvcGVyYXRpb24uIFRoaXMgbWFjcm8gc2ltcGx5CisgKiBkZWNsYXJlcyBhZGRpdGlvbmFsIG1lbWJlciBAYSBwcmV2IGFuZCBAYSBuZXh0IHRvIHRoZSBzdHJ1Y3R1cmUuCisgKiBAaGlkZWluaXRpYWxpemVyCisgKi8KKyNkZWZpbmUgUEpfREVDTF9MSVNUX01FTUJFUih0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogTGlzdCBAYSBwcmV2LiAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKnByZXY7ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIExpc3QgQGEgbmV4dC4gKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICpuZXh0IAorCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGdlbmVyaWMgbGlzdCBub2RlIGFuZCBsaXN0LiBUaGUgb3duZXIgb2YgdGhpcyBsaXN0CisgKiBtdXN0IGluaXRpYWxpemUgdGhlICd2YWx1ZScgbWVtYmVyIHRvIGFuIGFwcHJvcHJpYXRlIHZhbHVlICh0eXBpY2FsbHkgdGhlCisgKiBvd25lciBpdHNlbGYpLgorICovCitzdHJ1Y3QgcGpfbGlzdAoreworICAgIFBKX0RFQ0xfTElTVF9NRU1CRVIodm9pZCk7Cit9IFBKX0FUVFJfTUFZX0FMSUFTOyAvKiBtYXlfYWxpYXMgYXZvaWRzIHdhcm5pbmcgd2l0aCBnY2MtNC40IC1XYWxsIC1PMiAqLworCisKKy8qKgorICogSW5pdGlhbGl6ZSB0aGUgbGlzdC4KKyAqIEluaXRpYWxseSwgdGhlIGxpc3Qgd2lsbCBoYXZlIG5vIG1lbWJlciwgYW5kIGZ1bmN0aW9uIHBqX2xpc3RfZW1wdHkoKSB3aWxsCisgKiBhbHdheXMgcmV0dXJuIG5vbnplcm8gKHdoaWNoIGluZGljYXRlcyBUUlVFKSBmb3IgdGhlIG5ld2x5IGluaXRpYWxpemVkIAorICogbGlzdC4KKyAqCisgKiBAcGFyYW0gbm9kZSBUaGUgbGlzdCBoZWFkLgorICovCitQSl9JTkxJTkUodm9pZCkgcGpfbGlzdF9pbml0KHBqX2xpc3RfdHlwZSAqIG5vZGUpCit7CisgICAgKChwal9saXN0Kilub2RlKS0+bmV4dCA9ICgocGpfbGlzdCopbm9kZSktPnByZXYgPSBub2RlOworfQorCisKKy8qKgorICogQ2hlY2sgdGhhdCB0aGUgbGlzdCBpcyBlbXB0eS4KKyAqCisgKiBAcGFyYW0gbm9kZQlUaGUgbGlzdCBoZWFkLgorICoKKyAqIEByZXR1cm4gTm9uLXplcm8gaWYgdGhlIGxpc3QgaXMgZW1wdHksIG9yIHplcm8gaWYgaXQgaXMgbm90IGVtcHR5LgorICoKKyAqLworUEpfSU5MSU5FKGludCkgcGpfbGlzdF9lbXB0eShjb25zdCBwal9saXN0X3R5cGUgKiBub2RlKQoreworICAgIHJldHVybiAoKHBqX2xpc3QqKW5vZGUpLT5uZXh0ID09IG5vZGU7Cit9CisKKworLyoqCisgKiBJbnNlcnQgdGhlIG5vZGUgdG8gdGhlIGxpc3QgYmVmb3JlIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBwb3NpdGlvbi4KKyAqCisgKiBAcGFyYW0gcG9zCVRoZSBlbGVtZW50IHRvIHdoaWNoIHRoZSBub2RlIHdpbGwgYmUgaW5zZXJ0ZWQgYmVmb3JlLiAKKyAqIEBwYXJhbSBub2RlCVRoZSBlbGVtZW50IHRvIGJlIGluc2VydGVkLgorICoKKyAqIEByZXR1cm4gdm9pZC4KKyAqLworUEpfSURFQ0wodm9pZCkJcGpfbGlzdF9pbnNlcnRfYmVmb3JlKHBqX2xpc3RfdHlwZSAqcG9zLCBwal9saXN0X3R5cGUgKm5vZGUpOworCisKKy8qKgorICogSW5zZXJ0IHRoZSBub2RlIHRvIHRoZSBiYWNrIG9mIHRoZSBsaXN0LiBUaGlzIGlzIGp1c3QgYW4gYWxpYXMgZm9yCisgKiAjcGpfbGlzdF9pbnNlcnRfYmVmb3JlKCkuCisgKgorICogQHBhcmFtIGxpc3QJVGhlIGxpc3QuIAorICogQHBhcmFtIG5vZGUJVGhlIGVsZW1lbnQgdG8gYmUgaW5zZXJ0ZWQuCisgKi8KK1BKX0lOTElORSh2b2lkKSBwal9saXN0X3B1c2hfYmFjayhwal9saXN0X3R5cGUgKmxpc3QsIHBqX2xpc3RfdHlwZSAqbm9kZSkKK3sKKyAgICBwal9saXN0X2luc2VydF9iZWZvcmUobGlzdCwgbm9kZSk7Cit9CisKKworLyoqCisgKiBJbnNlcnRzIGFsbCBub2RlcyBpbiBcYSBub2RlcyB0byB0aGUgdGFyZ2V0IGxpc3QuCisgKgorICogQHBhcmFtIGxzdAkgICAgVGhlIHRhcmdldCBsaXN0LgorICogQHBhcmFtIG5vZGVzCSAgICBOb2RlcyBsaXN0LgorICovCitQSl9JREVDTCh2b2lkKSBwal9saXN0X2luc2VydF9ub2Rlc19iZWZvcmUocGpfbGlzdF90eXBlICpsc3QsCisJCQkJCSAgIHBqX2xpc3RfdHlwZSAqbm9kZXMpOworCisvKioKKyAqIEluc2VydCBhIG5vZGUgdG8gdGhlIGxpc3QgYWZ0ZXIgdGhlIHNwZWNpZmllZCBlbGVtZW50IHBvc2l0aW9uLgorICoKKyAqIEBwYXJhbSBwb3MJICAgIFRoZSBlbGVtZW50IGluIHRoZSBsaXN0IHdoaWNoIHdpbGwgcHJlY2VkZSB0aGUgaW5zZXJ0ZWQgCisgKgkJICAgIGVsZW1lbnQuCisgKiBAcGFyYW0gbm9kZQkgICAgVGhlIGVsZW1lbnQgdG8gYmUgaW5zZXJ0ZWQgYWZ0ZXIgdGhlIHBvc2l0aW9uIGVsZW1lbnQuCisgKgorICogQHJldHVybiB2b2lkLgorICovCitQSl9JREVDTCh2b2lkKSBwal9saXN0X2luc2VydF9hZnRlcihwal9saXN0X3R5cGUgKnBvcywgcGpfbGlzdF90eXBlICpub2RlKTsKKworCisvKioKKyAqIEluc2VydCB0aGUgbm9kZSB0byB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuIFRoaXMgaXMganVzdCBhbiBhbGlhcyBmb3IKKyAqICNwal9saXN0X2luc2VydF9hZnRlcigpLgorICoKKyAqIEBwYXJhbSBsaXN0CVRoZSBsaXN0LiAKKyAqIEBwYXJhbSBub2RlCVRoZSBlbGVtZW50IHRvIGJlIGluc2VydGVkLgorICovCitQSl9JTkxJTkUodm9pZCkgcGpfbGlzdF9wdXNoX2Zyb250KHBqX2xpc3RfdHlwZSAqbGlzdCwgcGpfbGlzdF90eXBlICpub2RlKQoreworICAgIHBqX2xpc3RfaW5zZXJ0X2FmdGVyKGxpc3QsIG5vZGUpOworfQorCisKKy8qKgorICogSW5zZXJ0IGFsbCBub2RlcyBpbiBcYSBub2RlcyB0byB0aGUgdGFyZ2V0IGxpc3QuCisgKgorICogQHBhcmFtIGxzdAkgICAgVGhlIHRhcmdldCBsaXN0LgorICogQHBhcmFtIG5vZGVzCSAgICBOb2RlcyBsaXN0LgorICovCitQSl9JREVDTCh2b2lkKSBwal9saXN0X2luc2VydF9ub2Rlc19hZnRlcihwal9saXN0X3R5cGUgKmxzdCwKKwkJCQkJICBwal9saXN0X3R5cGUgKm5vZGVzKTsKKworCisvKioKKyAqIFJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBzb3VyY2UgbGlzdCwgYW5kIGluc2VydCB0aGVtIHRvIHRoZSBkZXN0aW5hdGlvbgorICogbGlzdC4gVGhlIGVsZW1lbnRzIG9mIHRoZSBzb3VyY2UgbGlzdCB3aWxsIG9jY3VweSB0aGUKKyAqIGZyb250IGVsZW1lbnRzIG9mIHRoZSB0YXJnZXQgbGlzdC4gTm90ZSB0aGF0IHRoZSBub2RlIHBvaW50ZWQgYnkgXGEgbGlzdDIKKyAqIGl0c2VsZiBpcyBub3QgY29uc2lkZXJlZCBhcyBhIG5vZGUsIGJ1dCByYXRoZXIgYXMgdGhlIGxpc3QgZGVzY3JpcHRvciwgc28KKyAqIGl0IHdpbGwgbm90IGJlIGluc2VydGVkIHRvIHRoZSBcYSBsaXN0MS4gVGhlIGVsZW1lbnRzIHRvIGJlIGluc2VydGVkIHN0YXJ0cworICogYXQgXGEgbGlzdDItPm5leHQuIElmIFxhIGxpc3QyIGlzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBvcGVyYXRpb24sIHVzZQorICogXGEgcGpfbGlzdF9pbnNlcnRfbm9kZXNfYmVmb3JlLgorICoKKyAqIEBwYXJhbSBsaXN0MQlUaGUgZGVzdGluYXRpb24gbGlzdC4KKyAqIEBwYXJhbSBsaXN0MglUaGUgc291cmNlIGxpc3QuCisgKgorICogQHJldHVybiB2b2lkLgorICovCitQSl9JREVDTCh2b2lkKSBwal9saXN0X21lcmdlX2ZpcnN0KHBqX2xpc3RfdHlwZSAqbGlzdDEsIHBqX2xpc3RfdHlwZSAqbGlzdDIpOworCisKKy8qKgorICogUmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIHNlY29uZCBsaXN0IGFyZ3VtZW50LCBhbmQgaW5zZXJ0IHRoZW0gdG8gdGhlIGxpc3QgCisgKiBpbiB0aGUgZmlyc3QgYXJndW1lbnQuIFRoZSBlbGVtZW50cyBmcm9tIHRoZSBzZWNvbmQgbGlzdCB3aWxsIGJlIGFwcGVuZGVkCisgKiB0byB0aGUgZmlyc3QgbGlzdC4gTm90ZSB0aGF0IHRoZSBub2RlIHBvaW50ZWQgYnkgXGEgbGlzdDIKKyAqIGl0c2VsZiBpcyBub3QgY29uc2lkZXJlZCBhcyBhIG5vZGUsIGJ1dCByYXRoZXIgYXMgdGhlIGxpc3QgZGVzY3JpcHRvciwgc28KKyAqIGl0IHdpbGwgbm90IGJlIGluc2VydGVkIHRvIHRoZSBcYSBsaXN0MS4gVGhlIGVsZW1lbnRzIHRvIGJlIGluc2VydGVkIHN0YXJ0cworICogYXQgXGEgbGlzdDItPm5leHQuIElmIFxhIGxpc3QyIGlzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBvcGVyYXRpb24sIHVzZQorICogXGEgcGpfbGlzdF9pbnNlcnRfbm9kZXNfYmVmb3JlLgorICoKKyAqIEBwYXJhbSBsaXN0MQkgICAgVGhlIGVsZW1lbnQgaW4gdGhlIGxpc3Qgd2hpY2ggd2lsbCBwcmVjZWRlIHRoZSBpbnNlcnRlZCAKKyAqCQkgICAgZWxlbWVudC4KKyAqIEBwYXJhbSBsaXN0MgkgICAgVGhlIGVsZW1lbnQgaW4gdGhlIGxpc3QgdG8gYmUgaW5zZXJ0ZWQuCisgKgorICogQHJldHVybiB2b2lkLgorICovCitQSl9JREVDTCh2b2lkKSBwal9saXN0X21lcmdlX2xhc3QoIHBqX2xpc3RfdHlwZSAqbGlzdDEsIHBqX2xpc3RfdHlwZSAqbGlzdDIpOworCisKKy8qKgorICogRXJhc2UgdGhlIG5vZGUgZnJvbSB0aGUgbGlzdCBpdCBjdXJyZW50bHkgYmVsb25ncy4KKyAqCisgKiBAcGFyYW0gbm9kZQkgICAgVGhlIGVsZW1lbnQgdG8gYmUgZXJhc2VkLgorICovCitQSl9JREVDTCh2b2lkKSBwal9saXN0X2VyYXNlKHBqX2xpc3RfdHlwZSAqbm9kZSk7CisKKworLyoqCisgKiBGaW5kIG5vZGUgaW4gdGhlIGxpc3QuCisgKgorICogQHBhcmFtIGxpc3QJICAgIFRoZSBsaXN0IGhlYWQuCisgKiBAcGFyYW0gbm9kZQkgICAgVGhlIG5vZGUgZWxlbWVudCB0byBiZSBzZWFyY2hlZC4KKyAqCisgKiBAcmV0dXJuIFRoZSBub2RlIGl0c2VsZiBpZiBpdCBpcyBmb3VuZCBpbiB0aGUgbGlzdCwgb3IgTlVMTCBpZiBpdCBpcyBub3QgCisgKiAgICAgICAgIGZvdW5kIGluIHRoZSBsaXN0LgorICovCitQSl9JREVDTChwal9saXN0X3R5cGUqKSBwal9saXN0X2ZpbmRfbm9kZShwal9saXN0X3R5cGUgKmxpc3QsIAorCQkJCQkgIHBqX2xpc3RfdHlwZSAqbm9kZSk7CisKKworLyoqCisgKiBTZWFyY2ggdGhlIGxpc3QgZm9yIHRoZSBzcGVjaWZpZWQgdmFsdWUsIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29tcGFyaXNvbgorICogZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXRlcmF0ZXMgb24gbm9kZXMgaW4gdGhlIGxpc3QsIHN0YXJ0ZWQgd2l0aCB0aGUKKyAqIGZpcnN0IG5vZGUsIGFuZCBjYWxsIHRoZSB1c2VyIHN1cHBsaWVkIGNvbXBhcmlzb24gZnVuY3Rpb24gdW50aWwgdGhlCisgKiBjb21wYXJpc29uIGZ1bmN0aW9uIHJldHVybnMgWkVSTy4KKyAqCisgKiBAcGFyYW0gbGlzdAkgICAgVGhlIGxpc3QgaGVhZC4KKyAqIEBwYXJhbSB2YWx1ZQkgICAgVGhlIHVzZXIgZGVmaW5lZCB2YWx1ZSB0byBiZSBwYXNzZWQgaW4gdGhlIGNvbXBhcmlzb24gCisgKgkJICAgIGZ1bmN0aW9uCisgKiBAcGFyYW0gY29tcAkgICAgVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24sIHdoaWNoIHNob3VsZCByZXR1cm4gWkVSTyB0byAKKyAqCQkgICAgaW5kaWNhdGUgdGhhdCB0aGUgc2VhcmNoZWQgdmFsdWUgaXMgZm91bmQuCisgKgorICogQHJldHVybiBUaGUgZmlyc3Qgbm9kZSB0aGF0IG1hdGNoZWQsIG9yIE5VTEwgaWYgaXQgaXMgbm90IGZvdW5kLgorICovCitQSl9JREVDTChwal9saXN0X3R5cGUqKSBwal9saXN0X3NlYXJjaChwal9saXN0X3R5cGUgKmxpc3QsIHZvaWQgKnZhbHVlLAorCQkJCSAgICAgICBpbnQgKCpjb21wKSh2b2lkICp2YWx1ZSwgCisJCQkJCQkgICBjb25zdCBwal9saXN0X3R5cGUgKm5vZGUpCisJCQkJICAgICAgICk7CisKKworLyoqCisgKiBUcmF2ZXJzZSB0aGUgbGlzdCB0byBnZXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbGlzdC4KKyAqCisgKiBAcGFyYW0gbGlzdAkgICAgVGhlIGxpc3QgaGVhZC4KKyAqCisgKiBAcmV0dXJuCSAgICBOdW1iZXIgb2YgZWxlbWVudHMuCisgKi8KK1BKX0lERUNMKHBqX3NpemVfdCkgcGpfbGlzdF9zaXplKGNvbnN0IHBqX2xpc3RfdHlwZSAqbGlzdCk7CisKKworLyoqCisgKiBAfQorICovCisKKyNpZiBQSl9GVU5DVElPTlNfQVJFX0lOTElORUQKKyMgIGluY2x1ZGUgImxpc3RfaS5oIgorI2VuZGlmCisKK1BKX0VORF9ERUNMCisKKyNlbmRpZgkvKiBfX1BKX0xJU1RfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovbGlzdF9pLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2xpc3RfaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZThkYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2xpc3RfaS5oCkBAIC0wLDAgKzEsMTIxIEBACisvKiAkSWQ6IGxpc3RfaS5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisKKworLyogSW50ZXJuYWwgKi8KK1BKX0lOTElORSh2b2lkKSBwal9saW5rX25vZGUocGpfbGlzdF90eXBlICpwcmV2LCBwal9saXN0X3R5cGUgKm5leHQpCit7CisgICAgKChwal9saXN0KilwcmV2KS0+bmV4dCA9IG5leHQ7CisgICAgKChwal9saXN0KiluZXh0KS0+cHJldiA9IHByZXY7Cit9CisKK1BKX0lERUYodm9pZCkgcGpfbGlzdF9pbnNlcnRfYWZ0ZXIocGpfbGlzdF90eXBlICpwb3MsIHBqX2xpc3RfdHlwZSAqbm9kZSkKK3sKKyAgICAoKHBqX2xpc3QqKW5vZGUpLT5wcmV2ID0gcG9zOworICAgICgocGpfbGlzdCopbm9kZSktPm5leHQgPSAoKHBqX2xpc3QqKXBvcyktPm5leHQ7CisgICAgKChwal9saXN0KikgKChwal9saXN0Kilwb3MpLT5uZXh0KSAtPnByZXYgPSBub2RlOworICAgICgocGpfbGlzdCopcG9zKS0+bmV4dCA9IG5vZGU7Cit9CisKKworUEpfSURFRih2b2lkKSBwal9saXN0X2luc2VydF9iZWZvcmUocGpfbGlzdF90eXBlICpwb3MsIHBqX2xpc3RfdHlwZSAqbm9kZSkKK3sKKyAgICBwal9saXN0X2luc2VydF9hZnRlcigoKHBqX2xpc3QqKXBvcyktPnByZXYsIG5vZGUpOworfQorCisKK1BKX0lERUYodm9pZCkgcGpfbGlzdF9pbnNlcnRfbm9kZXNfYWZ0ZXIocGpfbGlzdF90eXBlICpwb3MsIHBqX2xpc3RfdHlwZSAqbHN0KQoreworICAgIHBqX2xpc3QgKmxzdF9sYXN0ID0gKHBqX2xpc3QgKikgKChwal9saXN0Kilsc3QpLT5wcmV2OworICAgIHBqX2xpc3QgKnBvc19uZXh0ID0gKHBqX2xpc3QgKikgKChwal9saXN0Kilwb3MpLT5uZXh0OworCisgICAgcGpfbGlua19ub2RlKHBvcywgbHN0KTsKKyAgICBwal9saW5rX25vZGUobHN0X2xhc3QsIHBvc19uZXh0KTsKK30KKworUEpfSURFRih2b2lkKSBwal9saXN0X2luc2VydF9ub2Rlc19iZWZvcmUocGpfbGlzdF90eXBlICpwb3MsIHBqX2xpc3RfdHlwZSAqbHN0KQoreworICAgIHBqX2xpc3RfaW5zZXJ0X25vZGVzX2FmdGVyKCgocGpfbGlzdCopcG9zKS0+cHJldiwgbHN0KTsKK30KKworUEpfSURFRih2b2lkKSBwal9saXN0X21lcmdlX2xhc3QocGpfbGlzdF90eXBlICpsc3QxLCBwal9saXN0X3R5cGUgKmxzdDIpCit7CisgICAgaWYgKCFwal9saXN0X2VtcHR5KGxzdDIpKSB7CisJcGpfbGlua19ub2RlKCgocGpfbGlzdCopbHN0MSktPnByZXYsICgocGpfbGlzdCopbHN0MiktPm5leHQpOworCXBqX2xpbmtfbm9kZSgoKHBqX2xpc3QqKWxzdDIpLT5wcmV2LCBsc3QxKTsKKwlwal9saXN0X2luaXQobHN0Mik7CisgICAgfQorfQorCitQSl9JREVGKHZvaWQpIHBqX2xpc3RfbWVyZ2VfZmlyc3QocGpfbGlzdF90eXBlICpsc3QxLCBwal9saXN0X3R5cGUgKmxzdDIpCit7CisgICAgaWYgKCFwal9saXN0X2VtcHR5KGxzdDIpKSB7CisJcGpfbGlua19ub2RlKCgocGpfbGlzdCopbHN0MiktPnByZXYsICgocGpfbGlzdCopbHN0MSktPm5leHQpOworCXBqX2xpbmtfbm9kZSgoKHBqX2xpc3QqKWxzdDEpLCAoKHBqX2xpc3QqKWxzdDIpLT5uZXh0KTsKKwlwal9saXN0X2luaXQobHN0Mik7CisgICAgfQorfQorCitQSl9JREVGKHZvaWQpIHBqX2xpc3RfZXJhc2UocGpfbGlzdF90eXBlICpub2RlKQoreworICAgIHBqX2xpbmtfbm9kZSggKChwal9saXN0Kilub2RlKS0+cHJldiwgKChwal9saXN0Kilub2RlKS0+bmV4dCk7CisKKyAgICAvKiBJdCdsbCBiZSBzYWZlciB0byBpbml0IHRoZSBuZXh0L3ByZXYgZmllbGRzIHRvIGl0c2VsZiwgdG8KKyAgICAgKiBwcmV2ZW50IG11bHRpcGxlIGVyYXNlKCkgZnJvbSBjb3JydXB0aW5nIHRoZSBsaXN0LiBTZWUKKyAgICAgKiB0aWNrZXQgIzUyMCBmb3Igb25lIHNhbXBsZSBidWcuCisgICAgICovCisgICAgcGpfbGlzdF9pbml0KG5vZGUpOworfQorCisKK1BKX0lERUYocGpfbGlzdF90eXBlKikgcGpfbGlzdF9maW5kX25vZGUocGpfbGlzdF90eXBlICpsaXN0LCBwal9saXN0X3R5cGUgKm5vZGUpCit7CisgICAgcGpfbGlzdCAqcCA9IChwal9saXN0ICopICgocGpfbGlzdCopbGlzdCktPm5leHQ7CisgICAgd2hpbGUgKHAgIT0gbGlzdCAmJiBwICE9IG5vZGUpCisJcCA9IChwal9saXN0ICopIHAtPm5leHQ7CisKKyAgICByZXR1cm4gcD09bm9kZSA/IHAgOiBOVUxMOworfQorCisKK1BKX0lERUYocGpfbGlzdF90eXBlKikgcGpfbGlzdF9zZWFyY2gocGpfbGlzdF90eXBlICpsaXN0LCB2b2lkICp2YWx1ZSwKKwkgICAgICAgCQlpbnQgKCpjb21wKSh2b2lkICp2YWx1ZSwgY29uc3QgcGpfbGlzdF90eXBlICpub2RlKSkKK3sKKyAgICBwal9saXN0ICpwID0gKHBqX2xpc3QgKikgKChwal9saXN0KilsaXN0KS0+bmV4dDsKKyAgICB3aGlsZSAocCAhPSBsaXN0ICYmICgqY29tcCkodmFsdWUsIHApICE9IDApCisJcCA9IChwal9saXN0ICopIHAtPm5leHQ7CisKKyAgICByZXR1cm4gcD09bGlzdCA/IE5VTEwgOiBwOworfQorCisKK1BKX0lERUYocGpfc2l6ZV90KSBwal9saXN0X3NpemUoY29uc3QgcGpfbGlzdF90eXBlICpsaXN0KQoreworICAgIGNvbnN0IHBqX2xpc3QgKm5vZGUgPSAoY29uc3QgcGpfbGlzdCopICgoY29uc3QgcGpfbGlzdCopbGlzdCktPm5leHQ7CisgICAgcGpfc2l6ZV90IGNvdW50ID0gMDsKKworICAgIHdoaWxlIChub2RlICE9IGxpc3QpIHsKKwkrK2NvdW50OworCW5vZGUgPSAocGpfbGlzdCopbm9kZS0+bmV4dDsKKyAgICB9CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovbG9jay5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9sb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTliMjZjNwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovbG9jay5oCkBAIC0wLDAgKzEsNDA2IEBACisvKiAkSWQ6IGxvY2suaCA0MzU5IDIwMTMtMDItMjEgMTE6MTg6MzZaIGJlbm55bHAgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9MT0NLX0hfXworI2RlZmluZSBfX1BKX0xPQ0tfSF9fCisKKy8qKgorICogQGZpbGUgbG9jay5oCisgKiBAYnJpZWYgSGlnaGVyIGFic3RyYWN0aW9uIGZvciBsb2NraW5nIG9iamVjdHMuCisgKi8KKyNpbmNsdWRlIDxwai90eXBlcy5oPgorCitQSl9CRUdJTl9ERUNMCisKKy8qKgorICogQGRlZmdyb3VwIFBKX0xPQ0sgTG9jayBPYmplY3RzCisgKiBAaW5ncm91cCBQSl9PUworICogQHsKKyAqCisgKiA8Yj5Mb2NrIE9iamVjdHM8L2I+IGFyZSBoaWdoZXIgYWJzdHJhY3Rpb24gZm9yIGRpZmZlcmVudCBsb2NrIG1lY2hhbmlzbXMuCisgKiBJdCBvZmZlcnMgdGhlIHNhbWUgQVBJIGZvciBtYW5pcHVsYXRpbmcgZGlmZmVyZW50IGxvY2sgdHlwZXMgKGUuZy4KKyAqIEByZWYgUEpfTVVURVggIm11dGV4IiwgQHJlZiBQSl9TRU0gInNlbWFwaG9yZXMiLCBvciBudWxsIGxvY2tzKS4KKyAqIEJlY2F1c2UgTG9jayBPYmplY3RzIGhhdmUgdGhlIHNhbWUgQVBJIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgbG9jaworICogaW1wbGVtZW50YXRpb24sIGl0IGNhbiBiZSBwYXNzZWQgYXJvdW5kIGluIGZ1bmN0aW9uIGFyZ3VtZW50cy4gQXMgdGhlCisgKiByZXN1bHQsIGl0IGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgbG9ja2luZyBwb2xpY3kgZm9yICBhIHBhcnRpY3VsYXIKKyAqIGZlYXR1cmUuCisgKi8KKworCisvKioKKyAqIENyZWF0ZSBzaW1wbGUsIG5vbiByZWN1cnNpdmUgbXV0ZXggbG9jayBvYmplY3QuCisgKgorICogQHBhcmFtIHBvb2wJICAgIE1lbW9yeSBwb29sLgorICogQHBhcmFtIG5hbWUJICAgIExvY2sgb2JqZWN0J3MgbmFtZS4KKyAqIEBwYXJhbSBsb2NrCSAgICBQb2ludGVyIHRvIHN0b3JlIHRoZSByZXR1cm5lZCBoYW5kbGUuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfbG9ja19jcmVhdGVfc2ltcGxlX211dGV4KCBwal9wb29sX3QgKnBvb2wsCisJCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCQkgIHBqX2xvY2tfdCAqKmxvY2sgKTsKKworLyoqCisgKiBDcmVhdGUgcmVjdXJzaXZlIG11dGV4IGxvY2sgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBwb29sCSAgICBNZW1vcnkgcG9vbC4KKyAqIEBwYXJhbSBuYW1lCSAgICBMb2NrIG9iamVjdCdzIG5hbWUuCisgKiBAcGFyYW0gbG9jawkgICAgUG9pbnRlciB0byBzdG9yZSB0aGUgcmV0dXJuZWQgaGFuZGxlLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2xvY2tfY3JlYXRlX3JlY3Vyc2l2ZV9tdXRleCggcGpfcG9vbF90ICpwb29sLAorCQkJCQkJICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJCQkJICAgICBwal9sb2NrX3QgKipsb2NrICk7CisKKworLyoqCisgKiBDcmVhdGUgTlVMTCBtdXRleC4gQSBOVUxMIG11dGV4IGRvZXNuJ3QgYWN0dWFsbHkgaGF2ZSBhbnkgc3luY2hyb25pemF0aW9uCisgKiBvYmplY3QgYXR0YWNoZWQgdG8gaXQuCisgKgorICogQHBhcmFtIHBvb2wJICAgIE1lbW9yeSBwb29sLgorICogQHBhcmFtIG5hbWUJICAgIExvY2sgb2JqZWN0J3MgbmFtZS4KKyAqIEBwYXJhbSBsb2NrCSAgICBQb2ludGVyIHRvIHN0b3JlIHRoZSByZXR1cm5lZCBoYW5kbGUuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfbG9ja19jcmVhdGVfbnVsbF9tdXRleCggcGpfcG9vbF90ICpwb29sLAorCQkJCQkJY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCXBqX2xvY2tfdCAqKmxvY2sgKTsKKworCisjaWYgZGVmaW5lZChQSl9IQVNfU0VNQVBIT1JFKSAmJiBQSl9IQVNfU0VNQVBIT1JFICE9IDAKKy8qKgorICogQ3JlYXRlIHNlbWFwaG9yZSBsb2NrIG9iamVjdC4KKyAqCisgKiBAcGFyYW0gcG9vbAkgICAgTWVtb3J5IHBvb2wuCisgKiBAcGFyYW0gbmFtZQkgICAgTG9jayBvYmplY3QncyBuYW1lLgorICogQHBhcmFtIGluaXRpYWwgICBJbml0aWFsIHZhbHVlIG9mIHRoZSBzZW1hcGhvcmUuCisgKiBAcGFyYW0gbWF4CSAgICBNYXhpbXVtIHZhbHVlIG9mIHRoZSBzZW1hcGhvcmUuCisgKiBAcGFyYW0gbG9jawkgICAgUG9pbnRlciB0byBzdG9yZSB0aGUgcmV0dXJuZWQgaGFuZGxlLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2xvY2tfY3JlYXRlX3NlbWFwaG9yZSggcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJICAgICAgIHVuc2lnbmVkIGluaXRpYWwsCisJCQkJCSAgICAgICB1bnNpZ25lZCBtYXgsCisJCQkJCSAgICAgICBwal9sb2NrX3QgKipsb2NrICk7CisKKyNlbmRpZgkvKiBQSl9IQVNfU0VNQVBIT1JFICovCisKKy8qKgorICogQWNxdWlyZSBsb2NrIG9uIHRoZSBzcGVjaWZpZWQgbG9jayBvYmplY3QuCisgKgorICogQHBhcmFtIGxvY2sJICAgIFRoZSBsb2NrIG9iamVjdC4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9sb2NrX2FjcXVpcmUoIHBqX2xvY2tfdCAqbG9jayApOworCisKKy8qKgorICogVHJ5IHRvIGFjcXVpcmUgbG9jayBvbiB0aGUgc3BlY2lmaWVkIGxvY2sgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBsb2NrCSAgICBUaGUgbG9jayBvYmplY3QuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfbG9ja190cnlhY3F1aXJlKCBwal9sb2NrX3QgKmxvY2sgKTsKKworCisvKioKKyAqIFJlbGVhc2UgbG9jayBvbiB0aGUgc3BlY2lmaWVkIGxvY2sgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBsb2NrCSAgICBUaGUgbG9jayBvYmplY3QuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfbG9ja19yZWxlYXNlKCBwal9sb2NrX3QgKmxvY2sgKTsKKworCisvKioKKyAqIERlc3Ryb3kgdGhlIGxvY2sgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBsb2NrCSAgICBUaGUgbG9jayBvYmplY3QuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfbG9ja19kZXN0cm95KCBwal9sb2NrX3QgKmxvY2sgKTsKKworCisvKiogQH0gKi8KKworCisvKioKKyAqIEBkZWZncm91cCBQSl9HUlBfTE9DSyBHcm91cCBMb2NrCisgKiBAaW5ncm91cCBQSl9MT0NLCisgKiBAeworICoKKyAqIEdyb3VwIGxvY2sgaXMgYSBzeW5jaHJvbml6YXRpb24gb2JqZWN0IHRvIG1hbmFnZSBjb25jdXJyZW5jeSBhbW9uZyBtZW1iZXJzCisgKiB3aXRoaW4gdGhlIHNhbWUgbG9naWNhbCBncm91cC4gRXhhbXBsZSBvZiBzdWNoIGdyb3VwcyBhcmU6CisgKgorICogICAtIGRpYWxvZywgd2hpY2ggaGFzIG1lbWJlcnMgc3VjaCBhcyB0aGUgZGlhbG9nIGl0c2VsZiwgYW4gaW52aXRlIHNlc3Npb24sCisgKiAgICAgYW5kIHNldmVyYWwgdHJhbnNhY3Rpb25zCisgKiAgIC0gSUNFLCB3aGljaCBoYXMgbWVtYmVycyBzdWNoIGFzIElDRSBzdHJlYW0gdHJhbnNwb3J0LCBJQ0Ugc2Vzc2lvbiwgU1RVTgorICogICAgIHNvY2tldCwgVFVSTiBzb2NrZXQsIGFuZCBkb3duIHRvIGlvcXVldWUga2V5CisgKgorICogR3JvdXAgbG9jayBoYXMgdGhyZWUgZnVuY3Rpb25zOgorICoKKyAqICAgLSBtdXR1YWwgZXhjbHVzaW9uOiB0byBwcm90ZWN0IHJlc291cmNlcyBmcm9tIGJlaW5nIGFjY2Vzc2VkIGJ5IG1vcmUgdGhhbgorICogICAgIG9uZSB0aHJlYWRzIGF0IHRoZSBzYW1lIHRpbWUKKyAqICAgLSBzZXNzaW9uIG1hbmFnZW1lbnQ6IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZXNvdXJjZSBpcyBub3QgZGVzdHJveWVkCisgKiAgICAgd2hpbGUgb3RoZXJzIGFyZSBzdGlsbCB1c2luZyBvciBhYm91dCB0byB1c2UgaXQuCisgKiAgIC0gbG9jayBjb29yZGluYXRvcjogdG8gcHJvdmlkZSB1bmlmb3JtIGxvY2sgb3JkZXJpbmcgYW1vbmcgbW9yZSB0aGFuIG9uZQorICogICAgIGxvY2sgb2JqZWN0cywgd2hpY2ggaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGRlYWRsb2NrLgorICoKKyAqIFRoZSByZXF1aXJlbWVudHMgb2YgdGhlIGdyb3VwIGxvY2sgYXJlOgorICoKKyAqICAgIC0gbXVzdCBzYXRpc2Z5IGFsbCB0aGUgZnVuY3Rpb25zIGFib3ZlCisgKiAgICAtIG11c3QgYWxsb3cgbWVtYmVycyB0byBqb2luIG9yIGxlYXZlIHRoZSBncm91cCAoZm9yIGV4YW1wbGUsCisgKiAgICAgIHRyYW5zYWN0aW9uIG1heSBiZSBhZGRlZCBvciByZW1vdmVkIGZyb20gYSBkaWFsb2cpCisgKiAgICAtIG11c3QgYmUgYWJsZSB0byBzeW5jaHJvbml6ZSB3aXRoIGV4dGVybmFsIGxvY2sgKGZvciBleGFtcGxlLCBhIGRpYWxvZworICogICAgICBsb2NrIG11c3QgYmUgYWJsZSB0byBzeW5jIGl0c2VsZiB3aXRoIFBKU1VBIGxvY2spCisgKgorICogUGxlYXNlIHNlZSBodHRwczovL3RyYWMucGpzaXAub3JnL3JlcG9zL3dpa2kvR3JvdXBfTG9jayBmb3IgbW9yZSBpbmZvLgorICovCisKKy8qKgorICogU2V0dGluZ3MgZm9yIGNyZWF0aW5nIHRoZSBncm91cCBsb2NrLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9ncnBfbG9ja19jb25maWcKK3sKKyAgICAvKioKKyAgICAgKiBDcmVhdGlvbiBmbGFncywgY3VycmVudGx5IG11c3QgYmUgemVyby4KKyAgICAgKi8KKyAgICB1bnNpZ25lZAlmbGFnczsKKworfSBwal9ncnBfbG9ja19jb25maWc7CisKKworLyoqCisgKiBJbml0aWFsaXplIHRoZSBjb25maWcgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMuCisgKgorICogQHBhcmFtIGNmZwkJVGhlIGNvbmZpZyB0byBiZSBpbml0aWFsaXplZC4KKyAqLworUEpfREVDTCh2b2lkKSBwal9ncnBfbG9ja19jb25maWdfZGVmYXVsdChwal9ncnBfbG9ja19jb25maWcgKmNmZyk7CisKKy8qKgorICogQ3JlYXRlIGEgZ3JvdXAgbG9jayBvYmplY3QuIEluaXRpYWxseSB0aGUgZ3JvdXAgbG9jayB3aWxsIGhhdmUgcmVmZXJlbmNlCisgKiBjb3VudGVyIG9mIG9uZS4KKyAqCisgKiBAcGFyYW0gcG9vbAkJVGhlIGdyb3VwIGxvY2sgb25seSB1c2VzIHRoZSBwb29sIHBhcmFtZXRlciB0byBnZXQKKyAqIAkJCXRoZSBwb29sIGZhY3RvcnksIGZyb20gd2hpY2ggaXQgd2lsbCBjcmVhdGUgaXRzIG93bgorICogCQkJcG9vbC4KKyAqIEBwYXJhbSBjZmcJCU9wdGlvbmFsIGNvbmZpZ3VyYXRpb24uCisgKiBAcGFyYW0gcF9ncnBfbG9jawlQb2ludGVyIHRvIHJlY2VpdmUgdGhlIG5ld2x5IGNyZWF0ZWQgZ3JvdXAgbG9jay4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9ncnBfbG9ja19jcmVhdGUocGpfcG9vbF90ICpwb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX2dycF9sb2NrX2NvbmZpZyAqY2ZnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2dycF9sb2NrX3QgKipwX2dycF9sb2NrKTsKKworLyoqCisgKiBGb3JjaWJseSBkZXN0cm95IHRoZSBncm91cCBsb2NrLCBpZ25vcmluZyB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgdmFsdWUuCisgKgorICogQHBhcmFtIGdycF9sb2NrCVRoZSBncm91cCBsb2NrLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2Rlc3Ryb3koIHBqX2dycF9sb2NrX3QgKmdycF9sb2NrKTsKKworLyoqCisgKiBNb3ZlIHRoZSBjb250ZW50cyBvZiB0aGUgb2xkIGxvY2sgdG8gdGhlIG5ldyBsb2NrIGFuZCBkZXN0cm95IHRoZQorICogb2xkIGxvY2suCisgKgorICogQHBhcmFtIG9sZF9sb2NrCVRoZSBvbGQgZ3JvdXAgbG9jayB0byBiZSBkZXN0cm95ZWQuCisgKiBAcGFyYW0gbmV3X2xvY2sJVGhlIG5ldyBncm91cCBsb2NrLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX3JlcGxhY2UocGpfZ3JwX2xvY2tfdCAqb2xkX2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2dycF9sb2NrX3QgKm5ld19sb2NrKTsKKworLyoqCisgKiBBY3F1aXJlIGxvY2sgb24gdGhlIHNwZWNpZmllZCBncm91cCBsb2NrLgorICoKKyAqIEBwYXJhbSBncnBfbG9jawlUaGUgZ3JvdXAgbG9jay4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9ncnBfbG9ja19hY3F1aXJlKCBwal9ncnBfbG9ja190ICpncnBfbG9jayk7CisKKy8qKgorICogQWNxdWlyZSBsb2NrIG9uIHRoZSBzcGVjaWZpZWQgZ3JvdXAgbG9jayBpZiBpdCBpcyBhdmFpbGFibGUsIG90aGVyd2lzZQorICogcmV0dXJuIGltbWVkaWF0ZWx5IHdpaG91dCB3YWl0aW5nLgorICoKKyAqIEBwYXJhbSBncnBfbG9jawlUaGUgZ3JvdXAgbG9jay4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9ncnBfbG9ja190cnlhY3F1aXJlKCBwal9ncnBfbG9ja190ICpncnBfbG9jayk7CisKKy8qKgorICogUmVsZWFzZSB0aGUgcHJldmlvdXNseSBoZWxkIGxvY2suIFRoaXMgbWF5IGNhdXNlIHRoZSBncm91cCBsb2NrCisgKiB0byBiZSBkZXN0cm95ZWQgaWYgaXQgaXMgdGhlIGxhc3Qgb25lIHRvIGhvbGQgdGhlIHJlZmVyZW5jZSBjb3VudGVyLgorICogSW4gdGhhdCBjYXNlLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gUEpfRUdPTkUuCisgKgorICogQHBhcmFtIGdycF9sb2NrCVRoZSBncm91cCBsb2NrLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX3JlbGVhc2UoIHBqX2dycF9sb2NrX3QgKmdycF9sb2NrKTsKKworLyoqCisgKiBBZGQgYSBkZXN0cnVjdG9yIGhhbmRsZXIsIHRvIGJlIGNhbGxlZCBieSB0aGUgZ3JvdXAgbG9jayB3aGVuIGl0IGlzCisgKiBhYm91dCB0byBiZSBkZXN0cm95ZWQuCisgKgorICogQHBhcmFtIGdycF9sb2NrCVRoZSBncm91cCBsb2NrLgorICogQHBhcmFtIHBvb2wJCVBvb2wgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgaGFuZGxlci4KKyAqIEBwYXJhbSBtZW1iZXIJQSBwb2ludGVyIHRvIGJlIHBhc3NlZCB0byB0aGUgaGFuZGxlci4KKyAqIEBwYXJhbSBoYW5kbGVyCVRoZSBkZXN0cm95IGhhbmRsZXIuCisgKgorICogQHJldHVybgkJUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZ3JwX2xvY2tfYWRkX2hhbmRsZXIocGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9wb29sX3QgKnBvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICptZW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqaGFuZGxlcikodm9pZCAqbWVtYmVyKSk7CisKKy8qKgorICogUmVtb3ZlIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBoYW5kbGVyLiBBbGwgcGFyYW1ldGVycyBtdXN0IGJlIHRoZSBzYW1lCisgKiBhcyB3aGVuIHRoZSBoYW5kbGVyIHdhcyBhZGRlZC4KKyAqCisgKiBAcGFyYW0gZ3JwX2xvY2sJVGhlIGdyb3VwIGxvY2suCisgKiBAcGFyYW0gbWVtYmVyCUEgcG9pbnRlciB0byBiZSBwYXNzZWQgdG8gdGhlIGhhbmRsZXIuCisgKiBAcGFyYW0gaGFuZGxlcglUaGUgZGVzdHJveSBoYW5kbGVyLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2RlbF9oYW5kbGVyKHBqX2dycF9sb2NrX3QgKmdycF9sb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqbWVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmhhbmRsZXIpKHZvaWQgKm1lbWJlcikpOworCisvKioKKyAqIEluY3JlbWVudCByZWZlcmVuY2UgY291bnRlciB0byBwcmV2ZW50IHRoZSBncm91cCBsb2NrIGdyb20gYmVpbmcgZGVzdHJveWVkLgorICoKKyAqIEBwYXJhbSBncnBfbG9jawlUaGUgZ3JvdXAgbG9jay4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCisjaWYgIVBKX0dSUF9MT0NLX0RFQlVHCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9ncnBfbG9ja19hZGRfcmVmKHBqX2dycF9sb2NrX3QgKmdycF9sb2NrKTsKKworI2RlZmluZSBwal9ncnBfbG9ja19hZGRfcmVmX2RiZyhncnBfbG9jaywgeCwgeSkgcGpfZ3JwX2xvY2tfYWRkX3JlZihncnBfbG9jaykKKworI2Vsc2UKKworI2RlZmluZSBwal9ncnBfbG9ja19hZGRfcmVmKGcpCXBqX2dycF9sb2NrX2FkZF9yZWZfZGJnKGcsIF9fRklMRV9fLCBfX0xJTkVfXykKKworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZ3JwX2xvY2tfYWRkX3JlZl9kYmcocGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUpOworI2VuZGlmCisKKy8qKgorICogRGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnRlci4gV2hlbiB0aGUgY291bnRlciB2YWx1ZSByZWFjaGVzIHplcm8sIHRoZQorICogZ3JvdXAgbG9jayB3aWxsIGJlIGRlc3Ryb3llZCBhbmQgYWxsIGRlc3RydWN0b3IgaGFuZGxlcnMgd2lsbCBiZSBjYWxsZWQuCisgKgorICogQHBhcmFtIGdycF9sb2NrCVRoZSBncm91cCBsb2NrLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KKyNpZiAhUEpfR1JQX0xPQ0tfREVCVUcKK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2RlY19yZWYocGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2spOworCisjZGVmaW5lIHBqX2dycF9sb2NrX2RlY19yZWZfZGJnKGdycF9sb2NrLCB4LCB5KSBwal9ncnBfbG9ja19kZWNfcmVmKGdycF9sb2NrKQorI2Vsc2UKKworI2RlZmluZSBwal9ncnBfbG9ja19kZWNfcmVmKGcpCXBqX2dycF9sb2NrX2RlY19yZWZfZGJnKGcsIF9fRklMRV9fLCBfX0xJTkVfXykKKworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZ3JwX2xvY2tfZGVjX3JlZl9kYmcocGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUpOworCisjZW5kaWYKKworLyoqCisgKiBHZXQgY3VycmVudCByZWZlcmVuY2UgY291bnQgdmFsdWUuIFRoaXMgbm9ybWFsbHkgaXMgb25seSB1c2VkIGZvcgorICogZGVidWdnaW5nIHB1cnBvc2UuCisgKgorICogQHBhcmFtIGdycF9sb2NrCVRoZSBncm91cCBsb2NrLgorICoKKyAqIEByZXR1cm4JCVRoZSByZWZlcmVuY2UgY291bnQgdmFsdWUuCisgKi8KK1BKX0RFQ0woaW50KSBwal9ncnBfbG9ja19nZXRfcmVmKHBqX2dycF9sb2NrX3QgKmdycF9sb2NrKTsKKworCisvKioKKyAqIER1bXAgZ3JvdXAgbG9jayBpbmZvIGZvciBkZWJ1Z2dpbmcgcHVycG9zZS4gSWYgZ3JvdXAgbG9jayBkZWJ1Z2dpbmcgaXMKKyAqIGVuYWJsZWQgKHZpYSBQSl9HUlBfTE9DS19ERUJVRykgbWFjcm8sIHRoaXMgd2lsbCBwcmludCB0aGUgZ3JvdXAgbG9jaworICogcmVmZXJlbmNlIGNvdW50ZXIgdmFsdWUgYWxvbmcgd2l0aCB0aGUgc291cmNlIGZpbGUgYW5kIGxpbmUuIElmCisgKiBkZWJ1Z2dpbmcgaXMgZGlzYWJsZWQsIHRoaXMgd2lsbCBvbmx5IHByaW50IHRoZSByZWZlcmVuY2UgY291bnRlci4KKyAqCisgKiBAcGFyYW0gZ3JwX2xvY2sJVGhlIGdyb3VwIGxvY2suCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfZ3JwX2xvY2tfZHVtcChwal9ncnBfbG9ja190ICpncnBfbG9jayk7CisKKworLyoqCisgKiBTeW5jaHJvbml6ZSBhbiBleHRlcm5hbCBsb2NrIHdpdGggdGhlIGdyb3VwIGxvY2ssIGJ5IGFkZGluZyBpdCB0byB0aGUKKyAqIGxpc3Qgb2YgbG9ja3MgdG8gYmUgYWNxdWlyZWQgYnkgdGhlIGdyb3VwIGxvY2sgd2hlbiB0aGUgZ3JvdXAgbG9jayBpcworICogYWNxdWlyZWQuCisgKgorICogVGhlICcncG9zJycgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBsb2NrIG9yZGVyIGFuZCBhbHNvIHRoZSByZWxhdGl2ZQorICogcG9zaXRpb24gd2l0aCByZWdhcmQgdG8gbG9jayBvcmRlcmluZyBhZ2FpbnN0IHRoZSBncm91cCBsb2NrLiBMb2NrcyB3aXRoCisgKiBsb3dlciAnJ3BvcycnIHZhbHVlIHdpbGwgYmUgbG9ja2VkIGZpcnN0LCBhbmQgdGhvc2Ugd2l0aCBuZWdhdGl2ZSB2YWx1ZQorICogd2lsbCBiZSBsb2NrZWQgYmVmb3JlIHRoZSBncm91cCBsb2NrICh0aGUgZ3JvdXAgbG9jaydzICcncG9zJycgdmFsdWUgaXMKKyAqIHplcm8pLgorICoKKyAqIEBwYXJhbSBncnBfbG9jawlUaGUgZ3JvdXAgbG9jay4KKyAqIEBwYXJhbSBleHRfbG9jawlUaGUgZXh0ZXJuYWwgbG9jaworICogQHBhcmFtIHBvcwkJVGhlIHBvc2l0aW9uLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2NoYWluX2xvY2socGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2xvY2tfdCAqZXh0X2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3MpOworCisvKioKKyAqIFJlbW92ZSBhbiBleHRlcm5hbCBsb2NrIGZyb20gZ3JvdXAgbG9jaydzIGxpc3Qgb2Ygc3luY2hyb25pemVkIGxvY2tzLgorICoKKyAqIEBwYXJhbSBncnBfbG9jawlUaGUgZ3JvdXAgbG9jay4KKyAqIEBwYXJhbSBleHRfbG9jawlUaGUgZXh0ZXJuYWwgbG9jaworICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX3VuY2hhaW5fbG9jayhwal9ncnBfbG9ja190ICpncnBfbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9sb2NrX3QgKmV4dF9sb2NrKTsKKworCisvKiogQH0gKi8KKworCitQSl9FTkRfREVDTAorCisKKyNlbmRpZgkvKiBfX1BKX0xPQ0tfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovbG9nLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2xvZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZDVjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL2xvZy5oCkBAIC0wLDAgKzEsNDUzIEBACisvKiAkSWQ6IGxvZy5oIDQ1ODQgMjAxMy0wOC0zMCAwNDowMzoyMlogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX0xPR19IX18KKyNkZWZpbmUgX19QSl9MT0dfSF9fCisKKy8qKgorICogQGZpbGUgbG9nLmgKKyAqIEBicmllZiBMb2dnaW5nIFV0aWxpdHkuCisgKi8KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisKK1BKX0JFR0lOX0RFQ0wKKworLyoqCisgKiBAZGVmZ3JvdXAgUEpfTUlTQyBNaXNjZWxhbmVvdXMKKyAqLworCisvKioKKyAqIEBkZWZncm91cCBQSl9MT0cgTG9nZ2luZyBGYWNpbGl0eQorICogQGluZ3JvdXAgUEpfTUlTQworICogQHsKKyAqCisgKiBUaGUgUEpMSUIgbG9nZ2luZyBmYWNpbGl0eSBpcyBhIGNvbmZpZ3VyYWJsZSwgZmxleGlibGUsIGFuZCBjb252ZW5pZW50CisgKiB3YXkgdG8gd3JpdGUgbG9nZ2luZyBvciB0cmFjZSBpbmZvcm1hdGlvbi4KKyAqCisgKiBUbyB3cml0ZSB0byB0aGUgbG9nLCBvbmUgdXNlcyBjb25zdHJ1Y3QgbGlrZSBiZWxvdzoKKyAqCisgKiA8cHJlPgorICogICAuLi4KKyAqICAgUEpfTE9HKDMsICgibWFpbi5jIiwgIlN0YXJ0aW5nIGhlbGxvLi4uIikpOworICogICAuLi4KKyAqICAgUEpfTE9HKDMsICgibWFpbi5jIiwgIkhlbGxvIHdvcmxkIGZyb20gcHJvY2VzcyAlZCIsIHBqX2dldHBpZCgpKSk7CisgKiAgIC4uLgorICogPC9wcmU+CisgKgorICogSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSBudW1iZXIgQGIgMyBjb250cm9scyB0aGUgdmVyYm9zaXR5IGxldmVsIG9mCisgKiB0aGUgaW5mb3JtYXRpb24gKHdoaWNoIG1lYW5zICJpbmZvcm1hdGlvbiIsIGJ5IGNvbnZlbnRpb24pLiBUaGUgc3RyaW5nCisgKiAibWFpbi5jIiBzcGVjaWZpZXMgdGhlIHNvdXJjZSBvciBzZW5kZXIgb2YgdGhlIG1lc3NhZ2UuCisgKgorICoKKyAqIFxzZWN0aW9uIHBqX2xvZ19xdWlja19zYW1wbGVfc2VjIEV4YW1wbGVzCisgKgorICogRm9yIGV4YW1wbGVzLCBzZWU6CisgKiAgLSBAcmVmIHBhZ2VfcGpsaWJfc2FtcGxlc19sb2dfYy4KKyAqCisgKi8KKworLyoqCisgKiBMb2cgZGVjb3JhdGlvbiBmbGFnLCB0byBiZSBzcGVjaWZpZWQgd2l0aCAjcGpfbG9nX3NldF9kZWNvcigpLgorICovCitlbnVtIHBqX2xvZ19kZWNvcmF0aW9uCit7CisgICAgUEpfTE9HX0hBU19EQVlfTkFNRSAgID0gICAgMSwgLyoqPCBJbmNsdWRlIGRheSBuYW1lIFtkZWZhdWx0OiBub10gCSAgICAgICovCisgICAgUEpfTE9HX0hBU19ZRUFSICAgICAgID0gICAgMiwgLyoqPCBJbmNsdWRlIHllYXIgZGlnaXQgW25vXQkJICAgICAgKi8KKyAgICBQSl9MT0dfSEFTX01PTlRICSAgPSAgICA0LCAvKio8IEluY2x1ZGUgbW9udGggW25vXQkJICAgICAgKi8KKyAgICBQSl9MT0dfSEFTX0RBWV9PRl9NT04gPSAgICA4LCAvKio8IEluY2x1ZGUgZGF5IG9mIG1vbnRoIFtub10JICAgICAgKi8KKyAgICBQSl9MT0dfSEFTX1RJTUUJICA9ICAgMTYsIC8qKjwgSW5jbHVkZSB0aW1lIFt5ZXNdCQkgICAgICAqLworICAgIFBKX0xPR19IQVNfTUlDUk9fU0VDICA9ICAgMzIsIC8qKjwgSW5jbHVkZSBtaWNyb3NlY29uZHMgW3llc10gICAgICAgICAgICAgKi8KKyAgICBQSl9MT0dfSEFTX1NFTkRFUgkgID0gICA2NCwgLyoqPCBJbmNsdWRlIHNlbmRlciBpbiB0aGUgbG9nIFt5ZXNdIAkgICAgICAqLworICAgIFBKX0xPR19IQVNfTkVXTElORQkgID0gIDEyOCwgLyoqPCBUZXJtaW5hdGUgZWFjaCBjYWxsIHdpdGggbmV3bGluZSBbeWVzXSAqLworICAgIFBKX0xPR19IQVNfQ1IJICA9ICAyNTYsIC8qKjwgSW5jbHVkZSBjYXJyaWFnZSByZXR1cm4gW25vXSAJICAgICAgKi8KKyAgICBQSl9MT0dfSEFTX1NQQUNFCSAgPSAgNTEyLCAvKio8IEluY2x1ZGUgdHdvIHNwYWNlcyBiZWZvcmUgbG9nIFt5ZXNdICAgICovCisgICAgUEpfTE9HX0hBU19DT0xPUgkgID0gMTAyNCwgLyoqPCBDb2xvcml6ZSBsb2dzIFt5ZXMgb24gd2luMzJdCSAgICAgICovCisgICAgUEpfTE9HX0hBU19MRVZFTF9URVhUID0gMjA0OCwgLyoqPCBJbmNsdWRlIGxldmVsIHRleHQgc3RyaW5nIFtub10JICAgICAgKi8KKyAgICBQSl9MT0dfSEFTX1RIUkVBRF9JRCAgPSA0MDk2LCAvKio8IEluY2x1ZGUgdGhyZWFkIGlkZW50aWZpY2F0aW9uIFtub10gICAgICovCisgICAgUEpfTE9HX0hBU19USFJFQURfU1dDID0gODE5MiwgLyoqPCBBZGQgbWFyayB3aGVuIHRocmVhZCBoYXMgc3dpdGNoZWQgW3llc10qLworICAgIFBKX0xPR19IQVNfSU5ERU5UICAgICA9MTYzODQgIC8qKjwgSW5kZW50YXRpb24uIFNheSB5ZXMhIFt5ZXNdICAgICAgICAgICAgKi8KK307CisKKy8qKgorICogV3JpdGUgbG9nIG1lc3NhZ2UuCisgKiBUaGlzIGlzIHRoZSBtYWluIG1hY3JvIHVzZWQgdG8gd3JpdGUgdGV4dCB0byB0aGUgbG9nZ2luZyBiYWNrZW5kLiAKKyAqCisgKiBAcGFyYW0gbGV2ZWwJICAgIFRoZSBsb2dnaW5nIHZlcmJvc2l0eSBsZXZlbC4gTG93ZXIgbnVtYmVyIGluZGljYXRlcyBoaWdoZXIKKyAqCQkgICAgaW1wb3J0YW5jZSwgd2l0aCBsZXZlbCB6ZXJvIGluZGljYXRlcyBmYXRhbCBlcnJvci4gT25seQorICoJCSAgICBudW1lcmFsIGFyZ3VtZW50IGlzIHBlcm1pdHRlZCAoZS5nLiBub3QgdmFyaWFibGUpLgorICogQHBhcmFtIGFyZwkgICAgRW5jbG9zZWQgJ3ByaW50ZicgbGlrZSBhcmd1bWVudHMsIHdpdGggdGhlIGZpcnN0IAorICoJCSAgICBhcmd1bWVudCBpcyB0aGUgc2VuZGVyLCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGZvcm1hdCAKKyAqCQkgICAgc3RyaW5nIGFuZCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyBhcmUgdmFyaWFibGUgbnVtYmVyIG9mIAorICoJCSAgICBhcmd1bWVudHMgc3VpdGFibGUgZm9yIHRoZSBmb3JtYXQgc3RyaW5nLgorICoKKyAqIFNhbXBsZToKKyAqIFx2ZXJiYXRpbQorICAgUEpfTE9HKDIsIChfX0ZJTEVfXywgImN1cnJlbnQgdmFsdWUgaXMgJWQiLCB2YWx1ZSkpOworICAgXGVuZHZlcmJhdGltCisgKiBAaGlkZWluaXRpYWxpemVyCisgKi8KKyNkZWZpbmUgUEpfTE9HKGxldmVsLGFyZykJZG8geyBcCisJCQkJICAgIGlmIChsZXZlbCA8PSBwal9sb2dfZ2V0X2xldmVsKCkpIFwKKwkJCQkJcGpfbG9nX3dyYXBwZXJfIyNsZXZlbChhcmcpOyBcCisJCQkJfSB3aGlsZSAoMCkKKworLyoqCisgKiBTaWduYXR1cmUgZm9yIGZ1bmN0aW9uIHRvIGJlIHJlZ2lzdGVyZWQgdG8gdGhlIGxvZ2dpbmcgc3Vic3lzdGVtIHRvCisgKiB3cml0ZSB0aGUgYWN0dWFsIGxvZyBtZXNzYWdlIHRvIHNvbWUgb3V0cHV0IGRldmljZS4KKyAqCisgKiBAcGFyYW0gbGV2ZWwJICAgIExvZyBsZXZlbC4KKyAqIEBwYXJhbSBkYXRhCSAgICBMb2cgbWVzc2FnZSwgd2hpY2ggd2lsbCBiZSBOVUxMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gbGVuCSAgICBNZXNzYWdlIGxlbmd0aC4KKyAqLwordHlwZWRlZiB2b2lkIHBqX2xvZ19mdW5jKGludCBsZXZlbCwgY29uc3QgY2hhciAqZGF0YSwgaW50IGxlbik7CisKKy8qKgorICogRGVmYXVsdCBsb2dnaW5nIHdyaXRlciBmdW5jdGlvbiB1c2VkIGJ5IGZyb250IGVuZCBsb2dnZXIgZnVuY3Rpb24uCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcHJpbnQgdGhlIGxvZyBtZXNzYWdlIHRvIHN0ZG91dCBvbmx5LgorICogQXBwbGljYXRpb24gbm9ybWFsbHkgc2hvdWxkIE5PVCBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiwgYnV0CisgKiByYXRoZXIgdXNlIHRoZSBQSl9MT0cgbWFjcm8uCisgKgorICogQHBhcmFtIGxldmVsCSAgICBMb2cgbGV2ZWwuCisgKiBAcGFyYW0gYnVmZmVyICAgIExvZyBtZXNzYWdlLgorICogQHBhcmFtIGxlbgkgICAgTWVzc2FnZSBsZW5ndGguCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfbG9nX3dyaXRlKGludCBsZXZlbCwgY29uc3QgY2hhciAqYnVmZmVyLCBpbnQgbGVuKTsKKworCisjaWYgUEpfTE9HX01BWF9MRVZFTCA+PSAxCisKKy8qKgorICogV3JpdGUgdG8gbG9nLgorICoKKyAqIEBwYXJhbSBzZW5kZXIgICAgU291cmNlIG9mIHRoZSBtZXNzYWdlLgorICogQHBhcmFtIGxldmVsCSAgICBWZXJib3NpdHkgbGV2ZWwuCisgKiBAcGFyYW0gZm9ybWF0ICAgIEZvcm1hdC4KKyAqIEBwYXJhbSBtYXJrZXIgICAgTWFya2VyLgorICovCitQSl9ERUNMKHZvaWQpIHBqX2xvZyhjb25zdCBjaGFyICpzZW5kZXIsIGludCBsZXZlbCwgCisJCSAgICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IG1hcmtlcik7CisKKy8qKgorICogQ2hhbmdlIGxvZyBvdXRwdXQgZnVuY3Rpb24uIFRoZSBmcm9udC1lbmQgbG9nZ2luZyBmdW5jdGlvbnMgd2lsbCBjYWxsCisgKiB0aGlzIGZ1bmN0aW9uIHRvIHdyaXRlIHRoZSBhY3R1YWwgbWVzc2FnZSB0byB0aGUgZGVzaXJlZCBkZXZpY2UuIAorICogQnkgZGVmYXVsdCwgdGhlIGZyb250LWVuZCBmdW5jdGlvbnMgdXNlIHBqX2xvZ193cml0ZSgpIHRvIHdyaXRlCisgKiB0aGUgbWVzc2FnZXMsIHVubGVzcyBpdCdzIGNoYW5nZWQgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBmdW5jCSAgICBUaGUgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB0byB3cml0ZSB0aGUgbG9nCisgKgkJICAgIG1lc3NhZ2VzIHRvIHRoZSBkZXNpcmVkIGRldmljZS4KKyAqLworUEpfREVDTCh2b2lkKSBwal9sb2dfc2V0X2xvZ19mdW5jKCBwal9sb2dfZnVuYyAqZnVuYyApOworCisvKioKKyAqIEdldCB0aGUgY3VycmVudCBsb2cgb3V0cHV0IGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byB3cml0ZSBsb2cgbWVzc2FnZXMuCisgKgorICogQHJldHVybgkgICAgQ3VycmVudCBsb2cgb3V0cHV0IGZ1bmN0aW9uLgorICovCitQSl9ERUNMKHBqX2xvZ19mdW5jKikgcGpfbG9nX2dldF9sb2dfZnVuYyh2b2lkKTsKKworLyoqCisgKiBTZXQgbWF4aW11bSBsb2cgbGV2ZWwuIEFwcGxpY2F0aW9uIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gc2V0IAorICogdGhlIGRlc2lyZWQgbGV2ZWwgb2YgdmVyYm9zaXR5IG9mIHRoZSBsb2dnaW5nIG1lc3NhZ2VzLiBUaGUgYmlnZ2VyIHRoZQorICogdmFsdWUsIHRoZSBtb3JlIHZlcmJvc2UgdGhlIGxvZ2dpbmcgbWVzc2FnZXMgd2lsbCBiZSBwcmludGVkLiBIb3dldmVyLAorICogdGhlIG1heGltdW0gbGV2ZWwgb2YgdmVyYm9zaXR5IGNhbiBub3QgZXhjZWVkIGNvbXBpbGUgdGltZSB2YWx1ZSBvZgorICogUEpfTE9HX01BWF9MRVZFTC4KKyAqCisgKiBAcGFyYW0gbGV2ZWwJICAgIFRoZSBtYXhpbXVtIGxldmVsIG9mIHZlcmJvc2l0eSBvZiB0aGUgbG9nZ2luZworICoJCSAgICBtZXNzYWdlcyAoNj12ZXJ5IGRldGFpbGVkLi4xPWVycm9yIG9ubHksIDA9ZGlzYWJsZWQpCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfbG9nX3NldF9sZXZlbChpbnQgbGV2ZWwpOworCisvKioKKyAqIEdldCBjdXJyZW50IG1heGltdW0gbG9nIHZlcmJvc2l0eWxldmVsLgorICoKKyAqIEByZXR1cm4JICAgIEN1cnJlbnQgbG9nIG1heGltdW0gbGV2ZWwuCisgKi8KKyNpZiAxCitQSl9ERUNMKGludCkgcGpfbG9nX2dldF9sZXZlbCh2b2lkKTsKKyNlbHNlCitQSl9ERUNMX0RBVEEoaW50KSBwal9sb2dfbWF4X2xldmVsOworI2RlZmluZSBwal9sb2dfZ2V0X2xldmVsKCkgIHBqX2xvZ19tYXhfbGV2ZWwKKyNlbmRpZgorCisvKioKKyAqIFNldCBsb2cgZGVjb3JhdGlvbi4gVGhlIGxvZyBkZWNvcmF0aW9uIGZsYWcgY29udHJvbHMgd2hhdCBhcmUgcHJpbnRlZAorICogdG8gb3V0cHV0IGRldmljZSBhbG9uZ3NpZGUgdGhlIGFjdHVhbCBtZXNzYWdlLiBGb3IgZXhhbXBsZSwgYXBwbGljYXRpb24KKyAqIGNhbiBzcGVjaWZ5IHRoYXQgZGF0ZS90aW1lIGluZm9ybWF0aW9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgd2l0aCBlYWNoCisgKiBsb2cgbWVzc2FnZS4KKyAqCisgKiBAcGFyYW0gZGVjb3IJICAgIEJpdG1hc2sgY29tYmluYXRpb24gb2YgI3BqX2xvZ19kZWNvcmF0aW9uIHRvIGNvbnRyb2wKKyAqCQkgICAgdGhlIGxheW91dCBvZiB0aGUgbG9nIG1lc3NhZ2UuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfbG9nX3NldF9kZWNvcih1bnNpZ25lZCBkZWNvcik7CisKKy8qKgorICogR2V0IGN1cnJlbnQgbG9nIGRlY29yYXRpb24gZmxhZy4KKyAqCisgKiBAcmV0dXJuCSAgICBMb2cgZGVjb3JhdGlvbiBmbGFnLgorICovCitQSl9ERUNMKHVuc2lnbmVkKSBwal9sb2dfZ2V0X2RlY29yKHZvaWQpOworCisvKioKKyAqIEFkZCBpbmRlbnRhdGlvbiB0byBsb2cgbWVzc2FnZS4gSW5kZW50YXRpb24gd2lsbCBhZGQgUEpfTE9HX0lOREVOVF9DSEFSCisgKiBiZWZvcmUgdGhlIG1lc3NhZ2UsIGFuZCBpcyB1c2VmdWwgdG8gc2hvdyB0aGUgZGVwdGggb2YgZnVuY3Rpb24gY2FsbHMuCisgKgorICogQHBhcmFtIGluZGVudCAgICBUaGUgaW5kZW50YXRpb24gdG8gYWRkIG9yIHN1YnN0cmFjdC4gUG9zaXRpdmUgdmFsdWUKKyAqIAkJICAgIGFkZHMgY3VycmVudCBpbmRlbnQsIG5lZ2F0aXZlIHZhbHVlIHN1YnRyYWN0cyBjdXJyZW50CisgKiAJCSAgICBpbmRlbnQuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfbG9nX2FkZF9pbmRlbnQoaW50IGluZGVudCk7CisKKy8qKgorICogUHVzaCBpbmRlbnRhdGlvbiB0byB0aGUgcmlnaHQgYnkgZGVmYXVsdCB2YWx1ZSAoUEpfTE9HX0lOREVOVCkuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfbG9nX3B1c2hfaW5kZW50KHZvaWQpOworCisvKioKKyAqIFBvcCBpbmRlbnRhdGlvbiAodG8gdGhlIGxlZnQpIGJ5IGRlZmF1bHQgdmFsdWUgKFBKX0xPR19JTkRFTlQpLgorICovCitQSl9ERUNMKHZvaWQpIHBqX2xvZ19wb3BfaW5kZW50KHZvaWQpOworCisvKioKKyAqIFNldCBjb2xvciBvZiBsb2cgbWVzc2FnZXMuCisgKgorICogQHBhcmFtIGxldmVsCSAgICBMb2cgbGV2ZWwgd2hpY2ggY29sb3Igd2lsbCBiZSBjaGFuZ2VkLgorICogQHBhcmFtIGNvbG9yCSAgICBEZXNpcmVkIGNvbG9yLgorICovCitQSl9ERUNMKHZvaWQpIHBqX2xvZ19zZXRfY29sb3IoaW50IGxldmVsLCBwal9jb2xvcl90IGNvbG9yKTsKKworLyoqCisgKiBHZXQgY29sb3Igb2YgbG9nIG1lc3NhZ2VzLgorICoKKyAqIEBwYXJhbSBsZXZlbAkgICAgTG9nIGxldmVsIHdoaWNoIGNvbG9yIHdpbGwgYmUgcmV0dXJuZWQuCisgKiBAcmV0dXJuCSAgICBMb2cgY29sb3IuCisgKi8KK1BKX0RFQ0wocGpfY29sb3JfdCkgcGpfbG9nX2dldF9jb2xvcihpbnQgbGV2ZWwpOworCisvKioKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBieSBwal9pbml0KCkKKyAqLworcGpfc3RhdHVzX3QgcGpfbG9nX2luaXQodm9pZCk7CisKKyNlbHNlCS8qICNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDEgKi8KKworLyoqCisgKiBDaGFuZ2UgbG9nIG91dHB1dCBmdW5jdGlvbi4gVGhlIGZyb250LWVuZCBsb2dnaW5nIGZ1bmN0aW9ucyB3aWxsIGNhbGwKKyAqIHRoaXMgZnVuY3Rpb24gdG8gd3JpdGUgdGhlIGFjdHVhbCBtZXNzYWdlIHRvIHRoZSBkZXNpcmVkIGRldmljZS4gCisgKiBCeSBkZWZhdWx0LCB0aGUgZnJvbnQtZW5kIGZ1bmN0aW9ucyB1c2UgcGpfbG9nX3dyaXRlKCkgdG8gd3JpdGUKKyAqIHRoZSBtZXNzYWdlcywgdW5sZXNzIGl0J3MgY2hhbmdlZCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgKgorICogQHBhcmFtIGZ1bmMJICAgIFRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIHdyaXRlIHRoZSBsb2cKKyAqCQkgICAgbWVzc2FnZXMgdG8gdGhlIGRlc2lyZWQgZGV2aWNlLgorICovCisjICBkZWZpbmUgcGpfbG9nX3NldF9sb2dfZnVuYyhmdW5jKQorCisvKioKKyAqIFdyaXRlIHRvIGxvZy4KKyAqCisgKiBAcGFyYW0gc2VuZGVyICAgIFNvdXJjZSBvZiB0aGUgbWVzc2FnZS4KKyAqIEBwYXJhbSBsZXZlbAkgICAgVmVyYm9zaXR5IGxldmVsLgorICogQHBhcmFtIGZvcm1hdCAgICBGb3JtYXQuCisgKiBAcGFyYW0gbWFya2VyICAgIE1hcmtlci4KKyAqLworIyAgZGVmaW5lIHBqX2xvZyhzZW5kZXIsIGxldmVsLCBmb3JtYXQsIG1hcmtlcikKKworLyoqCisgKiBTZXQgbWF4aW11bSBsb2cgbGV2ZWwuIEFwcGxpY2F0aW9uIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gc2V0IAorICogdGhlIGRlc2lyZWQgbGV2ZWwgb2YgdmVyYm9zaXR5IG9mIHRoZSBsb2dnaW5nIG1lc3NhZ2VzLiBUaGUgYmlnZ2VyIHRoZQorICogdmFsdWUsIHRoZSBtb3JlIHZlcmJvc2UgdGhlIGxvZ2dpbmcgbWVzc2FnZXMgd2lsbCBiZSBwcmludGVkLiBIb3dldmVyLAorICogdGhlIG1heGltdW0gbGV2ZWwgb2YgdmVyYm9zaXR5IGNhbiBub3QgZXhjZWVkIGNvbXBpbGUgdGltZSB2YWx1ZSBvZgorICogUEpfTE9HX01BWF9MRVZFTC4KKyAqCisgKiBAcGFyYW0gbGV2ZWwJICAgIFRoZSBtYXhpbXVtIGxldmVsIG9mIHZlcmJvc2l0eSBvZiB0aGUgbG9nZ2luZworICoJCSAgICBtZXNzYWdlcyAoNj12ZXJ5IGRldGFpbGVkLi4xPWVycm9yIG9ubHksIDA9ZGlzYWJsZWQpCisgKi8KKyMgIGRlZmluZSBwal9sb2dfc2V0X2xldmVsKGxldmVsKQorCisvKioKKyAqIFNldCBsb2cgZGVjb3JhdGlvbi4gVGhlIGxvZyBkZWNvcmF0aW9uIGZsYWcgY29udHJvbHMgd2hhdCBhcmUgcHJpbnRlZAorICogdG8gb3V0cHV0IGRldmljZSBhbG9uZ3NpZGUgdGhlIGFjdHVhbCBtZXNzYWdlLiBGb3IgZXhhbXBsZSwgYXBwbGljYXRpb24KKyAqIGNhbiBzcGVjaWZ5IHRoYXQgZGF0ZS90aW1lIGluZm9ybWF0aW9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgd2l0aCBlYWNoCisgKiBsb2cgbWVzc2FnZS4KKyAqCisgKiBAcGFyYW0gZGVjb3IJICAgIEJpdG1hc2sgY29tYmluYXRpb24gb2YgI3BqX2xvZ19kZWNvcmF0aW9uIHRvIGNvbnRyb2wKKyAqCQkgICAgdGhlIGxheW91dCBvZiB0aGUgbG9nIG1lc3NhZ2UuCisgKi8KKyMgIGRlZmluZSBwal9sb2dfc2V0X2RlY29yKGRlY29yKQorCisvKioKKyAqIEFkZCBpbmRlbnRhdGlvbiB0byBsb2cgbWVzc2FnZS4gSW5kZW50YXRpb24gd2lsbCBhZGQgUEpfTE9HX0lOREVOVF9DSEFSCisgKiBiZWZvcmUgdGhlIG1lc3NhZ2UsIGFuZCBpcyB1c2VmdWwgdG8gc2hvdyB0aGUgZGVwdGggb2YgZnVuY3Rpb24gY2FsbHMuCisgKgorICogQHBhcmFtIGluZGVudCAgICBUaGUgaW5kZW50YXRpb24gdG8gYWRkIG9yIHN1YnN0cmFjdC4gUG9zaXRpdmUgdmFsdWUKKyAqIAkJICAgIGFkZHMgY3VycmVudCBpbmRlbnQsIG5lZ2F0aXZlIHZhbHVlIHN1YnRyYWN0cyBjdXJyZW50CisgKiAJCSAgICBpbmRlbnQuCisgKi8KKyMgIGRlZmluZSBwal9sb2dfYWRkX2luZGVudChpbmRlbnQpCisKKy8qKgorICogUHVzaCBpbmRlbnRhdGlvbiB0byB0aGUgcmlnaHQgYnkgZGVmYXVsdCB2YWx1ZSAoUEpfTE9HX0lOREVOVCkuCisgKi8KKyMgIGRlZmluZSBwal9sb2dfcHVzaF9pbmRlbnQoKQorCisvKioKKyAqIFBvcCBpbmRlbnRhdGlvbiAodG8gdGhlIGxlZnQpIGJ5IGRlZmF1bHQgdmFsdWUgKFBKX0xPR19JTkRFTlQpLgorICovCisjICBkZWZpbmUgcGpfbG9nX3BvcF9pbmRlbnQoKQorCisvKioKKyAqIFNldCBjb2xvciBvZiBsb2cgbWVzc2FnZXMuCisgKgorICogQHBhcmFtIGxldmVsCSAgICBMb2cgbGV2ZWwgd2hpY2ggY29sb3Igd2lsbCBiZSBjaGFuZ2VkLgorICogQHBhcmFtIGNvbG9yCSAgICBEZXNpcmVkIGNvbG9yLgorICovCisjICBkZWZpbmUgcGpfbG9nX3NldF9jb2xvcihsZXZlbCwgY29sb3IpCisKKy8qKgorICogR2V0IGN1cnJlbnQgbWF4aW11bSBsb2cgdmVyYm9zaXR5bGV2ZWwuCisgKgorICogQHJldHVybgkgICAgQ3VycmVudCBsb2cgbWF4aW11bSBsZXZlbC4KKyAqLworIyAgZGVmaW5lIHBqX2xvZ19nZXRfbGV2ZWwoKQkwCisKKy8qKgorICogR2V0IGN1cnJlbnQgbG9nIGRlY29yYXRpb24gZmxhZy4KKyAqCisgKiBAcmV0dXJuCSAgICBMb2cgZGVjb3JhdGlvbiBmbGFnLgorICovCisjICBkZWZpbmUgcGpfbG9nX2dldF9kZWNvcigpCTAKKworLyoqCisgKiBHZXQgY29sb3Igb2YgbG9nIG1lc3NhZ2VzLgorICoKKyAqIEBwYXJhbSBsZXZlbAkgICAgTG9nIGxldmVsIHdoaWNoIGNvbG9yIHdpbGwgYmUgcmV0dXJuZWQuCisgKiBAcmV0dXJuCSAgICBMb2cgY29sb3IuCisgKi8KKyMgIGRlZmluZSBwal9sb2dfZ2V0X2NvbG9yKGxldmVsKSAwCisKKworLyoqCisgKiBJbnRlcm5hbC4KKyAqLworIyAgIGRlZmluZSBwal9sb2dfaW5pdCgpCVBKX1NVQ0NFU1MKKworI2VuZGlmCS8qICNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDEgKi8KKworLyoqIAorICogQH0KKyAqLworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBMb2cgZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uIHByb3RvdHlwZXMuCisgKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBQSl9MT0cgbWFjcm9zIGFjY29yZGluZyB0byB2ZXJib3NpdHkKKyAqIGxldmVsIHNwZWNpZmllZCB3aGVuIGNhbGxpbmcgdGhlIG1hY3JvLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG5vdCBub3JtYWxseQorICogbmVlZCB0byBjYWxsIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseS4KKyAqLworCisvKioKKyAqIEBkZWYgcGpfbG9nX3dyYXBwZXJfMShhcmcpCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byB3cml0ZSBsb2cgd2l0aCB2ZXJib3NpdHkgMS4gV2lsbCBldmFsdWF0ZSB0bworICogZW1wdHkgZXhwcmVzc2lvbiBpZiBQSl9MT0dfTUFYX0xFVkVMIGlzIGJlbG93IDEuCisgKiBAcGFyYW0gYXJnICAgICAgIExvZyBleHByZXNzaW9uLgorICovCisjaWYgUEpfTE9HX01BWF9MRVZFTCA+PSAxCisgICAgI2RlZmluZSBwal9sb2dfd3JhcHBlcl8xKGFyZykJcGpfbG9nXzEgYXJnCisgICAgLyoqIEludGVybmFsIGZ1bmN0aW9uLiAqLworICAgIFBKX0RFQ0wodm9pZCkgcGpfbG9nXzEoY29uc3QgY2hhciAqc3JjLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CisjZWxzZQorICAgICNkZWZpbmUgcGpfbG9nX3dyYXBwZXJfMShhcmcpCisjZW5kaWYKKworLyoqCisgKiBAZGVmIHBqX2xvZ193cmFwcGVyXzIoYXJnKQorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gd3JpdGUgbG9nIHdpdGggdmVyYm9zaXR5IDIuIFdpbGwgZXZhbHVhdGUgdG8KKyAqIGVtcHR5IGV4cHJlc3Npb24gaWYgUEpfTE9HX01BWF9MRVZFTCBpcyBiZWxvdyAyLgorICogQHBhcmFtIGFyZyAgICAgICBMb2cgZXhwcmVzc2lvbi4KKyAqLworI2lmIFBKX0xPR19NQVhfTEVWRUwgPj0gMgorICAgICNkZWZpbmUgcGpfbG9nX3dyYXBwZXJfMihhcmcpCXBqX2xvZ18yIGFyZworICAgIC8qKiBJbnRlcm5hbCBmdW5jdGlvbi4gKi8KKyAgICBQSl9ERUNMKHZvaWQpIHBqX2xvZ18yKGNvbnN0IGNoYXIgKnNyYywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOworI2Vsc2UKKyAgICAjZGVmaW5lIHBqX2xvZ193cmFwcGVyXzIoYXJnKQorI2VuZGlmCisKKy8qKgorICogQGRlZiBwal9sb2dfd3JhcHBlcl8zKGFyZykKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIHdyaXRlIGxvZyB3aXRoIHZlcmJvc2l0eSAzLiBXaWxsIGV2YWx1YXRlIHRvCisgKiBlbXB0eSBleHByZXNzaW9uIGlmIFBKX0xPR19NQVhfTEVWRUwgaXMgYmVsb3cgMy4KKyAqIEBwYXJhbSBhcmcgICAgICAgTG9nIGV4cHJlc3Npb24uCisgKi8KKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDMKKyAgICAjZGVmaW5lIHBqX2xvZ193cmFwcGVyXzMoYXJnKQlwal9sb2dfMyBhcmcKKyAgICAvKiogSW50ZXJuYWwgZnVuY3Rpb24uICovCisgICAgUEpfREVDTCh2b2lkKSBwal9sb2dfMyhjb25zdCBjaGFyICpzcmMsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKKyNlbHNlCisgICAgI2RlZmluZSBwal9sb2dfd3JhcHBlcl8zKGFyZykKKyNlbmRpZgorCisvKioKKyAqIEBkZWYgcGpfbG9nX3dyYXBwZXJfNChhcmcpCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byB3cml0ZSBsb2cgd2l0aCB2ZXJib3NpdHkgNC4gV2lsbCBldmFsdWF0ZSB0bworICogZW1wdHkgZXhwcmVzc2lvbiBpZiBQSl9MT0dfTUFYX0xFVkVMIGlzIGJlbG93IDQuCisgKiBAcGFyYW0gYXJnICAgICAgIExvZyBleHByZXNzaW9uLgorICovCisjaWYgUEpfTE9HX01BWF9MRVZFTCA+PSA0CisgICAgI2RlZmluZSBwal9sb2dfd3JhcHBlcl80KGFyZykJcGpfbG9nXzQgYXJnCisgICAgLyoqIEludGVybmFsIGZ1bmN0aW9uLiAqLworICAgIFBKX0RFQ0wodm9pZCkgcGpfbG9nXzQoY29uc3QgY2hhciAqc3JjLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CisjZWxzZQorICAgICNkZWZpbmUgcGpfbG9nX3dyYXBwZXJfNChhcmcpCisjZW5kaWYKKworLyoqCisgKiBAZGVmIHBqX2xvZ193cmFwcGVyXzUoYXJnKQorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gd3JpdGUgbG9nIHdpdGggdmVyYm9zaXR5IDUuIFdpbGwgZXZhbHVhdGUgdG8KKyAqIGVtcHR5IGV4cHJlc3Npb24gaWYgUEpfTE9HX01BWF9MRVZFTCBpcyBiZWxvdyA1LgorICogQHBhcmFtIGFyZyAgICAgICBMb2cgZXhwcmVzc2lvbi4KKyAqLworI2lmIFBKX0xPR19NQVhfTEVWRUwgPj0gNQorICAgICNkZWZpbmUgcGpfbG9nX3dyYXBwZXJfNShhcmcpCXBqX2xvZ181IGFyZworICAgIC8qKiBJbnRlcm5hbCBmdW5jdGlvbi4gKi8KKyAgICBQSl9ERUNMKHZvaWQpIHBqX2xvZ181KGNvbnN0IGNoYXIgKnNyYywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOworI2Vsc2UKKyAgICAjZGVmaW5lIHBqX2xvZ193cmFwcGVyXzUoYXJnKQorI2VuZGlmCisKKy8qKgorICogQGRlZiBwal9sb2dfd3JhcHBlcl82KGFyZykKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIHdyaXRlIGxvZyB3aXRoIHZlcmJvc2l0eSA2LiBXaWxsIGV2YWx1YXRlIHRvCisgKiBlbXB0eSBleHByZXNzaW9uIGlmIFBKX0xPR19NQVhfTEVWRUwgaXMgYmVsb3cgNi4KKyAqIEBwYXJhbSBhcmcgICAgICAgTG9nIGV4cHJlc3Npb24uCisgKi8KKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDYKKyAgICAjZGVmaW5lIHBqX2xvZ193cmFwcGVyXzYoYXJnKQlwal9sb2dfNiBhcmcKKyAgICAvKiogSW50ZXJuYWwgZnVuY3Rpb24uICovCisgICAgUEpfREVDTCh2b2lkKSBwal9sb2dfNihjb25zdCBjaGFyICpzcmMsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKKyNlbHNlCisgICAgI2RlZmluZSBwal9sb2dfd3JhcHBlcl82KGFyZykKKyNlbmRpZgorCisKK1BKX0VORF9ERUNMIAorCisjZW5kaWYgIC8qIF9fUEpfTE9HX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL21hdGguaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovbWF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZjNlNGQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL21hdGguaApAQCAtMCwwICsxLDE5NyBAQAorLyogJElkOiBtYXRoLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKworI2lmbmRlZiBfX1BKX01BVEhfSF9fCisjZGVmaW5lIF9fUEpfTUFUSF9IX18KKworLyoqCisgKiBAZmlsZSBtYXRoLmgKKyAqIEBicmllZiBNYXRoZW1hdGljcyBhbmQgU3RhdGlzdGljcy4KKyAqLworCisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmg+CisKK1BKX0JFR0lOX0RFQ0wKKworLyoqCisgKiBAZGVmZ3JvdXAgcGpfbWF0aCBNYXRoZW1hdGljcyBhbmQgU3RhdGlzdGljcworICogQGluZ3JvdXAgUEpfTUlTQworICogQHsKKyAqCisgKiBQcm92aWRlcyBjb21tb24gbWF0aGVtYXRpY3MgY29uc3RhbnRzIGFuZCBvcGVyYXRpb25zLCBhbmQgYWxzbyBzdGFuZGFyZAorICogc3RhdGlzdGljcyBjYWxjdWxhdGlvbiAobWluLCBtYXgsIG1lYW4sIHN0YW5kYXJkIGRldmlhdGlvbikuIFN0YXRpc3RpY3MKKyAqIGNhbGN1bGF0aW9uIGlzIGRvbmUgaW4gcmVhbHRpbWUgKHN0YXRpc3RpY3Mgc3RhdGUgaXMgdXBkYXRlZCBvbiB0aW1lIGVhY2gKKyAqIG5ldyBzYW1wbGUgY29tZXMpLgorICovCisKKy8qKgorICogTWF0aGVtYXRpY2FsIGNvbnN0YW50cworICovCisjZGVmaW5lIFBKX1BJCQkgICAgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NgkvKiBwaQkgICAgKi8KKyNkZWZpbmUgUEpfMV9QSQkJICAgIDAuMzE4MzA5ODg2MTgzNzkwNjcxNTM4CS8qIDEvcGkJICAgICovCisKKy8qKgorICogTWF0aGVtYXRpY2FsIG1hY3JvCisgKi8KKyNkZWZpbmUJUEpfQUJTKHgpCSgoeCkgPiAgMCA/ICh4KSA6IC0oeCkpCisjZGVmaW5lCVBKX01BWCh4LCB5KQkoKHgpID4gKHkpPyAoeCkgOiAoeSkpCisjZGVmaW5lCVBKX01JTih4LCB5KQkoKHgpIDwgKHkpPyAoeCkgOiAoeSkpCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIHN0YXRpc3RpY3Mgc3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX21hdGhfc3RhdAoreworICAgIGludAkJICAgICBuOwkJLyogbnVtYmVyIG9mIHNhbXBsZXMJKi8KKyAgICBpbnQJCSAgICAgbWF4OwkvKiBtYXhpbXVtIHZhbHVlCSovCisgICAgaW50CQkgICAgIG1pbjsJLyogbWluaW11bSB2YWx1ZQkqLworICAgIGludAkJICAgICBsYXN0OwkvKiBsYXN0IHZhbHVlCQkqLworICAgIGludAkJICAgICBtZWFuOwkvKiBtZWFuCQkJKi8KKworICAgIC8qIFByaXZhdGUgbWVtYmVycyAqLworI2lmIFBKX0hBU19GTE9BVElOR19QT0lOVAorICAgIGZsb2F0CSAgICAgZm1lYW5fOwkvKiBtZWFuKGZsb2F0aW5nIHBvaW50KSAqLworI2Vsc2UKKyAgICBpbnQJCSAgICAgbWVhbl9yZXNfOwkvKiBtZWFuIHJlc2lkdQkJKi8KKyNlbmRpZgorICAgIHBqX2hpZ2hwcmVjX3QgICAgbTJfOwkvKiB2YXJpYW5jZSAqIG4JCSovCit9IHBqX21hdGhfc3RhdDsKKworLyoqCisgKiBDYWxjdWxhdGUgaW50ZWdlciBzcXVhcmUgcm9vdCBvZiBhbiBpbnRlZ2VyLgorICoKKyAqIEBwYXJhbSBpICAgICAgICAgSW50ZWdlciB0byBiZSBjYWxjdWxhdGVkLgorICoKKyAqIEByZXR1cm4gICAgICAgICAgU3F1YXJlIHJvb3QgcmVzdWx0LgorICovCitQSl9JTkxJTkUodW5zaWduZWQpIHBqX2lzcXJ0KHVuc2lnbmVkIGkpCit7CisgICAgdW5zaWduZWQgcmVzID0gMSwgcHJldjsKKyAgICAKKyAgICAvKiBSb3VnaCBndWVzcywgY2FsY3VsYXRlIGhhbGYgYml0IG9mIGlucHV0ICovCisgICAgcHJldiA9IGkgPj4gMjsKKyAgICB3aGlsZSAocHJldikgeworCXByZXYgPj49IDI7CisJcmVzIDw8PSAxOworICAgIH0KKworICAgIC8qIEJhYmlsb25pYW4gbWV0aG9kICovCisgICAgZG8geworCXByZXYgPSByZXM7CisJcmVzID0gKHByZXYgKyBpL3ByZXYpID4+IDE7CisgICAgfSB3aGlsZSAoKHByZXYrcmVzKT4+MSAhPSByZXMpOworCisgICAgcmV0dXJuIHJlczsKK30KKworLyoqCisgKiBJbml0aWFsaXplIHN0YXRpc3RpY3Mgc3RhdGUuCisgKgorICogQHBhcmFtIHN0YXQJICAgIFN0YXRpc3RpYyBzdGF0ZS4KKyAqLworUEpfSU5MSU5FKHZvaWQpIHBqX21hdGhfc3RhdF9pbml0KHBqX21hdGhfc3RhdCAqc3RhdCkKK3sKKyAgICBwal9iemVybyhzdGF0LCBzaXplb2YocGpfbWF0aF9zdGF0KSk7Cit9CisKKy8qKgorICogVXBkYXRlIHN0YXRpc3RpY3Mgc3RhdGUgYXMgYSBuZXcgc2FtcGxlIGNvbWVzLgorICoKKyAqIEBwYXJhbSBzdGF0CSAgICBTdGF0aXN0aWMgc3RhdGUuCisgKiBAcGFyYW0gdmFsCSAgICBUaGUgbmV3IHNhbXBsZSBkYXRhLgorICovCitQSl9JTkxJTkUodm9pZCkgcGpfbWF0aF9zdGF0X3VwZGF0ZShwal9tYXRoX3N0YXQgKnN0YXQsIGludCB2YWwpCit7CisjaWYgUEpfSEFTX0ZMT0FUSU5HX1BPSU5UCisgICAgZmxvYXQJICAgICBkZWx0YTsKKyNlbHNlCisgICAgaW50CQkgICAgIGRlbHRhOworI2VuZGlmCisKKyAgICBzdGF0LT5sYXN0ID0gdmFsOworICAgIAorICAgIGlmIChzdGF0LT5uKyspIHsKKwlpZiAoc3RhdC0+bWluID4gdmFsKQorCSAgICBzdGF0LT5taW4gPSB2YWw7CisJaWYgKHN0YXQtPm1heCA8IHZhbCkKKwkgICAgc3RhdC0+bWF4ID0gdmFsOworICAgIH0gZWxzZSB7CisJc3RhdC0+bWluID0gc3RhdC0+bWF4ID0gdmFsOworICAgIH0KKworI2lmIFBKX0hBU19GTE9BVElOR19QT0lOVAorICAgIGRlbHRhID0gdmFsIC0gc3RhdC0+Zm1lYW5fOworICAgIHN0YXQtPmZtZWFuXyArPSBkZWx0YS9zdGF0LT5uOworICAgIAorICAgIC8qIFJldHVybiBtZWFuIHZhbHVlIHdpdGggJ3JvdW5kaW5nJyAqLworICAgIHN0YXQtPm1lYW4gPSAoaW50KSAoc3RhdC0+Zm1lYW5fICsgMC41KTsKKworICAgIHN0YXQtPm0yXyArPSAoaW50KShkZWx0YSAqICh2YWwtc3RhdC0+Zm1lYW5fKSk7CisjZWxzZQorICAgIGRlbHRhID0gdmFsIC0gc3RhdC0+bWVhbjsKKyAgICBzdGF0LT5tZWFuICs9IGRlbHRhL3N0YXQtPm47CisgICAgc3RhdC0+bWVhbl9yZXNfICs9IGRlbHRhICUgc3RhdC0+bjsKKyAgICBpZiAoc3RhdC0+bWVhbl9yZXNfID49IHN0YXQtPm4pIHsKKwkrK3N0YXQtPm1lYW47CisJc3RhdC0+bWVhbl9yZXNfIC09IHN0YXQtPm47CisgICAgfSBlbHNlIGlmIChzdGF0LT5tZWFuX3Jlc18gPD0gLXN0YXQtPm4pIHsKKwktLXN0YXQtPm1lYW47CisJc3RhdC0+bWVhbl9yZXNfICs9IHN0YXQtPm47CisgICAgfQorCisgICAgc3RhdC0+bTJfICs9IGRlbHRhICogKHZhbC1zdGF0LT5tZWFuKTsKKyNlbmRpZgorfQorCisvKioKKyAqIEdldCB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIHNwZWNpZmllZCBzdGF0aXN0aWNzIHN0YXRlLgorICoKKyAqIEBwYXJhbSBzdGF0CSAgICBTdGF0aXN0aWMgc3RhdGUuCisgKgorICogQHJldHVybgkgICAgVGhlIHN0YW5kYXJkIGRldmlhdGlvbi4KKyAqLworUEpfSU5MSU5FKHVuc2lnbmVkKSBwal9tYXRoX3N0YXRfZ2V0X3N0ZGRldihjb25zdCBwal9tYXRoX3N0YXQgKnN0YXQpCit7CisgICAgaWYgKHN0YXQtPm4gPT0gMCkgcmV0dXJuIDA7CisgICAgcmV0dXJuIChwal9pc3FydCgodW5zaWduZWQpKHN0YXQtPm0yXy9zdGF0LT5uKSkpOworfQorCisvKioKKyAqIFNldCB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIHN0YXRpc3RpY3Mgc3RhdGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4KKyAqIHRoZSBzdGF0aXN0aWMgc3RhdGUgaXMgb3BlcmF0ZWQgaW4gJ3JlYWQtb25seScgbW9kZSBhcyBhIHN0b3JhZ2Ugb2YgCisgKiBzdGF0aXN0aWNhbCBkYXRhLgorICoKKyAqIEBwYXJhbSBzdGF0CSAgICBTdGF0aXN0aWMgc3RhdGUuCisgKgorICogQHBhcmFtIGRldgkgICAgVGhlIHN0YW5kYXJkIGRldmlhdGlvbi4KKyAqLworUEpfSU5MSU5FKHZvaWQpIHBqX21hdGhfc3RhdF9zZXRfc3RkZGV2KHBqX21hdGhfc3RhdCAqc3RhdCwgdW5zaWduZWQgZGV2KQoreworICAgIGlmIChzdGF0LT5uID09IDApIAorCXN0YXQtPm4gPSAxOworICAgIHN0YXQtPm0yXyA9IGRldipkZXYqc3RhdC0+bjsKK30KKworLyoqIEB9ICovCisKK1BKX0VORF9ERUNMCisKKyNlbmRpZiAvKiBfX1BKX01BVEhfSF9fICovCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL29zLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL29zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTczM2JiOQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovb3MuaApAQCAtMCwwICsxLDE0NzYgQEAKKy8qICRJZDogb3MuaCAzNjY0IDIwMTEtMDctMTkgMDM6NDI6MjhaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX09TX0hfXworI2RlZmluZSBfX1BKX09TX0hfXworCisvKioKKyAqIEBmaWxlIG9zLmgKKyAqIEBicmllZiBPUyBkZXBlbmRlbnQgZnVuY3Rpb25zCisgKi8KKyNpbmNsdWRlIDxwai90eXBlcy5oPgorCitQSl9CRUdJTl9ERUNMCisKKy8qKgorICogQGRlZmdyb3VwIFBKX09TIE9wZXJhdGluZyBTeXN0ZW0gRGVwZW5kZW50IEZ1bmN0aW9uYWxpdHkuCisgKi8KKworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogQGRlZmdyb3VwIFBKX1NZU19JTkZPIFN5c3RlbSBJbmZvcm1hdGlvbgorICogQGluZ3JvdXAgUEpfT1MKKyAqIEB7CisgKi8KKworLyoqCisgKiBUaGVzZSBlbnVtZXJhdGlvbiBjb250YWlucyBjb25zdGFudHMgdG8gaW5kaWNhdGUgc3VwcG9ydCBvZiBtaXNjZWxsYW5lb3VzCisgKiBzeXN0ZW0gZmVhdHVyZXMuIFRoZXNlIHdpbGwgZ28gaW4gImZsYWdzIiBmaWVsZCBvZiAjcGpfc3lzX2luZm8gc3RydWN0dXJlLgorICovCit0eXBlZGVmIGVudW0gcGpfc3lzX2luZm9fZmxhZworeworICAgIC8qKgorICAgICAqIFN1cHBvcnQgZm9yIEFwcGxlIGlPUyBiYWNrZ3JvdW5kIGZlYXR1cmUuCisgICAgICovCisgICAgUEpfU1lTX0hBU19JT1NfQkcgPSAxCisKK30gcGpfc3lzX2luZm9fZmxhZzsKKworCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzeXN0ZW0uIFVzZSAjcGpfZ2V0X3N5c19pbmZvKCkKKyAqIHRvIG9idGFpbiB0aGUgc3lzdGVtIGluZm9ybWF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9zeXNfaW5mbworeworICAgIC8qKgorICAgICAqIE51bGwgdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyBwcm9jZXNzb3IgaW5mb3JtYXRpb24gKGUuZy4gImkzODYiLAorICAgICAqICJ4ODZfNjQiKS4gSXQgbWF5IGNvbnRhaW4gZW1wdHkgc3RyaW5nIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgb2J0YWluZWQuCisgICAgICovCisgICAgcGpfc3RyX3QJbWFjaGluZTsKKworICAgIC8qKgorICAgICAqIE51bGwgdGVybWluYXRlZCBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHN5c3RlbSBvcGVyYXRpb24gKGUuZy4gIkxpbnV4IiwKKyAgICAgKiAid2luMzIiLCAid2luY2UiKS4gSXQgbWF5IGNvbnRhaW4gZW1wdHkgc3RyaW5nIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUKKyAgICAgKiBvYnRhaW5lZC4KKyAgICAgKi8KKyAgICBwal9zdHJfdAlvc19uYW1lOworCisgICAgLyoqCisgICAgICogQSBudW1iZXIgY29udGFpbmluZyB0aGUgb3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9uIG51bWJlci4gQnkgY29udmVudGlvbiwKKyAgICAgKiB0aGlzIGZpZWxkIGlzIGRpdmlkZWQgaW50byBmb3VyIGJ5dGVzLCB3aGVyZSB0aGUgaGlnaGVzdCBvcmRlciBieXRlCisgICAgICogY29udGFpbnMgdGhlIG1vc3QgbWFqb3IgdmVyc2lvbiBvZiB0aGUgT1MsIHRoZSBuZXh0IGxlc3Mgc2lnbmlmaWNhbnQKKyAgICAgKiBieXRlIGNvbnRhaW5zIHRoZSBsZXNzIG1ham9yIHZlcnNpb24sIGFuZCBzbyBvbi4gSG93IHRoZSBPUyB2ZXJzaW9uCisgICAgICogbnVtYmVyIGlzIG1hcHBlZCBpbnRvIHRoZXNlIGZvdXIgYnl0ZXMgd291bGQgYmUgc3BlY2lmaWMgZm9yIGVhY2ggT1MuCisgICAgICogRm9yIGV4YW1wbGUsIExpbnV4LTIuNi4zMi0yOCB3b3VsZCB5aWVsZCAib3NfdmVyIiB2YWx1ZSBvZiAweDAyMDYyMDFjLAorICAgICAqIHdoaWxlIGZvciBXaW5kb3dzIDcgaXQgd2lsbCBiZSAweDA2MDEwMDAwIChiZWNhdXNlIGR3TWFqb3JWZXJzaW9uIGlzCisgICAgICogNiBhbmQgZHdNaW5vclZlcnNpb24gaXMgMSBmb3IgV2luZG93cyA3KS4KKyAgICAgKgorICAgICAqIFRoaXMgZmllbGQgbWF5IGNvbnRhaW4gemVybyBpZiB0aGUgT1MgdmVyc2lvbiBjYW5ub3QgYmUgb2J0YWluZWQuCisgICAgICovCisgICAgcGpfdWludDMyX3QJb3NfdmVyOworCisgICAgLyoqCisgICAgICogTnVsbCB0ZXJtaW5hdGVkIHN0cmluZyBpZGVudGlmeWluZyB0aGUgU0RLIG5hbWUgdGhhdCBpcyB1c2VkIHRvIGJ1aWxkCisgICAgICogdGhlIGxpYnJhcnkgKGUuZy4gImdsaWJjIiwgInVjbGliYyIsICJtc3ZjIiwgIndpbmNlIikuIEl0IG1heSBjb250YWluCisgICAgICogZW1wdHkgc3RyaW5nIGlmIHRoZSB2YWx1ZSBjYW5ub3QgZWIgb2J0YWluZWQuCisgICAgICovCisgICAgcGpfc3RyX3QJc2RrX25hbWU7CisKKyAgICAvKioKKyAgICAgKiBBIG51bWJlciBjb250YWluaW5nIHRoZSBTREsgdmVyc2lvbiwgdXNpbmcgdGhlIG51bWJlcmluZyBjb252ZW50aW9uIGFzCisgICAgICogdGhlICJvc192ZXIiIGZpZWxkLiBUaGUgdmFsdWUgd2lsbCBiZSB6ZXJvIGlmIHRoZSB2ZXJzaW9uIGNhbm5vdCBiZQorICAgICAqIG9idGFpbmVkLgorICAgICAqLworICAgIHBqX3VpbnQzMl90CXNka192ZXI7CisKKyAgICAvKioKKyAgICAgKiBBIGxvbmdlciBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSB1bmRlcmx5aW5nIHN5c3RlbSB3aXRoCisgICAgICogYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZS4KKyAgICAgKi8KKyAgICBwal9zdHJfdAlpbmZvOworCisgICAgLyoqCisgICAgICogT3RoZXIgZmxhZ3MgY29udGFpbmluZyBzeXN0ZW0gc3BlY2lmaWMgaW5mb3JtYXRpb24uIFRoZSB2YWx1ZSBpcworICAgICAqIGJpdG1hc2sgb2YgI3BqX3N5c19pbmZvX2ZsYWcgY29uc3RhbnRzLgorICAgICAqLworICAgIHBqX3VpbnQzMl90CWZsYWdzOworCit9IHBqX3N5c19pbmZvOworCisKKy8qKgorICogT2J0YWluIHRoZSBzeXN0ZW0gaW5mb3JtYXRpb24uCisgKgorICogQHJldHVybglTeXN0ZW0gaW5mb3JtYXRpb24gc3RydWN0dXJlLgorICovCitQSl9ERUNMKGNvbnN0IHBqX3N5c19pbmZvKikgcGpfZ2V0X3N5c19pbmZvKHZvaWQpOworCisvKgorICogQH0KKyAqLworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogQGRlZmdyb3VwIFBKX1RIUkVBRCBUaHJlYWRzCisgKiBAaW5ncm91cCBQSl9PUworICogQHsKKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG11bHRpdGhyZWFkaW5nIEFQSS4KKyAqCisgKiBcc2VjdGlvbiBwal90aHJlYWRfZXhhbXBsZXNfc2VjIEV4YW1wbGVzCisgKgorICogRm9yIGV4YW1wbGVzLCBwbGVhc2Ugc2VlOgorICogIC0gXHJlZiBwYWdlX3BqbGliX3RocmVhZF90ZXN0CisgKiAgLSBccmVmIHBhZ2VfcGpsaWJfc2xlZXBfdGVzdAorICoKKyAqLworCisvKioKKyAqIFRocmVhZCBjcmVhdGlvbiBmbGFnczoKKyAqIC0gUEpfVEhSRUFEX1NVU1BFTkRFRDogc3BlY2lmeSB0aGF0IHRoZSB0aHJlYWQgc2hvdWxkIGJlIGNyZWF0ZWQgc3VzcGVuZGVkLgorICovCit0eXBlZGVmIGVudW0gcGpfdGhyZWFkX2NyZWF0ZV9mbGFncworeworICAgIFBKX1RIUkVBRF9TVVNQRU5ERUQgPSAxCit9IHBqX3RocmVhZF9jcmVhdGVfZmxhZ3M7CisKKworLyoqCisgKiBUeXBlIG9mIHRocmVhZCBlbnRyeSBmdW5jdGlvbi4KKyAqLwordHlwZWRlZiBpbnQgKFBKX1RIUkVBRF9GVU5DIHBqX3RocmVhZF9wcm9jKSh2b2lkKik7CisKKy8qKgorICogU2l6ZSBvZiB0aHJlYWQgc3RydWN0LgorICovCisjaWYgIWRlZmluZWQoUEpfVEhSRUFEX0RFU0NfU0laRSkKKyMgICBkZWZpbmUgUEpfVEhSRUFEX0RFU0NfU0laRQkgICAgKDY0KQorI2VuZGlmCisKKy8qKgorICogVGhyZWFkIHN0cnVjdHVyZSwgdG8gdGhyZWFkJ3Mgc3RhdGUgd2hlbiB0aGUgdGhyZWFkIGlzIGNyZWF0ZWQgYnkgZXh0ZXJuYWwKKyAqIG9yIG5hdGl2ZSBBUEkuIAorICovCit0eXBlZGVmIGxvbmcgcGpfdGhyZWFkX2Rlc2NbUEpfVEhSRUFEX0RFU0NfU0laRV07CisKKy8qKgorICogR2V0IHByb2Nlc3MgSUQuCisgKiBAcmV0dXJuIHByb2Nlc3MgSUQuCisgKi8KK1BKX0RFQ0wocGpfdWludDMyX3QpIHBqX2dldHBpZCh2b2lkKTsKKworLyoqCisgKiBDcmVhdGUgYSBuZXcgdGhyZWFkLgorICoKKyAqIEBwYXJhbSBwb29sICAgICAgICAgIFRoZSBtZW1vcnkgcG9vbCBmcm9tIHdoaWNoIHRoZSB0aHJlYWQgcmVjb3JkIAorICogICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBhbGxvY2F0ZWQgZnJvbS4KKyAqIEBwYXJhbSB0aHJlYWRfbmFtZSAgIFRoZSBvcHRpb25hbCBuYW1lIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSB0aHJlYWQuCisgKiBAcGFyYW0gcHJvYyAgICAgICAgICBUaHJlYWQgZW50cnkgZnVuY3Rpb24uCisgKiBAcGFyYW0gYXJnICAgICAgICAgICBBcmd1bWVudCB0byBiZSBwYXNzZWQgdG8gdGhlIHRocmVhZCBlbnRyeSBmdW5jdGlvbi4KKyAqIEBwYXJhbSBzdGFja19zaXplICAgIFRoZSBzaXplIG9mIHRoZSBzdGFjayBmb3IgdGhlIG5ldyB0aHJlYWQsIG9yIFpFUk8gb3IKKyAqICAgICAgICAgICAgICAgICAgICAgIFBKX1RIUkVBRF9ERUZBVUxUX1NUQUNLX1NJWkUgdG8gbGV0IHRoZSAKKyAqCQkgICAgICAgIGxpYnJhcnkgY2hvb3NlIHRoZSByZWFzb25hYmxlIHNpemUgZm9yIHRoZSBzdGFjay4gCisgKiAgICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBzeXN0ZW1zLCB0aGUgc3RhY2sgd2lsbCBiZSBhbGxvY2F0ZWQgZnJvbSAKKyAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBwb29sLCBzbyB0aGUgcG9vbCBtdXN0IGhhdmUgc3VpdGFibGUgY2FwYWNpdHkuCisgKiBAcGFyYW0gZmxhZ3MgICAgICAgICBGbGFncyBmb3IgdGhyZWFkIGNyZWF0aW9uLCB3aGljaCBpcyBiaXRtYXNrIGNvbWJpbmF0aW9uIAorICogICAgICAgICAgICAgICAgICAgICAgZnJvbSBlbnVtIHBqX3RocmVhZF9jcmVhdGVfZmxhZ3MuCisgKiBAcGFyYW0gdGhyZWFkICAgICAgICBQb2ludGVyIHRvIGhvbGQgdGhlIG5ld2x5IGNyZWF0ZWQgdGhyZWFkLgorICoKKyAqIEByZXR1cm4JICAgICAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal90aHJlYWRfY3JlYXRlKCAgcGpfcG9vbF90ICpwb29sLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0aHJlYWRfbmFtZSwKKwkJCQkgICAgICAgIHBqX3RocmVhZF9wcm9jICpwcm9jLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcsCisJCQkJICAgICAgICBwal9zaXplX3Qgc3RhY2tfc2l6ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxhZ3MsCisJCQkJCXBqX3RocmVhZF90ICoqdGhyZWFkICk7CisKKy8qKgorICogUmVnaXN0ZXIgYSB0aHJlYWQgdGhhdCB3YXMgY3JlYXRlZCBieSBleHRlcm5hbCBvciBuYXRpdmUgQVBJIHRvIFBKTElCLgorICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgdGhyZWFkIGJlaW5nIHJlZ2lzdGVyZWQuCisgKiBXaGVuIHRoZSB0aHJlYWQgaXMgY3JlYXRlZCBieSBleHRlcm5hbCBmdW5jdGlvbiBvciBBUEkgY2FsbCwKKyAqIGl0IG11c3QgYmUgJ3JlZ2lzdGVyZWQnIHRvIFBKTElCIHVzaW5nIHBqX3RocmVhZF9yZWdpc3RlcigpLCBzbyB0aGF0IGl0IGNhbgorICogY29vcGVyYXRlIHdpdGggUEpMSUIncyBmcmFtZXdvcmsuIER1cmluZyByZWdpc3RyYXRpb24sIHNvbWUgZGF0YSBuZWVkcyB0bworICogYmUgbWFpbnRhaW5lZCwgYW5kIHRoaXMgZGF0YSBtdXN0IHJlbWFpbiBhdmFpbGFibGUgZHVyaW5nIHRoZSB0aHJlYWQncyAKKyAqIGxpZmV0aW1lLgorICoKKyAqIEBwYXJhbSB0aHJlYWRfbmFtZSAgIFRoZSBvcHRpb25hbCBuYW1lIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSB0aHJlYWQuCisgKiBAcGFyYW0gZGVzYyAgICAgICAgICBUaHJlYWQgZGVzY3JpcHRvciwgd2hpY2ggbXVzdCBiZSBhdmFpbGFibGUgdGhyb3VnaG91dCAKKyAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBsaWZldGltZSBvZiB0aGUgdGhyZWFkLgorICogQHBhcmFtIHRocmVhZCAgICAgICAgUG9pbnRlciB0byBob2xkIHRoZSBjcmVhdGVkIHRocmVhZCBoYW5kbGUuCisgKgorICogQHJldHVybiAgICAgICAgICAgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzLCBvciB0aGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfdGhyZWFkX3JlZ2lzdGVyICggY29uc3QgY2hhciAqdGhyZWFkX25hbWUsCisJCQkJCSAgcGpfdGhyZWFkX2Rlc2MgZGVzYywKKwkJCQkJICBwal90aHJlYWRfdCAqKnRocmVhZCk7CisKKy8qKgorICogQ2hlY2sgaWYgdGhpcyB0aHJlYWQgaGFzIGJlZW4gcmVnaXN0ZXJlZCB0byBQSkxJQi4KKyAqCisgKiBAcmV0dXJuCQlOb24temVybyBpZiBpdCBpcyByZWdpc3RlcmVkLgorICovCitQSl9ERUNMKHBqX2Jvb2xfdCkgcGpfdGhyZWFkX2lzX3JlZ2lzdGVyZWQodm9pZCk7CisKKworLyoqCisgKiBHZXQgdGhyZWFkIHByaW9yaXR5IHZhbHVlIGZvciB0aGUgdGhyZWFkLgorICoKKyAqIEBwYXJhbSB0aHJlYWQJVGhyZWFkIGhhbmRsZS4KKyAqCisgKiBAcmV0dXJuCQlUaHJlYWQgcHJpb3JpdHkgdmFsdWUsIG9yIC0xIG9uIGVycm9yLgorICovCitQSl9ERUNMKGludCkgcGpfdGhyZWFkX2dldF9wcmlvKHBqX3RocmVhZF90ICp0aHJlYWQpOworCisKKy8qKgorICogU2V0IHRoZSB0aHJlYWQgcHJpb3JpdHkuIFRoZSBwcmlvcml0eSB2YWx1ZSBtdXN0IGJlIGluIHRoZSBwcmlvcml0eQorICogdmFsdWUgcmFuZ2UsIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCAjcGpfdGhyZWFkX2dldF9wcmlvX21pbigpIGFuZAorICogI3BqX3RocmVhZF9nZXRfcHJpb19tYXgoKSBmdW5jdGlvbnMuCisgKgorICogQHBhcmFtIHRocmVhZAlUaHJlYWQgaGFuZGxlLgorICogQHBhcmFtIHByaW8JCU5ldyBwcmlvcml0eSB0byBiZSBzZXQgdG8gdGhlIHRocmVhZC4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9uIHN1Y2Nlc3Mgb3IgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9zZXRfcHJpbyhwal90aHJlYWRfdCAqdGhyZWFkLCAgaW50IHByaW8pOworCisvKioKKyAqIEdldCB0aGUgbG93ZXN0IHByaW9yaXR5IHZhbHVlIGF2YWlsYWJsZSBmb3IgdGhpcyB0aHJlYWQuCisgKgorICogQHBhcmFtIHRocmVhZAlUaHJlYWQgaGFuZGxlLgorICogQHJldHVybgkJTWluaW11bSB0aHJlYWQgcHJpb3JpdHkgdmFsdWUsIG9yIC0xIG9uIGVycm9yLgorICovCitQSl9ERUNMKGludCkgcGpfdGhyZWFkX2dldF9wcmlvX21pbihwal90aHJlYWRfdCAqdGhyZWFkKTsKKworCisvKioKKyAqIEdldCB0aGUgaGlnaGVzdCBwcmlvcml0eSB2YWx1ZSBhdmFpbGFibGUgZm9yIHRoaXMgdGhyZWFkLgorICoKKyAqIEBwYXJhbSB0aHJlYWQJVGhyZWFkIGhhbmRsZS4KKyAqIEByZXR1cm4JCU1pbmltdW0gdGhyZWFkIHByaW9yaXR5IHZhbHVlLCBvciAtMSBvbiBlcnJvci4KKyAqLworUEpfREVDTChpbnQpIHBqX3RocmVhZF9nZXRfcHJpb19tYXgocGpfdGhyZWFkX3QgKnRocmVhZCk7CisKKworLyoqCisgKiBSZXR1cm4gbmF0aXZlIGhhbmRsZSBmcm9tIHBqX3RocmVhZF90IGZvciBtYW5pcHVsYXRpb24gdXNpbmcgbmF0aXZlCisgKiBPUyBBUElzLgorICoKKyAqIEBwYXJhbSB0aHJlYWQJUEpMSUIgdGhyZWFkIGRlc2NyaXB0b3IuCisgKgorICogQHJldHVybgkJTmF0aXZlIHRocmVhZCBoYW5kbGUuIEZvciBleGFtcGxlLCB3aGVuIHRoZQorICoJCQliYWNrZW5kIHRocmVhZCB1c2VzIHB0aHJlYWQsIHRoaXMgZnVuY3Rpb24gd2lsbAorICoJCQlyZXR1cm4gcG9pbnRlciB0byBwdGhyZWFkX3QsIGFuZCBvbiBXaW5kb3dzLAorICoJCQl0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIEhBTkRMRS4KKyAqLworUEpfREVDTCh2b2lkKikgcGpfdGhyZWFkX2dldF9vc19oYW5kbGUocGpfdGhyZWFkX3QgKnRocmVhZCk7CisKKy8qKgorICogR2V0IHRocmVhZCBuYW1lLgorICoKKyAqIEBwYXJhbSB0aHJlYWQgICAgVGhlIHRocmVhZCBoYW5kbGUuCisgKgorICogQHJldHVybiBUaHJlYWQgbmFtZSBhcyBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLgorICovCitQSl9ERUNMKGNvbnN0IGNoYXIqKSBwal90aHJlYWRfZ2V0X25hbWUocGpfdGhyZWFkX3QgKnRocmVhZCk7CisKKy8qKgorICogUmVzdW1lIGEgc3VzcGVuZGVkIHRocmVhZC4KKyAqCisgKiBAcGFyYW0gdGhyZWFkICAgIFRoZSB0aHJlYWQgaGFuZGxlLgorICoKKyAqIEByZXR1cm4gemVybyBvbiBzdWNjZXNzLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal90aHJlYWRfcmVzdW1lKHBqX3RocmVhZF90ICp0aHJlYWQpOworCisvKioKKyAqIEdldCB0aGUgY3VycmVudCB0aHJlYWQuCisgKgorICogQHJldHVybiBUaHJlYWQgaGFuZGxlIG9mIGN1cnJlbnQgdGhyZWFkLgorICovCitQSl9ERUNMKHBqX3RocmVhZF90KikgcGpfdGhyZWFkX3RoaXModm9pZCk7CisKKy8qKgorICogSm9pbiB0aHJlYWQsIGFuZCBibG9jayB0aGUgY2FsbGVyIHRocmVhZCB1bnRpbCB0aGUgc3BlY2lmaWVkIHRocmVhZCBleGl0cy4KKyAqIElmIHRoZSBzcGVjaWZpZWQgdGhyZWFkIGhhcyBhbHJlYWR5IGJlZW4gZGVhZCwgb3IgaXQgZG9lcyBub3QgZXhpc3QsCisgKiB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgd2l0aCBzdWNjZXNzZnVsbCBzdGF0dXMuCisgKgorICogQHBhcmFtIHRocmVhZCAgICBUaGUgdGhyZWFkIGhhbmRsZS4KKyAqCisgKiBAcmV0dXJuIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2pvaW4ocGpfdGhyZWFkX3QgKnRocmVhZCk7CisKKworLyoqCisgKiBEZXN0cm95IHRocmVhZCBhbmQgcmVsZWFzZSByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciB0aGUgdGhyZWFkLgorICogSG93ZXZlciwgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoZSBwal90aHJlYWRfdCBpdHNlbGYgd2lsbCBvbmx5IGJlIHJlbGVhc2VkCisgKiB3aGVuIHRoZSBwb29sIHVzZWQgdG8gY3JlYXRlIHRoZSB0aHJlYWQgaXMgZGVzdHJveWVkLgorICoKKyAqIEBwYXJhbSB0aHJlYWQgICAgVGhlIHRocmVhZCBoYW5kbGUuCisgKgorICogQHJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9kZXN0cm95KHBqX3RocmVhZF90ICp0aHJlYWQpOworCisKKy8qKgorICogUHV0IHRoZSBjdXJyZW50IHRocmVhZCB0byBzbGVlcCBmb3IgdGhlIHNwZWNpZmllZCBtaWxpc2Vjb25kcy4KKyAqCisgKiBAcGFyYW0gbXNlYyBNaWxpc2Vjb25kcyBkZWxheS4KKyAqCisgKiBAcmV0dXJuIHplcm8gaWYgc3VjY2Vzc2Z1bGwuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9zbGVlcCh1bnNpZ25lZCBtc2VjKTsKKworLyoqCisgKiBAZGVmIFBKX0NIRUNLX1NUQUNLKCkKKyAqIFBKX0NIRUNLX1NUQUNLKCkgbWFjcm8gaXMgdXNlZCB0byBjaGVjayB0aGUgc2FuaXR5IG9mIHRoZSBzdGFjay4KKyAqIFRoZSBPUyBpbXBsZW1lbnRhdGlvbiBtYXkgY2hlY2sgdGhhdCBubyBzdGFjayBvdmVyZmxvdyBvY2N1cnMsIGFuZAorICogaXQgYWxzbyBtYXkgY29sbGVjdCBzdGF0aXN0aWMgYWJvdXQgc3RhY2sgdXNhZ2UuCisgKi8KKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisKKyMgIGRlZmluZSBQSl9DSEVDS19TVEFDSygpIHBqX3RocmVhZF9jaGVja19zdGFjayhfX0ZJTEVfXywgX19MSU5FX18pCisKKy8qKiBAaW50ZXJuYWwKKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdGFjayBjaGVja2luZy4gCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfdGhyZWFkX2NoZWNrX3N0YWNrKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKTsKKworLyoqIEBpbnRlcm5hbAorICogR2V0IG1heGltdW0gc3RhY2sgdXNhZ2Ugc3RhdGlzdGljLiAKKyAqLworUEpfREVDTChwal91aW50MzJfdCkgcGpfdGhyZWFkX2dldF9zdGFja19tYXhfdXNhZ2UocGpfdGhyZWFkX3QgKnRocmVhZCk7CisKKy8qKiBAaW50ZXJuYWwKKyAqIER1bXAgdGhyZWFkIHN0YWNrIHN0YXR1cy4gCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9nZXRfc3RhY2tfaW5mbyhwal90aHJlYWRfdCAqdGhyZWFkLAorCQkJCQkgICAgICBjb25zdCBjaGFyICoqZmlsZSwKKwkJCQkJICAgICAgaW50ICpsaW5lKTsKKyNlbHNlCisKKyMgIGRlZmluZSBQSl9DSEVDS19TVEFDSygpCisvKiogcGpfdGhyZWFkX2dldF9zdGFja19tYXhfdXNhZ2UoKSBmb3IgdGhlIHRocmVhZCAqLworIyAgZGVmaW5lIHBqX3RocmVhZF9nZXRfc3RhY2tfbWF4X3VzYWdlKHRocmVhZCkJICAgIDAKKy8qKiBwal90aHJlYWRfZ2V0X3N0YWNrX2luZm8oKSBmb3IgdGhlIHRocmVhZCAqLworIyAgZGVmaW5lIHBqX3RocmVhZF9nZXRfc3RhY2tfaW5mbyh0aHJlYWQsZixsKQkgICAgKCooZik9IiIsKihsKT0wKQorI2VuZGlmCS8qIFBKX09TX0hBU19DSEVDS19TVEFDSyAqLworCisvKioKKyAqIEB9CisgKi8KKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIEBkZWZncm91cCBQSl9TWU1CSUFOX09TIFN5bWJpYW4gT1MgU3BlY2lmaWMKKyAqIEBpbmdyb3VwIFBKX09TCisgKiBAeworICogRnVuY3Rpb25hbGl0aWVzIHNwZWNpZmljIHRvIFN5bWJpYW4gT1MuCisgKgorICogU3ltYmlhbiBPUyBzdHJvbmdseSBkaXNjb3VyYWdlcyB0aGUgdXNlIG9mIHBvbGxpbmcgc2luY2UgdGhpcyB3YXN0ZXMKKyAqIENQVSBwb3dlciwgYW5kIGluc3RlYWQgcHJvdmlkZXMgQWN0aXZlIE9iamVjdCBhbmQgQWN0aXZlIFNjaGVkdWxlcgorICogcGF0dGVybiB0byBhbGxvdyBhcHBsaWNhdGlvbiAoaW4gdGhpcyBjYXNlLCBQSkxJQikgdG8gcmVnaXN0ZXIgYXN5bmNocm9ub3VzCisgKiB0YXNrcy4gUEpMSUIgcG9ydCBmb3IgU3ltYmlhbiBjb21wbGllcyB0byB0aGlzIHJlY29tbWVuZGVkIGJlaGF2aW9yLgorICogQXMgdGhlIHJlc3VsdCwgZmV3IHRoaW5ncyBoYXZlIGJlZW4gY2hhbmdlZCBpbiBQSkxJQiBmb3IgU3ltYmlhbjoKKyAqCS0gdGhlIHRpbWVyIGhlYXAgKHNlZSBAcmVmIFBKX1RJTUVSKSBpcyBpbXBsZW1lbnRlZCB3aXRoIGFjdGl2ZQorICoJICBvYmplY3QgZnJhbWV3b3JrLCBhbmQgZWFjaCB0aW1lciBlbnRyeSByZWdpc3RlcmVkIHRvIHRoZSB0aW1lciAKKyAqCSAgaGVhcCB3aWxsIHJlZ2lzdGVyIGFuIEFjdGl2ZSBPYmplY3QgdG8gdGhlIEFjdGl2ZSBTY2hlZHVsZXIuCisgKgkgIEJlY2F1c2Ugb2YgdGhpcywgcG9sbGluZyB0aGUgdGltZXIgaGVhcCB3aXRoIHBqX3RpbWVyX2hlYXBfcG9sbCgpCisgKgkgIGlzIG5vIGxvbmdlciBuZWNlc3NhcnksIGFuZCB0aGlzIGZ1bmN0aW9uIHdpbGwganVzdCBldmFsdWF0ZQorICoJICB0byBub3RoaW5nLgorICoJLSB0aGUgaW9xdWV1ZSAoc2VlIEByZWYgUEpfSU9RVUVVRSkgaXMgYWxzbyBpbXBsZW1lbnRlZCB3aXRoCisgKgkgIGFjdGl2ZSBvYmplY3QgZnJhbWV3b3JrLCB3aXRoIGVhY2ggYXN5bmNocm9ub3VzIG9wZXJhdGlvbiB3aWxsCisgKgkgIHJlZ2lzdGVyIGFuIEFjdGl2ZSBPYmplY3QgdG8gdGhlIEFjdGl2ZSBTY2hlZHVsZXIuIEJlY2F1c2Ugb2YKKyAqCSAgdGhpcywgcG9sbGluZyB0aGUgaW9xdWV1ZSB3aXRoIHBqX2lvcXVldWVfcG9sbCgpIGlzIG5vIGxvbmdlcgorICoJICBuZWNlc3NhcnksIGFuZCB0aGlzIGZ1bmN0aW9uIHdpbGwganVzdCBldmFsdWF0ZSB0byBub3RoaW5nLgorICoKKyAqIFNpbmNlIHRpbWVyIGhlYXAgYW5kIGlvcXVldWUgcG9sbGluZyBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgU3ltYmlhbgorICogYXBwbGljYXRpb24gY2FuIG5vdyBwb2xsIGZvciBhbGwgZXZlbnRzIGJ5IGNhbGxpbmcgCisgKiBcYSBVc2VyOjpXYWl0Rm9yQW55UmVxdWVzdCgpIGFuZCBcYSBDQWN0aXZlU2NoZWR1bGVyOjpSdW5JZlJlYWR5KCkuCisgKiBQSkxJQiBwcm92aWRlcyBhIHRoaW4gd3JhcHBlciB3aGljaCBjYWxscyB0aGVzZSB0d28gZnVuY3Rpb25zLAorICogY2FsbGVkIHBqX3N5bWJpYW5vc19wb2xsKCkuCisgKi8KKyAKKy8qKgorICogV2FpdCB0aGUgY29tcGxldGlvbiBvZiBhbnkgU3ltYmlhbiBhY3RpdmUgb2JqZWN0cy4gV2hlbiB0aGUgdGltZW91dAorICogdmFsdWUgaXMgbm90IHNwZWNpZmllZCAodGhlIFxhIG1zX3RpbWVvdXQgYXJndW1lbnQgaXMgLTEpLCB0aGlzIAorICogZnVuY3Rpb24gaXMgYSB0aGluIHdyYXBwZXIgd2hpY2ggY2FsbHMgXGEgVXNlcjo6V2FpdEZvckFueVJlcXVlc3QoKSAKKyAqIGFuZCBcYSBDQWN0aXZlU2NoZWR1bGVyOjpSdW5JZlJlYWR5KCkuIElmIHRoZSB0aW1lb3V0IHZhbHVlIGlzCisgKiBzcGVjaWZpZWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBzY2hlZHVsZSBhIHRpbWVyIGVudHJ5IHRvIHRoZSB0aW1lcgorICogaGVhcCAod2hpY2ggaXMgYW4gQWN0aXZlIE9iamVjdCksIHRvIGxpbWl0IHRoZSB3YWl0IHRpbWUgZm9yIGV2ZW50CisgKiBvY2N1cmVuY2VzLiBTY2hlZHVsaW5nIGEgdGltZXIgZW50cnkgaXMgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbiwKKyAqIHRoZXJlZm9yZSBhcHBsaWNhdGlvbiBzaG91bGQgb25seSBzcGVjaWZ5IGEgdGltZW91dCB2YWx1ZSB3aGVuIGl0J3MKKyAqIHJlYWxseSBuZWNlc3NhcnkgKGZvciBleGFtcGxlLCB3aGVuIGl0J3Mgbm90IHN1cmUgdGhlcmUgYXJlIG90aGVyCisgKiBBY3RpdmUgT2JqZWN0cyBjdXJyZW50bHkgcnVubmluZyBpbiB0aGUgYXBwbGljYXRpb24pLgorICoKKyAqIEBwYXJhbSBwcmlvcml0eQlUaGUgbWluaW11bSBwcmlvcml0eSBvZiB0aGUgQWN0aXZlIE9iamVjdHMgdG8KKyAqCQkJcG9sbCwgd2hpY2ggdmFsdWVzIGFyZSBmcm9tIENBY3RpdmU6OlRQcmlvcml0eQorICoJCQljb25zdGFudHMuIElmIC0xIGlzIGdpdmVuLCBDQWN0aXZlOjpFUHJpb3JpdHlTdGFuZGFyZC4KKyAqCQkJcHJpb3JpdHkgd2lsbCBiZSB1c2VkLgorICogQHBhcmFtIG1zX3RpbWVvdXQJT3B0aW9uYWwgdGltZW91dCB0byB3YWl0LiBBcHBsaWNhdGlvbiBzaG91bGQKKyAqCQkJc3BlY2lmeSAtMSB0byBsZXQgdGhlIGZ1bmN0aW9uIHdhaXQgaW5kZWZpbml0ZWx5CisgKgkJCWZvciBhbnkgZXZlbnRzLgorICoKKyAqIEByZXR1cm4JCVBKX1RSVUUgaWYgdGhlcmUgaGF2ZSBiZWVuIGFueSBldmVudHMgZXhlY3V0ZWQKKyAqCQkJZHVyaW5nIHRoZSBwb2xsaW5nLiBUaGlzIGZ1bmN0aW9uIHdpbGwgb25seSByZXR1cm4KKyAqCQkJUEpfRkFMU0UgaWYgXGEgbXNfdGltZW91dCBhcmd1bWVudCBpcyBzcGVjaWZpZWQKKyAqCQkJKGkuZS4gdGhlIHZhbHVlIGlzIG5vdCAtMSkgYW5kIHRoZXJlIHdhcyBubyBldmVudAorICoJCQlleGVjdXRlZCB3aGVuIHRoZSB0aW1lb3V0IHRpbWVyIGVsYXBzZWQuCisgKi8KK1BKX0RFQ0wocGpfYm9vbF90KSBwal9zeW1iaWFub3NfcG9sbChpbnQgcHJpb3JpdHksIGludCBtc190aW1lb3V0KTsKKworCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIGRlY2xhcmVzIFN5bWJpYW4gT1Mgc3BlY2lmaWMgcGFyYW1ldGVycyB0aGF0IGNhbiBiZQorICogc3BlY2lmaWVkIHdoZW4gY2FsbGluZyAjcGpfc3ltYmlhbm9zX3NldF9wYXJhbXMoKS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfc3ltYmlhbm9zX3BhcmFtcyAKK3sKKyAgICAvKioKKyAgICAgKiBPcHRpb25hbCBSU29ja2V0U2VydiBpbnN0YW5jZSB0byBiZSB1c2VkIGJ5IFBKTElCLiBJZiB0aGlzCisgICAgICogdmFsdWUgaXMgTlVMTCwgUEpMSUIgd2lsbCBjcmVhdGUgYSBuZXcgUlNvY2tldFNlcnYgaW5zdGFuY2UKKyAgICAgKiB3aGVuIHBqX2luaXQoKSBpcyBjYWxsZWQuCisgICAgICovCisgICAgdm9pZAkqcnNvY2tldHNlcnY7CisgICAgCisgICAgLyoqCisgICAgICogT3B0aW9uYWwgUkNvbm5lY3Rpb24gaW5zdGFuY2UgdG8gYmUgdXNlZCBieSBQSkxJQiB3aGVuIGNyZWF0aW5nCisgICAgICogc29ja2V0cy4gSWYgdGhpcyB2YWx1ZSBpcyBOVUxMLCBubyBSQ29ubmVjdGlvbiB3aWxsIGJlCisgICAgICogc3BlY2lmaWVkIHdoZW4gY3JlYXRpbmcgc29ja2V0cy4KKyAgICAgKi8KKyAgICB2b2lkCSpyY29ubmVjdGlvbjsKKyAgICAKKyAgICAvKioKKyAgICAgKiBPcHRpb25hbCBSSG9zdFJlc29sdmVyIGluc3RhbmNlIHRvIGJlIHVzZWQgYnkgUEpMSUIuIElmIHRoaXMgdmFsdWUKKyAgICAgKiBpcyBOVUxMLCBhIG5ldyBSSG9zdFJlc29sdmVyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCB3aGVuCisgICAgICogcGpfaW5pdCgpIGlzIGNhbGxlZC4KKyAgICAgKi8KKyAgICB2b2lkIAkqcmhvc3RyZXNvbHZlcjsKKyAgICAgCisgICAgLyoqCisgICAgICogT3B0aW9uYWwgUkhvc3RSZXNvbHZlciBmb3IgSVB2NiBpbnN0YW5jZSB0byBiZSB1c2VkIGJ5IFBKTElCLiAKKyAgICAgKiBJZiB0aGlzIHZhbHVlIGlzIE5VTEwsIGEgbmV3IFJIb3N0UmVzb2x2ZXIgaW5zdGFuY2Ugd2lsbCBiZSBjcmVhdGVkCisgICAgICogd2hlbiBwal9pbml0KCkgaXMgY2FsbGVkLgorICAgICAqLworICAgIHZvaWQgCSpyaG9zdHJlc29sdmVyNjsKKyAgICAgCit9IHBqX3N5bWJpYW5vc19wYXJhbXM7CisKKy8qKgorICogU3BlY2lmeSBTeW1iaWFuIE9TIHBhcmFtZXRlcnMgdG8gYmUgdXNlZCBieSBQSkxJQi4gVGhpcyBmdW5jdGlvbiBNVVNUCisgKiBiZSBjYWxsZWQgYmVmb3JlICNwal9pbml0KCkgaXMgY2FsbGVkLgorICoKKyAqIEBwYXJhbSBwcm0JCVN5bWJpYW4gc3BlY2lmaWMgcGFyYW1ldGVycy4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIGlmIHRoZSBwYXJhbWV0ZXJzIGNhbiBiZSBhcHBsaWVkCisgKgkJCXN1Y2Nlc3NmdWxseS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3ltYmlhbm9zX3NldF9wYXJhbXMocGpfc3ltYmlhbm9zX3BhcmFtcyAqcHJtKTsKKworLyoqCisgKiAgTm90aWZ5IFBKTElCIHRoYXQgdGhlIGFjY2VzcyBwb2ludCBjb25uZWN0aW9uIGhhcyBiZWVuIGRvd24gb3IgdW51c2FibGUKKyAqICBhbmQgUEpMSUIgc2hvdWxkIG5vdCB0cnkgdG8gYWNjZXNzIHRoZSBTeW1iaWFuIHNvY2tldCBBUEkgKGVzcGVjaWFsbHkgb25lcworICogIHRoYXQgc2VuZCBwYWNrZXRzKS4gU2VuZGluZyBwYWNrZXQgd2hlbiBSQ29ubmVjdGlvbiBpcyByZWNvbm5lY3RlZCB0byAKKyAqICBkaWZmZXJlbnQgYWNjZXNzIHBvaW50IG1heSBjYXVzZSB0aGUgV2FpdEZvclJlcXVlc3QoKSBmb3IgdGhlIGZ1bmN0aW9uIHRvIAorICogIGJsb2NrIGluZGVmaW5pdGVseS4KKyAqICAKKyAqICBAcGFyYW0gdXAJCUlmIHNldCB0byBQSl9GQUxTRSBpdCB3aWxsIGNhdXNlIFBKTElCIHRvIG5vdCB0cnkKKyAqICAJCQl0byBhY2Nlc3Mgc29ja2V0IEFQSSwgYW5kIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQKKyAqICAJCQlpbW1lZGlhdGVseSBpbnN0ZWFkLgorICovCitQSl9ERUNMKHZvaWQpIHBqX3N5bWJpYW5vc19zZXRfY29ubmVjdGlvbl9zdGF0dXMocGpfYm9vbF90IHVwKTsKKworLyoqCisgKiBAfQorICovCisgCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogQGRlZmdyb3VwIFBKX1RMUyBUaHJlYWQgTG9jYWwgU3RvcmFnZS4KKyAqIEBpbmdyb3VwIFBKX09TCisgKiBAeworICovCisKKy8qKiAKKyAqIEFsbG9jYXRlIHRocmVhZCBsb2NhbCBzdG9yYWdlIGluZGV4LiBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXQKKyAqIHRoZSBpbmRleCBpcyB6ZXJvLgorICoKKyAqIEBwYXJhbSBpbmRleAkgICAgUG9pbnRlciB0byBob2xkIHRoZSByZXR1cm4gdmFsdWUuCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal90aHJlYWRfbG9jYWxfYWxsb2MobG9uZyAqaW5kZXgpOworCisvKioKKyAqIERlYWxsb2NhdGUgdGhyZWFkIGxvY2FsIHZhcmlhYmxlLgorICoKKyAqIEBwYXJhbSBpbmRleAkgICAgVGhlIHZhcmlhYmxlIGluZGV4LgorICovCitQSl9ERUNMKHZvaWQpIHBqX3RocmVhZF9sb2NhbF9mcmVlKGxvbmcgaW5kZXgpOworCisvKioKKyAqIFNldCB0aGUgdmFsdWUgb2YgdGhyZWFkIGxvY2FsIHZhcmlhYmxlLgorICoKKyAqIEBwYXJhbSBpbmRleAkgICAgVGhlIGluZGV4IG9mIHRoZSB2YXJpYWJsZS4KKyAqIEBwYXJhbSB2YWx1ZQkgICAgVGhlIHZhbHVlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal90aHJlYWRfbG9jYWxfc2V0KGxvbmcgaW5kZXgsIHZvaWQgKnZhbHVlKTsKKworLyoqCisgKiBHZXQgdGhlIHZhbHVlIG9mIHRocmVhZCBsb2NhbCB2YXJpYWJsZS4KKyAqCisgKiBAcGFyYW0gaW5kZXgJICAgIFRoZSBpbmRleCBvZiB0aGUgdmFyaWFibGUuCisgKiBAcmV0dXJuCSAgICBUaGUgdmFsdWUuCisgKi8KK1BKX0RFQ0wodm9pZCopIHBqX3RocmVhZF9sb2NhbF9nZXQobG9uZyBpbmRleCk7CisKKworLyoqCisgKiBAfQorICovCisKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIEBkZWZncm91cCBQSl9BVE9NSUMgQXRvbWljIFZhcmlhYmxlcworICogQGluZ3JvdXAgUEpfT1MKKyAqIEB7CisgKgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgQVBJIHRvIG1hbmlwdWxhdGUgYXRvbWljIHZhcmlhYmxlcy4KKyAqCisgKiBcc2VjdGlvbiBwal9hdG9taWNfZXhhbXBsZXNfc2VjIEV4YW1wbGVzCisgKgorICogRm9yIHNvbWUgZXhhbXBsZSBjb2RlcywgcGxlYXNlIHNlZToKKyAqICAtIEByZWYgcGFnZV9wamxpYl9hdG9taWNfdGVzdAorICovCisKKworLyoqCisgKiBDcmVhdGUgYXRvbWljIHZhcmlhYmxlLgorICoKKyAqIEBwYXJhbSBwb29sCSAgICBUaGUgcG9vbC4KKyAqIEBwYXJhbSBpbml0aWFsICAgVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGF0b21pYyB2YXJpYWJsZS4KKyAqIEBwYXJhbSBhdG9taWMgICAgUG9pbnRlciB0byBob2xkIHRoZSBhdG9taWMgdmFyaWFibGUgdXBvbiByZXR1cm4uCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzLCBvciB0aGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfYXRvbWljX2NyZWF0ZSggcGpfcG9vbF90ICpwb29sLCAKKwkJCQkgICAgICAgcGpfYXRvbWljX3ZhbHVlX3QgaW5pdGlhbCwKKwkJCQkgICAgICAgcGpfYXRvbWljX3QgKiphdG9taWMgKTsKKworLyoqCisgKiBEZXN0cm95IGF0b21pYyB2YXJpYWJsZS4KKyAqCisgKiBAcGFyYW0gYXRvbWljX3Zhcgl0aGUgYXRvbWljIHZhcmlhYmxlLgorICoKKyAqIEByZXR1cm4gUEpfU1VDQ0VTUyBpZiBzdWNjZXNzLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9hdG9taWNfZGVzdHJveSggcGpfYXRvbWljX3QgKmF0b21pY192YXIgKTsKKworLyoqCisgKiBTZXQgdGhlIHZhbHVlIG9mIGFuIGF0b21pYyB0eXBlLCBhbmQgcmV0dXJuIHRoZSBwcmV2aW91cyB2YWx1ZS4KKyAqCisgKiBAcGFyYW0gYXRvbWljX3Zhcgl0aGUgYXRvbWljIHZhcmlhYmxlLgorICogQHBhcmFtIHZhbHVlCQl2YWx1ZSB0byBiZSBzZXQgdG8gdGhlIHZhcmlhYmxlLgorICovCitQSl9ERUNMKHZvaWQpIHBqX2F0b21pY19zZXQoIHBqX2F0b21pY190ICphdG9taWNfdmFyLCAKKwkJCSAgICAgcGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUpOworCisvKioKKyAqIEdldCB0aGUgdmFsdWUgb2YgYW4gYXRvbWljIHR5cGUuCisgKgorICogQHBhcmFtIGF0b21pY192YXIJdGhlIGF0b21pYyB2YXJpYWJsZS4KKyAqCisgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXRvbWljIHZhcmlhYmxlLgorICovCitQSl9ERUNMKHBqX2F0b21pY192YWx1ZV90KSBwal9hdG9taWNfZ2V0KHBqX2F0b21pY190ICphdG9taWNfdmFyKTsKKworLyoqCisgKiBJbmNyZW1lbnQgdGhlIHZhbHVlIG9mIGFuIGF0b21pYyB0eXBlLgorICoKKyAqIEBwYXJhbSBhdG9taWNfdmFyCXRoZSBhdG9taWMgdmFyaWFibGUuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfYXRvbWljX2luYyhwal9hdG9taWNfdCAqYXRvbWljX3Zhcik7CisKKy8qKgorICogSW5jcmVtZW50IHRoZSB2YWx1ZSBvZiBhbiBhdG9taWMgdHlwZSBhbmQgZ2V0IHRoZSByZXN1bHQuCisgKgorICogQHBhcmFtIGF0b21pY192YXIJdGhlIGF0b21pYyB2YXJpYWJsZS4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgICAgICBUaGUgaW5jcmVtZW50ZWQgdmFsdWUuCisgKi8KK1BKX0RFQ0wocGpfYXRvbWljX3ZhbHVlX3QpIHBqX2F0b21pY19pbmNfYW5kX2dldChwal9hdG9taWNfdCAqYXRvbWljX3Zhcik7CisKKy8qKgorICogRGVjcmVtZW50IHRoZSB2YWx1ZSBvZiBhbiBhdG9taWMgdHlwZS4KKyAqCisgKiBAcGFyYW0gYXRvbWljX3Zhcgl0aGUgYXRvbWljIHZhcmlhYmxlLgorICovCitQSl9ERUNMKHZvaWQpIHBqX2F0b21pY19kZWMocGpfYXRvbWljX3QgKmF0b21pY192YXIpOworCisvKioKKyAqIERlY3JlbWVudCB0aGUgdmFsdWUgb2YgYW4gYXRvbWljIHR5cGUgYW5kIGdldCB0aGUgcmVzdWx0LgorICoKKyAqIEBwYXJhbSBhdG9taWNfdmFyCXRoZSBhdG9taWMgdmFyaWFibGUuCisgKgorICogQHJldHVybiAgICAgICAgICAgICAgVGhlIGRlY3JlbWVudGVkIHZhbHVlLgorICovCitQSl9ERUNMKHBqX2F0b21pY192YWx1ZV90KSBwal9hdG9taWNfZGVjX2FuZF9nZXQocGpfYXRvbWljX3QgKmF0b21pY192YXIpOworCisvKioKKyAqIEFkZCBhIHZhbHVlIHRvIGFuIGF0b21pYyB0eXBlLgorICoKKyAqIEBwYXJhbSBhdG9taWNfdmFyCVRoZSBhdG9taWMgdmFyaWFibGUuCisgKiBAcGFyYW0gdmFsdWUJCVZhbHVlIHRvIGJlIGFkZGVkLgorICovCitQSl9ERUNMKHZvaWQpIHBqX2F0b21pY19hZGQoIHBqX2F0b21pY190ICphdG9taWNfdmFyLAorCQkJICAgICBwal9hdG9taWNfdmFsdWVfdCB2YWx1ZSk7CisKKy8qKgorICogQWRkIGEgdmFsdWUgdG8gYW4gYXRvbWljIHR5cGUgYW5kIGdldCB0aGUgcmVzdWx0LgorICoKKyAqIEBwYXJhbSBhdG9taWNfdmFyCVRoZSBhdG9taWMgdmFyaWFibGUuCisgKiBAcGFyYW0gdmFsdWUJCVZhbHVlIHRvIGJlIGFkZGVkLgorICoKKyAqIEByZXR1cm4gICAgICAgICAgICAgIFRoZSByZXN1bHQgYWZ0ZXIgdGhlIGFkZGl0aW9uLgorICovCitQSl9ERUNMKHBqX2F0b21pY192YWx1ZV90KSBwal9hdG9taWNfYWRkX2FuZF9nZXQoIHBqX2F0b21pY190ICphdG9taWNfdmFyLAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBwal9hdG9taWNfdmFsdWVfdCB2YWx1ZSk7CisKKy8qKgorICogQH0KKyAqLworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogQGRlZmdyb3VwIFBKX01VVEVYIE11dGV4ZXMuCisgKiBAaW5ncm91cCBQSl9PUworICogQHsKKyAqCisgKiBNdXRleCBtYW5pcHVsYXRpb24uIEFsdGVybmF0aXZlbHksIGFwcGxpY2F0aW9uIGNhbiB1c2UgaGlnaGVyIGFic3RyYWN0aW9uCisgKiBmb3IgbG9jayBvYmplY3RzLCB3aGljaCBwcm92aWRlcyB1bmlmb3JtIEFQSSBmb3IgYWxsIGtpbmRzIG9mIGxvY2sgCisgKiBtZWNoYW5pc21zLCBpbmNsdWRpbmcgbXV0ZXguIFNlZSBAcmVmIFBKX0xPQ0sgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KKworLyoqCisgKiBNdXRleCB0eXBlczoKKyAqICAtIFBKX01VVEVYX0RFRkFVTFQ6IGRlZmF1bHQgbXV0ZXggdHlwZSwgd2hpY2ggaXMgc3lzdGVtIGRlcGVuZGVudC4KKyAqICAtIFBKX01VVEVYX1NJTVBMRTogbm9uLXJlY3Vyc2l2ZSBtdXRleC4KKyAqICAtIFBKX01VVEVYX1JFQ1VSU0U6IHJlY3Vyc2l2ZSBtdXRleC4KKyAqLwordHlwZWRlZiBlbnVtIHBqX211dGV4X3R5cGVfZQoreworICAgIFBKX01VVEVYX0RFRkFVTFQsCisgICAgUEpfTVVURVhfU0lNUExFLAorICAgIFBKX01VVEVYX1JFQ1VSU0UKK30gcGpfbXV0ZXhfdHlwZV9lOworCisKKy8qKgorICogQ3JlYXRlIG11dGV4IG9mIHRoZSBzcGVjaWZpZWQgdHlwZS4KKyAqCisgKiBAcGFyYW0gcG9vbAkgICAgVGhlIHBvb2wuCisgKiBAcGFyYW0gbmFtZQkgICAgTmFtZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG11dGV4IChmb3IgZGVidWdnaW5nKS4KKyAqIEBwYXJhbSB0eXBlCSAgICBUaGUgdHlwZSBvZiB0aGUgbXV0ZXgsIG9mIHR5cGUgI3BqX211dGV4X3R5cGVfZS4KKyAqIEBwYXJhbSBtdXRleAkgICAgUG9pbnRlciB0byBob2xkIHRoZSByZXR1cm5lZCBtdXRleCBpbnN0YW5jZS4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9tdXRleF9jcmVhdGUocGpfcG9vbF90ICpwb29sLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgICAgaW50IHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX211dGV4X3QgKiptdXRleCk7CisKKy8qKgorICogQ3JlYXRlIHNpbXBsZSwgbm9uLXJlY3Vyc2l2ZSBtdXRleC4KKyAqIFRoaXMgZnVuY3Rpb24gaXMgYSBzaW1wbGUgd3JhcHBlciBmb3IgI3BqX211dGV4X2NyZWF0ZSB0byBjcmVhdGUgCisgKiBub24tcmVjdXJzaXZlIG11dGV4LgorICoKKyAqIEBwYXJhbSBwb29sCSAgICBUaGUgcG9vbC4KKyAqIEBwYXJhbSBuYW1lCSAgICBNdXRleCBuYW1lLgorICogQHBhcmFtIG11dGV4CSAgICBQb2ludGVyIHRvIGhvbGQgdGhlIHJldHVybmVkIG11dGV4IGluc3RhbmNlLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcywgb3IgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX211dGV4X2NyZWF0ZV9zaW1wbGUoIHBqX3Bvb2xfdCAqcG9vbCwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJICAgICBwal9tdXRleF90ICoqbXV0ZXggKTsKKworLyoqCisgKiBDcmVhdGUgcmVjdXJzaXZlIG11dGV4LgorICogVGhpcyBmdW5jdGlvbiBpcyBhIHNpbXBsZSB3cmFwcGVyIGZvciAjcGpfbXV0ZXhfY3JlYXRlIHRvIGNyZWF0ZSAKKyAqIHJlY3Vyc2l2ZSBtdXRleC4KKyAqCisgKiBAcGFyYW0gcG9vbAkgICAgVGhlIHBvb2wuCisgKiBAcGFyYW0gbmFtZQkgICAgTXV0ZXggbmFtZS4KKyAqIEBwYXJhbSBtdXRleAkgICAgUG9pbnRlciB0byBob2xkIHRoZSByZXR1cm5lZCBtdXRleCBpbnN0YW5jZS4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9tdXRleF9jcmVhdGVfcmVjdXJzaXZlKCBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCXBqX211dGV4X3QgKiptdXRleCApOworCisvKioKKyAqIEFjcXVpcmUgbXV0ZXggbG9jay4KKyAqCisgKiBAcGFyYW0gbXV0ZXgJICAgIFRoZSBtdXRleC4KKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcywgb3IgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX211dGV4X2xvY2socGpfbXV0ZXhfdCAqbXV0ZXgpOworCisvKioKKyAqIFJlbGVhc2UgbXV0ZXggbG9jay4KKyAqCisgKiBAcGFyYW0gbXV0ZXgJICAgIFRoZSBtdXRleC4KKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcywgb3IgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX211dGV4X3VubG9jayhwal9tdXRleF90ICptdXRleCk7CisKKy8qKgorICogVHJ5IHRvIGFjcXVpcmUgbXV0ZXggbG9jay4KKyAqCisgKiBAcGFyYW0gbXV0ZXgJICAgIFRoZSBtdXRleC4KKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcywgb3IgdGhlIGVycm9yIGNvZGUgaWYgdGhlCisgKgkJICAgIGxvY2sgY291bGRuJ3QgYmUgYWNxdWlyZWQuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX211dGV4X3RyeWxvY2socGpfbXV0ZXhfdCAqbXV0ZXgpOworCisvKioKKyAqIERlc3Ryb3kgbXV0ZXguCisgKgorICogQHBhcmFtIG11dGV4CSAgICBUZSBtdXRleC4KKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcywgb3IgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX211dGV4X2Rlc3Ryb3kocGpfbXV0ZXhfdCAqbXV0ZXgpOworCisvKioKKyAqIERldGVybWluZSB3aGV0aGVyIGNhbGxpbmcgdGhyZWFkIGlzIG93bmluZyB0aGUgbXV0ZXggKG9ubHkgYXZhaWxhYmxlIHdoZW4KKyAqIFBKX0RFQlVHIGlzIHNldCkuCisgKiBAcGFyYW0gbXV0ZXgJICAgIFRoZSBtdXRleC4KKyAqIEByZXR1cm4JICAgIE5vbi16ZXJvIGlmIHllcy4KKyAqLworUEpfREVDTChwal9ib29sX3QpIHBqX211dGV4X2lzX2xvY2tlZChwal9tdXRleF90ICptdXRleCk7CisKKy8qKgorICogQH0KKyAqLworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogQGRlZmdyb3VwIFBKX1JXX01VVEVYIFJlYWRlci9Xcml0ZXIgTXV0ZXgKKyAqIEBpbmdyb3VwIFBKX09TCisgKiBAeworICogUmVhZGVyL3dyaXRlciBtdXRleCBpcyBhIGNsYXNzaWMgc3luY2hyb25pemF0aW9uIG9iamVjdCB3aGVyZSBtdWx0aXBsZQorICogcmVhZGVycyBjYW4gYWNxdWlyZSB0aGUgbXV0ZXgsIGJ1dCBvbmx5IGEgc2luZ2xlIHdyaXRlciBjYW4gYWNxdWlyZSB0aGUgCisgKiBtdXRleC4KKyAqLworCisvKioKKyAqIE9wYXF1ZSBkZWNsYXJhdGlvbiBmb3IgcmVhZGVyL3dyaXRlciBtdXRleC4KKyAqIFJlYWRlci93cml0ZXIgbXV0ZXggaXMgYSBjbGFzc2ljIHN5bmNocm9uaXphdGlvbiBvYmplY3Qgd2hlcmUgbXVsdGlwbGUKKyAqIHJlYWRlcnMgY2FuIGFjcXVpcmUgdGhlIG11dGV4LCBidXQgb25seSBhIHNpbmdsZSB3cml0ZXIgY2FuIGFjcXVpcmUgdGhlIAorICogbXV0ZXguCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX3J3bXV0ZXhfdCBwal9yd211dGV4X3Q7CisKKy8qKgorICogQ3JlYXRlIHJlYWRlci93cml0ZXIgbXV0ZXguCisgKgorICogQHBhcmFtIHBvb2wJICAgIFBvb2wgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgbXV0ZXguCisgKiBAcGFyYW0gbmFtZQkgICAgTmFtZSB0byBiZSBhc3NpZ25lZCB0byB0aGUgbXV0ZXguCisgKiBAcGFyYW0gbXV0ZXgJICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgbmV3bHkgY3JlYXRlZCBtdXRleC4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9yd211dGV4X2NyZWF0ZShwal9wb29sX3QgKnBvb2wsIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgICAgIHBqX3J3bXV0ZXhfdCAqKm11dGV4KTsKKworLyoqCisgKiBMb2NrIHRoZSBtdXRleCBmb3IgcmVhZGluZy4KKyAqCisgKiBAcGFyYW0gbXV0ZXgJICAgIFRoZSBtdXRleC4KKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcywgb3IgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3J3bXV0ZXhfbG9ja19yZWFkKHBqX3J3bXV0ZXhfdCAqbXV0ZXgpOworCisvKioKKyAqIExvY2sgdGhlIG11dGV4IGZvciB3cml0aW5nLgorICoKKyAqIEBwYXJhbSBtdXRleAkgICAgVGhlIG11dGV4LgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzLCBvciB0aGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfcndtdXRleF9sb2NrX3dyaXRlKHBqX3J3bXV0ZXhfdCAqbXV0ZXgpOworCisvKioKKyAqIFJlbGVhc2UgcmVhZCBsb2NrLgorICoKKyAqIEBwYXJhbSBtdXRleAkgICAgVGhlIG11dGV4LgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzLCBvciB0aGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfcndtdXRleF91bmxvY2tfcmVhZChwal9yd211dGV4X3QgKm11dGV4KTsKKworLyoqCisgKiBSZWxlYXNlIHdyaXRlIGxvY2suCisgKgorICogQHBhcmFtIG11dGV4CSAgICBUaGUgbXV0ZXguCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9yd211dGV4X3VubG9ja193cml0ZShwal9yd211dGV4X3QgKm11dGV4KTsKKworLyoqCisgKiBEZXN0cm95IHJlYWRlci93cml0ZXIgbXV0ZXguCisgKgorICogQHBhcmFtIG11dGV4CSAgICBUaGUgbXV0ZXguCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9yd211dGV4X2Rlc3Ryb3kocGpfcndtdXRleF90ICptdXRleCk7CisKKworLyoqCisgKiBAfQorICovCisKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIEBkZWZncm91cCBQSl9DUklUX1NFQyBDcml0aWNhbCBzZWN0aW9ucy4KKyAqIEBpbmdyb3VwIFBKX09TCisgKiBAeworICogQ3JpdGljYWwgc2VjdGlvbiBwcm90ZWN0aW9uIGNhbiBiZSB1c2VkIHRvIHByb3RlY3QgcmVnaW9ucyB3aGVyZToKKyAqICAtIG11dHVhbCBleGNsdXNpb24gcHJvdGVjdGlvbiBpcyBuZWVkZWQuCisgKiAgLSBpdCdzIHJhdGhlciB0b28gZXhwZW5zaXZlIHRvIGNyZWF0ZSBhIG11dGV4LgorICogIC0gdGhlIHRpbWUgc3BlbnQgaW4gdGhlIHJlZ2lvbiBpcyB2ZXJ5IHZlcnkgYnJpZWYuCisgKgorICogQ3JpdGljYWwgc2VjdGlvbiBpcyBhIGdsb2JhbCBvYmplY3QsIGFuZCBpdCBwcmV2ZW50cyBhbnkgdGhyZWFkcyBmcm9tCisgKiBlbnRlcmluZyBhbnkgcmVnaW9ucyB0aGF0IGFyZSBwcm90ZWN0ZWQgYnkgY3JpdGljYWwgc2VjdGlvbiBvbmNlIGEgdGhyZWFkCisgKiBpcyBhbHJlYWR5IGluIHRoZSBzZWN0aW9uLgorICoKKyAqIENyaXRpYWwgc2VjdGlvbiBpcyBcYSBub3QgcmVjdXJzaXZlIQorICoKKyAqIEFwcGxpY2F0aW9uIDxiPk1VU1QgTk9UPC9iPiBjYWxsIGFueSBmdW5jdGlvbnMgdGhhdCBtYXkgY2F1c2UgY3VycmVudAorICogdGhyZWFkIHRvIGJsb2NrIChzdWNoIGFzIGFsbG9jYXRpbmcgbWVtb3J5LCBwZXJmb3JtaW5nIEkvTywgbG9ja2luZyBtdXRleCwKKyAqIGV0Yy4pIHdoaWxlIGhvbGRpbmcgdGhlIGNyaXRpY2FsIHNlY3Rpb24uCisgKi8KKy8qKgorICogRW50ZXIgY3JpdGljYWwgc2VjdGlvbi4KKyAqLworUEpfREVDTCh2b2lkKSBwal9lbnRlcl9jcml0aWNhbF9zZWN0aW9uKHZvaWQpOworCisvKioKKyAqIExlYXZlIGNyaXRpY2FsIHNlY3Rpb24uCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfbGVhdmVfY3JpdGljYWxfc2VjdGlvbih2b2lkKTsKKworLyoqCisgKiBAfQorICovCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmIGRlZmluZWQoUEpfSEFTX1NFTUFQSE9SRSkgJiYgUEpfSEFTX1NFTUFQSE9SRSAhPSAwCisvKioKKyAqIEBkZWZncm91cCBQSl9TRU0gU2VtYXBob3Jlcy4KKyAqIEBpbmdyb3VwIFBKX09TCisgKiBAeworICoKKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFic3RyYWN0aW9uIGZvciBzZW1hcGhvcmVzLCB3aGVyZSBhdmFpbGFibGUuCisgKi8KKworLyoqCisgKiBDcmVhdGUgc2VtYXBob3JlLgorICoKKyAqIEBwYXJhbSBwb29sCSAgICBUaGUgcG9vbC4KKyAqIEBwYXJhbSBuYW1lCSAgICBOYW1lIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBzZW1hcGhvcmUgKGZvciBsb2dnaW5nIHB1cnBvc2UpCisgKiBAcGFyYW0gaW5pdGlhbCAgIFRoZSBpbml0aWFsIGNvdW50IG9mIHRoZSBzZW1hcGhvcmUuCisgKiBAcGFyYW0gbWF4CSAgICBUaGUgbWF4aW11bSBjb3VudCBvZiB0aGUgc2VtYXBob3JlLgorICogQHBhcmFtIHNlbQkgICAgUG9pbnRlciB0byBob2xkIHRoZSBzZW1hcGhvcmUgY3JlYXRlZC4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zZW1fY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgdW5zaWduZWQgaW5pdGlhbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXgsCisJCQkJICAgIHBqX3NlbV90ICoqc2VtKTsKKworLyoqCisgKiBXYWl0IGZvciBzZW1hcGhvcmUuCisgKgorICogQHBhcmFtIHNlbQlUaGUgc2VtYXBob3JlLgorICoKKyAqIEByZXR1cm4JUEpfU1VDQ0VTUyBvbiBzdWNjZXNzLCBvciB0aGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc2VtX3dhaXQocGpfc2VtX3QgKnNlbSk7CisKKy8qKgorICogVHJ5IHdhaXQgZm9yIHNlbWFwaG9yZS4KKyAqCisgKiBAcGFyYW0gc2VtCVRoZSBzZW1hcGhvcmUuCisgKgorICogQHJldHVybglQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zZW1fdHJ5d2FpdChwal9zZW1fdCAqc2VtKTsKKworLyoqCisgKiBSZWxlYXNlIHNlbWFwaG9yZS4KKyAqCisgKiBAcGFyYW0gc2VtCVRoZSBzZW1hcGhvcmUuCisgKgorICogQHJldHVybglQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zZW1fcG9zdChwal9zZW1fdCAqc2VtKTsKKworLyoqCisgKiBEZXN0cm95IHNlbWFwaG9yZS4KKyAqCisgKiBAcGFyYW0gc2VtCVRoZSBzZW1hcGhvcmUuCisgKgorICogQHJldHVybglQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zZW1fZGVzdHJveShwal9zZW1fdCAqc2VtKTsKKworLyoqCisgKiBAfQorICovCisjZW5kaWYJLyogUEpfSEFTX1NFTUFQSE9SRSAqLworCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmIGRlZmluZWQoUEpfSEFTX0VWRU5UX09CSikgJiYgUEpfSEFTX0VWRU5UX09CSiAhPSAwCisvKioKKyAqIEBkZWZncm91cCBQSl9FVkVOVCBFdmVudCBPYmplY3QuCisgKiBAaW5ncm91cCBQSl9PUworICogQHsKKyAqCisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhYnN0cmFjdGlvbiB0byBldmVudCBvYmplY3QgKGUuZy4gV2luMzIgRXZlbnQpIHdoZXJlCisgKiBhdmFpbGFibGUuIEV2ZW50IG9iamVjdHMgY2FuIGJlIHVzZWQgZm9yIHN5bmNocm9uaXphdGlvbiBhbW9uZyB0aHJlYWRzLgorICovCisKKy8qKgorICogQ3JlYXRlIGV2ZW50IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gcG9vbAkJVGhlIHBvb2wuCisgKiBAcGFyYW0gbmFtZQkJVGhlIG5hbWUgb2YgdGhlIGV2ZW50IG9iamVjdCAoZm9yIGxvZ2dpbmcgcHVycG9zZSkuCisgKiBAcGFyYW0gbWFudWFsX3Jlc2V0CVNwZWNpZnkgd2hldGhlciB0aGUgZXZlbnQgaXMgbWFudWFsLXJlc2V0CisgKiBAcGFyYW0gaW5pdGlhbAlTcGVjaWZ5IHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBldmVudCBvYmplY3QuCisgKiBAcGFyYW0gZXZlbnQJCVBvaW50ZXIgdG8gaG9sZCB0aGUgcmV0dXJuZWQgZXZlbnQgb2JqZWN0LgorICoKKyAqIEByZXR1cm4gZXZlbnQgaGFuZGxlLCBvciBOVUxMIGlmIGZhaWxlZC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZXZlbnRfY3JlYXRlKHBqX3Bvb2xfdCAqcG9vbCwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgIHBqX2Jvb2xfdCBtYW51YWxfcmVzZXQsIHBqX2Jvb2xfdCBpbml0aWFsLAorCQkJCSAgICAgcGpfZXZlbnRfdCAqKmV2ZW50KTsKKworLyoqCisgKiBXYWl0IGZvciBldmVudCB0byBiZSBzaWduYWxlZC4KKyAqCisgKiBAcGFyYW0gZXZlbnQJICAgIFRoZSBldmVudCBvYmplY3QuCisgKgorICogQHJldHVybiB6ZXJvIGlmIHN1Y2Nlc3NmdWxsLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9ldmVudF93YWl0KHBqX2V2ZW50X3QgKmV2ZW50KTsKKworLyoqCisgKiBUcnkgd2FpdCBmb3IgZXZlbnQgb2JqZWN0IHRvIGJlIHNpZ25hbGxlZC4KKyAqCisgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIHplcm8gaWYgc3VjY2Vzc2Z1bGwuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2V2ZW50X3RyeXdhaXQocGpfZXZlbnRfdCAqZXZlbnQpOworCisvKioKKyAqIFNldCB0aGUgZXZlbnQgb2JqZWN0IHN0YXRlIHRvIHNpZ25hbGVkLiBGb3IgYXV0by1yZXNldCBldmVudCwgdGhpcyAKKyAqIHdpbGwgb25seSByZWxlYXNlIHRoZSBmaXJzdCB0aHJlYWQgdGhhdCBhcmUgd2FpdGluZyBvbiB0aGUgZXZlbnQuIEZvcgorICogbWFudWFsIHJlc2V0IGV2ZW50LCB0aGUgc3RhdGUgcmVtYWlucyBzaWduYWxlZCB1bnRpbCB0aGUgZXZlbnQgaXMgcmVzZXQuCisgKiBJZiB0aGVyZSBpcyBubyB0aHJlYWQgd2FpdGluZyBvbiB0aGUgZXZlbnQsIHRoZSBldmVudCBvYmplY3Qgc3RhdGUgCisgKiByZW1haW5zIHNpZ25hbGVkLgorICoKKyAqIEBwYXJhbSBldmVudAkgICAgVGhlIGV2ZW50IG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIHplcm8gaWYgc3VjY2Vzc2Z1bGwuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2V2ZW50X3NldChwal9ldmVudF90ICpldmVudCk7CisKKy8qKgorICogU2V0IHRoZSBldmVudCBvYmplY3QgdG8gc2lnbmFsZWQgc3RhdGUgdG8gcmVsZWFzZSBhcHByb3ByaWF0ZSBudW1iZXIgb2YKKyAqIHdhaXRpbmcgdGhyZWFkcyBhbmQgdGhlbiByZXNldCB0aGUgZXZlbnQgb2JqZWN0IHRvIG5vbi1zaWduYWxlZC4gRm9yCisgKiBtYW51YWwtcmVzZXQgZXZlbnQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZWxlYXNlIGFsbCB3YWl0aW5nIHRocmVhZHMuIEZvcgorICogYXV0by1yZXNldCBldmVudCwgdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgcmVsZWFzZSBvbmUgd2FpdGluZyB0aHJlYWQuCisgKgorICogQHBhcmFtIGV2ZW50CSAgICBUaGUgZXZlbnQgb2JqZWN0LgorICoKKyAqIEByZXR1cm4gemVybyBpZiBzdWNjZXNzZnVsbC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZXZlbnRfcHVsc2UocGpfZXZlbnRfdCAqZXZlbnQpOworCisvKioKKyAqIFNldCB0aGUgZXZlbnQgb2JqZWN0IHN0YXRlIHRvIG5vbi1zaWduYWxlZC4KKyAqCisgKiBAcGFyYW0gZXZlbnQJICAgIFRoZSBldmVudCBvYmplY3QuCisgKgorICogQHJldHVybiB6ZXJvIGlmIHN1Y2Nlc3NmdWxsLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9ldmVudF9yZXNldChwal9ldmVudF90ICpldmVudCk7CisKKy8qKgorICogRGVzdHJveSB0aGUgZXZlbnQgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBldmVudAkgICAgVGhlIGV2ZW50IG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIHplcm8gaWYgc3VjY2Vzc2Z1bGwuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2V2ZW50X2Rlc3Ryb3kocGpfZXZlbnRfdCAqZXZlbnQpOworCisvKioKKyAqIEB9CisgKi8KKyNlbmRpZgkvKiBQSl9IQVNfRVZFTlRfT0JKICovCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBAYWRkdG9ncm91cCBQSl9USU1FIFRpbWUgRGF0YSBUeXBlIGFuZCBNYW5pcHVsYXRpb24uCisgKiBAaW5ncm91cCBQSl9PUworICogQHsKKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIEFQSSBmb3IgbWFuaXB1bGF0aW5nIHRpbWUuCisgKgorICogXHNlY3Rpb24gcGpfdGltZV9leGFtcGxlc19zZWMgRXhhbXBsZXMKKyAqCisgKiBGb3IgZXhhbXBsZXMsIHBsZWFzZSBzZWU6CisgKiAgLSBccmVmIHBhZ2VfcGpsaWJfc2xlZXBfdGVzdAorICovCisKKy8qKgorICogR2V0IGN1cnJlbnQgdGltZSBvZiBkYXkgaW4gbG9jYWwgcmVwcmVzZW50YXRpb24uCisgKgorICogQHBhcmFtIHR2CVZhcmlhYmxlIHRvIHN0b3JlIHRoZSByZXN1bHQuCisgKgorICogQHJldHVybiB6ZXJvIGlmIHN1Y2Nlc3NmdWxsLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9nZXR0aW1lb2ZkYXkocGpfdGltZV92YWwgKnR2KTsKKworCisvKioKKyAqIFBhcnNlIHRpbWUgdmFsdWUgaW50byBkYXRlL3RpbWUgcmVwcmVzZW50YXRpb24uCisgKgorICogQHBhcmFtIHR2CVRoZSB0aW1lLgorICogQHBhcmFtIHB0CVZhcmlhYmxlIHRvIHN0b3JlIHRoZSBkYXRlIHRpbWUgcmVzdWx0LgorICoKKyAqIEByZXR1cm4gemVybyBpZiBzdWNjZXNzZnVsbC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfdGltZV9kZWNvZGUoY29uc3QgcGpfdGltZV92YWwgKnR2LCBwal9wYXJzZWRfdGltZSAqcHQpOworCisvKioKKyAqIEVuY29kZSBkYXRlL3RpbWUgdG8gdGltZSB2YWx1ZS4KKyAqCisgKiBAcGFyYW0gcHQJVGhlIGRhdGUvdGltZS4KKyAqIEBwYXJhbSB0dglWYXJpYWJsZSB0byBzdG9yZSB0aW1lIHZhbHVlIHJlc3VsdC4KKyAqCisgKiBAcmV0dXJuIHplcm8gaWYgc3VjY2Vzc2Z1bGwuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3RpbWVfZW5jb2RlKGNvbnN0IHBqX3BhcnNlZF90aW1lICpwdCwgcGpfdGltZV92YWwgKnR2KTsKKworLyoqCisgKiBDb252ZXJ0IGxvY2FsIHRpbWUgdG8gR01ULgorICoKKyAqIEBwYXJhbSB0dglUaW1lIHRvIGNvbnZlcnQuCisgKgorICogQHJldHVybiB6ZXJvIGlmIHN1Y2Nlc3NmdWxsLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal90aW1lX2xvY2FsX3RvX2dtdChwal90aW1lX3ZhbCAqdHYpOworCisvKioKKyAqIENvbnZlcnQgR01UIHRvIGxvY2FsIHRpbWUuCisgKgorICogQHBhcmFtIHR2CVRpbWUgdG8gY29udmVydC4KKyAqCisgKiBAcmV0dXJuIHplcm8gaWYgc3VjY2Vzc2Z1bGwuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3RpbWVfZ210X3RvX2xvY2FsKHBqX3RpbWVfdmFsICp0dik7CisKKy8qKgorICogQH0KKyAqLworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpZiBkZWZpbmVkKFBKX1RFUk1fSEFTX0NPTE9SKSAmJiBQSl9URVJNX0hBU19DT0xPUiAhPSAwCisKKy8qKgorICogQGRlZmdyb3VwIFBKX1RFUk0gVGVybWluYWwKKyAqIEBpbmdyb3VwIFBKX09TCisgKiBAeworICovCisKKy8qKgorICogU2V0IGN1cnJlbnQgdGVybWluYWwgY29sb3IuCisgKgorICogQHBhcmFtIGNvbG9yCSAgICBUaGUgUkdCIGNvbG9yLgorICoKKyAqIEByZXR1cm4gemVybyBvbiBzdWNjZXNzLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal90ZXJtX3NldF9jb2xvcihwal9jb2xvcl90IGNvbG9yKTsKKworLyoqCisgKiBHZXQgY3VycmVudCB0ZXJtaW5hbCBmb3JlZ3JvdW5kIGNvbG9yLgorICoKKyAqIEByZXR1cm4gUkdCIGNvbG9yLgorICovCitQSl9ERUNMKHBqX2NvbG9yX3QpIHBqX3Rlcm1fZ2V0X2NvbG9yKHZvaWQpOworCisvKioKKyAqIEB9CisgKi8KKworI2VuZGlmCS8qIFBKX1RFUk1fSEFTX0NPTE9SICovCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBAZGVmZ3JvdXAgUEpfVElNRVNUQU1QIEhpZ2ggUmVzb2x1dGlvbiBUaW1lc3RhbXAKKyAqIEBpbmdyb3VwIFBKX09TCisgKiBAeworICoKKyAqIFBKTElCIHByb3ZpZGVzIDxiPkhpZ2ggUmVzb2x1dGlvbiBUaW1lc3RhbXA8L2I+IEFQSSB0byBhY2Nlc3MgaGlnaGVzdCAKKyAqIHJlc29sdXRpb24gdGltZXN0YW1wIHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSBwbGF0Zm9ybS4gVGhlIEFQSSBpcyB1c2VmdWxsCisgKiB0byBtZWFzdXJlIHByZWNpc2UgZWxhcHNlZCB0aW1lLCBhbmQgY2FuIGJlIHVzZWQgaW4gYXBwbGljYXRpb25zIHN1Y2gKKyAqIGFzIHByb2ZpbGluZy4KKyAqCisgKiBUaGUgdGltZXN0YW1wIHZhbHVlIGlzIHJlcHJlc2VudGVkIGluIGN5Y2xlcywgYW5kIGNhbiBiZSByZWxhdGVkIHRvCisgKiBub3JtYWwgdGltZSAoaW4gc2Vjb25kcyBvciBzdWItc2Vjb25kcykgdXNpbmcgdmFyaW91cyBmdW5jdGlvbnMgcHJvdmlkZWQuCisgKgorICogXHNlY3Rpb24gcGpfdGltZXN0YW1wX2V4YW1wbGVzX3NlYyBFeGFtcGxlcworICoKKyAqIEZvciBleGFtcGxlcywgcGxlYXNlIHNlZToKKyAqICAtIFxyZWYgcGFnZV9wamxpYl9zbGVlcF90ZXN0CisgKiAgLSBccmVmIHBhZ2VfcGpsaWJfdGltZXN0YW1wX3Rlc3QKKyAqLworCisvKgorICogSGlnaCByZXNvbHV0aW9uIHRpbWVyLgorICovCisjaWYgZGVmaW5lZChQSl9IQVNfSElHSF9SRVNfVElNRVIpICYmIFBKX0hBU19ISUdIX1JFU19USU1FUiAhPSAwCisKKy8qKgorICogR2V0IG1vbm90b25pYyB0aW1lIHNpbmNlIHNvbWUgdW5zcGVjaWZpZWQgc3RhcnRpbmcgcG9pbnQuCisgKgorICogQHBhcmFtIHR2CVZhcmlhYmxlIHRvIHN0b3JlIHRoZSByZXN1bHQuCisgKgorICogQHJldHVybiBQSl9TVUNDRVNTIGlmIHN1Y2Nlc3NmdWwuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dldHRpY2tjb3VudChwal90aW1lX3ZhbCAqdHYpOworCisvKioKKyAqIEFjcXVpcmUgaGlnaCByZXNvbHV0aW9uIHRpbWVyIHZhbHVlLiBUaGUgdGltZSB2YWx1ZSBhcmUgc3RvcmVkCisgKiBpbiBjeWNsZXMuCisgKgorICogQHBhcmFtIHRzCSAgICBIaWdoIHJlc29sdXRpb24gdGltZXIgdmFsdWUuCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICoKKyAqIEBzZWUgcGpfZ2V0X3RpbWVzdGFtcF9mcmVxKCkuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2dldF90aW1lc3RhbXAocGpfdGltZXN0YW1wICp0cyk7CisKKy8qKgorICogR2V0IGhpZ2ggcmVzb2x1dGlvbiB0aW1lciBmcmVxdWVuY3ksIGluIGN5Y2xlcyBwZXIgc2Vjb25kLgorICoKKyAqIEBwYXJhbSBmcmVxCSAgICBUaW1lciBmcmVxdWVuY3ksIGluIGN5Y2xlcyBwZXIgc2Vjb25kLgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcF9mcmVxKHBqX3RpbWVzdGFtcCAqZnJlcSk7CisKKy8qKgorICogU2V0IHRpbWVzdGFtcCBmcm9tIDMyYml0IHZhbHVlcy4KKyAqIEBwYXJhbSB0CSAgICBUaGUgdGltZXN0YW1wIHRvIGJlIHNldC4KKyAqIEBwYXJhbSBoaQkgICAgVGhlIGhpZ2ggMzJiaXQgcGFydC4KKyAqIEBwYXJhbSBsbwkgICAgVGhlIGxvdyAzMmJpdCBwYXJ0LgorICovCitQSl9JTkxJTkUodm9pZCkgcGpfc2V0X3RpbWVzdGFtcDMyKHBqX3RpbWVzdGFtcCAqdCwgcGpfdWludDMyX3QgaGksCisJCQkJICAgcGpfdWludDMyX3QgbG8pCit7CisgICAgdC0+dTMyLmhpID0gaGk7CisgICAgdC0+dTMyLmxvID0gbG87Cit9CisKKworLyoqCisgKiBDb21wYXJlIHRpbWVzdGFtcCB0MSBhbmQgdDIuCisgKiBAcGFyYW0gdDEJICAgIHQxLgorICogQHBhcmFtIHQyCSAgICB0Mi4KKyAqIEByZXR1cm4JICAgIC0xIGlmICh0MSA8IHQyKSwgMSBpZiAodDEgPiB0MiksIG9yIDAgaWYgKHQxID09IHQyKQorICovCitQSl9JTkxJTkUoaW50KSBwal9jbXBfdGltZXN0YW1wKGNvbnN0IHBqX3RpbWVzdGFtcCAqdDEsIGNvbnN0IHBqX3RpbWVzdGFtcCAqdDIpCit7CisjaWYgUEpfSEFTX0lOVDY0CisgICAgaWYgKHQxLT51NjQgPCB0Mi0+dTY0KQorCXJldHVybiAtMTsKKyAgICBlbHNlIGlmICh0MS0+dTY0ID4gdDItPnU2NCkKKwlyZXR1cm4gMTsKKyAgICBlbHNlCisJcmV0dXJuIDA7CisjZWxzZQorICAgIGlmICh0MS0+dTMyLmhpIDwgdDItPnUzMi5oaSB8fAorCSh0MS0+dTMyLmhpID09IHQyLT51MzIuaGkgJiYgdDEtPnUzMi5sbyA8IHQyLT51MzIubG8pKQorCXJldHVybiAtMTsKKyAgICBlbHNlIGlmICh0MS0+dTMyLmhpID4gdDItPnUzMi5oaSB8fAorCSAgICAgKHQxLT51MzIuaGkgPT0gdDItPnUzMi5oaSAmJiB0MS0+dTMyLmxvID4gdDItPnUzMi5sbykpCisJcmV0dXJuIDE7CisgICAgZWxzZQorCXJldHVybiAwOworI2VuZGlmCit9CisKKworLyoqCisgKiBBZGQgdGltZXN0YW1wIHQyIHRvIHQxLgorICogQHBhcmFtIHQxCSAgICB0MS4KKyAqIEBwYXJhbSB0MgkgICAgdDIuCisgKi8KK1BKX0lOTElORSh2b2lkKSBwal9hZGRfdGltZXN0YW1wKHBqX3RpbWVzdGFtcCAqdDEsIGNvbnN0IHBqX3RpbWVzdGFtcCAqdDIpCit7CisjaWYgUEpfSEFTX0lOVDY0CisgICAgdDEtPnU2NCArPSB0Mi0+dTY0OworI2Vsc2UKKyAgICBwal91aW50MzJfdCBvbGQgPSB0MS0+dTMyLmxvOworICAgIHQxLT51MzIuaGkgKz0gdDItPnUzMi5oaTsKKyAgICB0MS0+dTMyLmxvICs9IHQyLT51MzIubG87CisgICAgaWYgKHQxLT51MzIubG8gPCBvbGQpCisJKyt0MS0+dTMyLmhpOworI2VuZGlmCit9CisKKy8qKgorICogQWRkIHRpbWVzdGFtcCB0MiB0byB0MS4KKyAqIEBwYXJhbSB0MQkgICAgdDEuCisgKiBAcGFyYW0gdDIJICAgIHQyLgorICovCitQSl9JTkxJTkUodm9pZCkgcGpfYWRkX3RpbWVzdGFtcDMyKHBqX3RpbWVzdGFtcCAqdDEsIHBqX3VpbnQzMl90IHQyKQoreworI2lmIFBKX0hBU19JTlQ2NAorICAgIHQxLT51NjQgKz0gdDI7CisjZWxzZQorICAgIHBqX3VpbnQzMl90IG9sZCA9IHQxLT51MzIubG87CisgICAgdDEtPnUzMi5sbyArPSB0MjsKKyAgICBpZiAodDEtPnUzMi5sbyA8IG9sZCkKKwkrK3QxLT51MzIuaGk7CisjZW5kaWYKK30KKworLyoqCisgKiBTdWJzdHJhY3QgdGltZXN0YW1wIHQyIGZyb20gdDEuCisgKiBAcGFyYW0gdDEJICAgIHQxLgorICogQHBhcmFtIHQyCSAgICB0Mi4KKyAqLworUEpfSU5MSU5FKHZvaWQpIHBqX3N1Yl90aW1lc3RhbXAocGpfdGltZXN0YW1wICp0MSwgY29uc3QgcGpfdGltZXN0YW1wICp0MikKK3sKKyNpZiBQSl9IQVNfSU5UNjQKKyAgICB0MS0+dTY0IC09IHQyLT51NjQ7CisjZWxzZQorICAgIHQxLT51MzIuaGkgLT0gdDItPnUzMi5oaTsKKyAgICBpZiAodDEtPnUzMi5sbyA+PSB0Mi0+dTMyLmxvKQorCXQxLT51MzIubG8gLT0gdDItPnUzMi5sbzsKKyAgICBlbHNlIHsKKwl0MS0+dTMyLmxvIC09IHQyLT51MzIubG87CisJLS10MS0+dTMyLmhpOworICAgIH0KKyNlbmRpZgorfQorCisvKioKKyAqIFN1YnN0cmFjdCB0aW1lc3RhbXAgdDIgZnJvbSB0MS4KKyAqIEBwYXJhbSB0MQkgICAgdDEuCisgKiBAcGFyYW0gdDIJICAgIHQyLgorICovCitQSl9JTkxJTkUodm9pZCkgcGpfc3ViX3RpbWVzdGFtcDMyKHBqX3RpbWVzdGFtcCAqdDEsIHBqX3VpbnQzMl90IHQyKQoreworI2lmIFBKX0hBU19JTlQ2NAorICAgIHQxLT51NjQgLT0gdDI7CisjZWxzZQorICAgIGlmICh0MS0+dTMyLmxvID49IHQyKQorCXQxLT51MzIubG8gLT0gdDI7CisgICAgZWxzZSB7CisJdDEtPnUzMi5sbyAtPSB0MjsKKwktLXQxLT51MzIuaGk7CisgICAgfQorI2VuZGlmCit9CisKKy8qKgorICogR2V0IHRoZSB0aW1lc3RhbXAgZGlmZmVyZW5jZSBiZXR3ZWVuIHQyIGFuZCB0MSAodGhhdCBpcyB0MiBtaW51cyB0MSksCisgKiBhbmQgcmV0dXJuIGEgMzJiaXQgc2lnbmVkIGludGVnZXIgZGlmZmVyZW5jZS4KKyAqLworUEpfSU5MSU5FKHBqX2ludDMyX3QpIHBqX3RpbWVzdGFtcF9kaWZmMzIoY29uc3QgcGpfdGltZXN0YW1wICp0MSwKKwkJCQkJICBjb25zdCBwal90aW1lc3RhbXAgKnQyKQoreworICAgIC8qIEJlIGNhcmVmdWwgd2l0aCB0aGUgc2lnbmVzcyAoSSB0aGluayEpICovCisjaWYgUEpfSEFTX0lOVDY0CisgICAgcGpfaW50NjRfdCBkaWZmID0gdDItPnU2NCAtIHQxLT51NjQ7CisgICAgcmV0dXJuIChwal9pbnQzMl90KSBkaWZmOworI2Vsc2UKKyAgICBwal9pbnQzMiBkaWZmID0gdDItPnUzMi5sbyAtIHQxLT51MzIubG87CisgICAgcmV0dXJuIGRpZmY7CisjZW5kaWYKK30KKworCisvKioKKyAqIENhbGN1bGF0ZSB0aGUgZWxhcHNlZCB0aW1lLCBhbmQgc3RvcmUgaXQgaW4gcGpfdGltZV92YWwuCisgKiBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIGVsYXBzZWQgdGltZSB1c2luZyBoaWdoZXN0IHByZWNpc2lvbgorICogY2FsY3VsYXRpb24gdGhhdCBpcyBhdmFpbGFibGUgZm9yIGN1cnJlbnQgcGxhdGZvcm0sIGNvbnNpZGVyaW5nCisgKiB3aGV0aGVyIGZsb2F0aW5nIHBvaW50IG9yIDY0LWJpdCBwcmVjaXNpb24gYXJpdGhtZXRpYyBpcyBhdmFpbGFibGUuIAorICogRm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGFwcGxpY2F0aW9uIHNob3VsZCBwcmVmZXIgdG8gdXNlIHRoaXMgZnVuY3Rpb24KKyAqIHJhdGhlciB0aGFuIGNhbGN1bGF0aW5nIHRoZSBlbGFwc2VkIHRpbWUgYnkgaXRzZWxmLgorICoKKyAqIEBwYXJhbSBzdGFydCAgICAgVGhlIHN0YXJ0aW5nIHRpbWVzdGFtcC4KKyAqIEBwYXJhbSBzdG9wICAgICAgVGhlIGVuZCB0aW1lc3RhbXAuCisgKgorICogQHJldHVybgkgICAgRWxhcHNlZCB0aW1lIGFzICNwal90aW1lX3ZhbC4KKyAqCisgKiBAc2VlIHBqX2VsYXBzZWRfdXNlYygpLCBwal9lbGFwc2VkX2N5Y2xlKCksIHBqX2VsYXBzZWRfbmFub3NlYygpCisgKi8KK1BKX0RFQ0wocGpfdGltZV92YWwpIHBqX2VsYXBzZWRfdGltZSggY29uc3QgcGpfdGltZXN0YW1wICpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGpfdGltZXN0YW1wICpzdG9wICk7CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSBlbGFwc2VkIHRpbWUgYXMgMzItYml0IG1pbGlzZWNvbmRzLgorICogVGhpcyBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBlbGFwc2VkIHRpbWUgdXNpbmcgaGlnaGVzdCBwcmVjaXNpb24KKyAqIGNhbGN1bGF0aW9uIHRoYXQgaXMgYXZhaWxhYmxlIGZvciBjdXJyZW50IHBsYXRmb3JtLCBjb25zaWRlcmluZworICogd2hldGhlciBmbG9hdGluZyBwb2ludCBvciA2NC1iaXQgcHJlY2lzaW9uIGFyaXRobWV0aWMgaXMgYXZhaWxhYmxlLiAKKyAqIEZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LCBhcHBsaWNhdGlvbiBzaG91bGQgcHJlZmVyIHRvIHVzZSB0aGlzIGZ1bmN0aW9uCisgKiByYXRoZXIgdGhhbiBjYWxjdWxhdGluZyB0aGUgZWxhcHNlZCB0aW1lIGJ5IGl0c2VsZi4KKyAqCisgKiBAcGFyYW0gc3RhcnQgICAgIFRoZSBzdGFydGluZyB0aW1lc3RhbXAuCisgKiBAcGFyYW0gc3RvcCAgICAgIFRoZSBlbmQgdGltZXN0YW1wLgorICoKKyAqIEByZXR1cm4JICAgIEVsYXBzZWQgdGltZSBpbiBtaWxpc2Vjb25kLgorICoKKyAqIEBzZWUgcGpfZWxhcHNlZF90aW1lKCksIHBqX2VsYXBzZWRfY3ljbGUoKSwgcGpfZWxhcHNlZF9uYW5vc2VjKCkKKyAqLworUEpfREVDTChwal91aW50MzJfdCkgcGpfZWxhcHNlZF9tc2VjKCBjb25zdCBwal90aW1lc3RhbXAgKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwal90aW1lc3RhbXAgKnN0b3AgKTsKKworLyoqCisgKiBWYXJpYW50IG9mICNwal9lbGFwc2VkX21zZWMoKSB3aGljaCByZXR1cm5zIDY0Yml0IHZhbHVlLgorICovCitQSl9ERUNMKHBqX3VpbnQ2NF90KSBwal9lbGFwc2VkX21zZWM2NChjb25zdCBwal90aW1lc3RhbXAgKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGpfdGltZXN0YW1wICpzdG9wICk7CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSBlbGFwc2VkIHRpbWUgaW4gMzItYml0IG1pY3Jvc2Vjb25kcy4KKyAqIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgZWxhcHNlZCB0aW1lIHVzaW5nIGhpZ2hlc3QgcHJlY2lzaW9uCisgKiBjYWxjdWxhdGlvbiB0aGF0IGlzIGF2YWlsYWJsZSBmb3IgY3VycmVudCBwbGF0Zm9ybSwgY29uc2lkZXJpbmcKKyAqIHdoZXRoZXIgZmxvYXRpbmcgcG9pbnQgb3IgNjQtYml0IHByZWNpc2lvbiBhcml0aG1ldGljIGlzIGF2YWlsYWJsZS4gCisgKiBGb3IgbWF4aW11bSBwb3J0YWJpbGl0eSwgYXBwbGljYXRpb24gc2hvdWxkIHByZWZlciB0byB1c2UgdGhpcyBmdW5jdGlvbgorICogcmF0aGVyIHRoYW4gY2FsY3VsYXRpbmcgdGhlIGVsYXBzZWQgdGltZSBieSBpdHNlbGYuCisgKgorICogQHBhcmFtIHN0YXJ0ICAgICBUaGUgc3RhcnRpbmcgdGltZXN0YW1wLgorICogQHBhcmFtIHN0b3AgICAgICBUaGUgZW5kIHRpbWVzdGFtcC4KKyAqCisgKiBAcmV0dXJuCSAgICBFbGFwc2VkIHRpbWUgaW4gbWljcm9zZWNvbmQuCisgKgorICogQHNlZSBwal9lbGFwc2VkX3RpbWUoKSwgcGpfZWxhcHNlZF9jeWNsZSgpLCBwal9lbGFwc2VkX25hbm9zZWMoKQorICovCitQSl9ERUNMKHBqX3VpbnQzMl90KSBwal9lbGFwc2VkX3VzZWMoIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RvcCApOworCisvKioKKyAqIENhbGN1bGF0ZSB0aGUgZWxhcHNlZCB0aW1lIGluIDMyLWJpdCBuYW5vc2Vjb25kcy4KKyAqIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgZWxhcHNlZCB0aW1lIHVzaW5nIGhpZ2hlc3QgcHJlY2lzaW9uCisgKiBjYWxjdWxhdGlvbiB0aGF0IGlzIGF2YWlsYWJsZSBmb3IgY3VycmVudCBwbGF0Zm9ybSwgY29uc2lkZXJpbmcKKyAqIHdoZXRoZXIgZmxvYXRpbmcgcG9pbnQgb3IgNjQtYml0IHByZWNpc2lvbiBhcml0aG1ldGljIGlzIGF2YWlsYWJsZS4gCisgKiBGb3IgbWF4aW11bSBwb3J0YWJpbGl0eSwgYXBwbGljYXRpb24gc2hvdWxkIHByZWZlciB0byB1c2UgdGhpcyBmdW5jdGlvbgorICogcmF0aGVyIHRoYW4gY2FsY3VsYXRpbmcgdGhlIGVsYXBzZWQgdGltZSBieSBpdHNlbGYuCisgKgorICogQHBhcmFtIHN0YXJ0ICAgICBUaGUgc3RhcnRpbmcgdGltZXN0YW1wLgorICogQHBhcmFtIHN0b3AgICAgICBUaGUgZW5kIHRpbWVzdGFtcC4KKyAqCisgKiBAcmV0dXJuCSAgICBFbGFwc2VkIHRpbWUgaW4gbmFub3NlY29uZHMuCisgKgorICogQHNlZSBwal9lbGFwc2VkX3RpbWUoKSwgcGpfZWxhcHNlZF9jeWNsZSgpLCBwal9lbGFwc2VkX3VzZWMoKQorICovCitQSl9ERUNMKHBqX3VpbnQzMl90KSBwal9lbGFwc2VkX25hbm9zZWMoIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RvcCApOworCisvKioKKyAqIENhbGN1bGF0ZSB0aGUgZWxhcHNlZCB0aW1lIGluIDMyLWJpdCBjeWNsZXMuCisgKiBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIGVsYXBzZWQgdGltZSB1c2luZyBoaWdoZXN0IHByZWNpc2lvbgorICogY2FsY3VsYXRpb24gdGhhdCBpcyBhdmFpbGFibGUgZm9yIGN1cnJlbnQgcGxhdGZvcm0sIGNvbnNpZGVyaW5nCisgKiB3aGV0aGVyIGZsb2F0aW5nIHBvaW50IG9yIDY0LWJpdCBwcmVjaXNpb24gYXJpdGhtZXRpYyBpcyBhdmFpbGFibGUuIAorICogRm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGFwcGxpY2F0aW9uIHNob3VsZCBwcmVmZXIgdG8gdXNlIHRoaXMgZnVuY3Rpb24KKyAqIHJhdGhlciB0aGFuIGNhbGN1bGF0aW5nIHRoZSBlbGFwc2VkIHRpbWUgYnkgaXRzZWxmLgorICoKKyAqIEBwYXJhbSBzdGFydCAgICAgVGhlIHN0YXJ0aW5nIHRpbWVzdGFtcC4KKyAqIEBwYXJhbSBzdG9wICAgICAgVGhlIGVuZCB0aW1lc3RhbXAuCisgKgorICogQHJldHVybgkgICAgRWxhcHNlZCB0aW1lIGluIGN5Y2xlcy4KKyAqCisgKiBAc2VlIHBqX2VsYXBzZWRfdXNlYygpLCBwal9lbGFwc2VkX3RpbWUoKSwgcGpfZWxhcHNlZF9uYW5vc2VjKCkKKyAqLworUEpfREVDTChwal91aW50MzJfdCkgcGpfZWxhcHNlZF9jeWNsZSggY29uc3QgcGpfdGltZXN0YW1wICpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RvcCApOworCisKKyNlbmRpZgkvKiBQSl9IQVNfSElHSF9SRVNfVElNRVIgKi8KKworLyoqIEB9ICovCisKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIEBkZWZncm91cCBQSl9BUFBfT1MgQXBwbGljYXRpb24gZXhlY3V0aW9uCisgKiBAaW5ncm91cCBQSl9PUworICogQHsKKyAqLworCisvKiBUeXBlIGZvciBtYWluIGZ1bmN0aW9uLiAqLwordHlwZWRlZiBpbnQgKCpwal9tYWluX2Z1bmNfcHRyKShpbnQgYXJnYywgY2hhciAqYXJndltdKTsKKworLyoqCisgKiBSdW4gdGhlIGFwcGxpY2F0aW9uLiBUaGlzIGZ1bmN0aW9uIGhhcyB0byBiZSBjYWxsZWQgaW4gdGhlIG1haW4gdGhyZWFkCisgKiBhbmQgYWZ0ZXIgZG9pbmcgdGhlIG5lY2Vzc2FyeSBpbml0aWFsaXphdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGZsYWdzCisgKiBwcm92aWRlZCwgaXQgd2lsbCBjYWxsIG1haW5fZnVuYygpIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBtYWluX2Z1bmMgQXBwbGljYXRpb24ncyBtYWluIGZ1bmN0aW9uLgorICogQHBhcmFtIGFyZ2MJICAgIE51bWJlciBvZiBhcmd1bWVudHMgZnJvbSB0aGUgbWFpbigpIGZ1bmN0aW9uLCB3aGljaAorICogCQkgICAgd2lsbCBiZSBwYXNzZWQgdG8gbWFpbl9mdW5jKCkgZnVuY3Rpb24uCisgKiBAcGFyYW0gYXJndgkgICAgVGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBtYWluKCkgZnVuY3Rpb24sIHdoaWNoIHdpbGwKKyAqIAkJICAgIGJlIHBhc3NlZCB0byBtYWluX2Z1bmMoKSBmdW5jdGlvbi4KKyAqIEBwYXJhbSBmbGFncyAgICAgRmxhZ3MgZm9yIGFwcGxpY2F0aW9uIGV4ZWN1dGlvbiwgY3VycmVudGx5IG11c3QgYmUgMC4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgIG1haW5fZnVuYygpJ3MgcmV0dXJuIHZhbHVlLgorICovCitpbnQgcGpfcnVuX2FwcChwal9tYWluX2Z1bmNfcHRyIG1haW5fZnVuYywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwKKwkgICAgICAgdW5zaWduZWQgZmxhZ3MpOworCisvKiogQH0gKi8KKworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogSW50ZXJuYWwgUEpMSUIgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgdGhyZWFkaW5nIHN1YnN5c3RlbS4KKyAqIEByZXR1cm4gICAgICAgICAgUEpfU1VDQ0VTUyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLworcGpfc3RhdHVzX3QgcGpfdGhyZWFkX2luaXQodm9pZCk7CisKKworUEpfRU5EX0RFQ0wKKworI2VuZGlmICAvKiBfX1BKX09TX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3Bvb2wuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovcG9vbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNWJiMDMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3Bvb2wuaApAQCAtMCwwICsxLDkwMyBAQAorLyogJElkOiBwb29sLmggNDUzNyAyMDEzLTA2LTE5IDA2OjQ3OjQzWiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisKKyNpbmNsdWRlIDxwai9saXN0Lmg+CisKKy8qIFNlZSBpZiB3ZSB1c2UgcG9vbCdzIGFsdGVybmF0ZSBBUEkuCisgKiBUaGUgYWx0ZXJuYXRlIEFQSSBpcyB1c2VkIGUuZy4gdG8gaW1wbGVtZW50IHBvb2wgZGVidWdnaW5nLgorICovCisjaWYgUEpfSEFTX1BPT0xfQUxUX0FQSQorIyAgaW5jbHVkZSA8cGovcG9vbF9hbHQuaD4KKyNlbmRpZgorCisKKyNpZm5kZWYgX19QSl9QT09MX0hfXworI2RlZmluZSBfX1BKX1BPT0xfSF9fCisKKy8qKgorICogQGZpbGUgcG9vbC5oCisgKiBAYnJpZWYgTWVtb3J5IFBvb2wuCisgKi8KKworUEpfQkVHSU5fREVDTAorCisvKioKKyAqIEBkZWZncm91cCBQSl9QT09MX0dST1VQIEZhc3QgTWVtb3J5IFBvb2wKKyAqIEBicmllZgorICogTWVtb3J5IHBvb2xzIGFsbG93IGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gY29tcGFyYWJsZSB0byBtYWxsb2Mgb3IgdGhlIAorICogbmV3IGluIG9wZXJhdG9yIEMrKy4gVGhvc2UgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgZGVzaXJhYmxlIGZvciB2ZXJ5CisgKiBoaWdoIHBlcmZvcm1hbmNlIGFwcGxpY2F0aW9ucyBvciByZWFsLXRpbWUgc3lzdGVtcywgYmVjYXVzZSBvZiB0aGUgCisgKiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBhbmQgaXQgc3VmZmVycyBmcm9tIGZyYWdtZW50YXRpb24gaXNzdWUuCisgKgorICogXHNlY3Rpb24gUEpfUE9PTF9JTlRST19TRUMgUEpMSUIncyBNZW1vcnkgUG9vbAorICogXHN1YnNlY3Rpb24gUEpfUE9PTF9BRFZBTlRBR0VfU1VCU0VDIEFkdmFudGFnZXMKKyAqIAorICogUEpMSUIncyBwb29sIGhhcyBtYW55IGFkdmFudGFnZXMgb3ZlciB0cmFkaXRpb25hbCBtYWxsb2MvbmV3IG9wZXJhdG9yIGFuZAorICogb3ZlciBvdGhlciBtZW1vcnkgcG9vbCBpbXBsZW1lbnRhdGlvbnMsIGJlY2F1c2U6CisgKiAgLSB1bmxpa2Ugb3RoZXIgbWVtb3J5IHBvb2wgaW1wbGVtZW50YXRpb24sIGl0IGFsbG93cyBhbGxvY2F0aW9uIG9mCisgKiAgICBtZW1vcnkgY2h1bmtzIG9mIGRpZmZlcmVudCBzaXplcywKKyAqICAtIGl0J3MgdmVyeSB2ZXJ5IGZhc3QuIAorICogICAgXG4KKyAqICAgIE1lbW9yeSBjaHVuayBhbGxvY2F0aW9uIGlzIG5vdCBvbmx5IGFuIE8oMSkgCisgKiAgICBvcGVyYXRpb24sIGJ1dCBpdCdzIGFsc28gdmVyeSBzaW1wbGUgKGp1c3QgCisgKiAgICBmZXcgcG9pbnRlciBhcml0aG1ldGljIG9wZXJhdGlvbnMpIGFuZCBpdCBkb2Vzbid0IHJlcXVpcmUgbG9ja2luZyAKKyAqICAgIGFueSBtdXRleCwKKyAqICAtIGl0J3MgbWVtb3J5IGVmZmljaWVudC4KKyAqICAgIFxuCisgKiAgICBQb29sIGRvZXNuJ3Qga2VlcCB0cmFjayBpbmRpdmlkdWFsIG1lbW9yeSBjaHVua3MgYWxsb2NhdGVkIGJ5CisgKiAgICBhcHBsaWNhdGlvbnMsIHNvIHRoZXJlIGlzIG5vIGFkZGl0aW9uYWwgb3ZlcmhlYWQgbmVlZGVkIGZvciBlYWNoCisgKiAgICBtZW1vcnkgYWxsb2NhdGlvbiAob3RoZXIgdGhhbiBwb3NzaWJsZSBhZGRpdGlvbmFsIG9mIGZldyBieXRlcywgdXAgdG8KKyAqICAgIFBKX1BPT0xfQUxJR05NRU5ULTEsIGZvciBhbGlnbmluZyB0aGUgbWVtb3J5KS4gCisgKiAgICBCdXQgc2VlIHRoZSBAcmVmIFBKX1BPT0xfQ0FWRUFUU19TVUJTRUMgYmVsb3cuCisgKiAgLSBpdCBwcmV2ZW50cyBtZW1vcnkgbGVha3MuIAorICogICAgXG4KKyAqICAgIE1lbW9yeSBwb29sIGluaGVyZW50bHkgaGFzIGdhcmJhZ2UgY29sbGVjdGlvbiBmdW5jdGlvbmFsaXR5LiBJbiBmYWN0LCAKKyAqICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gZnJlZSB0aGUgY2h1bmtzIGFsbG9jYXRlZCBmcm9tIHRoZSBtZW1vcnkgcG9vbC4KKyAqICAgIEFsbCBjaHVua3MgcHJldmlvdXNseSBhbGxvY2F0ZWQgZnJvbSB0aGUgcG9vbCB3aWxsIGJlIGZyZWVkIG9uY2UgdGhlCisgKiAgICBwb29sIGl0c2VsZiBpcyBkZXN0cm95ZWQuIFRoaXMgd291bGQgcHJldmVudCBtZW1vcnkgbGVha3MgdGhhdCBoYXVudAorICogICAgcHJvZ3JhbW1lcnMgZm9yIGRlY2FkZXMsIGFuZCBpdCBwcm92aWRlcyBhZGRpdGlvbmFsIHBlcmZvcm1hbmNlIAorICogICAgYWR2YW50YWdlIG92ZXIgdHJhZGl0aW9uYWwgbWFsbG9jL25ldyBvcGVyYXRvci4KKyAqCisgKiBFdmVuIG1vcmUsIFBKTElCJ3MgbWVtb3J5IHBvb2wgcHJvdmlkZXMgc29tZSBhZGRpdGlvbmFsIHVzYWJpbGl0eSBhbmQKKyAqIGZsZXhpYmlsaXR5IGZvciBhcHBsaWNhdGlvbnM6CisgKiAgLSBtZW1vcnkgbGVha3MgYXJlIGVhc2lseSB0cmFjZWFibGUsIHNpbmNlIG1lbW9yeSBwb29sIGlzIGFzc2lnbmVkIG5hbWUsCisgKiAgICBhbmQgYXBwbGljYXRpb24gY2FuIGluc3BlY3Qgd2hhdCBwb29scyBjdXJyZW50bHkgYWN0aXZlIGluIHRoZSBzeXN0ZW0uCisgKiAgLSBieSBkZXNpZ24sIG1lbW9yeSBhbGxvY2F0aW9uIGZyb20gYSBwb29sIGlzIG5vdCB0aHJlYWQgc2FmZS4gV2UgYXNzdW1lZAorICogICAgdGhhdCBhIHBvb2wgd2lsbCBiZSBvd25lZCBieSBhIGhpZ2hlciBsZXZlbCBvYmplY3QsIGFuZCB0aHJlYWQgc2FmZXR5IAorICogICAgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhhdCBvYmplY3QuIFRoaXMgZW5hYmxlcyB2ZXJ5IGZhc3QgcG9vbCBvcGVyYXRpb25zCisgKiAgICBhbmQgcHJldmVudHMgdW5uZWNlc3NhcnkgbG9ja2luZyBvcGVyYXRpb25zLAorICogIC0gYnkgZGVmYXVsdCwgdGhlIG1lbW9yeSBwb29sIEFQSSBiZWhhdmVzIG1vcmUgbGlrZSBDKysgbmV3IG9wZXJhdG9yLCAKKyAqICAgIGluIHRoYXQgaXQgd2lsbCB0aHJvdyBQSl9OT19NRU1PUllfRVhDRVBUSU9OIGV4Y2VwdGlvbiAoc2VlIAorICogICAgQHJlZiBQSl9FWENFUFQpIHdoZW4gbWVtb3J5IGNodW5rIGFsbG9jYXRpb24gZmFpbHMuIFRoaXMgZW5hYmxlcyBmYWlsdXJlCisgKiAgICBoYW5kbGluZyB0byBiZSBkb25lIG9uIG1vcmUgaGlnaCBsZXZlbCBmdW5jdGlvbiAoaW5zdGVhZCBvZiBjaGVja2luZworICogICAgdGhlIHJlc3VsdCBvZiBwal9wb29sX2FsbG9jKCkgZXZlcnl0aW1lKS4gSWYgYXBwbGljYXRpb24gZG9lc24ndCBsaWtlCisgKiAgICB0aGlzLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZCBvbiBnbG9iYWwgYmFzaXMgYnkgc3VwcGx5aW5nIAorICogICAgZGlmZmVyZW50IHBvbGljeSB0byB0aGUgcG9vbCBmYWN0b3J5LgorICogIC0gYW55IG1lbW9yeSBhbGxvY2F0aW9uIGJhY2tlbmQgYWxsb2NhdG9yL2RlYWxsb2NhdG9yIG1heSBiZSB1c2VkLiBCeQorICogICAgZGVmYXVsdCwgdGhlIHBvbGljeSB1c2VzIG1hbGxvYygpIGFuZCBmcmVlKCkgdG8gbWFuYWdlIHRoZSBwb29sJ3MgYmxvY2ssCisgKiAgICBidXQgYXBwbGljYXRpb24gbWF5IHVzZSBkaWZmZXJlbnQgc3RyYXRlZ3ksIGZvciBleGFtcGxlIHRvIGFsbG9jYXRlCisgKiAgICBtZW1vcnkgYmxvY2tzIGZyb20gYSBnbG9iYWxseSBzdGF0aWMgbWVtb3J5IGxvY2F0aW9uLgorICoKKyAqCisgKiBcc3Vic2VjdGlvbiBQSl9QT09MX1BFUkZPUk1BTkNFX1NVQlNFQyBQZXJmb3JtYW5jZQorICogCisgKiBUaGUgcmVzdWx0IG9mIFBKTElCJ3MgbWVtb3J5IGRlc2lnbiBhbmQgY2FyZWZ1bCBpbXBsZW1lbnRhdGlvbiBpcyBhCisgKiBtZW1vcnkgYWxsb2NhdGlvbiBzdHJhdGVneSB0aGF0IGNhbiBzcGVlZC11cCB0aGUgbWVtb3J5IGFsbG9jYXRpb25zCisgKiBhbmQgZGVhbGxvY2F0aW9ucyBieSB1cCB0byA8Yj4zMCB0aW1lczwvYj4gY29tcGFyZWQgdG8gc3RhbmRhcmQKKyAqIG1hbGxvYygpL2ZyZWUoKSAobW9yZSB0aGFuIDE1MCBtaWxsaW9uIGFsbG9jYXRpb25zIHBlciBzZWNvbmQgb24gYQorICogUDQvMy4wR0h6IExpbnV4IG1hY2hpbmUpLgorICoKKyAqIChOb3RlOiB5b3VyIG1pbGVhZ2UgbWF5IHZhcnksIG9mIGNvdXJzZS4gWW91IGNhbiBzZWUgaG93IG11Y2ggUEpMSUIncworICogIHBvb2wgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG92ZXIgbWFsbG9jKCkvZnJlZSgpIGluIHlvdXIgdGFyZ2V0CisgKiAgc3lzdGVtIGJ5IHJ1bm5pbmcgcGpsaWItdGVzdCBhcHBsaWNhdGlvbikuCisgKgorICoKKyAqIFxzdWJzZWN0aW9uIFBKX1BPT0xfQ0FWRUFUU19TVUJTRUMgQ2F2ZWF0cworICoKKyAqIFRoZXJlIGFyZSBzb21lIGNhdmVhdHMgdGhvdWdoIQorICoKKyAqIFdoZW4gY3JlYXRpbmcgcG9vbCwgUEpMSUIgcmVxdWlyZXMgYXBwbGljYXRpb25zIHRvIHNwZWNpZnkgdGhlIGluaXRpYWwKKyAqIHBvb2wgc2l6ZSwgYW5kIGFzIHNvb24gYXMgdGhlIHBvb2wgaXMgY3JlYXRlZCwgUEpMSUIgYWxsb2NhdGVzIG1lbW9yeQorICogZnJvbSB0aGUgc3lzdGVtIGJ5IHRoYXQgc2l6ZS4gQXBwbGljYXRpb24gZGVzaWduZXJzIE1VU1QgY2hvb3NlIHRoZSAKKyAqIGluaXRpYWwgcG9vbCBzaXplIGNhcmVmdWxseSwgc2luY2UgY2hvb3NpbmcgdG9vIGJpZyB2YWx1ZSB3aWxsIHJlc3VsdCBpbgorICogd2FzdGluZyBzeXN0ZW0ncyBtZW1vcnkuCisgKgorICogQnV0IHRoZSBwb29sIGNhbiBncm93LiBBcHBsaWNhdGlvbiBkZXNpZ25lciBjYW4gc3BlY2lmeSBob3cgdGhlCisgKiBwb29sIHdpbGwgZ3JvdyBpbiBzaXplLCBieSBzcGVjaWZ5aW5nIHRoZSBzaXplIGluY3JlbWVudCB3aGVuIGNyZWF0aW5nCisgKiB0aGUgcG9vbC4KKyAqCisgKiBUaGUgcG9vbCwgaG93ZXZlciwgPGI+Y2Fubm90PC9iPiBzaHJpbmshIFNpbmNlIHRoZXJlIGlzIDxiPm5vPC9iPiAKKyAqIGZ1bmN0aW9uIHRvIGRlYWxsb2NhdGUgbWVtb3J5IGNodW5rcywgdGhlcmUgaXMgbm8gd2F5IGZvciB0aGUgcG9vbCB0byAKKyAqIHJlbGVhc2UgYmFjayB1bnVzZWQgbWVtb3J5IHRvIHRoZSBzeXN0ZW0uIAorICogQXBwbGljYXRpb24gZGVzaWduZXJzIG11c3QgYmUgYXdhcmUgdGhhdCBjb25zdGFudCBtZW1vcnkgYWxsb2NhdGlvbnMgCisgKiBmcm9tIHBvb2wgdGhhdCBoYXMgaW5maW5pdGUgbGlmZS10aW1lIG1heSBjYXVzZSB0aGUgbWVtb3J5IHVzYWdlIG9mIAorICogdGhlIGFwcGxpY2F0aW9uIHRvIGdyb3cgb3ZlciB0aW1lLgorICoKKyAqCisgKiBcc2VjdGlvbiBQSl9QT09MX1VTSU5HX1NFQyBVc2luZyBNZW1vcnkgUG9vbAorICoKKyAqIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIHVzZSBQSkxJQidzIG1lbW9yeSBwb29sIGZyYW1ld29yay4KKyAqIEFzIHdlIGhvcGUgdGhlIHJlYWRlcnMgd2lsbCB3aXRuZXNzLCBQSkxJQidzIG1lbW9yeSBwb29sIEFQSSBpcyBxdWl0ZQorICogc3RyYWlnaHRmb3J3YXJkLiAKKyAqCisgKiBcc3Vic2VjdGlvbiBQSl9QT09MX1VTSU5HX0YgQ3JlYXRlIFBvb2wgRmFjdG9yeQorICogRmlyc3QsIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGluaXRpYWxpemUgYSBwb29sIGZhY3RvcnkgKHRoaXMgbm9ybWFsbHkKKyAqIG9ubHkgbmVlZHMgdG8gYmUgZG9uZSBvbmNlIGluIG9uZSBhcHBsaWNhdGlvbikuIFBKTElCIHByb3ZpZGVzCisgKiBhIHBvb2wgZmFjdG9yeSBpbXBsZW1lbnRhdGlvbiBjYWxsZWQgY2FjaGluZyBwb29sIChzZWUgQHJlZiAKKyAqIFBKX0NBQ0hJTkdfUE9PTCksIGFuZCBpdCBpcyBpbml0aWFsaXplZCBieSBjYWxsaW5nICNwal9jYWNoaW5nX3Bvb2xfaW5pdCgpLgorICoKKyAqIFxzdWJzZWN0aW9uIFBKX1BPT0xfVVNJTkdfUCBDcmVhdGUgVGhlIFBvb2wKKyAqIFRoZW4gYXBwbGljYXRpb24gY3JlYXRlcyB0aGUgcG9vbCBvYmplY3QgaXRzZWxmIHdpdGggI3BqX3Bvb2xfY3JlYXRlKCksCisgKiBzcGVjaWZ5aW5nIGFtb25nIG90aGVyIHRoaW5nIHRoZSBwb29sIGZhY3Rvcnkgd2hlcmUgdGhlIHBvb2wgc2hvdWxkCisgKiBiZSBjcmVhdGVkIGZyb20sIHRoZSBwb29sIG5hbWUsIGluaXRpYWwgc2l6ZSwgYW5kIGluY3JlbWVudC9leHBhbnNpb24KKyAqIHNpemUuCisgKgorICogXHN1YnNlY3Rpb24gUEpfUE9PTF9VU0lOR19NIEFsbG9jYXRlIE1lbW9yeSBhcyBSZXF1aXJlZAorICogVGhlbiB3aGVuZXZlciBhcHBsaWNhdGlvbiBuZWVkcyB0byBhbGxvY2F0ZSBkeW5hbWljIG1lbW9yeSwgaXQgd291bGQKKyAqIGNhbGwgI3BqX3Bvb2xfYWxsb2MoKSwgI3BqX3Bvb2xfY2FsbG9jKCksIG9yICNwal9wb29sX3phbGxvYygpIHRvCisgKiBhbGxvY2F0ZSBtZW1vcnkgY2h1bmtzIGZyb20gdGhlIHBvb2wuCisgKgorICogXHN1YnNlY3Rpb24gUEpfUE9PTF9VU0lOR19EUCBEZXN0cm95IHRoZSBQb29sCisgKiBXaGVuIGFwcGxpY2F0aW9uIGhhcyBmaW5pc2hlZCB3aXRoIHRoZSBwb29sLCBpdCBzaG91bGQgY2FsbCAKKyAqICNwal9wb29sX3JlbGVhc2UoKSB0byByZWxlYXNlIHRoZSBwb29sIG9iamVjdCBiYWNrIHRvIHRoZSBmYWN0b3J5LiAKKyAqIERlcGVuZGluZyBvbiB0aGUgdHlwZXMgb2YgdGhlIGZhY3RvcnksIHRoaXMgbWF5IHJlbGVhc2UgdGhlIG1lbW9yeSBiYWNrIAorICogdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0uCisgKgorICogXHN1YnNlY3Rpb24gUEpfUE9PTF9VU0lOR19EYyBEZXN0cm95IHRoZSBQb29sIEZhY3RvcnkKKyAqIEFuZCBmaW5hbGx5LCBiZWZvcmUgYXBwbGljYXRpb24gcXVpdGVzLCBpdCBzaG91bGQgZGVpbml0aWFsaXplIHRoZQorICogcG9vbCBmYWN0b3J5LCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgYnkgdGhlCisgKiBmYWN0b3J5IGFyZSByZWxlYXNlZCBiYWNrIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiBBZnRlciB0aGlzLCBvZiAKKyAqIGNvdXJzZSBubyBtb3JlIG1lbW9yeSBwb29sIGFsbG9jYXRpb24gY2FuIGJlIHJlcXVlc3RlZC4KKyAqCisgKiBcc3Vic2VjdGlvbiBQSl9QT09MX1VTSU5HX0VYIEV4YW1wbGUKKyAqIEJlbG93IGlzIGEgc2FtcGxlIGNvbXBsZXRlIHByb2dyYW0gdGhhdCB1dGlsaXplcyBQSkxJQidzIG1lbW9yeSBwb29sLgorICoKKyAqIFxjb2RlCisKKyAgICNpbmNsdWRlIDxwamxpYi5oPgorCisgICAjZGVmaW5lIFRISVNfRklMRSAgICAicG9vbF9zYW1wbGUuYyIKKworICAgc3RhdGljIHZvaWQgbXlfcGVycm9yKGNvbnN0IGNoYXIgKnRpdGxlLCBwal9zdGF0dXNfdCBzdGF0dXMpCisgICB7CisgICAgICAgIGNoYXIgZXJybXNnW1BKX0VSUl9NU0dfU0laRV07CisKKwlwal9zdHJlcnJvcihzdGF0dXMsIGVycm1zZywgc2l6ZW9mKGVycm1zZykpOworCVBKX0xPRygxLChUSElTX0ZJTEUsICIlczogJXMgW3N0YXR1cz0lZF0iLCB0aXRsZSwgZXJybXNnLCBzdGF0dXMpKTsKKyAgIH0KKworICAgc3RhdGljIHZvaWQgcG9vbF9kZW1vXzEocGpfcG9vbF9mYWN0b3J5ICpwZmFjdG9yeSkKKyAgIHsKKwl1bnNpZ25lZCBpOworCXBqX3Bvb2xfdCAqcG9vbDsKKworCS8vIE11c3QgY3JlYXRlIHBvb2wgYmVmb3JlIHdlIGNhbiBhbGxvY2F0ZSBhbnl0aGluZworCXBvb2wgPSBwal9wb29sX2NyZWF0ZShwZmFjdG9yeSwJIC8vIHRoZSBmYWN0b3J5CisJCQkgICAgICAicG9vbDEiLAkgLy8gcG9vbCdzIG5hbWUKKwkJCSAgICAgIDQwMDAsCSAvLyBpbml0aWFsIHNpemUKKwkJCSAgICAgIDQwMDAsCSAvLyBpbmNyZW1lbnQgc2l6ZQorCQkJICAgICAgTlVMTCk7CSAvLyB1c2UgZGVmYXVsdCBjYWxsYmFjay4KKwlpZiAocG9vbCA9PSBOVUxMKSB7CisJICAgIG15X3BlcnJvcigiRXJyb3IgY3JlYXRpbmcgcG9vbCIsIFBKX0VOT01FTSk7CisJICAgIHJldHVybjsKKwl9CisKKwkvLyBEZW1vOiBhbGxvY2F0ZSBzb21lIG1lbW9yeSBjaHVua3MKKwlmb3IgKGk9MDsgaTwxMDAwOyArK2kpIHsKKwkgICAgdm9pZCAqcDsKKworCSAgICBwID0gcGpfcG9vbF9hbGxvYyhwb29sLCAocGpfcmFuZCgpKzEpICUgNTEyKTsKKworCSAgICAvLyBEbyBzb21ldGhpbmcgd2l0aCBwCisJICAgIC4uLgorCisJICAgIC8vIExvb2shIE5vIG5lZWQgdG8gZnJlZSBwISEKKwl9CisKKwkvLyBEb25lIHdpdGggc2lsbHkgZGVtbywgbXVzdCBmcmVlIHBvb2wgdG8gcmVsZWFzZSBhbGwgbWVtb3J5LgorCXBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKyAgIH0KKworICAgaW50IG1haW4oKQorICAgeworCXBqX2NhY2hpbmdfcG9vbCBjcDsKKwlwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICAgICAgLy8gTXVzdCBpbml0IFBKTElCIGJlZm9yZSBhbnl0aGluZyBlbHNlCisJc3RhdHVzID0gcGpfaW5pdCgpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBteV9wZXJyb3IoIkVycm9yIGluaXRpYWxpemluZyBQSkxJQiIsIHN0YXR1cyk7CisJICAgIHJldHVybiAxOworCX0KKworCS8vIENyZWF0ZSB0aGUgcG9vbCBmYWN0b3J5LCBpbiB0aGlzIGNhc2UsIGEgY2FjaGluZyBwb29sLAorCS8vIHVzaW5nIGRlZmF1bHQgcG9vbCBwb2xpY3kuCisJcGpfY2FjaGluZ19wb29sX2luaXQoJmNwLCBOVUxMLCAxMDI0KjEwMjQgKTsKKworCS8vIERvIGEgZGVtbworCXBvb2xfZGVtb18xKCZjcC5mYWN0b3J5KTsKKworCS8vIERvbmUgd2l0aCBkZW1vcywgZGVzdHJveSBjYWNoaW5nIHBvb2wgYmVmb3JlIGV4aXRpbmcgYXBwLgorCXBqX2NhY2hpbmdfcG9vbF9kZXN0cm95KCZjcCk7CisKKwlyZXR1cm4gMDsKKyAgIH0KKworICAgXGVuZGNvZGUKKyAqCisgKiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHBvb2wgZmFjdG9yeSwgdGhlIHBvb2wgb2JqZWN0LCBhbmQgY2FjaGluZyBwb29sCisgKiBjYW4gYmUgZm91bmQgb24gdGhlIE1vZHVsZSBMaW5rcyBiZWxvdy4KKyAqLworCisKKy8qKgorICogQGRlZmdyb3VwIFBKX1BPT0wgTWVtb3J5IFBvb2wgT2JqZWN0CisgKiBAaW5ncm91cCBQSl9QT09MX0dST1VQCisgKiBAYnJpZWYKKyAqIFRoZSBtZW1vcnkgcG9vbCBpcyBhbiBvcGFxdWUgb2JqZWN0IGNyZWF0ZWQgYnkgcG9vbCBmYWN0b3J5LgorICogQXBwbGljYXRpb24gdXNlcyB0aGlzIG9iamVjdCB0byByZXF1ZXN0IGEgbWVtb3J5IGNodW5rLCBieSBjYWxsaW5nCisgKiAjcGpfcG9vbF9hbGxvYygpLCAjcGpfcG9vbF9jYWxsb2MoKSwgb3IgI3BqX3Bvb2xfemFsbG9jKCkuIAorICogV2hlbiB0aGUgYXBwbGljYXRpb24gaGFzIGZpbmlzaGVkIHVzaW5nCisgKiB0aGUgcG9vbCwgaXQgbXVzdCBjYWxsICNwal9wb29sX3JlbGVhc2UoKSB0byBmcmVlIGFsbCB0aGUgY2h1bmtzIHByZXZpb3VzbHkKKyAqIGFsbG9jYXRlZCBhbmQgcmVsZWFzZSB0aGUgcG9vbCBiYWNrIHRvIHRoZSBmYWN0b3J5LgorICoKKyAqIEEgbWVtb3J5IHBvb2wgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhbiBpbml0aWFsIGFtb3VudCBvZiBtZW1vcnksIHdoaWNoIGlzCisgKiBjYWxsZWQgYSBibG9jay4gUG9vbCBjYW4gYmUgY29uZmlndXJlZCB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBtb3JlIG1lbW9yeSAKKyAqIGJsb2NrcyB3aGVuIGl0IHJ1bnMgb3V0IG9mIG1lbW9yeS4gCisgKgorICogVGhlIHBvb2wgZG9lc24ndCBrZWVwIHRyYWNrIG9mIGluZGl2aWR1YWwgbWVtb3J5IGFsbG9jYXRpb25zCisgKiBieSB1c2VyLCBhbmQgdGhlIHVzZXIgZG9lc24ndCBoYXZlIHRvIGZyZWUgdGhlc2UgaW5kaWR1YWwgYWxsb2NhdGlvbnMuIFRoaXMKKyAqIG1ha2VzIG1lbW9yeSBhbGxvY2F0aW9uIHNpbXBsZSBhbmQgdmVyeSBmYXN0LiBBbGwgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZnJvbQorICogdGhlIHBvb2wgd2lsbCBiZSBkZXN0cm95ZWQgd2hlbiB0aGUgcG9vbCBpdHNlbGYgaXMgZGVzdHJveWVkLgorICoKKyAqIFxzZWN0aW9uIFBKX1BPT0xfVEhSRUFESU5HX1NFQyBNb3JlIG9uIFRocmVhZGluZyBQb2xpY2llcworICogLSBCeSBkZXNpZ24sIG1lbW9yeSBhbGxvY2F0aW9uIGZyb20gYSBwb29sIGlzIG5vdCB0aHJlYWQgc2FmZS4gV2UgYXNzdW1lZCAKKyAqICAgdGhhdCBhIHBvb2wgd2lsbCBiZSBvd25lZCBieSBhbiBvYmplY3QsIGFuZCB0aHJlYWQgc2FmZXR5IHNob3VsZCBiZSAKKyAqICAgaGFuZGxlZCBieSB0aGF0IG9iamVjdC4gVGh1cyB0aGVzZSBmdW5jdGlvbnMgYXJlIG5vdCB0aHJlYWQgc2FmZTogCisgKgktICNwal9wb29sX2FsbG9jLCAKKyAqCS0gI3BqX3Bvb2xfY2FsbG9jLCAKKyAqCS0gYW5kIG90aGVyIHBvb2wgc3RhdGlzdGljIGZ1bmN0aW9ucy4KKyAqIC0gVGhyZWFkaW5nIGluIHRoZSBwb29sIGZhY3RvcnkgaXMgZGVjaWRlZCBieSB0aGUgcG9saWN5IHNldCBmb3IgdGhlCisgKiAgIGZhY3Rvcnkgd2hlbiBpdCB3YXMgY3JlYXRlZC4KKyAqCisgKiBcc2VjdGlvbiBQSl9QT09MX0VYQU1QTEVTX1NFQyBFeGFtcGxlcworICoKKyAqIEZvciBzb21lIHNhbXBsZSBjb2RlcyBvbiBob3cgdG8gdXNlIHRoZSBwb29sLCBwbGVhc2Ugc2VlOgorICogIC0gQHJlZiBwYWdlX3BqbGliX3Bvb2xfdGVzdAorICoKKyAqIEB7CisgKi8KKworLyoqCisgKiBUaGUgdHlwZSBmb3IgZnVuY3Rpb24gdG8gcmVjZWl2ZSBjYWxsYmFjayBmcm9tIHRoZSBwb29sIHdoZW4gaXQgaXMgdW5hYmxlCisgKiB0byBhbGxvY2F0ZSBtZW1vcnkuIFRoZSBlbGVnYW50IHdheSB0byBoYW5kbGUgdGhpcyBjb25kaXRpb24gaXMgdG8gdGhyb3cKKyAqIGV4Y2VwdGlvbiwgYW5kIHRoaXMgaXMgd2hhdCBpcyBleHBlY3RlZCBieSBtb3N0IG9mIHRoaXMgbGlicmFyeSAKKyAqIGNvbXBvbmVudHMuCisgKi8KK3R5cGVkZWYgdm9pZCBwal9wb29sX2NhbGxiYWNrKHBqX3Bvb2xfdCAqcG9vbCwgcGpfc2l6ZV90IHNpemUpOworCisvKioKKyAqIFRoaXMgY2xhc3MsIHdoaWNoIGlzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgcG9vbCwgZGVzY3JpYmVzIGEgc2luZ2xlIAorICogYmxvY2sgb2YgbWVtb3J5IGZyb20gd2hpY2ggdXNlciBtZW1vcnkgYWxsb2NhdGlvbnMgd2lsbCBiZSBhbGxvY2F0ZWQgZnJvbS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfcG9vbF9ibG9jaworeworICAgIFBKX0RFQ0xfTElTVF9NRU1CRVIoc3RydWN0IHBqX3Bvb2xfYmxvY2spOyAgLyoqPCBMaXN0J3MgcHJldiBhbmQgbmV4dC4gICovCisgICAgdW5zaWduZWQgY2hhciAgICAqYnVmOyAgICAgICAgICAgICAgICAgICAgICAvKio8IFN0YXJ0IG9mIGJ1ZmZlci4gICAgICAgKi8KKyAgICB1bnNpZ25lZCBjaGFyICAgICpjdXI7ICAgICAgICAgICAgICAgICAgICAgIC8qKjwgQ3VycmVudCBhbGxvYyBwdHIuICAgICAqLworICAgIHVuc2lnbmVkIGNoYXIgICAgKmVuZDsgICAgICAgICAgICAgICAgICAgICAgLyoqPCBFbmQgb2YgYnVmZmVyLiAgICAgICAgICovCit9IHBqX3Bvb2xfYmxvY2s7CisKKworLyoqCisgKiBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgdGhlIG1lbW9yeSBwb29sLiBPbmx5IGltcGxlbWVudG9ycyBvZiBwb29sIGZhY3RvcnkKKyAqIG5lZWQgdG8gY2FyZSBhYm91dCB0aGUgY29udGVudHMgb2YgdGhpcyBzdHJ1Y3R1cmUuCisgKi8KK3N0cnVjdCBwal9wb29sX3QKK3sKKyAgICBQSl9ERUNMX0xJU1RfTUVNQkVSKHN0cnVjdCBwal9wb29sX3QpOyAgLyoqPCBTdGFuZGFyZCBsaXN0IGVsZW1lbnRzLiAgICAqLworCisgICAgLyoqIFBvb2wgbmFtZSAqLworICAgIGNoYXIJICAgIG9ial9uYW1lW1BKX01BWF9PQkpfTkFNRV07CisKKyAgICAvKiogUG9vbCBmYWN0b3J5LiAqLworICAgIHBqX3Bvb2xfZmFjdG9yeSAqZmFjdG9yeTsKKworICAgIC8qKiBEYXRhIHB1dCBieSBmYWN0b3J5ICovCisgICAgdm9pZAkgICAgKmZhY3RvcnlfZGF0YTsKKworICAgIC8qKiBDdXJyZW50IGNhcGFjaXR5IGFsbG9jYXRlZCBieSB0aGUgcG9vbC4gKi8KKyAgICBwal9zaXplX3QJICAgIGNhcGFjaXR5OworCisgICAgLyoqIFNpemUgb2YgbWVtb3J5IGJsb2NrIHRvIGJlIGFsbG9jYXRlZCB3aGVuIHRoZSBwb29sIHJ1bnMgb3V0IG9mIG1lbW9yeSAqLworICAgIHBqX3NpemVfdAkgICAgaW5jcmVtZW50X3NpemU7CisKKyAgICAvKiogTGlzdCBvZiBtZW1vcnkgYmxvY2tzIGFsbGNvYXRlZCBieSB0aGUgcG9vbC4gKi8KKyAgICBwal9wb29sX2Jsb2NrICAgYmxvY2tfbGlzdDsKKworICAgIC8qKiBUaGUgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHBvb2wgaXMgdW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeS4gKi8KKyAgICBwal9wb29sX2NhbGxiYWNrICpjYWxsYmFjazsKKworfTsKKworCisvKioKKyAqIEd1aWRhbmNlIG9uIGhvdyBtdWNoIG1lbW9yeSByZXF1aXJlZCBmb3IgaW5pdGlhbCBwb29sIGFkbWluaXN0cmF0aXZlIGRhdGEuCisgKi8KKyNkZWZpbmUgUEpfUE9PTF9TSVpFCSAgICAgICAgKHNpemVvZihzdHJ1Y3QgcGpfcG9vbF90KSkKKworLyoqIAorICogUG9vbCBtZW1vcnkgYWxpZ25tZW50IChtdXN0IGJlIHBvd2VyIG9mIDIpLiAKKyAqLworI2lmbmRlZiBQSl9QT09MX0FMSUdOTUVOVAorIyAgIGRlZmluZSBQSl9QT09MX0FMSUdOTUVOVCAgICA0CisjZW5kaWYKKworLyoqCisgKiBDcmVhdGUgYSBuZXcgcG9vbCBmcm9tIHRoZSBwb29sIGZhY3RvcnkuIFRoaXMgd3JhcHBlciB3aWxsIGNhbGwgY3JlYXRlX3Bvb2wKKyAqIG1lbWJlciBvZiB0aGUgcG9vbCBmYWN0b3J5LgorICoKKyAqIEBwYXJhbSBmYWN0b3J5CSAgICBUaGUgcG9vbCBmYWN0b3J5LgorICogQHBhcmFtIG5hbWUJCSAgICBUaGUgbmFtZSB0byBiZSBhc3NpZ25lZCB0byB0aGUgcG9vbC4gVGhlIG5hbWUgc2hvdWxkIAorICoJCQkgICAgbm90IGJlIGxvbmdlciB0aGFuIFBKX01BWF9PQkpfTkFNRSAoMzIgY2hhcnMpLCBvciAKKyAqCQkJICAgIG90aGVyd2lzZSBpdCB3aWxsIGJlIHRydW5jYXRlZC4KKyAqIEBwYXJhbSBpbml0aWFsX3NpemUJICAgIFRoZSBzaXplIG9mIGluaXRpYWwgbWVtb3J5IGJsb2NrcyB0YWtlbiBieSB0aGUgcG9vbC4KKyAqCQkJICAgIE5vdGUgdGhhdCB0aGUgcG9vbCB3aWxsIHRha2UgNjgrMjAgYnl0ZXMgZm9yIAorICoJCQkgICAgYWRtaW5pc3RyYXRpdmUgYXJlYSBmcm9tIHRoaXMgYmxvY2suCisgKiBAcGFyYW0gaW5jcmVtZW50X3NpemUgICAgdGhlIHNpemUgb2YgZWFjaCBhZGRpdGlvbmFsIGJsb2NrcyB0byBiZSBhbGxvY2F0ZWQKKyAqCQkJICAgIHdoZW4gdGhlIHBvb2wgaXMgcnVubmluZyBvdXQgb2YgbWVtb3J5LiBJZiB1c2VyIAorICoJCQkgICAgcmVxdWVzdHMgbWVtb3J5IHdoaWNoIGlzIGxhcmdlciB0aGFuIHRoaXMgc2l6ZSwgdGhlbiAKKyAqCQkJICAgIGFuIGVycm9yIG9jY3Vycy4KKyAqCQkJICAgIE5vdGUgdGhhdCBlYWNoIHRpbWUgYSBwb29sIGFsbG9jYXRlcyBhZGRpdGlvbmFsIGJsb2NrLCAKKyAqCQkJICAgIGl0IG5lZWRzIFBKX1BPT0xfU0laRSBtb3JlIHRvIHN0b3JlIHNvbWUgCisgKgkJCSAgICBhZG1pbmlzdHJhdGl2ZSBpbmZvLgorICogQHBhcmFtIGNhbGxiYWNrCSAgICBDYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBlcnJvciBvY2N1cnMgaW4gdGhlIHBvb2wuCisgKgkJCSAgICBJZiB0aGlzIHZhbHVlIGlzIE5VTEwsIHRoZW4gdGhlIGNhbGxiYWNrIGZyb20gcG9vbAorICoJCQkgICAgZmFjdG9yeSBwb2xpY3kgd2lsbCBiZSB1c2VkLgorICoJCQkgICAgTm90ZSB0aGF0IHdoZW4gYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBwb29sIGNyZWF0aW9uLCAKKyAqCQkJICAgIHRoZSBjYWxsYmFjayBpdHNlbGYgaXMgbm90IGNhbGxlZC4gSW5zdGVhZCwgTlVMTCAKKyAqCQkJICAgIHdpbGwgYmUgcmV0dXJuZWQuCisgKgorICogQHJldHVybiAgICAgICAgICAgICAgICAgIFRoZSBtZW1vcnkgcG9vbCwgb3IgTlVMTC4KKyAqLworUEpfSURFQ0wocGpfcG9vbF90KikgcGpfcG9vbF9jcmVhdGUocGpfcG9vbF9mYWN0b3J5ICpmYWN0b3J5LCAKKwkJCQkgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgcGpfc2l6ZV90IGluaXRpYWxfc2l6ZSwgCisJCQkJICAgIHBqX3NpemVfdCBpbmNyZW1lbnRfc2l6ZSwKKwkJCQkgICAgcGpfcG9vbF9jYWxsYmFjayAqY2FsbGJhY2spOworCisvKioKKyAqIFJlbGVhc2UgdGhlIHBvb2wgYmFjayB0byBwb29sIGZhY3RvcnkuCisgKgorICogQHBhcmFtIHBvb2wJICAgIE1lbW9yeSBwb29sLgorICovCitQSl9JREVDTCh2b2lkKSBwal9wb29sX3JlbGVhc2UoIHBqX3Bvb2xfdCAqcG9vbCApOworCisvKioKKyAqIEdldCBwb29sIG9iamVjdCBuYW1lLgorICoKKyAqIEBwYXJhbSBwb29sIHRoZSBwb29sLgorICoKKyAqIEByZXR1cm4gcG9vbCBuYW1lIGFzIE5VTEwgdGVybWluYXRlZCBzdHJpbmcuCisgKi8KK1BKX0lERUNMKGNvbnN0IGNoYXIgKikgcGpfcG9vbF9nZXRvYmpuYW1lKCBjb25zdCBwal9wb29sX3QgKnBvb2wgKTsKKworLyoqCisgKiBSZXNldCB0aGUgcG9vbCB0byBpdHMgc3RhdGUgd2hlbiBpdCB3YXMgaW5pdGlhbGl6ZWQuCisgKiBUaGlzIG1lYW5zIHRoYXQgaWYgYWRkaXRpb25hbCBibG9ja3MgaGF2ZSBiZWVuIGFsbG9jYXRlZCBkdXJpbmcgcnVudGltZSwgCisgKiB0aGVuIHRoZXkgd2lsbCBiZSBmcmVlZC4gT25seSB0aGUgb3JpZ2luYWwgYmxvY2sgYWxsb2NhdGVkIGR1cmluZyAKKyAqIGluaXRpYWxpemF0aW9uIGlzIHJldGFpbmVkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyByZXNldCB0aGUgaW50ZXJuYWwgCisgKiBjb3VudGVycywgc3VjaCBhcyBwb29sIGNhcGFjaXR5IGFuZCB1c2VkIHNpemUuCisgKgorICogQHBhcmFtIHBvb2wgdGhlIHBvb2wuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfcG9vbF9yZXNldCggcGpfcG9vbF90ICpwb29sICk7CisKKworLyoqCisgKiBHZXQgdGhlIHBvb2wgY2FwYWNpdHksIHRoYXQgaXMsIHRoZSBzeXN0ZW0gc3RvcmFnZSB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQKKyAqIGJ5IHRoZSBwb29sLCBhbmQgaGF2ZSBiZWVuIHVzZWQvd2lsbCBiZSB1c2VkIHRvIGFsbG9jYXRlIHVzZXIgcmVxdWVzdHMuCisgKiBUaGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZSByZXByZXNlbnQgYSBzaW5nbGUKKyAqIGNvbnRpZ3VvdXMgYmxvY2ssIGJlY2F1c2UgdGhlIGNhcGFjaXR5IG1heSBiZSBzcHJlYWQgaW4gc2V2ZXJhbCBibG9ja3MuCisgKgorICogQHBhcmFtIHBvb2wJdGhlIHBvb2wuCisgKgorICogQHJldHVybiB0aGUgY2FwYWNpdHkuCisgKi8KK1BKX0lERUNMKHBqX3NpemVfdCkgcGpfcG9vbF9nZXRfY2FwYWNpdHkoIHBqX3Bvb2xfdCAqcG9vbCApOworCisvKioKKyAqIEdldCB0aGUgdG90YWwgc2l6ZSBvZiB1c2VyIGFsbG9jYXRpb24gcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gcG9vbAl0aGUgcG9vbC4KKyAqCisgKiBAcmV0dXJuIHRoZSB0b3RhbCBzaXplLgorICovCitQSl9JREVDTChwal9zaXplX3QpIHBqX3Bvb2xfZ2V0X3VzZWRfc2l6ZSggcGpfcG9vbF90ICpwb29sICk7CisKKy8qKgorICogQWxsb2NhdGUgc3RvcmFnZSB3aXRoIHRoZSBzcGVjaWZpZWQgc2l6ZSBmcm9tIHRoZSBwb29sLgorICogSWYgdGhlcmUncyBubyBzdG9yYWdlIGF2YWlsYWJsZSBpbiB0aGUgcG9vbCwgdGhlbiB0aGUgcG9vbCBjYW4gYWxsb2NhdGUgbW9yZQorICogYmxvY2tzIGlmIHRoZSBpbmNyZW1lbnQgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgcmVxdWVzdGVkIHNpemUuCisgKgorICogQHBhcmFtIHBvb2wJICAgIHRoZSBwb29sLgorICogQHBhcmFtIHNpemUJICAgIHRoZSByZXF1ZXN0ZWQgc2l6ZS4KKyAqCisgKiBAcmV0dXJuIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBtZW1vcnkuCisgKgorICogQHNlZSBQSl9QT09MX0FMTE9DX1QKKyAqLworUEpfSURFQ0wodm9pZCopIHBqX3Bvb2xfYWxsb2MoIHBqX3Bvb2xfdCAqcG9vbCwgcGpfc2l6ZV90IHNpemUpOworCisvKioKKyAqIEFsbG9jYXRlIHN0b3JhZ2UgIGZyb20gdGhlIHBvb2wsIGFuZCBpbml0aWFsaXplIGl0IHRvIHplcm8uCisgKiBUaGlzIGZ1bmN0aW9uIGJlaGF2ZXMgbGlrZSBwal9wb29sX2FsbG9jKCksIGV4Y2VwdCB0aGF0IHRoZSBzdG9yYWdlIHdpbGwKKyAqIGJlIGluaXRpYWxpemVkIHRvIHplcm8uCisgKgorICogQHBhcmFtIHBvb2wJICAgIHRoZSBwb29sLgorICogQHBhcmFtIGNvdW50CSAgICB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheS4KKyAqIEBwYXJhbSBlbGVtCSAgICB0aGUgc2l6ZSBvZiBpbmRpdmlkdWFsIGVsZW1lbnQuCisgKgorICogQHJldHVybiBwb2ludGVyIHRvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LgorICovCitQSl9JREVDTCh2b2lkKikgcGpfcG9vbF9jYWxsb2MoIHBqX3Bvb2xfdCAqcG9vbCwgcGpfc2l6ZV90IGNvdW50LCAKKwkJCQlwal9zaXplX3QgZWxlbSk7CisKKworLyoqCisgKiBBbGxvY2F0ZSBzdG9yYWdlIGZyb20gdGhlIHBvb2wgYW5kIGluaXRpYWxpemUgaXQgdG8gemVyby4KKyAqCisgKiBAcGFyYW0gcG9vbAkgICAgVGhlIHBvb2wuCisgKiBAcGFyYW0gc2l6ZQkgICAgVGhlIHNpemUgdG8gYmUgYWxsb2NhdGVkLgorICoKKyAqIEByZXR1cm4JICAgIFBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBtZW1vcnkuCisgKgorICogQHNlZSBQSl9QT09MX1pBTExPQ19UCisgKi8KK1BKX0lOTElORSh2b2lkKikgcGpfcG9vbF96YWxsb2MocGpfcG9vbF90ICpwb29sLCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gcGpfcG9vbF9jYWxsb2MocG9vbCwgMSwgc2l6ZSk7Cit9CisKKworLyoqCisgKiBUaGlzIG1hY3JvIGFsbG9jYXRlcyBtZW1vcnkgZnJvbSB0aGUgcG9vbCBhbmQgcmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YKKyAqIHRoZSBzcGVjaWZpZWQgdHlwZS4gSXQgcHJvdmlkZXMgYSBzdHJpY2tlciB0eXBlIHNhZmV0eSB0aGFuIHBqX3Bvb2xfYWxsb2MoKQorICogc2luY2UgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIG1hY3JvIHdpbGwgYmUgdHlwZS1jYXN0ZWQgdG8gdGhlIHNwZWNpZmllZAorICogdHlwZS4KKyAqCisgKiBAcGFyYW0gcG9vbAkgICAgVGhlIHBvb2wKKyAqIEBwYXJhbSB0eXBlCSAgICBUaGUgdHlwZSBvZiBvYmplY3QgdG8gYmUgYWxsb2NhdGVkCisgKgorICogQHJldHVybgkgICAgTWVtb3J5IGJ1ZmZlciBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuCisgKi8KKyNkZWZpbmUgUEpfUE9PTF9BTExPQ19UKHBvb2wsdHlwZSkgXAorCSAgICAoKHR5cGUqKXBqX3Bvb2xfYWxsb2MocG9vbCwgc2l6ZW9mKHR5cGUpKSkKKworLyoqCisgKiBUaGlzIG1hY3JvIGFsbG9jYXRlcyBtZW1vcnkgZnJvbSB0aGUgcG9vbCwgemVyb2VzIHRoZSBidWZmZXIsIGFuZCAKKyAqIHJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS4gSXQgcHJvdmlkZXMgYSBzdHJpY2tlciB0eXBlIAorICogc2FmZXR5IHRoYW4gcGpfcG9vbF96YWxsb2MoKSBzaW5jZSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgbWFjcm8gd2lsbCBiZSAKKyAqIHR5cGUtY2FzdGVkIHRvIHRoZSBzcGVjaWZpZWQgdHlwZS4KKyAqCisgKiBAcGFyYW0gcG9vbAkgICAgVGhlIHBvb2wKKyAqIEBwYXJhbSB0eXBlCSAgICBUaGUgdHlwZSBvZiBvYmplY3QgdG8gYmUgYWxsb2NhdGVkCisgKgorICogQHJldHVybgkgICAgTWVtb3J5IGJ1ZmZlciBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuCisgKi8KKyNkZWZpbmUgUEpfUE9PTF9aQUxMT0NfVChwb29sLHR5cGUpIFwKKwkgICAgKCh0eXBlKilwal9wb29sX3phbGxvYyhwb29sLCBzaXplb2YodHlwZSkpKQorCisvKgorICogSW50ZXJuYWwgZnVuY3Rpb25zCisgKi8KK1BKX0lERUNMKHZvaWQqKSBwal9wb29sX2FsbG9jX2Zyb21fYmxvY2socGpfcG9vbF9ibG9jayAqYmxvY2ssIHBqX3NpemVfdCBzaXplKTsKK1BKX0RFQ0wodm9pZCopIHBqX3Bvb2xfYWxsb2NhdGVfZmluZChwal9wb29sX3QgKnBvb2wsIHBqX3NpemVfdCBzaXplKTsKKworCisJCisvKioKKyAqIEB9CS8vIFBKX1BPT0wKKyAqLworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogQGRlZmdyb3VwIFBKX1BPT0xfRkFDVE9SWSBQb29sIEZhY3RvcnkgYW5kIFBvbGljeQorICogQGluZ3JvdXAgUEpfUE9PTF9HUk9VUAorICogQGJyaWVmCisgKiBBIHBvb2wgb2JqZWN0IG11c3QgYmUgY3JlYXRlZCB0aHJvdWdoIGEgZmFjdG9yeS4gQSBmYWN0b3J5IG5vdCBvbmx5IHByb3ZpZGVzCisgKiBnZW5lcmljIGludGVyZmFjZSBmdW5jdGlvbnMgdG8gY3JlYXRlIGFuZCByZWxlYXNlIHBvb2wsIGJ1dCBhbHNvIHByb3ZpZGVzIAorICogc3RyYXRlZ3kgdG8gbWFuYWdlIHRoZSBsaWZlIHRpbWUgb2YgcG9vbHMuIE9uZSBzYW1wbGUgaW1wbGVtZW50YXRpb24sIAorICogXGEgcGpfY2FjaGluZ19wb29sLCBjYW4gYmUgc2V0IHRvIGtlZXAgdGhlIHBvb2xzIHJlbGVhc2VkIGJ5IGFwcGxpY2F0aW9uIGZvcgorICogZnV0dXJlIHVzZSBhcyBsb25nIGFzIHRoZSB0b3RhbCBtZW1vcnkgaXMgYmVsb3cgdGhlIGxpbWl0LgorICogCisgKiBUaGUgcG9vbCBmYWN0b3J5IGludGVyZmFjZSBkZWNsYXJlZCBpbiBQSkxJQiBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlLgorICogQXBwbGljYXRpb24gY2FuIGRlZmluZSBpdHMgb3duIHN0cmF0ZWd5IGJ5IGNyZWF0aW5nIGl0J3Mgb3duIHBvb2wgZmFjdG9yeQorICogaW1wbGVtZW50YXRpb24sIGFuZCB0aGlzIHN0cmF0ZWd5IGNhbiBiZSB1c2VkIGV2ZW4gYnkgZXhpc3RpbmcgbGlicmFyeQorICogd2l0aG91dCByZWNvbXBpbGF0aW9uLgorICoKKyAqIFxzZWN0aW9uIFBKX1BPT0xfRkFDVE9SWV9JVEYgUG9vbCBGYWN0b3J5IEludGVyZmFjZQorICogVGhlIHBvb2wgZmFjdG9yeSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgorICogIC0gXGEgcG9saWN5OiB0aGUgbWVtb3J5IHBvb2wgZmFjdG9yeSBwb2xpY3kuCisgKiAgLSBcYSBjcmVhdGVfcG9vbCgpOiBjcmVhdGUgYSBuZXcgbWVtb3J5IHBvb2wuCisgKiAgLSBcYSByZWxlYXNlX3Bvb2woKTogcmVsZWFzZSBtZW1vcnkgcG9vbCBiYWNrIHRvIGZhY3RvcnkuCisgKgorICogXHNlY3Rpb24gUEpfUE9PTF9GQUNUT1JZX1BPTCBQb29sIEZhY3RvcnkgUG9saWN5LgorICoKKyAqIEEgcG9vbCBmYWN0b3J5IG9ubHkgZGVmaW5lcyBmdW5jdGlvbnMgdG8gY3JlYXRlIGFuZCByZWxlYXNlIHBvb2wgYW5kIGhvdworICogdG8gbWFuYWdlIHBvb2xzLCBidXQgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uYWxpdGllcyBhcmUgY29udHJvbGxlZCBieQorICogcG9saWN5LiBBIHBvb2wgcG9saWN5IGRlZmluZXM6CisgKiAgLSBob3cgbWVtb3J5IGJsb2NrIGlzIGFsbG9jYXRlZCBhbmQgZGVhbGxvY2F0ZWQgKHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisgKiAgICBhbGxvY2F0ZXMgYW5kIGRlYWxsb2NhdGUgbWVtb3J5IGJ5IGNhbGxpbmcgbWFsbG9jKCkgYW5kIGZyZWUoKSkuCisgKiAgLSBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBpbnNpZGUgYSBwb29sIGZhaWxzICh0aGUKKyAqICAgIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gd2lsbCB0aHJvdyBQSl9OT19NRU1PUllfRVhDRVBUSU9OIGV4Y2VwdGlvbikuCisgKiAgLSBjb25jdXJyZW5jeSB3aGVuIGNyZWF0aW5nIGFuZCByZWxlYXNpbmcgcG9vbCBmcm9tL3RvIHRoZSBmYWN0b3J5LgorICoKKyAqIEEgcG9vbCBmYWN0b3J5IGNhbiBiZSBnaXZlbiBkaWZmZXJlbnQgcG9saWN5IGR1cmluZyBjcmVhdGlvbiB0byBtYWtlCisgKiBpdCBiZWhhdmUgZGlmZmVyZW50bHkuIEZvciBleGFtcGxlLCBjYWNoaW5nIHBvb2wgZmFjdG9yeSBjYW4gYmUgY29uZmlndXJlZAorICogdG8gYWxsb2NhdGUgYW5kIGRlYWxsb2NhdGUgZnJvbSBhIHN0YXRpYy9jb250aWd1b3VzL3ByZWFsbG9jYXRlZCBtZW1vcnkgCisgKiBpbnN0ZWFkIG9mIHVzaW5nIG1hbGxvYygpL2ZyZWUoKS4KKyAqIAorICogV2hhdCBzdHJhdGVneS9mYWN0b3J5IGFuZCB3aGF0IHBvbGljeSB0byB1c2UgaXMgbm90IGRlZmluZWQgYnkgUEpMSUIsIGJ1dAorICogaW5zdGVhZCBpcyBsZWZ0IHRvIGFwcGxpY2F0aW9uIHRvIG1ha2UgdXNlIHdoaWNoZXZlciBpcyBtb3N0IGVmZmljaWVudCBmb3IKKyAqIGl0c2VsZi4KKyAqCisgKiBUaGUgcG9vbCBmYWN0b3J5IHBvbGljeSBjb250cm9scyB0aGUgYmVoYXZpb3VyIG9mIG1lbW9yeSBmYWN0b3JpZXMsIGFuZAorICogZGVmaW5lcyB0aGUgZm9sbG93aW5nIGludGVyZmFjZToKKyAqICAtIFxhIGJsb2NrX2FsbG9jKCk6IGFsbG9jYXRlIG1lbW9yeSBibG9jayBmcm9tIGJhY2tlbmQgbWVtb3J5IG1nbXQvc3lzdGVtLgorICogIC0gXGEgYmxvY2tfZnJlZSgpOiBmcmVlIG1lbW9yeSBibG9jayBiYWNrIHRvIGJhY2tlbmQgbWVtb3J5IG1nbXQvc3lzdGVtLgorICogQHsKKyAqLworCisvKiBXZSB1bmZvcnR1bmF0ZWx5IGRvbid0IGhhdmUgc3VwcG9ydCBmb3IgZmFjdG9yeSBwb2xpY3kgb3B0aW9ucyBhcyBub3csCisgICBzbyB3ZSBrZWVwIHRoaXMgY29tbWVudGVkIGF0IHRoZSBtb21lbnQuCitlbnVtIFBKX1BPT0xfRkFDVE9SWV9PUFRJT04KK3sKKyAgICBQSl9QT09MX0ZBQ1RPUllfU0VSSUFMSVpFID0gMQorfTsKKyovCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVjbGFyZXMgcG9vbCBmYWN0b3J5IGludGVyZmFjZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfcG9vbF9mYWN0b3J5X3BvbGljeQoreworICAgIC8qKgorICAgICAqIEFsbG9jYXRlIG1lbW9yeSBibG9jayAoZm9yIHVzZSBieSBwb29sKS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKyAgICAgKiBieSBtZW1vcnkgcG9vbCB0byBhbGxvY2F0ZSBtZW1vcnkgYmxvY2suCisgICAgICogCisgICAgICogQHBhcmFtIGZhY3RvcnkJUG9vbCBmYWN0b3J5LgorICAgICAqIEBwYXJhbSBzaXplCVRoZSBzaXplIG9mIG1lbW9yeSBibG9jayB0byBhbGxvY2F0ZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4JCU1lbW9yeSBibG9jay4KKyAgICAgKi8KKyAgICB2b2lkKiAoKmJsb2NrX2FsbG9jKShwal9wb29sX2ZhY3RvcnkgKmZhY3RvcnksIHBqX3NpemVfdCBzaXplKTsKKworICAgIC8qKgorICAgICAqIEZyZWUgbWVtb3J5IGJsb2NrLgorICAgICAqCisgICAgICogQHBhcmFtIGZhY3RvcnkJUG9vbCBmYWN0b3J5LgorICAgICAqIEBwYXJhbSBtZW0JTWVtb3J5IGJsb2NrIHByZXZpb3VzbHkgYWxsb2NhdGVkIGJ5IGJsb2NrX2FsbG9jKCkuCisgICAgICogQHBhcmFtIHNpemUJVGhlIHNpemUgb2YgbWVtb3J5IGJsb2NrLgorICAgICAqLworICAgIHZvaWQgKCpibG9ja19mcmVlKShwal9wb29sX2ZhY3RvcnkgKmZhY3RvcnksIHZvaWQgKm1lbSwgcGpfc2l6ZV90IHNpemUpOworCisgICAgLyoqCisgICAgICogRGVmYXVsdCBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4KKyAgICAgKi8KKyAgICBwal9wb29sX2NhbGxiYWNrICpjYWxsYmFjazsKKworICAgIC8qKgorICAgICAqIE9wdGlvbiBmbGFncy4KKyAgICAgKi8KKyAgICB1bnNpZ25lZCBmbGFnczsKKworfSBwal9wb29sX2ZhY3RvcnlfcG9saWN5OworCisvKioKKyAqIFxkZWYgUEpfTk9fTUVNT1JZX0VYQ0VQVElPTgorICogVGhpcyBjb25zdGFudCBkZW5vdGVzIHRoZSBleGNlcHRpb24gbnVtYmVyIHRoYXQgd2lsbCBiZSB0aHJvd24gYnkgZGVmYXVsdAorICogbWVtb3J5IGZhY3RvcnkgcG9saWN5IHdoZW4gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuCisgKgorICogQHNlZSBwal9OT19NRU1PUllfRVhDRVBUSU9OKCkKKyAqLworUEpfREVDTF9EQVRBKGludCkgUEpfTk9fTUVNT1JZX0VYQ0VQVElPTjsKKworLyoqCisgKiBHZXQgI1BKX05PX01FTU9SWV9FWENFUFRJT04gY29uc3RhbnQuCisgKi8gCitQSl9ERUNMKGludCkgcGpfTk9fTUVNT1JZX0VYQ0VQVElPTih2b2lkKTsKKworLyoqCisgKiBUaGlzIGdsb2JhbCB2YXJpYWJsZSBwb2ludHMgdG8gZGVmYXVsdCBtZW1vcnkgcG9vbCBmYWN0b3J5IHBvbGljeS4KKyAqIFRoZSBiZWhhdmlvdXIgb2YgdGhlIGRlZmF1bHQgcG9saWN5IGlzOgorICogIC0gYmxvY2sgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHVzZSBtYWxsb2MoKSBhbmQgZnJlZSgpLgorICogIC0gY2FsbGJhY2sgd2lsbCByYWlzZSBQSl9OT19NRU1PUllfRVhDRVBUSU9OIGV4Y2VwdGlvbi4KKyAqICAtIGFjY2VzcyB0byBwb29sIGZhY3RvcnkgaXMgbm90IHNlcmlhbGl6ZWQgKGkuZS4gbm90IHRocmVhZCBzYWZlKS4KKyAqCisgKiBAc2VlIHBqX3Bvb2xfZmFjdG9yeV9nZXRfZGVmYXVsdF9wb2xpY3kKKyAqLworUEpfREVDTF9EQVRBKHBqX3Bvb2xfZmFjdG9yeV9wb2xpY3kpIHBqX3Bvb2xfZmFjdG9yeV9kZWZhdWx0X3BvbGljeTsKKworCisvKioKKyAqIEdldCB0aGUgZGVmYXVsdCBwb29sIGZhY3RvcnkgcG9saWN5LgorICoKKyAqIEByZXR1cm4gdGhlIHBvb2wgcG9saWN5LgorICovCitQSl9ERUNMKGNvbnN0IHBqX3Bvb2xfZmFjdG9yeV9wb2xpY3kqKSBwal9wb29sX2ZhY3RvcnlfZ2V0X2RlZmF1bHRfcG9saWN5KHZvaWQpOworCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGRlY2xhcmF0aW9uIGZvciBwb29sIGZhY3RvcnkgaW50ZXJmYWNlLgorICovCitzdHJ1Y3QgcGpfcG9vbF9mYWN0b3J5Cit7CisgICAgLyoqCisgICAgICogTWVtb3J5IHBvb2wgcG9saWN5LgorICAgICAqLworICAgIHBqX3Bvb2xfZmFjdG9yeV9wb2xpY3kgcG9saWN5OworCisgICAgLyoqCisgICAgKiBDcmVhdGUgYSBuZXcgcG9vbCBmcm9tIHRoZSBwb29sIGZhY3RvcnkuCisgICAgKgorICAgICogQHBhcmFtIGZhY3RvcnkJVGhlIHBvb2wgZmFjdG9yeS4KKyAgICAqIEBwYXJhbSBuYW1lCXRoZSBuYW1lIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBwb29sLiBUaGUgbmFtZSBzaG91bGQgCisgICAgKgkJCW5vdCBiZSBsb25nZXIgdGhhbiBQSl9NQVhfT0JKX05BTUUgKDMyIGNoYXJzKSwgb3IgCisgICAgKgkJCW90aGVyd2lzZSBpdCB3aWxsIGJlIHRydW5jYXRlZC4KKyAgICAqIEBwYXJhbSBpbml0aWFsX3NpemUgdGhlIHNpemUgb2YgaW5pdGlhbCBtZW1vcnkgYmxvY2tzIHRha2VuIGJ5IHRoZSBwb29sLgorICAgICoJCQlOb3RlIHRoYXQgdGhlIHBvb2wgd2lsbCB0YWtlIDY4KzIwIGJ5dGVzIGZvciAKKyAgICAqCQkJYWRtaW5pc3RyYXRpdmUgYXJlYSBmcm9tIHRoaXMgYmxvY2suCisgICAgKiBAcGFyYW0gaW5jcmVtZW50X3NpemUgdGhlIHNpemUgb2YgZWFjaCBhZGRpdGlvbmFsIGJsb2NrcyB0byBiZSBhbGxvY2F0ZWQKKyAgICAqCQkJd2hlbiB0aGUgcG9vbCBpcyBydW5uaW5nIG91dCBvZiBtZW1vcnkuIElmIHVzZXIgCisgICAgKgkJCXJlcXVlc3RzIG1lbW9yeSB3aGljaCBpcyBsYXJnZXIgdGhhbiB0aGlzIHNpemUsIHRoZW4gCisgICAgKgkJCWFuIGVycm9yIG9jY3Vycy4KKyAgICAqCQkJTm90ZSB0aGF0IGVhY2ggdGltZSBhIHBvb2wgYWxsb2NhdGVzIGFkZGl0aW9uYWwgYmxvY2ssIAorICAgICoJCQlpdCBuZWVkcyAyMCBieXRlcyAoZXF1YWwgdG8gc2l6ZW9mKHBqX3Bvb2xfYmxvY2spKSB0byAKKyAgICAqCQkJc3RvcmUgc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvLgorICAgICogQHBhcmFtIGNhbGxiYWNrCUNsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gZXJyb3Igb2NjdXJzIGluIHRoZSBwb29sLgorICAgICoJCQlOb3RlIHRoYXQgd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHBvb2wgY3JlYXRpb24sIAorICAgICoJCQl0aGUgY2FsbGJhY2sgaXRzZWxmIGlzIG5vdCBjYWxsZWQuIEluc3RlYWQsIE5VTEwgCisgICAgKgkJCXdpbGwgYmUgcmV0dXJuZWQuCisgICAgKgorICAgICogQHJldHVybiB0aGUgbWVtb3J5IHBvb2wsIG9yIE5VTEwuCisgICAgKi8KKyAgICBwal9wb29sX3QqCSgqY3JlYXRlX3Bvb2wpKCBwal9wb29sX2ZhY3RvcnkgKmZhY3RvcnksCisJCQkJY29uc3QgY2hhciAqbmFtZSwKKwkJCQlwal9zaXplX3QgaW5pdGlhbF9zaXplLCAKKwkJCQlwal9zaXplX3QgaW5jcmVtZW50X3NpemUsCisJCQkJcGpfcG9vbF9jYWxsYmFjayAqY2FsbGJhY2spOworCisgICAgLyoqCisgICAgICogUmVsZWFzZSB0aGUgcG9vbCB0byB0aGUgcG9vbCBmYWN0b3J5LgorICAgICAqCisgICAgICogQHBhcmFtIGZhY3RvcnkJVGhlIHBvb2wgZmFjdG9yeS4KKyAgICAgKiBAcGFyYW0gcG9vbAlUaGUgcG9vbCB0byBiZSByZWxlYXNlZC4KKyAgICAqLworICAgIHZvaWQgKCpyZWxlYXNlX3Bvb2wpKCBwal9wb29sX2ZhY3RvcnkgKmZhY3RvcnksIHBqX3Bvb2xfdCAqcG9vbCApOworCisgICAgLyoqCisgICAgICogRHVtcCBwb29sIHN0YXR1cyB0byBsb2cuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZmFjdG9yeQlUaGUgcG9vbCBmYWN0b3J5LgorICAgICAqLworICAgIHZvaWQgKCpkdW1wX3N0YXR1cykoIHBqX3Bvb2xfZmFjdG9yeSAqZmFjdG9yeSwgcGpfYm9vbF90IGRldGFpbCApOworCisgICAgLyoqCisgICAgICogVGhpcyBpcyBvcHRpb25hbCBjYWxsYmFjayB0byBiZSBjYWxsZWQgYnkgYWxsb2NhdGlvbiBwb2xpY3kgd2hlbgorICAgICAqIGl0IGFsbG9jYXRlcyBhIG5ldyBtZW1vcnkgYmxvY2suIFRoZSBmYWN0b3J5IG1heSB1c2UgdGhpcyBjYWxsYmFjaworICAgICAqIGZvciBleGFtcGxlIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHRvdGFsIG51bWJlciBvZiBtZW1vcnkgYmxvY2tzCisgICAgICogY3VycmVudGx5IGFsbG9jYXRlZCBieSBhcHBsaWNhdGlvbnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZmFjdG9yeQkgICAgVGhlIHBvb2wgZmFjdG9yeS4KKyAgICAgKiBAcGFyYW0gc2l6ZQkgICAgU2l6ZSByZXF1ZXN0ZWQgYnkgYXBwbGljYXRpb24uCisgICAgICoKKyAgICAgKiBAcmV0dXJuCQkgICAgTVVTVCByZXR1cm4gUEpfVFJVRSwgb3RoZXJ3aXNlIHRoZSBibG9jaworICAgICAqICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb24gaXMgY2FuY2VsbGVkLgorICAgICAqLworICAgIHBqX2Jvb2xfdCAoKm9uX2Jsb2NrX2FsbG9jKShwal9wb29sX2ZhY3RvcnkgKmZhY3RvcnksIHBqX3NpemVfdCBzaXplKTsKKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgb3B0aW9uYWwgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIGJ5IGFsbG9jYXRpb24gcG9saWN5IHdoZW4KKyAgICAgKiBpdCBmcmVlcyBtZW1vcnkgYmxvY2suIFRoZSBmYWN0b3J5IG1heSB1c2UgdGhpcyBjYWxsYmFjaworICAgICAqIGZvciBleGFtcGxlIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHRvdGFsIG51bWJlciBvZiBtZW1vcnkgYmxvY2tzCisgICAgICogY3VycmVudGx5IGFsbG9jYXRlZCBieSBhcHBsaWNhdGlvbnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZmFjdG9yeQkgICAgVGhlIHBvb2wgZmFjdG9yeS4KKyAgICAgKiBAcGFyYW0gc2l6ZQkgICAgU2l6ZSBmcmVlZC4KKyAgICAgKi8KKyAgICB2b2lkICgqb25fYmxvY2tfZnJlZSkocGpfcG9vbF9mYWN0b3J5ICpmYWN0b3J5LCBwal9zaXplX3Qgc2l6ZSk7CisKK307CisKKy8qKgorICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IHBvb2wgZmFjdG9yeSBpbXBsZW1lbnRvcnMuCisgKiBAcGFyYW0gZmFjdG9yeSAgICAgICAgICAgUG9vbCBmYWN0b3J5LgorICogQHBhcmFtIG5hbWUgICAgICAgICAgICAgIFBvb2wgbmFtZS4KKyAqIEBwYXJhbSBpbml0aWFsX3NpemUgICAgICBJbml0aWFsIHNpemUuCisgKiBAcGFyYW0gaW5jcmVtZW50X3NpemUgICAgSW5jcmVtZW50IHNpemUuCisgKiBAcGFyYW0gY2FsbGJhY2sgICAgICAgICAgQ2FsbGJhY2suCisgKiBAcmV0dXJuICAgICAgICAgICAgICAgICAgVGhlIHBvb2wgb2JqZWN0LCBvciBOVUxMLgorICovCitQSl9ERUNMKHBqX3Bvb2xfdCopIHBqX3Bvb2xfY3JlYXRlX2ludCgJcGpfcG9vbF9mYWN0b3J5ICpmYWN0b3J5LCAKKwkJCQkJY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJcGpfc2l6ZV90IGluaXRpYWxfc2l6ZSwgCisJCQkJCXBqX3NpemVfdCBpbmNyZW1lbnRfc2l6ZSwKKwkJCQkJcGpfcG9vbF9jYWxsYmFjayAqY2FsbGJhY2spOworCisvKioKKyAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBwb29sIGZhY3RvcnkgaW1wbGVtZW50b3JzLgorICogQHBhcmFtIHBvb2wgICAgICAgICAgICAgIFRoZSBwb29sLgorICogQHBhcmFtIG5hbWUgICAgICAgICAgICAgIFBvb2wgbmFtZS4KKyAqIEBwYXJhbSBpbmNyZW1lbnRfc2l6ZSAgICBJbmNyZW1lbnQgc2l6ZS4KKyAqIEBwYXJhbSBjYWxsYmFjayAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbi4KKyAqLworUEpfREVDTCh2b2lkKSBwal9wb29sX2luaXRfaW50KCBwal9wb29sX3QgKnBvb2wsIAorCQkJCWNvbnN0IGNoYXIgKm5hbWUsCisJCQkJcGpfc2l6ZV90IGluY3JlbWVudF9zaXplLAorCQkJCXBqX3Bvb2xfY2FsbGJhY2sgKmNhbGxiYWNrKTsKKworLyoqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgcG9vbCBmYWN0b3J5IGltcGxlbWVudG9ycy4KKyAqIEBwYXJhbSBwb29sICAgICAgVGhlIG1lbW9yeSBwb29sLgorICovCitQSl9ERUNMKHZvaWQpIHBqX3Bvb2xfZGVzdHJveV9pbnQoIHBqX3Bvb2xfdCAqcG9vbCApOworCisKKy8qKgorICogRHVtcCBwb29sIGZhY3Rvcnkgc3RhdGUuCisgKiBAcGFyYW0gcGYJICAgIFRoZSBwb29sIGZhY3RvcnkuCisgKiBAcGFyYW0gZGV0YWlsICAgIERldGFpbCBzdGF0ZSByZXF1aXJlZC4KKyAqLworUEpfSU5MSU5FKHZvaWQpIHBqX3Bvb2xfZmFjdG9yeV9kdW1wKCBwal9wb29sX2ZhY3RvcnkgKnBmLAorCQkJCSAgICAgIHBqX2Jvb2xfdCBkZXRhaWwgKQoreworICAgICgqcGYtPmR1bXBfc3RhdHVzKShwZiwgZGV0YWlsKTsKK30KKworLyoqCisgKiAgQH0JLy8gUEpfUE9PTF9GQUNUT1JZCisgKi8KKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKgorICogQGRlZmdyb3VwIFBKX0NBQ0hJTkdfUE9PTCBDYWNoaW5nIFBvb2wgRmFjdG9yeQorICogQGluZ3JvdXAgUEpfUE9PTF9HUk9VUAorICogQGJyaWVmCisgKiBDYWNoaW5nIHBvb2wgaXMgb25lIHNhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBwb29sIGZhY3Rvcnkgd2hlcmUgdGhlCisgKiBmYWN0b3J5IGNhbiByZXVzZSBtZW1vcnkgdG8gY3JlYXRlIGEgcG9vbC4gQXBwbGljYXRpb24gZGVmaW5lcyB3aGF0IHRoZSAKKyAqIG1heGltdW0gbWVtb3J5IHRoZSBmYWN0b3J5IGNhbiBob2xkLCBhbmQgd2hlbiBhIHBvb2wgaXMgcmVsZWFzZWQgdGhlCisgKiBmYWN0b3J5IGRlY2lkZXMgd2hldGhlciB0byBkZXN0cm95IHRoZSBwb29sIG9yIHRvIGtlZXAgaXQgZm9yIGZ1dHVyZSB1c2UuCisgKiBJZiB0aGUgdG90YWwgYW1vdW50IG9mIG1lbW9yeSBpbiB0aGUgaW50ZXJuYWwgY2FjaGUgaXMgc3RpbGwgd2l0aGluIHRoZQorICogbGltaXQsIHRoZSBmYWN0b3J5IHdpbGwga2VlcCB0aGUgcG9vbCBpbiB0aGUgaW50ZXJuYWwgY2FjaGUsIG90aGVyd2lzZSB0aGUKKyAqIHBvb2wgd2lsbCBiZSBkZXN0cm95ZWQsIHRodXMgcmVsZWFzaW5nIHRoZSBtZW1vcnkgYmFjayB0byB0aGUgc3lzdGVtLgorICoKKyAqIEB7CisgKi8KKworLyoqCisgKiBOdW1iZXIgb2YgdW5pcXVlIHNpemVzLCB0byBiZSB1c2VkIGFzIGluZGV4IHRvIHRoZSBmcmVlIGxpc3QuCisgKiBFYWNoIHBvb2wgaW4gdGhlIGZyZWUgbGlzdCBpcyBvcmdhbml6ZWQgYnkgaXQncyBzaXplLgorICovCisjZGVmaW5lIFBKX0NBQ0hJTkdfUE9PTF9BUlJBWV9TSVpFCTE2CisKKy8qKgorICogRGVjbGFyYXRpb24gZm9yIGNhY2hpbmcgcG9vbC4gQXBwbGljYXRpb24gZG9lc24ndCBub3JtYWxseSBuZWVkIHRvCisgKiBjYXJlIGFib3V0IHRoZSBjb250ZW50cyBvZiB0aGlzIHN0cnVjdCwgaXQgaXMgb25seSBwcm92aWRlZCBoZXJlIGJlY2F1c2UKKyAqIGFwcGxpY2F0aW9uIG5lZWQgdG8gZGVmaW5lIGFuIGluc3RhbmNlIG9mIHRoaXMgc3RydWN0ICh3ZSBjYW4gbm90IGFsbG9jYXRlCisgKiB0aGUgc3RydWN0IGZyb20gYSBwb29sIHNpbmNlIHRoZXJlIGlzIG5vIHBvb2wgZmFjdG9yeSB5ZXQhKS4KKyAqLworc3RydWN0IHBqX2NhY2hpbmdfcG9vbCAKK3sKKyAgICAvKiogUG9vbCBmYWN0b3J5IGludGVyZmFjZSwgbXVzdCBiZSBkZWNsYXJlZCBmaXJzdC4gKi8KKyAgICBwal9wb29sX2ZhY3RvcnkgZmFjdG9yeTsKKworICAgIC8qKiBDdXJyZW50IGZhY3RvcnkncyBjYXBhY2l0eSwgaS5lLiBudW1iZXIgb2YgYnl0ZXMgdGhhdCBhcmUgYWxsb2NhdGVkCisgICAgICogIGFuZCBhdmFpbGFibGUgZm9yIGFwcGxpY2F0aW9uIGluIHRoaXMgZmFjdG9yeS4gVGhlIGZhY3RvcnkncworICAgICAqICBjYXBhY2l0eSByZXByZXNlbnRzIHRoZSBzaXplIG9mIGFsbCBwb29scyBrZXB0IGJ5IHRoaXMgZmFjdG9yeQorICAgICAqICBpbiBpdCdzIGZyZWUgbGlzdCwgd2hpY2ggd2lsbCBiZSByZXR1cm5lZCB0byBhcHBsaWNhdGlvbiB3aGVuIGl0CisgICAgICogIHJlcXVlc3RzIHRvIGNyZWF0ZSBhIG5ldyBwb29sLgorICAgICAqLworICAgIHBqX3NpemVfdAkgICAgY2FwYWNpdHk7CisKKyAgICAvKiogTWF4aW11bSBzaXplIHRoYXQgY2FuIGJlIGhlbGQgYnkgdGhpcyBmYWN0b3J5LiBPbmNlIHRoZSBjYXBhY2l0eQorICAgICAqICBoYXMgZXhjZWVkZWQgQGEgbWF4X2NhcGFjaXR5LCBmdXJ0aGVyICNwal9wb29sX3JlbGVhc2UoKSB3aWxsCisgICAgICogIGZsdXNoIHRoZSBwb29sLiBJZiB0aGUgY2FwYWNpdHkgaXMgc3RpbGwgYmVsb3cgdGhlIEBhIG1heF9jYXBhY2l0eSwKKyAgICAgKiAgI3BqX3Bvb2xfcmVsZWFzZSgpIHdpbGwgc2F2ZSB0aGUgcG9vbCB0byB0aGUgZmFjdG9yeSdzIGZyZWUgbGlzdC4KKyAgICAgKi8KKyAgICBwal9zaXplX3QgICAgICAgbWF4X2NhcGFjaXR5OworCisgICAgLyoqCisgICAgICogTnVtYmVyIG9mIHBvb2xzIGN1cnJlbnRseSBoZWxkIGJ5IGFwcGxpY2F0aW9ucy4gVGhpcyBudW1iZXIgZ2V0cworICAgICAqIGluY3JlbWVudGVkIGV2ZXJ5dGltZSAjcGpfcG9vbF9jcmVhdGUoKSBpcyBjYWxsZWQsIGFuZCBnZXRzCisgICAgICogZGVjcmVtZW50ZWQgd2hlbiAjcGpfcG9vbF9yZWxlYXNlKCkgaXMgY2FsbGVkLgorICAgICAqLworICAgIHBqX3NpemVfdCAgICAgICB1c2VkX2NvdW50OworCisgICAgLyoqCisgICAgICogVG90YWwgc2l6ZSBvZiBtZW1vcnkgY3VycmVudGx5IHVzZWQgYnkgYXBwbGljYXRpb24uCisgICAgICovCisgICAgcGpfc2l6ZV90CSAgICB1c2VkX3NpemU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWF4aW11bSBzaXplIG9mIG1lbW9yeSB1c2VkIGJ5IGFwcGxpY2F0aW9uIHRocm91Z2hvdXQgdGhlIGxpZmUKKyAgICAgKiBvZiB0aGUgY2FjaGluZyBwb29sLgorICAgICAqLworICAgIHBqX3NpemVfdAkgICAgcGVha191c2VkX3NpemU7CisKKyAgICAvKioKKyAgICAgKiBMaXN0cyBvZiBwb29scyBpbiB0aGUgY2FjaGUsIGluZGV4ZWQgYnkgcG9vbCBzaXplLgorICAgICAqLworICAgIHBqX2xpc3QJICAgIGZyZWVfbGlzdFtQSl9DQUNISU5HX1BPT0xfQVJSQVlfU0laRV07CisKKyAgICAvKioKKyAgICAgKiBMaXN0IG9mIHBvb2xzIGN1cnJlbnRseSBhbGxvY2F0ZWQgYnkgYXBwbGljYXRpb25zLgorICAgICAqLworICAgIHBqX2xpc3QJICAgIHVzZWRfbGlzdDsKKworICAgIC8qKgorICAgICAqIEludGVybmFsIHBvb2wuCisgICAgICovCisgICAgY2hhcgkgICAgcG9vbF9idWZbMjU2ICogKHNpemVvZihzaXplX3QpIC8gNCldOworCisgICAgLyoqCisgICAgICogTXV0ZXguCisgICAgICovCisgICAgcGpfbG9ja190CSAgICpsb2NrOworfTsKKworCisKKy8qKgorICogSW5pdGlhbGl6ZSBjYWNoaW5nIHBvb2wuCisgKgorICogQHBhcmFtIGNoX3Bvb2wJVGhlIGNhY2hpbmcgcG9vbCBmYWN0b3J5IHRvIGJlIGluaXRpYWxpemVkLgorICogQHBhcmFtIHBvbGljeQlQb29sIGZhY3RvcnkgcG9saWN5LgorICogQHBhcmFtIG1heF9jYXBhY2l0eQlUaGUgdG90YWwgY2FwYWNpdHkgdG8gYmUgcmV0YWluZWQgaW4gdGhlIGNhY2hlLiBXaGVuCisgKgkJCXRoZSBwb29sIGlzIHJldHVybmVkIHRvIHRoZSBjYWNoZSwgaXQgd2lsbCBiZSBrZXB0IGluCisgKgkJCXJlY3ljbGluZyBsaXN0IGlmIHRoZSB0b3RhbCBjYXBhY2l0eSBvZiBwb29scyBpbiB0aGlzCisgKgkJCWxpc3QgcGx1cyB0aGUgY2FwYWNpdHkgb2YgdGhlIHBvb2wgaXMgc3RpbGwgYmVsb3cgdGhpcworICoJCQl2YWx1ZS4KKyAqLworUEpfREVDTCh2b2lkKSBwal9jYWNoaW5nX3Bvb2xfaW5pdCggcGpfY2FjaGluZ19wb29sICpjaF9wb29sLCAKKwkJCQkgICAgY29uc3QgcGpfcG9vbF9mYWN0b3J5X3BvbGljeSAqcG9saWN5LAorCQkJCSAgICBwal9zaXplX3QgbWF4X2NhcGFjaXR5KTsKKworCisvKioKKyAqIERlc3Ryb3kgY2FjaGluZyBwb29sLCBhbmQgcmVsZWFzZSBhbGwgdGhlIHBvb2xzIGluIHRoZSByZWN5Y2xpbmcgbGlzdC4KKyAqCisgKiBAcGFyYW0gY2hfcG9vbAlUaGUgY2FjaGluZyBwb29sLgorICovCitQSl9ERUNMKHZvaWQpIHBqX2NhY2hpbmdfcG9vbF9kZXN0cm95KCBwal9jYWNoaW5nX3Bvb2wgKmNoX3Bvb2wgKTsKKworLyoqCisgKiBAfQkvLyBQSl9DQUNISU5HX1BPT0wKKyAqLworCisjICBpZiBQSl9GVU5DVElPTlNfQVJFX0lOTElORUQKKyMgICAgaW5jbHVkZSAicG9vbF9pLmgiCisjICBlbmRpZgorCitQSl9FTkRfREVDTAorICAgIAorI2VuZGlmCS8qIF9fUEpfUE9PTF9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9wb29sX2FsdC5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9wb29sX2FsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxM2U4MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3Bvb2xfYWx0LmgKQEAgLTAsMCArMSwxOTggQEAKKy8qICRJZDogcG9vbF9hbHQuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX1BPT0xfQUxUX0hfXworI2RlZmluZSBfX1BKX1BPT0xfQUxUX0hfXworCisjZGVmaW5lIF9fUEpfUE9PTF9IX18KKworCisvKioKKyAqIFRoZSB0eXBlIGZvciBmdW5jdGlvbiB0byByZWNlaXZlIGNhbGxiYWNrIGZyb20gdGhlIHBvb2wgd2hlbiBpdCBpcyB1bmFibGUKKyAqIHRvIGFsbG9jYXRlIG1lbW9yeS4gVGhlIGVsZWdhbnQgd2F5IHRvIGhhbmRsZSB0aGlzIGNvbmRpdGlvbiBpcyB0byB0aHJvdworICogZXhjZXB0aW9uLCBhbmQgdGhpcyBpcyB3aGF0IGlzIGV4cGVjdGVkIGJ5IG1vc3Qgb2YgdGhpcyBsaWJyYXJ5IAorICogY29tcG9uZW50cy4KKyAqLwordHlwZWRlZiB2b2lkIHBqX3Bvb2xfY2FsbGJhY2socGpfcG9vbF90ICpwb29sLCBwal9zaXplX3Qgc2l6ZSk7CisKK3N0cnVjdCBwal9wb29sX21lbQoreworICAgIHN0cnVjdCBwal9wb29sX21lbSAqbmV4dDsKKworICAgIC8qIGRhdGEgZm9sbG93cyBpbW1lZGlhdGVseSAqLworfTsKKworCitzdHJ1Y3QgcGpfcG9vbF90Cit7CisgICAgc3RydWN0IHBqX3Bvb2xfbWVtICpmaXJzdF9tZW07CisgICAgcGpfcG9vbF9mYWN0b3J5ICAgICpmYWN0b3J5OworICAgIGNoYXIJICAgICAgICBvYmpfbmFtZVszMl07CisgICAgcGpfc2l6ZV90CQl1c2VkX3NpemU7CisgICAgcGpfcG9vbF9jYWxsYmFjayAgICpjYjsKK307CisKKworI2RlZmluZSBQSl9QT09MX1NJWkUJICAgICAgICAoc2l6ZW9mKHN0cnVjdCBwal9wb29sX3QpKQorCisvKioKKyAqIFRoaXMgY29uc3RhbnQgZGVub3RlcyB0aGUgZXhjZXB0aW9uIG51bWJlciB0aGF0IHdpbGwgYmUgdGhyb3duIGJ5IGRlZmF1bHQKKyAqIG1lbW9yeSBmYWN0b3J5IHBvbGljeSB3aGVuIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLgorICovCitleHRlcm4gaW50IFBKX05PX01FTU9SWV9FWENFUFRJT047CisKKworCisvKgorICogRGVjbGFyZSBhbGwgcG9vbCBBUEkgYXMgbWFjcm8gdGhhdCBjYWxscyB0aGUgaW1wbGVtZW50YXRpb24KKyAqIGZ1bmN0aW9uLgorICovCisjZGVmaW5lIHBqX3Bvb2xfY3JlYXRlKGZjLG5tLGluaXQsaW5jLGNiKSAgIFwKKwlwal9wb29sX2NyZWF0ZV9pbXAoX19GSUxFX18sIF9fTElORV9fLCBmYywgbm0sIGluaXQsIGluYywgY2IpCisKKyNkZWZpbmUgcGpfcG9vbF9yZWxlYXNlKHBvb2wpCQkgICAgcGpfcG9vbF9yZWxlYXNlX2ltcChwb29sKQorI2RlZmluZSBwal9wb29sX2dldG9iam5hbWUocG9vbCkJICAgIHBqX3Bvb2xfZ2V0b2JqbmFtZV9pbXAocG9vbCkKKyNkZWZpbmUgcGpfcG9vbF9yZXNldChwb29sKQkJICAgIHBqX3Bvb2xfcmVzZXRfaW1wKHBvb2wpCisjZGVmaW5lIHBqX3Bvb2xfZ2V0X2NhcGFjaXR5KHBvb2wpCSAgICBwal9wb29sX2dldF9jYXBhY2l0eV9pbXAocG9vbCkKKyNkZWZpbmUgcGpfcG9vbF9nZXRfdXNlZF9zaXplKHBvb2wpCSAgICBwal9wb29sX2dldF91c2VkX3NpemVfaW1wKHBvb2wpCisjZGVmaW5lIHBqX3Bvb2xfYWxsb2MocG9vbCxzeikJCSAgICBcCisJcGpfcG9vbF9hbGxvY19pbXAoX19GSUxFX18sIF9fTElORV9fLCBwb29sLCBzeikKKworI2RlZmluZSBwal9wb29sX2NhbGxvYyhwb29sLGNudCxlbGVtKQkgICAgXAorCXBqX3Bvb2xfY2FsbG9jX2ltcChfX0ZJTEVfXywgX19MSU5FX18sIHBvb2wsIGNudCwgZWxlbSkKKworI2RlZmluZSBwal9wb29sX3phbGxvYyhwb29sLHN6KQkJICAgIFwKKwlwal9wb29sX3phbGxvY19pbXAoX19GSUxFX18sIF9fTElORV9fLCBwb29sLCBzeikKKworCisKKy8qCisgKiBEZWNsYXJlIHByb3RvdHlwZXMgZm9yIHBvb2wgaW1wbGVtZW50YXRpb24gQVBJLgorICovCisKKy8qIENyZWF0ZSBwb29sICovCitQSl9ERUNMKHBqX3Bvb2xfdCopIHBqX3Bvb2xfY3JlYXRlX2ltcChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwKKwkJCQkgICAgICAgdm9pZCAqZmFjdG9yeSwKKwkJCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgICAgcGpfc2l6ZV90IGluaXRpYWxfc2l6ZSwKKwkJCQkgICAgICAgcGpfc2l6ZV90IGluY3JlbWVudF9zaXplLAorCQkJCSAgICAgICBwal9wb29sX2NhbGxiYWNrICpjYWxsYmFjayk7CisKKy8qIFJlbGVhc2UgcG9vbCAqLworUEpfREVDTCh2b2lkKSBwal9wb29sX3JlbGVhc2VfaW1wKHBqX3Bvb2xfdCAqcG9vbCk7CisKKy8qIEdldCBwb29sIG5hbWUgKi8KK1BKX0RFQ0woY29uc3QgY2hhciopIHBqX3Bvb2xfZ2V0b2JqbmFtZV9pbXAocGpfcG9vbF90ICpwb29sKTsKKworLyogUmVzZXQgcG9vbCAqLworUEpfREVDTCh2b2lkKSBwal9wb29sX3Jlc2V0X2ltcChwal9wb29sX3QgKnBvb2wpOworCisvKiBHZXQgY2FwYWNpdHkgKi8KK1BKX0RFQ0wocGpfc2l6ZV90KSBwal9wb29sX2dldF9jYXBhY2l0eV9pbXAocGpfcG9vbF90ICpwb29sKTsKKworLyogR2V0IHRvdGFsIHVzZWQgc2l6ZSAqLworUEpfREVDTChwal9zaXplX3QpIHBqX3Bvb2xfZ2V0X3VzZWRfc2l6ZV9pbXAocGpfcG9vbF90ICpwb29sKTsKKworLyogQWxsb2NhdGUgbWVtb3J5IGZyb20gdGhlIHBvb2wgKi8KK1BKX0RFQ0wodm9pZCopIHBqX3Bvb2xfYWxsb2NfaW1wKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCAKKwkJCQkgcGpfcG9vbF90ICpwb29sLCBwal9zaXplX3Qgc3opOworCisvKiBBbGxvY2F0ZSBtZW1vcnkgZnJvbSB0aGUgcG9vbCBhbmQgemVybyB0aGUgbWVtb3J5ICovCitQSl9ERUNMKHZvaWQqKSBwal9wb29sX2NhbGxvY19pbXAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIAorCQkJCSAgcGpfcG9vbF90ICpwb29sLCB1bnNpZ25lZCBjbnQsIAorCQkJCSAgdW5zaWduZWQgZWxlbXN6KTsKKworLyogQWxsb2NhdGUgbWVtb3J5IGZyb20gdGhlIHBvb2wgYW5kIHplcm8gdGhlIG1lbW9yeSAqLworUEpfREVDTCh2b2lkKikgcGpfcG9vbF96YWxsb2NfaW1wKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCAKKwkJCQkgIHBqX3Bvb2xfdCAqcG9vbCwgcGpfc2l6ZV90IHN6KTsKKworCisjZGVmaW5lIFBKX1BPT0xfWkFMTE9DX1QocG9vbCx0eXBlKSBcCisJICAgICgodHlwZSopcGpfcG9vbF96YWxsb2MocG9vbCwgc2l6ZW9mKHR5cGUpKSkKKyNkZWZpbmUgUEpfUE9PTF9BTExPQ19UKHBvb2wsdHlwZSkgXAorCSAgICAoKHR5cGUqKXBqX3Bvb2xfYWxsb2MocG9vbCwgc2l6ZW9mKHR5cGUpKSkKKyNpZm5kZWYgUEpfUE9PTF9BTElHTk1FTlQKKyMgICBkZWZpbmUgUEpfUE9PTF9BTElHTk1FTlQgICAgNAorI2VuZGlmCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVjbGFyZXMgcG9vbCBmYWN0b3J5IGludGVyZmFjZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfcG9vbF9mYWN0b3J5X3BvbGljeQoreworICAgIC8qKgorICAgICAqIEFsbG9jYXRlIG1lbW9yeSBibG9jayAoZm9yIHVzZSBieSBwb29sKS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKyAgICAgKiBieSBtZW1vcnkgcG9vbCB0byBhbGxvY2F0ZSBtZW1vcnkgYmxvY2suCisgICAgICogCisgICAgICogQHBhcmFtIGZhY3RvcnkJUG9vbCBmYWN0b3J5LgorICAgICAqIEBwYXJhbSBzaXplCVRoZSBzaXplIG9mIG1lbW9yeSBibG9jayB0byBhbGxvY2F0ZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4JCU1lbW9yeSBibG9jay4KKyAgICAgKi8KKyAgICB2b2lkKiAoKmJsb2NrX2FsbG9jKShwal9wb29sX2ZhY3RvcnkgKmZhY3RvcnksIHBqX3NpemVfdCBzaXplKTsKKworICAgIC8qKgorICAgICAqIEZyZWUgbWVtb3J5IGJsb2NrLgorICAgICAqCisgICAgICogQHBhcmFtIGZhY3RvcnkJUG9vbCBmYWN0b3J5LgorICAgICAqIEBwYXJhbSBtZW0JTWVtb3J5IGJsb2NrIHByZXZpb3VzbHkgYWxsb2NhdGVkIGJ5IGJsb2NrX2FsbG9jKCkuCisgICAgICogQHBhcmFtIHNpemUJVGhlIHNpemUgb2YgbWVtb3J5IGJsb2NrLgorICAgICAqLworICAgIHZvaWQgKCpibG9ja19mcmVlKShwal9wb29sX2ZhY3RvcnkgKmZhY3RvcnksIHZvaWQgKm1lbSwgcGpfc2l6ZV90IHNpemUpOworCisgICAgLyoqCisgICAgICogRGVmYXVsdCBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4KKyAgICAgKi8KKyAgICBwal9wb29sX2NhbGxiYWNrICpjYWxsYmFjazsKKworICAgIC8qKgorICAgICAqIE9wdGlvbiBmbGFncy4KKyAgICAgKi8KKyAgICB1bnNpZ25lZCBmbGFnczsKKworfSBwal9wb29sX2ZhY3RvcnlfcG9saWN5OworCitzdHJ1Y3QgcGpfcG9vbF9mYWN0b3J5Cit7CisgICAgcGpfcG9vbF9mYWN0b3J5X3BvbGljeSBwb2xpY3k7CisgICAgaW50IGR1bW15OworfTsKKworc3RydWN0IHBqX2NhY2hpbmdfcG9vbCAKK3sKKyAgICBwal9wb29sX2ZhY3RvcnkgZmFjdG9yeTsKKworICAgIC8qIGp1c3QgdG8gbWFrZSBpdCBjb21waWxhYmxlICovCisgICAgdW5zaWduZWQgdXNlZF9jb3VudDsKKyAgICB1bnNpZ25lZCB1c2VkX3NpemU7CisgICAgdW5zaWduZWQgcGVha191c2VkX3NpemU7Cit9OworCisvKiBqdXN0IHRvIG1ha2UgaXQgY29tcGlsYWJsZSAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfcG9vbF9ibG9jaworeworICAgIGludCBkdW1teTsKK30gcGpfcG9vbF9ibG9jazsKKworI2RlZmluZSBwal9jYWNoaW5nX3Bvb2xfaW5pdCggY3AsIHBvbCwgbWFjKQorI2RlZmluZSBwal9jYWNoaW5nX3Bvb2xfZGVzdHJveShjcCkKKyNkZWZpbmUgcGpfcG9vbF9mYWN0b3J5X2R1bXAocGYsIGRldGFpbCkKKworI2VuZGlmCS8qIF9fUEpfUE9PTF9BTFRfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovcG9vbF9idWYuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovcG9vbF9idWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODczNGE3Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9wb29sX2J1Zi5oCkBAIC0wLDAgKzEsMTA1IEBACisvKiAkSWQ6IHBvb2xfYnVmLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QT09MX1NUQUNLX0hfXworI2RlZmluZSBfX1BPT0xfU1RBQ0tfSF9fCisKKyNpbmNsdWRlIDxwai9wb29sLmg+CisKKy8qKgorICogQGRlZmdyb3VwIFBKX1BPT0xfQlVGRkVSIFN0YWNrL0J1ZmZlciBCYXNlZCBNZW1vcnkgUG9vbCBBbGxvY2F0b3IKKyAqIEBpbmdyb3VwIFBKX1BPT0xfR1JPVVAKKyAqIEBicmllZiBTdGFjay9idWZmZXIgYmFzZWQgcG9vbC4KKyAqCisgKiBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFuIGltcGxlbWVudGF0aW9uIG9mIG1lbW9yeSBwb29sIHdoaWNoIHVzZXMKKyAqIG1lbW9yeSBhbGxvY2F0ZWQgZnJvbSB0aGUgc3RhY2suIEFwcGxpY2F0aW9uIGNyZWF0ZXMgdGhpcyBwb29sCisgKiBieSBzcGVjaWZ5aW5nIGEgYnVmZmVyICh3aGljaCBjYW4gYmUgYWxsb2NhdGVkIGZyb20gc3RhdGljIG1lbW9yeSBvcgorICogc3RhY2sgdmFyaWFibGUpLCBhbmQgdGhlbiB1c2Ugbm9ybWFsIHBvb2wgQVBJIHRvIGFjY2Vzcy91c2UgdGhlIHBvb2wuCisgKgorICogSWYgdGhlIGJ1ZmZlciBzcGVjaWZpZWQgZHVyaW5nIHBvb2wgY3JlYXRpb24gaXMgYSBidWZmZXIgbG9jYXRlZCBpbiB0aGUKKyAqIHN0YWNrLCB0aGUgcG9vbCB3aWxsIGJlIGludmFsaWRhdGVkIChvciBpbXBsaWNpdGx5IGRlc3Ryb3llZCkgd2hlbiB0aGUKKyAqIGV4ZWN1dGlvbiBsZWF2ZXMgdGhlIGVuY2xvc2luZyBibG9jayBjb250YWluaW5nIHRoZSBidWZmZXIuIE5vdGUKKyAqIHRoYXQgYXBwbGljYXRpb24gbXVzdCBtYWtlIHN1cmUgdGhhdCBhbnkgb2JqZWN0cyBhbGxvY2F0ZWQgZnJvbSB0aGlzCisgKiBwb29sIChzdWNoIGFzIG11dGV4ZXMpIGhhdmUgYmVlbiBkZXN0cm95ZWQgYmVmb3JlIHRoZSBwb29sIGdldHMKKyAqIGludmFsaWRhdGVkLgorICoKKyAqIFNhbXBsZSB1c2FnZToKKyAqCisgKiBcY29kZQorICAjaW5jbHVkZSA8cGpsaWIuaD4KKworICBzdGF0aWMgdm9pZCB0ZXN0KCkKKyAgeworICAgIGNoYXIgYnVmZmVyWzUwMF07CisgICAgcGpfcG9vbF90ICpwb29sOworICAgIHZvaWQgKnA7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGVfb25fYnVmKCJ0aGVwb29sIiwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisKKyAgICAvLyBVc2UgdGhlIHBvb2wgYXMgdXN1YWwKKyAgICBwID0gcGpfcG9vbF9hbGxvYyhwb29sLCAuLi4pOworICAgIC4uLgorCisgICAgLy8gTm8gbmVlZCB0byByZWxlYXNlIHRoZSBwb29sCisgIH0KKworICBpbnQgbWFpbigpCisgIHsKKyAgICBwal9pbml0KCk7CisgICAgdGVzdCgpOworICAgIHJldHVybiAwOworICB9CisKKyAgIFxlbmRjb2RlCisgKgorICogQHsKKyAqLworCitQSl9CRUdJTl9ERUNMCisKKy8qKgorICogQ3JlYXRlIHRoZSBwb29sIHVzaW5nIHRoZSBzcGVjaWZpZWQgYnVmZmVyIGFzIHRoZSBwb29sJ3MgbWVtb3J5LgorICogU3Vic2VxdWVudCBhbGxvY2F0aW9ucyBtYWRlIGZyb20gdGhlIHBvb2wgd2lsbCB1c2UgdGhlIG1lbW9yeSBmcm9tCisgKiB0aGlzIGJ1ZmZlci4KKyAqCisgKiBJZiB0aGUgYnVmZmVyIHNwZWNpZmllZCBpbiB0aGUgcGFyYW1ldGVyIGlzIGEgYnVmZmVyIGxvY2F0ZWQgaW4gdGhlCisgKiBzdGFjaywgdGhlIHBvb2wgd2lsbCBiZSBpbnZhbGlkIChvciBpbXBsaWNpdGx5IGRlc3Ryb3llZCkgd2hlbiB0aGUKKyAqIGV4ZWN1dGlvbiBsZWF2ZXMgdGhlIGVuY2xvc2luZyBibG9jayBjb250YWluaW5nIHRoZSBidWZmZXIuIE5vdGUKKyAqIHRoYXQgYXBwbGljYXRpb24gbXVzdCBtYWtlIHN1cmUgdGhhdCBhbnkgb2JqZWN0cyBhbGxvY2F0ZWQgZnJvbSB0aGlzCisgKiBwb29sIChzdWNoIGFzIG11dGV4ZXMpIGhhdmUgYmVlbiBkZXN0cm95ZWQgYmVmb3JlIHRoZSBwb29sIGdldHMKKyAqIGludmFsaWRhdGVkLgorICoKKyAqIEBwYXJhbSBuYW1lCSAgICBPcHRpb25hbCBwb29sIG5hbWUuCisgKiBAcGFyYW0gYnVmCSAgICBCdWZmZXIgdG8gYmUgdXNlZCBieSB0aGUgcG9vbC4KKyAqIEBwYXJhbSBzaXplCSAgICBUaGUgc2l6ZSBvZiB0aGUgYnVmZmVyLgorICoKKyAqIEByZXR1cm4JICAgIFRoZSBtZW1vcnkgcG9vbCBpbnN0YW5jZS4KKyAqLworUEpfREVDTChwal9wb29sX3QqKSBwal9wb29sX2NyZWF0ZV9vbl9idWYoY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJICB2b2lkICpidWYsCisJCQkJCSAgcGpfc2l6ZV90IHNpemUpOworCitQSl9FTkRfREVDTAorCisvKioKKyAqIEB9CisgKi8KKworI2VuZGlmCS8qIF9fUE9PTF9TVEFDS19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9wb29sX2kuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovcG9vbF9pLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc2ZmQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovcG9vbF9pLmgKQEAgLTAsMCArMSw5NCBAQAorLyogJElkOiBwb29sX2kuaCA0Mjk4IDIwMTItMTEtMjIgMDU6MDA6MDFaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworCisKKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKworCitQSl9JREVGKHBqX3NpemVfdCkgcGpfcG9vbF9nZXRfY2FwYWNpdHkoIHBqX3Bvb2xfdCAqcG9vbCApCit7CisgICAgcmV0dXJuIHBvb2wtPmNhcGFjaXR5OworfQorCitQSl9JREVGKHBqX3NpemVfdCkgcGpfcG9vbF9nZXRfdXNlZF9zaXplKCBwal9wb29sX3QgKnBvb2wgKQoreworICAgIHBqX3Bvb2xfYmxvY2sgKmIgPSBwb29sLT5ibG9ja19saXN0Lm5leHQ7CisgICAgcGpfc2l6ZV90IHVzZWRfc2l6ZSA9IHNpemVvZihwal9wb29sX3QpOworICAgIHdoaWxlIChiICE9ICZwb29sLT5ibG9ja19saXN0KSB7CisJdXNlZF9zaXplICs9IChiLT5jdXIgLSBiLT5idWYpICsgc2l6ZW9mKHBqX3Bvb2xfYmxvY2spOworCWIgPSBiLT5uZXh0OworICAgIH0KKyAgICByZXR1cm4gdXNlZF9zaXplOworfQorCitQSl9JREVGKHZvaWQqKSBwal9wb29sX2FsbG9jX2Zyb21fYmxvY2soIHBqX3Bvb2xfYmxvY2sgKmJsb2NrLCBwal9zaXplX3Qgc2l6ZSApCit7CisgICAgLyogVGhlIG9wZXJhdGlvbiBiZWxvdyBpcyB2YWxpZCBmb3Igc2l6ZT09MC4gCisgICAgICogV2hlbiBzaXplPT0wLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIHBvb2wKKyAgICAgKiBtZW1vcnkgYWRkcmVzcywgYnV0IG5vIG1lbW9yeSB3aWxsIGJlIGFsbG9jYXRlZC4KKyAgICAgKi8KKyAgICBpZiAoc2l6ZSAmIChQSl9QT09MX0FMSUdOTUVOVC0xKSkgeworCXNpemUgPSAoc2l6ZSArIFBKX1BPT0xfQUxJR05NRU5UKSAmIH4oUEpfUE9PTF9BTElHTk1FTlQtMSk7CisgICAgfQorICAgIGlmICgocGpfc2l6ZV90KShibG9jay0+ZW5kIC0gYmxvY2stPmN1cikgPj0gc2l6ZSkgeworCXZvaWQgKnB0ciA9IGJsb2NrLT5jdXI7CisJYmxvY2stPmN1ciArPSBzaXplOworCXJldHVybiBwdHI7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitQSl9JREVGKHZvaWQqKSBwal9wb29sX2FsbG9jKCBwal9wb29sX3QgKnBvb2wsIHBqX3NpemVfdCBzaXplKQoreworICAgIHZvaWQgKnB0ciA9IHBqX3Bvb2xfYWxsb2NfZnJvbV9ibG9jayhwb29sLT5ibG9ja19saXN0Lm5leHQsIHNpemUpOworICAgIGlmICghcHRyKQorCXB0ciA9IHBqX3Bvb2xfYWxsb2NhdGVfZmluZChwb29sLCBzaXplKTsKKyAgICByZXR1cm4gcHRyOworfQorCisKK1BKX0lERUYodm9pZCopIHBqX3Bvb2xfY2FsbG9jKCBwal9wb29sX3QgKnBvb2wsIHBqX3NpemVfdCBjb3VudCwgcGpfc2l6ZV90IHNpemUpCit7CisgICAgdm9pZCAqYnVmID0gcGpfcG9vbF9hbGxvYyggcG9vbCwgc2l6ZSpjb3VudCk7CisgICAgaWYgKGJ1ZikKKwlwal9iemVybyhidWYsIHNpemUgKiBjb3VudCk7CisgICAgcmV0dXJuIGJ1ZjsKK30KKworUEpfSURFRihjb25zdCBjaGFyICopIHBqX3Bvb2xfZ2V0b2JqbmFtZSggY29uc3QgcGpfcG9vbF90ICpwb29sICkKK3sKKyAgICByZXR1cm4gcG9vbC0+b2JqX25hbWU7Cit9CisKK1BKX0lERUYocGpfcG9vbF90KikgcGpfcG9vbF9jcmVhdGUoIHBqX3Bvb2xfZmFjdG9yeSAqZiwgCisJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgIHBqX3NpemVfdCBpbml0aWFsX3NpemUsIAorCQkJCSAgICBwal9zaXplX3QgaW5jcmVtZW50X3NpemUsCisJCQkJICAgIHBqX3Bvb2xfY2FsbGJhY2sgKmNhbGxiYWNrKQoreworICAgIHJldHVybiAoKmYtPmNyZWF0ZV9wb29sKShmLCBuYW1lLCBpbml0aWFsX3NpemUsIGluY3JlbWVudF9zaXplLCBjYWxsYmFjayk7Cit9CisKK1BKX0lERUYodm9pZCkgcGpfcG9vbF9yZWxlYXNlKCBwal9wb29sX3QgKnBvb2wgKQoreworICAgIGlmIChwb29sLT5mYWN0b3J5LT5yZWxlYXNlX3Bvb2wpCisJKCpwb29sLT5mYWN0b3J5LT5yZWxlYXNlX3Bvb2wpKHBvb2wtPmZhY3RvcnksIHBvb2wpOworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3JhbmQuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovcmFuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOGViN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3JhbmQuaApAQCAtMCwwICsxLDY2IEBACisvKiAkSWQ6IHJhbmQuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX1JBTkRfSF9fCisjZGVmaW5lIF9fUEpfUkFORF9IX18KKworLyoqCisgKiBAZmlsZSByYW5kLmgKKyAqIEBicmllZiBSYW5kb20gTnVtYmVyIEdlbmVyYXRvci4KKyAqLworCisjaW5jbHVkZSA8cGovY29uZmlnLmg+CisKK1BKX0JFR0lOX0RFQ0wKKworCisvKioKKyAqIEBkZWZncm91cCBQSl9SQU5EIFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yCisgKiBAaW5ncm91cCBQSl9NSVNDCisgKiBAeworICogVGhpcyBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHJhbmRvbSBudW1iZXJzLgorICogVGhpcyBhYnN0cmFjdGlvbiBpcyBuZWVkZWQgbm90IG9ubHkgYmVjYXVzZSBub3QgYWxsIHBsYXRmb3JtcyBoYXZlCisgKiBcYSByYW5kKCkgYW5kIFxhIHNyYW5kKCksIGJ1dCBhbHNvIG9uIHNvbWUgcGxhdGZvcm1zIFxhIHJhbmQoKQorICogb25seSBoYXMgMTYtYml0IHJhbmRvbW5lc3MsIHdoaWNoIGlzIG5vdCBnb29kIGVub3VnaC4KKyAqLworCisvKioKKyAqIFB1dCBpbiBzZWVkIHRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgorICoKKyAqIEBwYXJhbSBzZWVkCSAgICBTZWVkIHZhbHVlLgorICovCitQSl9ERUNMKHZvaWQpIHBqX3NyYW5kKHVuc2lnbmVkIGludCBzZWVkKTsKKworCisvKioKKyAqIEdlbmVyYXRlIHJhbmRvbSBpbnRlZ2VyIHdpdGggMzJiaXQgcmFuZG9tbmVzcy4KKyAqCisgKiBAcmV0dXJuIGEgcmFuZG9tIGludGVnZXIuCisgKi8KK1BKX0RFQ0woaW50KSBwal9yYW5kKHZvaWQpOworCisKKy8qKiBAfSAqLworCisKK1BKX0VORF9ERUNMCisKKworI2VuZGlmCS8qIF9fUEpfUkFORF9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9yYnRyZWUuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovcmJ0cmVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY5MjI4NQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovcmJ0cmVlLmgKQEAgLTAsMCArMSwyMTAgQEAKKy8qICRJZDogcmJ0cmVlLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9SQlRSRUVfSF9fCisjZGVmaW5lIF9fUEpfUkJUUkVFX0hfXworCisvKioKKyAqIEBmaWxlIHJidHJlZS5oCisgKiBAYnJpZWYgUmVkL0JsYWNrIFRyZWUKKyAqLworCisjaW5jbHVkZSA8cGovdHlwZXMuaD4KKworUEpfQkVHSU5fREVDTAorCisvKioKKyAqIEBkZWZncm91cCBQSl9SQlRSRUUgUmVkL0JsYWNrIEJhbGFuY2VkIFRyZWUKKyAqIEBpbmdyb3VwIFBKX0RTCisgKiBAYnJpZWYKKyAqIFJlZC9CbGFjayB0cmVlIGlzIHRoZSB2YXJpYW50IG9mIGJhbGFuY2VkIHRyZWUsIHdoZXJlIHRoZSBzZWFyY2gsIGluc2VydCwgCisgKiBhbmQgZGVsZXRlIG9wZXJhdGlvbiBpcyBcYiBndWFyYW50ZWVkIHRvIHRha2UgYXQgbW9zdCBcYSBPKCBsZyhuKSApLgorICogQHsKKyAqLworLyoqCisgKiBDb2xvciB0eXBlIGZvciBSZWQtQmxhY2sgdHJlZS4KKyAqLyAKK3R5cGVkZWYgZW51bSBwal9yYmNvbG9yX3QKK3sKKyAgICBQSl9SQkNPTE9SX0JMQUNLLAorICAgIFBKX1JCQ09MT1JfUkVECit9IHBqX3JiY29sb3JfdDsKKworLyoqCisgKiBUaGUgdHlwZSBvZiB0aGUgbm9kZSBvZiB0aGUgUi9CIFRyZWUuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX3JidHJlZV9ub2RlIAoreworICAgIC8qKiBQb2ludGVycyB0byB0aGUgbm9kZSdzIHBhcmVudCwgYW5kIGxlZnQgYW5kIHJpZ2h0IHNpYmxpbmdzLiAqLworICAgIHN0cnVjdCBwal9yYnRyZWVfbm9kZSAqcGFyZW50LCAqbGVmdCwgKnJpZ2h0OworCisgICAgLyoqIEtleSBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGUuICovCisgICAgY29uc3Qgdm9pZCAqa2V5OworCisgICAgLyoqIFVzZXIgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGUuICovCisgICAgdm9pZCAqdXNlcl9kYXRhOworCisgICAgLyoqIFRoZSBSL0IgVHJlZSBub2RlIGNvbG9yLiAqLworICAgIHBqX3JiY29sb3JfdCBjb2xvcjsKKworfSBwal9yYnRyZWVfbm9kZTsKKworCisvKioKKyAqIFRoZSB0eXBlIG9mIGZ1bmN0aW9uIHVzZSB0byBjb21wYXJlIGtleSB2YWx1ZSBvZiB0cmVlIG5vZGUuCisgKiBAcmV0dXJuCisgKiAgMCBpZiB0aGUga2V5cyBhcmUgZXF1YWwKKyAqIDwwIGlmIGtleTEgaXMgbG93ZXIgdGhhbiBrZXkyCisgKiA+MCBpZiBrZXkxIGlzIGdyZWF0ZXIgdGhhbiBrZXkyLgorICovCit0eXBlZGVmIGludCBwal9yYnRyZWVfY29tcChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyKTsKKworCisvKioKKyAqIERlY2xhcmF0aW9uIG9mIGEgcmVkLWJsYWNrIHRyZWUuIEFsbCBlbGVtZW50cyBpbiB0aGUgdHJlZSBtdXN0IGhhdmUgVU5JUVVFCisgKiBrZXkuCisgKiBBIHJlZCBibGFjayB0cmVlIGFsd2F5cyBtYWludGFpbnMgdGhlIGJhbGFuY2Ugb2YgdGhlIHRyZWUsIHNvIHRoYXQgdGhlCisgKiB0cmVlIGhlaWdodCB3aWxsIG5vdCBiZSBncmVhdGVyIHRoYW4gbGcoTikuIEluc2VydCwgc2VhcmNoLCBhbmQgZGVsZXRlCisgKiBvcGVyYXRpb24gd2lsbCB0YWtlIGxnKE4pIG9uIHRoZSB3b3JzdCBjYXNlLiBCdXQgZm9yIGluc2VydCBhbmQgZGVsZXRlLAorICogdGhlcmUgaXMgYWRkaXRpb25hbCB0aW1lIG5lZWRlZCB0byBtYWludGFpbiB0aGUgYmFsYW5jZSBvZiB0aGUgdHJlZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfcmJ0cmVlCit7CisgICAgcGpfcmJ0cmVlX25vZGUgbnVsbF9ub2RlOyAgIC8qKjwgQ29uc3RhbnQgdG8gaW5kaWNhdGUgTlVMTCBub2RlLiAgICAqLworICAgIHBqX3JidHJlZV9ub2RlICpudWxsOyAgICAgICAvKio8IENvbnN0YW50IHRvIGluZGljYXRlIE5VTEwgbm9kZS4gICAgKi8KKyAgICBwal9yYnRyZWVfbm9kZSAqcm9vdDsgICAgICAgLyoqPCBSb290IHRyZWUgbm9kZS4gICAgICAgICAgICAgICAgICAgICovCisgICAgdW5zaWduZWQgc2l6ZTsgICAgICAgICAgICAgIC8qKjwgTnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB0cmVlLiAgICAqLworICAgIHBqX3JidHJlZV9jb21wICpjb21wOyAgICAgICAvKio8IEtleSBjb21wYXJpc29uIGZ1bmN0aW9uLiAgICAgICAgICAgKi8KK30gcGpfcmJ0cmVlOworCisKKy8qKgorICogR3VpZGFuY2Ugb24gaG93IG11Y2ggbWVtb3J5IHJlcXVpcmVkIGZvciBlYWNoIG9mIHRoZSBub2RlLgorICovCisjZGVmaW5lIFBKX1JCVFJFRV9OT0RFX1NJWkUJICAgIChzaXplb2YocGpfcmJ0cmVlX25vZGUpKQorCisKKy8qKgorICogR3VpZGFuY2Ugb24gbWVtb3J5IHJlcXVpcmVkIGZvciB0aGUgdHJlZS4KKyAqLworI2RlZmluZSBQSl9SQlRSRUVfU0laRQkJICAgIChzaXplb2YocGpfcmJ0cmVlKSkKKworCisvKioKKyAqIEluaXRpYWxpemUgdGhlIHRyZWUuCisgKiBAcGFyYW0gdHJlZSB0aGUgdHJlZSB0byBiZSBpbml0aWFsaXplZC4KKyAqIEBwYXJhbSBjb21wIGtleSBjb21wYXJpc29uIGZ1bmN0aW9uIHRvIGJlIHVzZWQgZm9yIHRoaXMgdHJlZS4KKyAqLworUEpfREVDTCh2b2lkKSBwal9yYnRyZWVfaW5pdCggcGpfcmJ0cmVlICp0cmVlLCBwal9yYnRyZWVfY29tcCAqY29tcCk7CisKKy8qKgorICogR2V0IHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSB0cmVlLgorICogVGhlIGZpcnN0IGVsZW1lbnQgYWx3YXlzIGhhcyB0aGUgbGVhc3QgdmFsdWUgZm9yIHRoZSBrZXksIGFjY29yZGluZyB0bworICogdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24uCisgKiBAcGFyYW0gdHJlZSB0aGUgdHJlZS4KKyAqIEByZXR1cm4gdGhlIHRyZWUgbm9kZSwgb3IgTlVMTCBpZiB0aGUgdHJlZSBoYXMgbm8gZWxlbWVudC4KKyAqLworUEpfREVDTChwal9yYnRyZWVfbm9kZSopIHBqX3JidHJlZV9maXJzdCggcGpfcmJ0cmVlICp0cmVlICk7CisKKy8qKgorICogR2V0IHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIHRyZWUuCisgKiBUaGUgbGFzdCBlbGVtZW50IGFsd2F5cyBoYXMgdGhlIGdyZWF0ZXN0IGtleSB2YWx1ZSwgYWNjb3JkaW5nIHRvIHRoZQorICogY29tcGFyaXNvbiBmdW5jdGlvbiBkZWZpbmVkIGZvciB0aGUgdHJlZS4KKyAqIEBwYXJhbSB0cmVlIHRoZSB0cmVlLgorICogQHJldHVybiB0aGUgdHJlZSBub2RlLCBvciBOVUxMIGlmIHRoZSB0cmVlIGhhcyBubyBlbGVtZW50LgorICovCitQSl9ERUNMKHBqX3JidHJlZV9ub2RlKikgcGpfcmJ0cmVlX2xhc3QoIHBqX3JidHJlZSAqdHJlZSApOworCisvKioKKyAqIEdldCB0aGUgc3VjY2Vzc2l2ZSBlbGVtZW50IGZvciB0aGUgc3BlY2lmaWVkIG5vZGUuCisgKiBUaGUgc3VjY2Vzc2l2ZSBlbGVtZW50IGlzIGFuIGVsZW1lbnQgd2l0aCBncmVhdGVyIGtleSB2YWx1ZS4KKyAqIEBwYXJhbSB0cmVlIHRoZSB0cmVlLgorICogQHBhcmFtIG5vZGUgdGhlIG5vZGUuCisgKiBAcmV0dXJuIHRoZSBzdWNjZXNzaXZlIG5vZGUsIG9yIE5VTEwgaWYgdGhlIG5vZGUgaGFzIG5vIHN1Y2Nlc3Nvci4KKyAqLworUEpfREVDTChwal9yYnRyZWVfbm9kZSopIHBqX3JidHJlZV9uZXh0KCBwal9yYnRyZWUgKnRyZWUsIAorCQkJCQkgcGpfcmJ0cmVlX25vZGUgKm5vZGUgKTsKKworLyoqCisgKiBUaGUgdGhlIHByZXZpb3VzIG5vZGUgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZS4KKyAqIFRoZSBwcmV2aW91cyBub2RlIGlzIGFuIGVsZW1lbnQgd2l0aCBsZXNzIGtleSB2YWx1ZS4KKyAqIEBwYXJhbSB0cmVlIHRoZSB0cmVlLgorICogQHBhcmFtIG5vZGUgdGhlIG5vZGUuCisgKiBAcmV0dXJuIHRoZSBwcmV2aW91cyBub2RlLCBvciBOVUxMIGlmIHRoZSBub2RlIGhhcyBubyBwcmV2aW91cyBub2RlLgorICovCitQSl9ERUNMKHBqX3JidHJlZV9ub2RlKikgcGpfcmJ0cmVlX3ByZXYoIHBqX3JidHJlZSAqdHJlZSwgCisJCQkJCSBwal9yYnRyZWVfbm9kZSAqbm9kZSApOworCisvKioKKyAqIEluc2VydCBhIG5ldyBub2RlLiAKKyAqIFRoZSBub2RlIHdpbGwgYmUgaW5zZXJ0ZWQgYXQgc29ydGVkIGxvY2F0aW9uLiBUaGUga2V5IG9mIHRoZSBub2RlIG11c3QgCisgKiBiZSBVTklRVUUsIGkuZS4gaXQgaGFzbid0IGV4aXN0ZWQgaW4gdGhlIHRyZWUuCisgKiBAcGFyYW0gdHJlZSB0aGUgdHJlZS4KKyAqIEBwYXJhbSBub2RlIHRoZSBub2RlIHRvIGJlIGluc2VydGVkLgorICogQHJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MsIG9yIC0xIGlmIHRoZSBrZXkgYWxyZWFkeSBleGlzdC4KKyAqLworUEpfREVDTChpbnQpIHBqX3JidHJlZV9pbnNlcnQoIHBqX3JidHJlZSAqdHJlZSwgCisJCQkgICAgICAgcGpfcmJ0cmVlX25vZGUgKm5vZGUgKTsKKworLyoqCisgKiBGaW5kIGEgbm9kZSB3aGljaCBoYXMgdGhlIHNwZWNpZmllZCBrZXkuCisgKiBAcGFyYW0gdHJlZSB0aGUgdHJlZS4KKyAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byBzZWFyY2guCisgKiBAcmV0dXJuIHRoZSB0cmVlIG5vZGUgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSwgb3IgTlVMTCBpZiB0aGUga2V5IGNhbiBub3QKKyAqICAgICAgICAgYmUgZm91bmQuCisgKi8KK1BKX0RFQ0wocGpfcmJ0cmVlX25vZGUqKSBwal9yYnRyZWVfZmluZCggcGpfcmJ0cmVlICp0cmVlLAorCQkJCQkgY29uc3Qgdm9pZCAqa2V5ICk7CisKKy8qKgorICogRXJhc2UgYSBub2RlIGZyb20gdGhlIHRyZWUuCisgKiBAcGFyYW0gdHJlZSB0aGUgdHJlZS4KKyAqIEBwYXJhbSBub2RlIHRoZSBub2RlIHRvIGJlIGVyYXNlZC4KKyAqIEByZXR1cm4gdGhlIHRyZWUgbm9kZSBpdHNlbGYuCisgKi8KK1BKX0RFQ0wocGpfcmJ0cmVlX25vZGUqKSBwal9yYnRyZWVfZXJhc2UoIHBqX3JidHJlZSAqdHJlZSwKKwkJCQkJICBwal9yYnRyZWVfbm9kZSAqbm9kZSApOworCisvKioKKyAqIEdldCB0aGUgbWF4aW11bSB0cmVlIGhlaWdodCBmcm9tIHRoZSBzcGVjaWZpZWQgbm9kZS4KKyAqIEBwYXJhbSB0cmVlIHRoZSB0cmVlLgorICogQHBhcmFtIG5vZGUgdGhlIG5vZGUsIG9yIE5VTEwgdG8gZ2V0IHRoZSByb290IG9mIHRoZSB0cmVlLgorICogQHJldHVybiB0aGUgbWF4aW11bSBoZWlnaHQsIHdoaWNoIHNob3VsZCBiZSBhdCBtb3N0IGxnKE4pCisgKi8KK1BKX0RFQ0wodW5zaWduZWQpIHBqX3JidHJlZV9tYXhfaGVpZ2h0KCBwal9yYnRyZWUgKnRyZWUsCisJCQkJCXBqX3JidHJlZV9ub2RlICpub2RlICk7CisKKy8qKgorICogR2V0IHRoZSBtaW51bXVtIHRyZWUgaGVpZ2h0IGZyb20gdGhlIHNwZWNpZmllZCBub2RlLgorICogQHBhcmFtIHRyZWUgdGhlIHRyZWUuCisgKiBAcGFyYW0gbm9kZSB0aGUgbm9kZSwgb3IgTlVMTCB0byBnZXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCisgKiBAcmV0dXJuIHRoZSBoZWlnaHQKKyAqLworUEpfREVDTCh1bnNpZ25lZCkgcGpfcmJ0cmVlX21pbl9oZWlnaHQoIHBqX3JidHJlZSAqdHJlZSwKKwkJCQkJcGpfcmJ0cmVlX25vZGUgKm5vZGUgKTsKKworCisvKioKKyAqIEB9CisgKi8KKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpfUkJUUkVFX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3NvY2suaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovc29jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNTVmMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3NvY2suaApAQCAtMCwwICsxLDE0MzIgQEAKKy8qICRJZDogc29jay5oIDQ1MzggMjAxMy0wNi0xOSAwOTowNjo1NVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpfU09DS19IX18KKyNkZWZpbmUgX19QSl9TT0NLX0hfXworCisvKioKKyAqIEBmaWxlIHNvY2suaAorICogQGJyaWVmIFNvY2tldCBBYnN0cmFjdGlvbi4KKyAqLworCisjaW5jbHVkZSA8cGovdHlwZXMuaD4KKworUEpfQkVHSU5fREVDTCAKKworCisvKioKKyAqIEBkZWZncm91cCBQSl9TT0NLIFNvY2tldCBBYnN0cmFjdGlvbgorICogQGluZ3JvdXAgUEpfSU8KKyAqIEB7CisgKgorICogVGhlIFBKTElCIHNvY2tldCBhYnN0cmFjdGlvbiBsYXllciBpcyBhIHRoaW4gYW5kIHZlcnkgcG9ydGFibGUgYWJzdHJhY3Rpb24KKyAqIGZvciBzb2NrZXQgQVBJLiBJdCBwcm92aWRlcyBBUEkgc2ltaWxhciB0byBCU0Qgc29ja2V0IEFQSS4gVGhlIGFic3RyYWN0aW9uCisgKiBpcyBuZWVkZWQgYmVjYXVzZSBCU0Qgc29ja2V0IEFQSSBpcyBub3QgYWx3YXlzIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLAorICogdGhlcmVmb3JlIGl0IHdvdWxkbid0IGJlIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIHRydWxseSBwb3J0YWJsZSBuZXR3b3JrCisgKiBwcm9ncmFtcyB1bmxlc3Mgd2UgcHJvdmlkZSBzdWNoIGFic3RyYWN0aW9uLgorICoKKyAqIEFwcGxpY2F0aW9ucyBjYW4gdXNlIHRoaXMgQVBJIGRpcmVjdGx5IGluIHRoZWlyIGFwcGxpY2F0aW9uLCBqdXN0CisgKiBhcyB0aGV5IHdvdWxkIHdoZW4gdXNpbmcgdHJhZGl0aW9uYWwgQlNEIHNvY2tldCBBUEksIHByb3ZpZGVkIHRoZXkKKyAqIGNhbGwgI3BqX2luaXQoKSBmaXJzdC4KKyAqCisgKiBcc2VjdGlvbiBwal9zb2NrX2V4YW1wbGVzX3NlYyBFeGFtcGxlcworICoKKyAqIEZvciBzb21lIGV4YW1wbGVzIG9uIGhvdyB0byB1c2UgdGhlIHNvY2tldCBBUEksIHBsZWFzZSBzZWU6CisgKgorICogIC0gXHJlZiBwYWdlX3BqbGliX3NvY2tfdGVzdAorICogIC0gXHJlZiBwYWdlX3BqbGliX3NlbGVjdF90ZXN0CisgKiAgLSBccmVmIHBhZ2VfcGpsaWJfc29ja19wZXJmX3Rlc3QKKyAqLworCisKKy8qKgorICogU3VwcG9ydGVkIGFkZHJlc3MgZmFtaWxpZXMuIAorICogQVBQTElDQVRJT04gTVVTVCBVU0UgVEhFU0UgVkFMVUVTIElOU1RFQUQgT0YgTk9STUFMIEFGXyosIEJFQ0FVU0UKKyAqIFRIRSBMSUJSQVJZIFdJTEwgRE8gVFJBTlNMQVRJT04gVE8gVEhFIE5BVElWRSBWQUxVRS4KKyAqLworCisvKiogQWRkcmVzcyBmYW1pbHkgaXMgdW5zcGVjaWZpZWQuIEBzZWUgcGpfQUZfVU5TUEVDKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9BRl9VTlNQRUM7CisKKy8qKiBVbml4IGRvbWFpbiBzb2NrZXQuCUBzZWUgcGpfQUZfVU5JWCgpICovCitleHRlcm4gY29uc3QgcGpfdWludDE2X3QgUEpfQUZfVU5JWDsKKworLyoqIFBPU0lYIG5hbWUgZm9yIEFGX1VOSVgJKi8KKyNkZWZpbmUgUEpfQUZfTE9DQUwJIFBKX0FGX1VOSVg7CisKKy8qKiBJbnRlcm5ldCBJUCBwcm90b2NvbC4gQHNlZSBwal9BRl9JTkVUKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9BRl9JTkVUOworCisvKiogSVAgdmVyc2lvbiA2LiBAc2VlIHBqX0FGX0lORVQ2KCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9BRl9JTkVUNjsKKworLyoqIFBhY2tldCBmYW1pbHkuIEBzZWUgcGpfQUZfUEFDS0VUKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9BRl9QQUNLRVQ7CisKKy8qKiBJUkRBIHNvY2tldHMuIEBzZWUgcGpfQUZfSVJEQSgpICovCitleHRlcm4gY29uc3QgcGpfdWludDE2X3QgUEpfQUZfSVJEQTsKKworLyoKKyAqIEFjY2Vzc29yIGZ1bmN0aW9ucyBmb3IgdmFyaW91cyBhZGRyZXNzIGZhbWlseSBjb25zdGFudHMuIFRoZXNlCisgKiBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIGJlY2F1c2UgU3ltYmlhbiBkb2Vzbid0IGFsbG93IGV4cG9ydGluZworICogZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIGEgRExMLgorICovCisKKyNpZiBkZWZpbmVkKFBKX0RMTCkKKyAgICAvKiogR2V0ICNQSl9BRl9VTlNQRUMgdmFsdWUgKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9BRl9VTlNQRUModm9pZCk7CisgICAgLyoqIEdldCAjUEpfQUZfVU5JWCB2YWx1ZS4gKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9BRl9VTklYKHZvaWQpOworICAgIC8qKiBHZXQgI1BKX0FGX0lORVQgdmFsdWUuICovCisgICAgUEpfREVDTChwal91aW50MTZfdCkgcGpfQUZfSU5FVCh2b2lkKTsKKyAgICAvKiogR2V0ICNQSl9BRl9JTkVUNiB2YWx1ZS4gKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9BRl9JTkVUNih2b2lkKTsKKyAgICAvKiogR2V0ICNQSl9BRl9QQUNLRVQgdmFsdWUuICovCisgICAgUEpfREVDTChwal91aW50MTZfdCkgcGpfQUZfUEFDS0VUKHZvaWQpOworICAgIC8qKiBHZXQgI1BKX0FGX0lSREEgdmFsdWUuICovCisgICAgUEpfREVDTChwal91aW50MTZfdCkgcGpfQUZfSVJEQSh2b2lkKTsKKyNlbHNlCisgICAgLyogV2hlbiBwamxpYiBpcyBub3QgYnVpbHQgYXMgRExMLCB0aGVzZSBhY2Nlc3NvciBmdW5jdGlvbnMgYXJlCisgICAgICogc2ltcGx5IGEgbWFjcm8gdG8gZ2V0IHRoZWlyIGNvbnN0YW50cworICAgICAqLworICAgIC8qKiBHZXQgI1BKX0FGX1VOU1BFQyB2YWx1ZSAqLworIyAgIGRlZmluZSBwal9BRl9VTlNQRUMoKSAgIFBKX0FGX1VOU1BFQworICAgIC8qKiBHZXQgI1BKX0FGX1VOSVggdmFsdWUuICovCisjICAgZGVmaW5lIHBqX0FGX1VOSVgoKQkgICAgUEpfQUZfVU5JWAorICAgIC8qKiBHZXQgI1BKX0FGX0lORVQgdmFsdWUuICovCisjICAgZGVmaW5lIHBqX0FGX0lORVQoKQkgICAgUEpfQUZfSU5FVAorICAgIC8qKiBHZXQgI1BKX0FGX0lORVQ2IHZhbHVlLiAqLworIyAgIGRlZmluZSBwal9BRl9JTkVUNigpICAgIFBKX0FGX0lORVQ2CisgICAgLyoqIEdldCAjUEpfQUZfUEFDS0VUIHZhbHVlLiAqLworIyAgIGRlZmluZSBwal9BRl9QQUNLRVQoKSAgIFBKX0FGX1BBQ0tFVAorICAgIC8qKiBHZXQgI1BKX0FGX0lSREEgdmFsdWUuICovCisjICAgZGVmaW5lIHBqX0FGX0lSREEoKQkgICAgUEpfQUZfSVJEQQorI2VuZGlmCisKKworLyoqCisgKiBTdXBwb3J0ZWQgdHlwZXMgb2Ygc29ja2V0cy4KKyAqIEFQUExJQ0FUSU9OIE1VU1QgVVNFIFRIRVNFIFZBTFVFUyBJTlNURUFEIE9GIE5PUk1BTCBTT0NLXyosIEJFQ0FVU0UKKyAqIFRIRSBMSUJSQVJZIFdJTEwgVFJBTlNMQVRFIFRIRSBWQUxVRSBUTyBUSEUgTkFUSVZFIFZBTFVFLgorICovCisKKy8qKiBTZXF1ZW5jZWQsIHJlbGlhYmxlLCBjb25uZWN0aW9uLWJhc2VkIGJ5dGUgc3RyZWFtcy4KKyAqICBAc2VlIHBqX1NPQ0tfU1RSRUFNKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9TT0NLX1NUUkVBTTsKKworLyoqIENvbm5lY3Rpb25sZXNzLCB1bnJlbGlhYmxlIGRhdGFncmFtcyBvZiBmaXhlZCBtYXhpbXVtIGxlbmd0aHMuCisgKiAgQHNlZSBwal9TT0NLX0RHUkFNKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9TT0NLX0RHUkFNOworCisvKiogUmF3IHByb3RvY29sIGludGVyZmFjZS4gQHNlZSBwal9TT0NLX1JBVygpICovCitleHRlcm4gY29uc3QgcGpfdWludDE2X3QgUEpfU09DS19SQVc7CisKKy8qKiBSZWxpYWJseS1kZWxpdmVyZWQgbWVzc2FnZXMuICBAc2VlIHBqX1NPQ0tfUkRNKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9TT0NLX1JETTsKKworCisvKgorICogQWNjZXNzb3IgZnVuY3Rpb25zIGZvciB2YXJpb3VzIGNvbnN0YW50cy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwcm92aWRlZAorICogYmVjYXVzZSBTeW1iaWFuIGRvZXNuJ3QgYWxsb3cgZXhwb3J0aW5nIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBhIERMTC4KKyAqLworCisjaWYgZGVmaW5lZChQSl9ETEwpCisgICAgLyoqIEdldCAjUEpfU09DS19TVFJFQU0gY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKGludCkgcGpfU09DS19TVFJFQU0odm9pZCk7CisgICAgLyoqIEdldCAjUEpfU09DS19ER1JBTSBjb25zdGFudCAqLworICAgIFBKX0RFQ0woaW50KSBwal9TT0NLX0RHUkFNKHZvaWQpOworICAgIC8qKiBHZXQgI1BKX1NPQ0tfUkFXIGNvbnN0YW50ICovCisgICAgUEpfREVDTChpbnQpIHBqX1NPQ0tfUkFXKHZvaWQpOworICAgIC8qKiBHZXQgI1BKX1NPQ0tfUkRNIGNvbnN0YW50ICovCisgICAgUEpfREVDTChpbnQpIHBqX1NPQ0tfUkRNKHZvaWQpOworI2Vsc2UKKyAgICAvKiogR2V0ICNQSl9TT0NLX1NUUkVBTSBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9TT0NLX1NUUkVBTSgpIFBKX1NPQ0tfU1RSRUFNCisgICAgLyoqIEdldCAjUEpfU09DS19ER1JBTSBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9TT0NLX0RHUkFNKCkgIFBKX1NPQ0tfREdSQU0KKyAgICAvKiogR2V0ICNQSl9TT0NLX1JBVyBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9TT0NLX1JBVygpICAgIFBKX1NPQ0tfUkFXCisgICAgLyoqIEdldCAjUEpfU09DS19SRE0gY29uc3RhbnQgKi8KKyMgICBkZWZpbmUgcGpfU09DS19SRE0oKSAgICBQSl9TT0NLX1JETQorI2VuZGlmCisKKworLyoqCisgKiBTb2NrZXQgbGV2ZWwgc3BlY2lmaWVkIGluICNwal9zb2NrX3NldHNvY2tvcHQoKSBvciAjcGpfc29ja19nZXRzb2Nrb3B0KCkuCisgKiBBUFBMSUNBVElPTiBNVVNUIFVTRSBUSEVTRSBWQUxVRVMgSU5TVEVBRCBPRiBOT1JNQUwgU09MXyosIEJFQ0FVU0UKKyAqIFRIRSBMSUJSQVJZIFdJTEwgVFJBTlNMQVRFIFRIRSBWQUxVRSBUTyBUSEUgTkFUSVZFIFZBTFVFLgorICovCisvKiogU29ja2V0IGxldmVsLiBAc2VlIHBqX1NPTF9TT0NLRVQoKSAqLworZXh0ZXJuIGNvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9TT0NLRVQ7CisvKiogSVAgbGV2ZWwuIEBzZWUgcGpfU09MX0lQKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9TT0xfSVA7CisvKiogVENQIGxldmVsLiBAc2VlIHBqX1NPTF9UQ1AoKSAqLworZXh0ZXJuIGNvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9UQ1A7CisvKiogVURQIGxldmVsLiBAc2VlIHBqX1NPTF9VRFAoKSAqLworZXh0ZXJuIGNvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9VRFA7CisvKiogSVAgdmVyc2lvbiA2LiBAc2VlIHBqX1NPTF9JUFY2KCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9TT0xfSVBWNjsKKworLyoKKyAqIEFjY2Vzc29yIGZ1bmN0aW9ucyBmb3IgdmFyaW91cyBjb25zdGFudHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQKKyAqIGJlY2F1c2UgU3ltYmlhbiBkb2Vzbid0IGFsbG93IGV4cG9ydGluZyBnbG9iYWwgdmFyaWFibGVzIGZyb20gYSBETEwuCisgKi8KKworI2lmIGRlZmluZWQoUEpfRExMKQorICAgIC8qKiBHZXQgI1BKX1NPTF9TT0NLRVQgY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9TT0xfU09DS0VUKHZvaWQpOworICAgIC8qKiBHZXQgI1BKX1NPTF9JUCBjb25zdGFudCAqLworICAgIFBKX0RFQ0wocGpfdWludDE2X3QpIHBqX1NPTF9JUCh2b2lkKTsKKyAgICAvKiogR2V0ICNQSl9TT0xfVENQIGNvbnN0YW50ICovCisgICAgUEpfREVDTChwal91aW50MTZfdCkgcGpfU09MX1RDUCh2b2lkKTsKKyAgICAvKiogR2V0ICNQSl9TT0xfVURQIGNvbnN0YW50ICovCisgICAgUEpfREVDTChwal91aW50MTZfdCkgcGpfU09MX1VEUCh2b2lkKTsKKyAgICAvKiogR2V0ICNQSl9TT0xfSVBWNiBjb25zdGFudCAqLworICAgIFBKX0RFQ0wocGpfdWludDE2X3QpIHBqX1NPTF9JUFY2KHZvaWQpOworI2Vsc2UKKyAgICAvKiogR2V0ICNQSl9TT0xfU09DS0VUIGNvbnN0YW50ICovCisjICAgZGVmaW5lIHBqX1NPTF9TT0NLRVQoKSAgUEpfU09MX1NPQ0tFVAorICAgIC8qKiBHZXQgI1BKX1NPTF9JUCBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9TT0xfSVAoKQkgICAgUEpfU09MX0lQCisgICAgLyoqIEdldCAjUEpfU09MX1RDUCBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9TT0xfVENQKCkJICAgIFBKX1NPTF9UQ1AKKyAgICAvKiogR2V0ICNQSl9TT0xfVURQIGNvbnN0YW50ICovCisjICAgZGVmaW5lIHBqX1NPTF9VRFAoKQkgICAgUEpfU09MX1VEUAorICAgIC8qKiBHZXQgI1BKX1NPTF9JUFY2IGNvbnN0YW50ICovCisjICAgZGVmaW5lIHBqX1NPTF9JUFY2KCkgICAgUEpfU09MX0lQVjYKKyNlbmRpZgorCisKKy8qIElQX1RPUyAKKyAqCisgKiBOb3RlOgorICogIFRPUyBDVVJSRU5UTFkgRE9FUyBOT1QgV09SSyBJTiBXaW5kb3dzIDIwMDAgYW5kIGFib3ZlIQorICogIFNlZSBodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2tiLzI0ODYxMQorICovCisvKiogSVBfVE9TIG9wdG5hbWUgaW4gc2V0c29ja29wdCgpLiBAc2VlIHBqX0lQX1RPUygpICovCitleHRlcm4gY29uc3QgcGpfdWludDE2X3QgUEpfSVBfVE9TOworCisvKgorICogSVAgVE9TIHJlbGF0ZWQgY29uc3RhdHMuCisgKgorICogTm90ZToKKyAqICBUT1MgQ1VSUkVOVExZIERPRVMgTk9UIFdPUksgSU4gV2luZG93cyAyMDAwIGFuZCBhYm92ZSEKKyAqICBTZWUgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8yNDg2MTEKKyAqLworLyoqIE1pbmltaXplIGRlbGF5cy4gQHNlZSBwal9JUFRPU19MT1dERUxBWSgpICovCitleHRlcm4gY29uc3QgcGpfdWludDE2X3QgUEpfSVBUT1NfTE9XREVMQVk7CisKKy8qKiBPcHRpbWl6ZSB0aHJvdWdocHV0LiBAc2VlIHBqX0lQVE9TX1RIUk9VR0hQVVQoKSAqLworZXh0ZXJuIGNvbnN0IHBqX3VpbnQxNl90IFBKX0lQVE9TX1RIUk9VR0hQVVQ7CisKKy8qKiBPcHRpbWl6ZSBmb3IgcmVsaWFiaWxpdHkuIEBzZWUgcGpfSVBUT1NfUkVMSUFCSUxJVFkoKSAqLworZXh0ZXJuIGNvbnN0IHBqX3VpbnQxNl90IFBKX0lQVE9TX1JFTElBQklMSVRZOworCisvKiogImZpbGxlciBkYXRhIiB3aGVyZSBzbG93IHRyYW5zbWlzc2lvbiBkb2VzJ3QgbWF0dGVyLgorICogIEBzZWUgcGpfSVBUT1NfTUlOQ09TVCgpICovCitleHRlcm4gY29uc3QgcGpfdWludDE2X3QgUEpfSVBUT1NfTUlOQ09TVDsKKworCisjaWYgZGVmaW5lZChQSl9ETEwpCisgICAgLyoqIEdldCAjUEpfSVBfVE9TIGNvbnN0YW50ICovCisgICAgUEpfREVDTChpbnQpIHBqX0lQX1RPUyh2b2lkKTsKKworICAgIC8qKiBHZXQgI1BKX0lQVE9TX0xPV0RFTEFZIGNvbnN0YW50ICovCisgICAgUEpfREVDTChpbnQpIHBqX0lQVE9TX0xPV0RFTEFZKHZvaWQpOworCisgICAgLyoqIEdldCAjUEpfSVBUT1NfVEhST1VHSFBVVCBjb25zdGFudCAqLworICAgIFBKX0RFQ0woaW50KSBwal9JUFRPU19USFJPVUdIUFVUKHZvaWQpOworCisgICAgLyoqIEdldCAjUEpfSVBUT1NfUkVMSUFCSUxJVFkgY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKGludCkgcGpfSVBUT1NfUkVMSUFCSUxJVFkodm9pZCk7CisKKyAgICAvKiogR2V0ICNQSl9JUFRPU19NSU5DT1NUIGNvbnN0YW50ICovCisgICAgUEpfREVDTChpbnQpIHBqX0lQVE9TX01JTkNPU1Qodm9pZCk7CisjZWxzZQorICAgIC8qKiBHZXQgI1BKX0lQX1RPUyBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9JUF9UT1MoKQkJUEpfSVBfVE9TCisKKyAgICAvKiogR2V0ICNQSl9JUFRPU19MT1dERUxBWSBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9JUFRPU19MT1dERUxBWSgpCVBKX0lQX1RPU19MT1dERUxBWQorCisgICAgLyoqIEdldCAjUEpfSVBUT1NfVEhST1VHSFBVVCBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9JUFRPU19USFJPVUdIUFVUKCkgUEpfSVBfVE9TX1RIUk9VR0hQVVQKKworICAgIC8qKiBHZXQgI1BKX0lQVE9TX1JFTElBQklMSVRZIGNvbnN0YW50ICovCisjICAgZGVmaW5lIHBqX0lQVE9TX1JFTElBQklMSVRZKCkgUEpfSVBfVE9TX1JFTElBQklMSVRZCisKKyAgICAvKiogR2V0ICNQSl9JUFRPU19NSU5DT1NUIGNvbnN0YW50ICovCisjICAgZGVmaW5lIHBqX0lQVE9TX01JTkNPU1QoKQlQSl9JUF9UT1NfTUlOQ09TVAorI2VuZGlmCisKKworLyoqCisgKiBWYWx1ZXMgdG8gYmUgc3BlY2lmaWVkIGFzIFxjIG9wdG5hbWUgd2hlbiBjYWxsaW5nICNwal9zb2NrX3NldHNvY2tvcHQoKSAKKyAqIG9yICNwal9zb2NrX2dldHNvY2tvcHQoKS4KKyAqLworCisvKiogU29ja2V0IHR5cGUuIEBzZWUgcGpfU09fVFlQRSgpICovCitleHRlcm4gY29uc3QgcGpfdWludDE2X3QgUEpfU09fVFlQRTsKKworLyoqIEJ1ZmZlciBzaXplIGZvciByZWNlaXZlLiBAc2VlIHBqX1NPX1JDVkJVRigpICovCitleHRlcm4gY29uc3QgcGpfdWludDE2X3QgUEpfU09fUkNWQlVGOworCisvKiogQnVmZmVyIHNpemUgZm9yIHNlbmQuIEBzZWUgcGpfU09fU05EQlVGKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9TT19TTkRCVUY7CisKKy8qKiBEaXNhYmxlcyB0aGUgTmFnbGUgYWxnb3JpdGhtIGZvciBzZW5kIGNvYWxlc2NpbmcuIEBzZWUgcGpfVENQX05PREVMQVkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9UQ1BfTk9ERUxBWTsKKworLyoqIEFsbG93cyB0aGUgc29ja2V0IHRvIGJlIGJvdW5kIHRvIGFuIGFkZHJlc3MgdGhhdCBpcyBhbHJlYWR5IGluIHVzZS4KKyAqICBAc2VlIHBqX1NPX1JFVVNFQUREUiAqLworZXh0ZXJuIGNvbnN0IHBqX3VpbnQxNl90IFBKX1NPX1JFVVNFQUREUjsKKworLyoqIERvIG5vdCBnZW5lcmF0ZSBTSUdQSVBFLiBAc2VlIHBqX1NPX05PU0lHUElQRSAqLworZXh0ZXJuIGNvbnN0IHBqX3VpbnQxNl90IFBKX1NPX05PU0lHUElQRTsKKworLyoqIFNldCB0aGUgcHJvdG9jb2wtZGVmaW5lZCBwcmlvcml0eSBmb3IgYWxsIHBhY2tldHMgdG8gYmUgc2VudCBvbiBzb2NrZXQuCisgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9TT19QUklPUklUWTsKKworLyoqIElQIG11bHRpY2FzdCBpbnRlcmZhY2UuIEBzZWUgcGpfSVBfTVVMVElDQVNUX0lGKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9JUF9NVUxUSUNBU1RfSUY7CisgCisvKiogSVAgbXVsdGljYXN0IHR0bC4gQHNlZSBwal9JUF9NVUxUSUNBU1RfVFRMKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9JUF9NVUxUSUNBU1RfVFRMOworCisvKiogSVAgbXVsdGljYXN0IGxvb3BiYWNrLiBAc2VlIHBqX0lQX01VTFRJQ0FTVF9MT09QKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9JUF9NVUxUSUNBU1RfTE9PUDsKKworLyoqIEFkZCBhbiBJUCBncm91cCBtZW1iZXJzaGlwLiBAc2VlIHBqX0lQX0FERF9NRU1CRVJTSElQKCkgKi8KK2V4dGVybiBjb25zdCBwal91aW50MTZfdCBQSl9JUF9BRERfTUVNQkVSU0hJUDsKKworLyoqIERyb3AgYW4gSVAgZ3JvdXAgbWVtYmVyc2hpcC4gQHNlZSBwal9JUF9EUk9QX01FTUJFUlNISVAoKSAqLworZXh0ZXJuIGNvbnN0IHBqX3VpbnQxNl90IFBKX0lQX0RST1BfTUVNQkVSU0hJUDsKKworCisjaWYgZGVmaW5lZChQSl9ETEwpCisgICAgLyoqIEdldCAjUEpfU09fVFlQRSBjb25zdGFudCAqLworICAgIFBKX0RFQ0wocGpfdWludDE2X3QpIHBqX1NPX1RZUEUodm9pZCk7CisKKyAgICAvKiogR2V0ICNQSl9TT19SQ1ZCVUYgY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9TT19SQ1ZCVUYodm9pZCk7CisKKyAgICAvKiogR2V0ICNQSl9TT19TTkRCVUYgY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9TT19TTkRCVUYodm9pZCk7CisKKyAgICAvKiogR2V0ICNQSl9UQ1BfTk9ERUxBWSBjb25zdGFudCAqLworICAgIFBKX0RFQ0wocGpfdWludDE2X3QpIHBqX1RDUF9OT0RFTEFZKHZvaWQpOworCisgICAgLyoqIEdldCAjUEpfU09fUkVVU0VBRERSIGNvbnN0YW50ICovCisgICAgUEpfREVDTChwal91aW50MTZfdCkgcGpfU09fUkVVU0VBRERSKHZvaWQpOworCisgICAgLyoqIEdldCAjUEpfU09fTk9TSUdQSVBFIGNvbnN0YW50ICovCisgICAgUEpfREVDTChwal91aW50MTZfdCkgcGpfU09fTk9TSUdQSVBFKHZvaWQpOworCisgICAgLyoqIEdldCAjUEpfU09fUFJJT1JJVFkgY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9TT19QUklPUklUWSh2b2lkKTsKKworICAgIC8qKiBHZXQgI1BKX0lQX01VTFRJQ0FTVF9JRiBjb25zdGFudCAqLworICAgIFBKX0RFQ0wocGpfdWludDE2X3QpIHBqX0lQX01VTFRJQ0FTVF9JRih2b2lkKTsKKworICAgIC8qKiBHZXQgI1BKX0lQX01VTFRJQ0FTVF9UVEwgY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9JUF9NVUxUSUNBU1RfVFRMKHZvaWQpOworCisgICAgLyoqIEdldCAjUEpfSVBfTVVMVElDQVNUX0xPT1AgY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9JUF9NVUxUSUNBU1RfTE9PUCh2b2lkKTsKKworICAgIC8qKiBHZXQgI1BKX0lQX0FERF9NRU1CRVJTSElQIGNvbnN0YW50ICovCisgICAgUEpfREVDTChwal91aW50MTZfdCkgcGpfSVBfQUREX01FTUJFUlNISVAodm9pZCk7CisKKyAgICAvKiogR2V0ICNQSl9JUF9EUk9QX01FTUJFUlNISVAgY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9JUF9EUk9QX01FTUJFUlNISVAodm9pZCk7CisjZWxzZQorICAgIC8qKiBHZXQgI1BKX1NPX1RZUEUgY29uc3RhbnQgKi8KKyMgICBkZWZpbmUgcGpfU09fVFlQRSgpCSAgICBQSl9TT19UWVBFCisKKyAgICAvKiogR2V0ICNQSl9TT19SQ1ZCVUYgY29uc3RhbnQgKi8KKyMgICBkZWZpbmUgcGpfU09fUkNWQlVGKCkgICBQSl9TT19SQ1ZCVUYKKworICAgIC8qKiBHZXQgI1BKX1NPX1NOREJVRiBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9TT19TTkRCVUYoKSAgIFBKX1NPX1NOREJVRgorCisgICAgLyoqIEdldCAjUEpfVENQX05PREVMQVkgY29uc3RhbnQgKi8KKyMgICBkZWZpbmUgcGpfVENQX05PREVMQVkoKSBQSl9UQ1BfTk9ERUxBWQorCisgICAgLyoqIEdldCAjUEpfU09fUkVVU0VBRERSIGNvbnN0YW50ICovCisjICAgZGVmaW5lIHBqX1NPX1JFVVNFQUREUigpIFBKX1NPX1JFVVNFQUREUgorCisgICAgLyoqIEdldCAjUEpfU09fTk9TSUdQSVBFIGNvbnN0YW50ICovCisjICAgZGVmaW5lIHBqX1NPX05PU0lHUElQRSgpIFBKX1NPX05PU0lHUElQRQorCisgICAgLyoqIEdldCAjUEpfU09fUFJJT1JJVFkgY29uc3RhbnQgKi8KKyMgICBkZWZpbmUgcGpfU09fUFJJT1JJVFkoKSBQSl9TT19QUklPUklUWQorCisgICAgLyoqIEdldCAjUEpfSVBfTVVMVElDQVNUX0lGIGNvbnN0YW50ICovCisjICAgZGVmaW5lIHBqX0lQX01VTFRJQ0FTVF9JRigpICAgIFBKX0lQX01VTFRJQ0FTVF9JRgorCisgICAgLyoqIEdldCAjUEpfSVBfTVVMVElDQVNUX1RUTCBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9JUF9NVUxUSUNBU1RfVFRMKCkgICBQSl9JUF9NVUxUSUNBU1RfVFRMCisKKyAgICAvKiogR2V0ICNQSl9JUF9NVUxUSUNBU1RfTE9PUCBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9JUF9NVUxUSUNBU1RfTE9PUCgpICBQSl9JUF9NVUxUSUNBU1RfTE9PUAorCisgICAgLyoqIEdldCAjUEpfSVBfQUREX01FTUJFUlNISVAgY29uc3RhbnQgKi8KKyMgICBkZWZpbmUgcGpfSVBfQUREX01FTUJFUlNISVAoKSAgUEpfSVBfQUREX01FTUJFUlNISVAKKworICAgIC8qKiBHZXQgI1BKX0lQX0RST1BfTUVNQkVSU0hJUCBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9JUF9EUk9QX01FTUJFUlNISVAoKSBQSl9JUF9EUk9QX01FTUJFUlNISVAKKyNlbmRpZgorCisKKy8qCisgKiBGbGFncyB0byBiZSBzcGVjaWZpZWQgaW4gI3BqX3NvY2tfcmVjdiwgI3BqX3NvY2tfc2VuZCwgZXRjLgorICovCisKKy8qKiBPdXQtb2YtYmFuZCBtZXNzYWdlcy4gQHNlZSBwal9NU0dfT09CKCkgKi8KK2V4dGVybiBjb25zdCBpbnQgUEpfTVNHX09PQjsKKworLyoqIFBlZWssIGRvbid0IHJlbW92ZSBmcm9tIGJ1ZmZlci4gQHNlZSBwal9NU0dfUEVFSygpICovCitleHRlcm4gY29uc3QgaW50IFBKX01TR19QRUVLOworCisvKiogRG9uJ3Qgcm91dGUuIEBzZWUgcGpfTVNHX0RPTlRST1VURSgpICovCitleHRlcm4gY29uc3QgaW50IFBKX01TR19ET05UUk9VVEU7CisKKworI2lmIGRlZmluZWQoUEpfRExMKQorICAgIC8qKiBHZXQgI1BKX01TR19PT0IgY29uc3RhbnQgKi8KKyAgICBQSl9ERUNMKGludCkgcGpfTVNHX09PQih2b2lkKTsKKworICAgIC8qKiBHZXQgI1BKX01TR19QRUVLIGNvbnN0YW50ICovCisgICAgUEpfREVDTChpbnQpIHBqX01TR19QRUVLKHZvaWQpOworCisgICAgLyoqIEdldCAjUEpfTVNHX0RPTlRST1VURSBjb25zdGFudCAqLworICAgIFBKX0RFQ0woaW50KSBwal9NU0dfRE9OVFJPVVRFKHZvaWQpOworI2Vsc2UKKyAgICAvKiogR2V0ICNQSl9NU0dfT09CIGNvbnN0YW50ICovCisjICAgZGVmaW5lIHBqX01TR19PT0IoKQkJUEpfTVNHX09PQgorCisgICAgLyoqIEdldCAjUEpfTVNHX1BFRUsgY29uc3RhbnQgKi8KKyMgICBkZWZpbmUgcGpfTVNHX1BFRUsoKQlQSl9NU0dfUEVFSworCisgICAgLyoqIEdldCAjUEpfTVNHX0RPTlRST1VURSBjb25zdGFudCAqLworIyAgIGRlZmluZSBwal9NU0dfRE9OVFJPVVRFKCkJUEpfTVNHX0RPTlRST1VURQorI2VuZGlmCisKKworLyoqCisgKiBGbGFnIHRvIGJlIHNwZWNpZmllZCBpbiAjcGpfc29ja19zaHV0ZG93bigpLgorICovCit0eXBlZGVmIGVudW0gcGpfc29ja2V0X3NkX3R5cGUKK3sKKyAgICBQSl9TRF9SRUNFSVZFICAgPSAwLCAgICAvKio8IE5vIG1vcmUgcmVjZWl2ZS4JICAgICovCisgICAgUEpfU0hVVF9SRAkgICAgPSAwLCAgICAvKio8IEFsaWFzIGZvciBTRF9SRUNFSVZFLgkgICAgKi8KKyAgICBQSl9TRF9TRU5ECSAgICA9IDEsICAgIC8qKjwgTm8gbW9yZSBzZW5kaW5nLgkgICAgKi8KKyAgICBQSl9TSFVUX1dSCSAgICA9IDEsICAgIC8qKjwgQWxpYXMgZm9yIFNEX1NFTkQuCSAgICAqLworICAgIFBKX1NEX0JPVEgJICAgID0gMiwgICAgLyoqPCBObyBtb3JlIHNlbmQgYW5kIHJlY2VpdmUuICAqLworICAgIFBKX1NIVVRfUkRXUiAgICA9IDIgICAgIC8qKjwgQWxpYXMgZm9yIFNEX0JPVEguCSAgICAqLworfSBwal9zb2NrZXRfc2RfdHlwZTsKKworCisKKy8qKiBBZGRyZXNzIHRvIGFjY2VwdCBhbnkgaW5jb21pbmcgbWVzc2FnZXMuICovCisjZGVmaW5lIFBKX0lOQUREUl9BTlkJICAgICgocGpfdWludDMyX3QpMCkKKworLyoqIEFkZHJlc3MgaW5kaWNhdGluZyBhbiBlcnJvciByZXR1cm4gKi8KKyNkZWZpbmUgUEpfSU5BRERSX05PTkUJICAgICgocGpfdWludDMyX3QpMHhmZmZmZmZmZikKKworLyoqIEFkZHJlc3MgdG8gc2VuZCB0byBhbGwgaG9zdHMuICovCisjZGVmaW5lIFBKX0lOQUREUl9CUk9BRENBU1QgKChwal91aW50MzJfdCkweGZmZmZmZmZmKQorCisKKy8qKiAKKyAqIE1heGltdW0gbGVuZ3RoIHNwZWNpZmlhYmxlIGJ5ICNwal9zb2NrX2xpc3RlbigpLgorICogSWYgdGhlIGJ1aWxkIHN5c3RlbSBkb2Vzbid0IG92ZXJyaWRlIHRoaXMgdmFsdWUsIHRoZW4gdGhlIGxvd2VzdCAKKyAqIGRlbm9taW5hdG9yIChmaXZlLCBpbiBXaW4zMiBzeXN0ZW1zKSB3aWxsIGJlIHVzZWQuCisgKi8KKyNpZiAhZGVmaW5lZChQSl9TT01BWENPTk4pCisjICBkZWZpbmUgUEpfU09NQVhDT05OCTUKKyNlbmRpZgorCisKKy8qKgorICogQ29uc3RhbnQgZm9yIGludmFsaWQgc29ja2V0IHJldHVybmVkIGJ5ICNwal9zb2NrX3NvY2tldCgpIGFuZAorICogI3BqX3NvY2tfYWNjZXB0KCkuCisgKi8KKyNkZWZpbmUgUEpfSU5WQUxJRF9TT0NLRVQgICAoLTEpCisKKy8qIE11c3QgdW5kZWZpbmUgc19hZGRyIGJlY2F1c2Ugb2YgcGpfaW5fYWRkciBiZWxvdyAqLworI3VuZGVmIHNfYWRkcgorCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBJbnRlcm5ldCBhZGRyZXNzLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9pbl9hZGRyCit7CisgICAgcGpfdWludDMyX3QJc19hZGRyOwkJLyoqPCBUaGUgMzJiaXQgSVAgYWRkcmVzcy4JICAgICovCit9IHBqX2luX2FkZHI7CisKKworLyoqCisgKiBNYXhpbXVtIGxlbmd0aCBvZiB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgYWRkcmVzcy4KKyAqLworI2RlZmluZSBQSl9JTkVUX0FERFJTVFJMRU4JMTYKKworLyoqCisgKiBNYXhpbXVtIGxlbmd0aCBvZiB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjYgYWRkcmVzcy4KKyAqLworI2RlZmluZSBQSl9JTkVUNl9BRERSU1RSTEVOCTQ2CisKKy8qKgorICogVGhlIHNpemUgb2Ygc2luX3plcm8gZmllbGQgaW4gcGpfc29ja2FkZHJfaW4gc3RydWN0dXJlLiBNb3N0IE9TZXMKKyAqIHVzZSA4LCBidXQgb3RoZXJzIHN1Y2ggYXMgdGhlIEJTRCBUQ1AvSVAgc3RhY2sgaW4gZUNvcyB1c2VzIDI0LgorICovCisjaWZuZGVmIFBKX1NPQ0tBRERSX0lOX1NJTl9aRVJPX0xFTgorIyAgIGRlZmluZSBQSl9TT0NLQUREUl9JTl9TSU5fWkVST19MRU4JOAorI2VuZGlmCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIEludGVybmV0IHNvY2tldCBhZGRyZXNzLgorICogSWYgUEpfU09DS0FERFJfSEFTX0xFTiBpcyBub3QgemVybywgdGhlbiBzaW5femVyb19sZW4gbWVtYmVyIGlzIGFkZGVkCisgKiB0byB0aGlzIHN0cnVjdC4gQXMgZmFyIHRoZSBhcHBsaWNhdGlvbiBpcyBjb25jZXJuZWQsIHRoZSB2YWx1ZSBvZgorICogdGhpcyBtZW1iZXIgd2lsbCBhbHdheXMgYmUgemVyby4gSW50ZXJuYWxseSwgUEpMSUIgbWF5IG1vZGlmeSB0aGUgdmFsdWUKKyAqIGJlZm9yZSBjYWxsaW5nIE9TIHNvY2tldCBBUEksIGFuZCByZXNldCB0aGUgdmFsdWUgYmFjayB0byB6ZXJvIGJlZm9yZQorICogcmV0dXJuaW5nIHRoZSBzdHJ1Y3QgdG8gYXBwbGljYXRpb24uCisgKi8KK3N0cnVjdCBwal9zb2NrYWRkcl9pbgoreworI2lmIGRlZmluZWQoUEpfU09DS0FERFJfSEFTX0xFTikgJiYgUEpfU09DS0FERFJfSEFTX0xFTiE9MAorICAgIHBqX3VpbnQ4X3QgIHNpbl96ZXJvX2xlbjsJLyoqPCBKdXN0IGlnbm9yZSB0aGlzLgkJICAgICovCisgICAgcGpfdWludDhfdCAgc2luX2ZhbWlseTsJLyoqPCBBZGRyZXNzIGZhbWlseS4JCSAgICAqLworI2Vsc2UKKyAgICBwal91aW50MTZfdAlzaW5fZmFtaWx5OwkvKio8IEFkZHJlc3MgZmFtaWx5LgkJICAgICovCisjZW5kaWYKKyAgICBwal91aW50MTZfdAlzaW5fcG9ydDsJLyoqPCBUcmFuc3BvcnQgbGF5ZXIgcG9ydCBudW1iZXIuICAgKi8KKyAgICBwal9pbl9hZGRyCXNpbl9hZGRyOwkvKio8IElQIGFkZHJlc3MuCQkgICAgKi8KKyAgICBjaGFyCXNpbl96ZXJvW1BKX1NPQ0tBRERSX0lOX1NJTl9aRVJPX0xFTl07IC8qKjwgUGFkZGluZy4qLworfTsKKworCisjdW5kZWYgczZfYWRkcgorCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBJUHY2IGFkZHJlc3MuCisgKi8KK3R5cGVkZWYgdW5pb24gcGpfaW42X2FkZHIKK3sKKyAgICAvKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5ICovCisgICAgcGpfdWludDhfdCAgczZfYWRkclsxNl07ICAgLyoqPCA4LWJpdCBhcnJheSAqLworCisgICAgLyogV2hpbGUgdGhlc2UgYXJlIHVzZWQgZm9yIHByb3BlciBhbGlnbm1lbnQgKi8KKyAgICBwal91aW50MzJfdAl1Nl9hZGRyMzJbNF07CisKKyAgICAvKiBEbyBub3QgdXNlIHRoaXMgd2l0aCBXaW5zb2NrMiwgYXMgdGhpcyB3aWxsIGFsaWduIHBqX3NvY2thZGRyX2luNgorICAgICAqIHRvIDY0LWJpdCBib3VuZGFyeSBhbmQgV2luc29jazIgZG9lc24ndCBsaWtlIGl0IQorICAgICAqIFVwZGF0ZSAyNi8wNC8yMDEwOgorICAgICAqICBUaGlzIGlzIG5vdyBkaXNhYmxlZCwgc2VlIGh0dHA6Ly90cmFjLnBqc2lwLm9yZy9yZXBvcy90aWNrZXQvMTA1OAorICAgICAqLworI2lmIDAgJiYgZGVmaW5lZChQSl9IQVNfSU5UNjQpICYmIFBKX0hBU19JTlQ2NCE9MCAmJiBcCisgICAgKCFkZWZpbmVkKFBKX1dJTjMyKSB8fCBQSl9XSU4zMj09MCkKKyAgICBwal9pbnQ2NF90CXU2X2FkZHI2NFsyXTsKKyNlbmRpZgorCit9IHBqX2luNl9hZGRyOworCisKKy8qKiBJbml0aWFsaXplciB2YWx1ZSBmb3IgcGpfaW42X2FkZHIuICovCisjZGVmaW5lIFBKX0lONkFERFJfQU5ZX0lOSVQgeyB7IHsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCB9IH0gfQorCisvKiogSW5pdGlhbGl6ZXIgdmFsdWUgZm9yIHBqX2luNl9hZGRyLiAqLworI2RlZmluZSBQSl9JTjZBRERSX0xPT1BCQUNLX0lOSVQgeyB7IHsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSB9IH0gfQorCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBJUHY2IHNvY2tldCBhZGRyZXNzLgorICogSWYgUEpfU09DS0FERFJfSEFTX0xFTiBpcyBub3QgemVybywgdGhlbiBzaW5femVyb19sZW4gbWVtYmVyIGlzIGFkZGVkCisgKiB0byB0aGlzIHN0cnVjdC4gQXMgZmFyIHRoZSBhcHBsaWNhdGlvbiBpcyBjb25jZXJuZWQsIHRoZSB2YWx1ZSBvZgorICogdGhpcyBtZW1iZXIgd2lsbCBhbHdheXMgYmUgemVyby4gSW50ZXJuYWxseSwgUEpMSUIgbWF5IG1vZGlmeSB0aGUgdmFsdWUKKyAqIGJlZm9yZSBjYWxsaW5nIE9TIHNvY2tldCBBUEksIGFuZCByZXNldCB0aGUgdmFsdWUgYmFjayB0byB6ZXJvIGJlZm9yZQorICogcmV0dXJuaW5nIHRoZSBzdHJ1Y3QgdG8gYXBwbGljYXRpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX3NvY2thZGRyX2luNgoreworI2lmIGRlZmluZWQoUEpfU09DS0FERFJfSEFTX0xFTikgJiYgUEpfU09DS0FERFJfSEFTX0xFTiE9MAorICAgIHBqX3VpbnQ4X3QgIHNpbjZfemVyb19sZW47CSAgICAvKio8IEp1c3QgaWdub3JlIHRoaXMuCSAgICovCisgICAgcGpfdWludDhfdCAgc2luNl9mYW1pbHk7CSAgICAvKio8IEFkZHJlc3MgZmFtaWx5LgkgICAqLworI2Vsc2UKKyAgICBwal91aW50MTZfdAlzaW42X2ZhbWlseTsJICAgIC8qKjwgQWRkcmVzcyBmYW1pbHkJCSAgICAqLworI2VuZGlmCisgICAgcGpfdWludDE2X3QJc2luNl9wb3J0OwkgICAgLyoqPCBUcmFuc3BvcnQgbGF5ZXIgcG9ydCBudW1iZXIuICovCisgICAgcGpfdWludDMyX3QJc2luNl9mbG93aW5mbzsJICAgIC8qKjwgSVB2NiBmbG93IGluZm9ybWF0aW9uCSAgICAqLworICAgIHBqX2luNl9hZGRyIHNpbjZfYWRkcjsJICAgIC8qKjwgSVB2NiBhZGRyZXNzLgkJICAgICovCisgICAgcGpfdWludDMyX3Qgc2luNl9zY29wZV9pZDsJICAgIC8qKjwgU2V0IG9mIGludGVyZmFjZXMgZm9yIGEgc2NvcGUJKi8KK30gcGpfc29ja2FkZHJfaW42OworCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGNvbW1vbiBhdHRyaWJ1dGVzIGZvdW5kIGluIHRyYW5zcG9ydCBhZGRyZXNzZXMuCisgKiBJZiBQSl9TT0NLQUREUl9IQVNfTEVOIGlzIG5vdCB6ZXJvLCB0aGVuIHNhX3plcm9fbGVuIG1lbWJlciBpcyBhZGRlZAorICogdG8gdGhpcyBzdHJ1Y3QuIEFzIGZhciB0aGUgYXBwbGljYXRpb24gaXMgY29uY2VybmVkLCB0aGUgdmFsdWUgb2YKKyAqIHRoaXMgbWVtYmVyIHdpbGwgYWx3YXlzIGJlIHplcm8uIEludGVybmFsbHksIFBKTElCIG1heSBtb2RpZnkgdGhlIHZhbHVlCisgKiBiZWZvcmUgY2FsbGluZyBPUyBzb2NrZXQgQVBJLCBhbmQgcmVzZXQgdGhlIHZhbHVlIGJhY2sgdG8gemVybyBiZWZvcmUKKyAqIHJldHVybmluZyB0aGUgc3RydWN0IHRvIGFwcGxpY2F0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9hZGRyX2hkcgoreworI2lmIGRlZmluZWQoUEpfU09DS0FERFJfSEFTX0xFTikgJiYgUEpfU09DS0FERFJfSEFTX0xFTiE9MAorICAgIHBqX3VpbnQ4X3QgIHNhX3plcm9fbGVuOworICAgIHBqX3VpbnQ4X3QgIHNhX2ZhbWlseTsKKyNlbHNlCisgICAgcGpfdWludDE2X3QJc2FfZmFtaWx5OwkvKio8IENvbW1vbiBkYXRhOiBhZGRyZXNzIGZhbWlseS4gICAqLworI2VuZGlmCit9IHBqX2FkZHJfaGRyOworCisKKy8qKgorICogVGhpcyB1bmlvbiBkZXNjcmliZXMgYSBnZW5lcmljIHNvY2tldCBhZGRyZXNzLgorICovCit0eXBlZGVmIHVuaW9uIHBqX3NvY2thZGRyCit7CisgICAgcGpfYWRkcl9oZHIJICAgIGFkZHI7CS8qKjwgR2VuZXJpYyB0cmFuc3BvcnQgYWRkcmVzcy4JICAgICovCisgICAgcGpfc29ja2FkZHJfaW4gIGlwdjQ7CS8qKjwgSVB2NCB0cmFuc3BvcnQgYWRkcmVzcy4JICAgICovCisgICAgcGpfc29ja2FkZHJfaW42IGlwdjY7CS8qKjwgSVB2NiB0cmFuc3BvcnQgYWRkcmVzcy4JICAgICovCit9IHBqX3NvY2thZGRyOworCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgcHJvdmlkZXMgbXVsdGljYXN0IGdyb3VwIGluZm9ybWF0aW9uIGZvciBJUHY0IGFkZHJlc3Nlcy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfaXBfbXJlcSB7CisgICAgcGpfaW5fYWRkciBpbXJfbXVsdGlhZGRyOwkvKio8IElQIG11bHRpY2FzdCBhZGRyZXNzIG9mIGdyb3VwLiAqLworICAgIHBqX2luX2FkZHIgaW1yX2ludGVyZmFjZTsJLyoqPCBsb2NhbCBJUCBhZGRyZXNzIG9mIGludGVyZmFjZS4gKi8KK30gcGpfaXBfbXJlcTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBTT0NLRVQgQUREUkVTUyBNQU5JUFVMQVRJT04uCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqCisgKiBDb252ZXJ0IDE2LWJpdCB2YWx1ZSBmcm9tIG5ldHdvcmsgYnl0ZSBvcmRlciB0byBob3N0IGJ5dGUgb3JkZXIuCisgKgorICogQHBhcmFtIG5ldHNob3J0ICAxNi1iaXQgbmV0d29yayB2YWx1ZS4KKyAqIEByZXR1cm4JICAgIDE2LWJpdCBob3N0IHZhbHVlLgorICovCitQSl9ERUNMKHBqX3VpbnQxNl90KSBwal9udG9ocyhwal91aW50MTZfdCBuZXRzaG9ydCk7CisKKy8qKgorICogQ29udmVydCAxNi1iaXQgdmFsdWUgZnJvbSBob3N0IGJ5dGUgb3JkZXIgdG8gbmV0d29yayBieXRlIG9yZGVyLgorICoKKyAqIEBwYXJhbSBob3N0c2hvcnQgMTYtYml0IGhvc3QgdmFsdWUuCisgKiBAcmV0dXJuCSAgICAxNi1iaXQgbmV0d29yayB2YWx1ZS4KKyAqLworUEpfREVDTChwal91aW50MTZfdCkgcGpfaHRvbnMocGpfdWludDE2X3QgaG9zdHNob3J0KTsKKworLyoqCisgKiBDb252ZXJ0IDMyLWJpdCB2YWx1ZSBmcm9tIG5ldHdvcmsgYnl0ZSBvcmRlciB0byBob3N0IGJ5dGUgb3JkZXIuCisgKgorICogQHBhcmFtIG5ldGxvbmcgICAzMi1iaXQgbmV0d29yayB2YWx1ZS4KKyAqIEByZXR1cm4JICAgIDMyLWJpdCBob3N0IHZhbHVlLgorICovCitQSl9ERUNMKHBqX3VpbnQzMl90KSBwal9udG9obChwal91aW50MzJfdCBuZXRsb25nKTsKKworLyoqCisgKiBDb252ZXJ0IDMyLWJpdCB2YWx1ZSBmcm9tIGhvc3QgYnl0ZSBvcmRlciB0byBuZXR3b3JrIGJ5dGUgb3JkZXIuCisgKgorICogQHBhcmFtIGhvc3Rsb25nICAzMi1iaXQgaG9zdCB2YWx1ZS4KKyAqIEByZXR1cm4JICAgIDMyLWJpdCBuZXR3b3JrIHZhbHVlLgorICovCitQSl9ERUNMKHBqX3VpbnQzMl90KSBwal9odG9ubChwal91aW50MzJfdCBob3N0bG9uZyk7CisKKy8qKgorICogQ29udmVydCBhbiBJbnRlcm5ldCBob3N0IGFkZHJlc3MgZ2l2ZW4gaW4gbmV0d29yayBieXRlIG9yZGVyCisgKiB0byBzdHJpbmcgaW4gc3RhbmRhcmQgbnVtYmVycyBhbmQgZG90cyBub3RhdGlvbi4KKyAqCisgKiBAcGFyYW0gaW5hZGRyICAgIFRoZSBob3N0IGFkZHJlc3MuCisgKiBAcmV0dXJuCSAgICBUaGUgc3RyaW5nIGFkZHJlc3MuCisgKi8KK1BKX0RFQ0woY2hhciopIHBqX2luZXRfbnRvYShwal9pbl9hZGRyIGluYWRkcik7CisKKy8qKgorICogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyB0aGUgSW50ZXJuZXQgaG9zdCBhZGRyZXNzIGNwIGZyb20gdGhlIHN0YW5kYXJkCisgKiBudW1iZXJzLWFuZC1kb3RzIG5vdGF0aW9uIGludG8gYmluYXJ5IGRhdGEgYW5kIHN0b3JlcyBpdCBpbiB0aGUgc3RydWN0dXJlCisgKiB0aGF0IGlucCBwb2ludHMgdG8uIAorICoKKyAqIEBwYXJhbSBjcAlJUCBhZGRyZXNzIGluIHN0YW5kYXJkIG51bWJlcnMtYW5kLWRvdHMgbm90YXRpb24uCisgKiBAcGFyYW0gaW5wCVN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBvdXRwdXQgb2YgdGhlIGNvbnZlcnNpb24uCisgKgorICogQHJldHVybglub256ZXJvIGlmIHRoZSBhZGRyZXNzIGlzIHZhbGlkLCB6ZXJvIGlmIG5vdC4KKyAqLworUEpfREVDTChpbnQpIHBqX2luZXRfYXRvbihjb25zdCBwal9zdHJfdCAqY3AsIHN0cnVjdCBwal9pbl9hZGRyICppbnApOworCisvKioKKyAqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgYW4gYWRkcmVzcyBpbiBpdHMgc3RhbmRhcmQgdGV4dCBwcmVzZW50YXRpb24gZm9ybQorICogaW50byBpdHMgbnVtZXJpYyBiaW5hcnkgZm9ybS4gSXQgc3VwcG9ydHMgYm90aCBJUHY0IGFuZCBJUHY2IGFkZHJlc3MKKyAqIGNvbnZlcnNpb24uCisgKgorICogQHBhcmFtIGFmCVNwZWNpZnkgdGhlIGZhbWlseSBvZiB0aGUgYWRkcmVzcy4gIFRoZSBQSl9BRl9JTkVUIGFuZCAKKyAqCQlQSl9BRl9JTkVUNiBhZGRyZXNzIGZhbWlsaWVzIHNoYWxsIGJlIHN1cHBvcnRlZC4gIAorICogQHBhcmFtIHNyYwlQb2ludHMgdG8gdGhlIHN0cmluZyBiZWluZyBwYXNzZWQgaW4uIAorICogQHBhcmFtIGRzdAlQb2ludHMgdG8gYSBidWZmZXIgaW50byB3aGljaCB0aGUgZnVuY3Rpb24gc3RvcmVzIHRoZSAKKyAqCQludW1lcmljIGFkZHJlc3M7IHRoaXMgc2hhbGwgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlCisgKgkJbnVtZXJpYyBhZGRyZXNzICgzMiBiaXRzIGZvciBQSl9BRl9JTkVULCAxMjggYml0cyBmb3IKKyAqCQlQSl9BRl9JTkVUNikuICAKKyAqCisgKiBAcmV0dXJuCVBKX1NVQ0NFU1MgaWYgY29udmVyc2lvbiB3YXMgc3VjY2Vzc2Z1bC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfaW5ldF9wdG9uKGludCBhZiwgY29uc3QgcGpfc3RyX3QgKnNyYywgdm9pZCAqZHN0KTsKKworLyoqCisgKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIGEgbnVtZXJpYyBhZGRyZXNzIGludG8gYSB0ZXh0IHN0cmluZyBzdWl0YWJsZQorICogZm9yIHByZXNlbnRhdGlvbi4gSXQgc3VwcG9ydHMgYm90aCBJUHY0IGFuZCBJUHY2IGFkZHJlc3MKKyAqIGNvbnZlcnNpb24uIAorICogQHNlZSBwal9zb2NrYWRkcl9wcmludCgpCisgKgorICogQHBhcmFtIGFmCVNwZWNpZnkgdGhlIGZhbWlseSBvZiB0aGUgYWRkcmVzcy4gVGhpcyBjYW4gYmUgUEpfQUZfSU5FVAorICoJCW9yIFBKX0FGX0lORVQ2LgorICogQHBhcmFtIHNyYwlQb2ludHMgdG8gYSBidWZmZXIgaG9sZGluZyBhbiBJUHY0IGFkZHJlc3MgaWYgdGhlIGFmIGFyZ3VtZW50CisgKgkJaXMgUEpfQUZfSU5FVCwgb3IgYW4gSVB2NiBhZGRyZXNzIGlmIHRoZSBhZiBhcmd1bWVudCBpcworICoJCVBKX0FGX0lORVQ2OyB0aGUgYWRkcmVzcyBtdXN0IGJlIGluIG5ldHdvcmsgYnl0ZSBvcmRlci4gIAorICogQHBhcmFtIGRzdAlQb2ludHMgdG8gYSBidWZmZXIgd2hlcmUgdGhlIGZ1bmN0aW9uIHN0b3JlcyB0aGUgcmVzdWx0aW5nCisgKgkJdGV4dCBzdHJpbmc7IGl0IHNoYWxsIG5vdCBiZSBOVUxMLiAgCisgKiBAcGFyYW0gc2l6ZQlTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhpcyBidWZmZXIsIHdoaWNoIHNoYWxsIGJlIGxhcmdlIAorICoJCWVub3VnaCB0byBob2xkIHRoZSB0ZXh0IHN0cmluZyAoUEpfSU5FVF9BRERSU1RSTEVOIGNoYXJhY3RlcnMKKyAqCQlmb3IgSVB2NCwgUEpfSU5FVDZfQUREUlNUUkxFTiBjaGFyYWN0ZXJzIGZvciBJUHY2KS4KKyAqCisgKiBAcmV0dXJuCVBKX1NVQ0NFU1MgaWYgY29udmVyc2lvbiB3YXMgc3VjY2Vzc2Z1bC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfaW5ldF9udG9wKGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLAorCQkJCSAgY2hhciAqZHN0LCBpbnQgc2l6ZSk7CisKKy8qKgorICogQ29udmVydHMgbnVtZXJpYyBhZGRyZXNzIGludG8gaXRzIHRleHQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgorICogQHNlZSBwal9zb2NrYWRkcl9wcmludCgpCisgKgorICogQHBhcmFtIGFmCVNwZWNpZnkgdGhlIGZhbWlseSBvZiB0aGUgYWRkcmVzcy4gVGhpcyBjYW4gYmUgUEpfQUZfSU5FVAorICoJCW9yIFBKX0FGX0lORVQ2LgorICogQHBhcmFtIHNyYwlQb2ludHMgdG8gYSBidWZmZXIgaG9sZGluZyBhbiBJUHY0IGFkZHJlc3MgaWYgdGhlIGFmIGFyZ3VtZW50CisgKgkJaXMgUEpfQUZfSU5FVCwgb3IgYW4gSVB2NiBhZGRyZXNzIGlmIHRoZSBhZiBhcmd1bWVudCBpcworICoJCVBKX0FGX0lORVQ2OyB0aGUgYWRkcmVzcyBtdXN0IGJlIGluIG5ldHdvcmsgYnl0ZSBvcmRlci4gIAorICogQHBhcmFtIGRzdAlQb2ludHMgdG8gYSBidWZmZXIgd2hlcmUgdGhlIGZ1bmN0aW9uIHN0b3JlcyB0aGUgcmVzdWx0aW5nCisgKgkJdGV4dCBzdHJpbmc7IGl0IHNoYWxsIG5vdCBiZSBOVUxMLiAgCisgKiBAcGFyYW0gc2l6ZQlTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhpcyBidWZmZXIsIHdoaWNoIHNoYWxsIGJlIGxhcmdlIAorICoJCWVub3VnaCB0byBob2xkIHRoZSB0ZXh0IHN0cmluZyAoUEpfSU5FVF9BRERSU1RSTEVOIGNoYXJhY3RlcnMKKyAqCQlmb3IgSVB2NCwgUEpfSU5FVDZfQUREUlNUUkxFTiBjaGFyYWN0ZXJzIGZvciBJUHY2KS4KKyAqCisgKiBAcmV0dXJuCVRoZSBhZGRyZXNzIHN0cmluZyBvciBOVUxMIGlmIGZhaWxlZC4KKyAqLworUEpfREVDTChjaGFyKikgcGpfaW5ldF9udG9wMihpbnQgYWYsIGNvbnN0IHZvaWQgKnNyYywKKwkJCSAgICAgY2hhciAqZHN0LCBpbnQgc2l6ZSk7CisKKy8qKgorICogUHJpbnQgc29ja2V0IGFkZHJlc3MuCisgKgorICogQHBhcmFtIGFkZHIJVGhlIHNvY2tldCBhZGRyZXNzLgorICogQHBhcmFtIGJ1ZglUZXh0IGJ1ZmZlci4KKyAqIEBwYXJhbSBzaXplCVNpemUgb2YgYnVmZmVyLgorICogQHBhcmFtIGZsYWdzCUJpdG1hc2sgY29tYmluYXRpb24gb2YgdGhlc2UgdmFsdWU6CisgKgkJICAtIDE6IHBvcnQgbnVtYmVyIGlzIGluY2x1ZGVkLgorICoJCSAgLSAyOiBzcXVhcmUgYnJhY2tldCBpcyBpbmNsdWRlZCBmb3IgSVB2NiBhZGRyZXNzLgorICoKKyAqIEByZXR1cm4JVGhlIGFkZHJlc3Mgc3RyaW5nLgorICovCitQSl9ERUNMKGNoYXIqKSBwal9zb2NrYWRkcl9wcmludChjb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCSBjaGFyICpidWYsIGludCBzaXplLAorCQkJCSB1bnNpZ25lZCBmbGFncyk7CisKKy8qKgorICogQ29udmVydCBhZGRyZXNzIHN0cmluZyB3aXRoIG51bWJlcnMgYW5kIGRvdHMgdG8gYmluYXJ5IElQIGFkZHJlc3MuCisgKiAKKyAqIEBwYXJhbSBjcAkgICAgVGhlIElQIGFkZHJlc3MgaW4gbnVtYmVycyBhbmQgZG90cyBub3RhdGlvbi4KKyAqIEByZXR1cm4JICAgIElmIHN1Y2Nlc3MsIHRoZSBJUCBhZGRyZXNzIGlzIHJldHVybmVkIGluIG5ldHdvcmsKKyAqCQkgICAgYnl0ZSBvcmRlci4gSWYgZmFpbGVkLCBQSl9JTkFERFJfTk9ORSB3aWxsIGJlCisgKgkJICAgIHJldHVybmVkLgorICogQHJlbWFyaworICogVGhpcyBpcyBhbiBvYnNvbGV0ZSBpbnRlcmZhY2UgdG8gI3BqX2luZXRfYXRvbigpOyBpdCBpcyBvYnNvbGV0ZQorICogYmVjYXVzZSAtMSBpcyBhIHZhbGlkIGFkZHJlc3MgKDI1NS4yNTUuMjU1LjI1NSksIGFuZCAjcGpfaW5ldF9hdG9uKCkKKyAqIHByb3ZpZGVzIGEgY2xlYW5lciB3YXkgdG8gaW5kaWNhdGUgZXJyb3IgcmV0dXJuLgorICovCitQSl9ERUNMKHBqX2luX2FkZHIpIHBqX2luZXRfYWRkcihjb25zdCBwal9zdHJfdCAqY3ApOworCisvKioKKyAqIENvbnZlcnQgYWRkcmVzcyBzdHJpbmcgd2l0aCBudW1iZXJzIGFuZCBkb3RzIHRvIGJpbmFyeSBJUCBhZGRyZXNzLgorICogCisgKiBAcGFyYW0gY3AJICAgIFRoZSBJUCBhZGRyZXNzIGluIG51bWJlcnMgYW5kIGRvdHMgbm90YXRpb24uCisgKiBAcmV0dXJuCSAgICBJZiBzdWNjZXNzLCB0aGUgSVAgYWRkcmVzcyBpcyByZXR1cm5lZCBpbiBuZXR3b3JrCisgKgkJICAgIGJ5dGUgb3JkZXIuIElmIGZhaWxlZCwgUEpfSU5BRERSX05PTkUgd2lsbCBiZQorICoJCSAgICByZXR1cm5lZC4KKyAqIEByZW1hcmsKKyAqIFRoaXMgaXMgYW4gb2Jzb2xldGUgaW50ZXJmYWNlIHRvICNwal9pbmV0X2F0b24oKTsgaXQgaXMgb2Jzb2xldGUKKyAqIGJlY2F1c2UgLTEgaXMgYSB2YWxpZCBhZGRyZXNzICgyNTUuMjU1LjI1NS4yNTUpLCBhbmQgI3BqX2luZXRfYXRvbigpCisgKiBwcm92aWRlcyBhIGNsZWFuZXIgd2F5IHRvIGluZGljYXRlIGVycm9yIHJldHVybi4KKyAqLworUEpfREVDTChwal9pbl9hZGRyKSBwal9pbmV0X2FkZHIyKGNvbnN0IGNoYXIgKmNwKTsKKworLyoqCisgKiBJbml0aWFsaXplIElQdjQgc29ja2V0IGFkZHJlc3MgYmFzZWQgb24gdGhlIGFkZHJlc3MgYW5kIHBvcnQgaW5mby4KKyAqIFRoZSBzdHJpbmcgYWRkcmVzcyBtYXkgYmUgaW4gYSBzdGFuZGFyZCBudW1iZXJzIGFuZCBkb3RzIG5vdGF0aW9uIG9yIAorICogbWF5IGJlIGEgaG9zdG5hbWUuIElmIGhvc3RuYW1lIGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgZnVuY3Rpb24gd2lsbCAKKyAqIHJlc29sdmUgdGhlIGhvc3QgaW50byB0aGUgSVAgYWRkcmVzcy4KKyAqCisgKiBAc2VlIHBqX3NvY2thZGRyX2luaXQoKQorICoKKyAqIEBwYXJhbSBhZGRyCSAgICBUaGUgSVAgc29ja2V0IGFkZHJlc3MgdG8gYmUgc2V0LgorICogQHBhcmFtIGNwCSAgICBUaGUgYWRkcmVzcyBzdHJpbmcsIHdoaWNoIGNhbiBiZSBpbiBhIHN0YW5kYXJkIAorICoJCSAgICBkb3R0ZWQgbnVtYmVycyBvciBhIGhvc3RuYW1lIHRvIGJlIHJlc29sdmVkLgorICogQHBhcmFtIHBvcnQJICAgIFRoZSBwb3J0IG51bWJlciwgaW4gaG9zdCBieXRlIG9yZGVyLgorICoKKyAqIEByZXR1cm4JICAgIFplcm8gb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja2FkZHJfaW5faW5pdCggcGpfc29ja2FkZHJfaW4gKmFkZHIsCisJCQkJICAgICAgICAgIGNvbnN0IHBqX3N0cl90ICpjcCwKKwkJCQkJICBwal91aW50MTZfdCBwb3J0KTsKKworLyoqCisgKiBJbml0aWFsaXplIElQIHNvY2tldCBhZGRyZXNzIGJhc2VkIG9uIHRoZSBhZGRyZXNzIGFuZCBwb3J0IGluZm8uCisgKiBUaGUgc3RyaW5nIGFkZHJlc3MgbWF5IGJlIGluIGEgc3RhbmRhcmQgbnVtYmVycyBhbmQgZG90cyBub3RhdGlvbiBvciAKKyAqIG1heSBiZSBhIGhvc3RuYW1lLiBJZiBob3N0bmFtZSBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgCisgKiByZXNvbHZlIHRoZSBob3N0IGludG8gdGhlIElQIGFkZHJlc3MuCisgKgorICogQHNlZSBwal9zb2NrYWRkcl9pbl9pbml0KCkKKyAqCisgKiBAcGFyYW0gYWYJICAgIEludGVybmV0IGFkZHJlc3MgZmFtaWx5LgorICogQHBhcmFtIGFkZHIJICAgIFRoZSBJUCBzb2NrZXQgYWRkcmVzcyB0byBiZSBzZXQuCisgKiBAcGFyYW0gY3AJICAgIFRoZSBhZGRyZXNzIHN0cmluZywgd2hpY2ggY2FuIGJlIGluIGEgc3RhbmRhcmQgCisgKgkJICAgIGRvdHRlZCBudW1iZXJzIG9yIGEgaG9zdG5hbWUgdG8gYmUgcmVzb2x2ZWQuCisgKiBAcGFyYW0gcG9ydAkgICAgVGhlIHBvcnQgbnVtYmVyLCBpbiBob3N0IGJ5dGUgb3JkZXIuCisgKgorICogQHJldHVybgkgICAgWmVybyBvbiBzdWNjZXNzLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrYWRkcl9pbml0KGludCBhZiwgCisJCQkJICAgICAgcGpfc29ja2FkZHIgKmFkZHIsCisJCQkJICAgICAgY29uc3QgcGpfc3RyX3QgKmNwLAorCQkJCSAgICAgIHBqX3VpbnQxNl90IHBvcnQpOworCisvKioKKyAqIENvbXBhcmUgdHdvIHNvY2tldCBhZGRyZXNzZXMuCisgKgorICogQHBhcmFtIGFkZHIxCSAgICBGaXJzdCBhZGRyZXNzLgorICogQHBhcmFtIGFkZHIyCSAgICBTZWNvbmQgYWRkcmVzcy4KKyAqCisgKiBAcmV0dXJuCSAgICBaZXJvIG9uIGVxdWFsLCAtMSBpZiBhZGRyMSBpcyBsZXNzIHRoYW4gYWRkcjIsCisgKgkJICAgIGFuZCArMSBpZiBhZGRyMSBpcyBtb3JlIHRoYW4gYWRkcjIuCisgKi8KK1BKX0RFQ0woaW50KSBwal9zb2NrYWRkcl9jbXAoY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkcjEsCisJCQkgICAgIGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIyKTsKKworLyoqCisgKiBHZXQgcG9pbnRlciB0byB0aGUgYWRkcmVzcyBwYXJ0IG9mIGEgc29ja2V0IGFkZHJlc3MuCisgKiAKKyAqIEBwYXJhbSBhZGRyCSAgICBTb2NrZXQgYWRkcmVzcy4KKyAqCisgKiBAcmV0dXJuCSAgICBQb2ludGVyIHRvIGFkZHJlc3MgcGFydCAoc2luX2FkZHIgb3Igc2luNl9hZGRyLAorICoJCSAgICBkZXBlbmRpbmcgb24gYWRkcmVzcyBmYW1pbHkpCisgKi8KK1BKX0RFQ0wodm9pZCopIHBqX3NvY2thZGRyX2dldF9hZGRyKGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIpOworCisvKioKKyAqIENoZWNrIHRoYXQgYSBzb2NrZXQgYWRkcmVzcyBjb250YWlucyBhIG5vbi16ZXJvIGFkZHJlc3MgcGFydC4KKyAqCisgKiBAcGFyYW0gYWRkcgkgICAgU29ja2V0IGFkZHJlc3MuCisgKgorICogQHJldHVybgkgICAgTm9uLXplcm8gaWYgYWRkcmVzcyBpcyBzZXQgdG8gbm9uLXplcm8uCisgKi8KK1BKX0RFQ0wocGpfYm9vbF90KSBwal9zb2NrYWRkcl9oYXNfYWRkcihjb25zdCBwal9zb2NrYWRkcl90ICphZGRyKTsKKworLyoqCisgKiBHZXQgdGhlIGFkZHJlc3MgcGFydCBsZW5ndGggb2YgYSBzb2NrZXQgYWRkcmVzcywgYmFzZWQgb24gaXRzIGFkZHJlc3MKKyAqIGZhbWlseS4gRm9yIFBKX0FGX0lORVQsIHRoZSBsZW5ndGggd2lsbCBiZSBzaXplb2YocGpfaW5fYWRkciksIGFuZAorICogZm9yIFBKX0FGX0lORVQ2LCB0aGUgbGVuZ3RoIHdpbGwgYmUgc2l6ZW9mKHBqX2luNl9hZGRyKS4KKyAqIAorICogQHBhcmFtIGFkZHIJICAgIFNvY2tldCBhZGRyZXNzLgorICoKKyAqIEByZXR1cm4JICAgIExlbmd0aCBpbiBieXRlcy4KKyAqLworUEpfREVDTCh1bnNpZ25lZCkgcGpfc29ja2FkZHJfZ2V0X2FkZHJfbGVuKGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIpOworCisvKioKKyAqIEdldCB0aGUgc29ja2V0IGFkZHJlc3MgbGVuZ3RoLCBiYXNlZCBvbiBpdHMgYWRkcmVzcworICogZmFtaWx5LiBGb3IgUEpfQUZfSU5FVCwgdGhlIGxlbmd0aCB3aWxsIGJlIHNpemVvZihwal9zb2NrYWRkcl9pbiksIGFuZAorICogZm9yIFBKX0FGX0lORVQ2LCB0aGUgbGVuZ3RoIHdpbGwgYmUgc2l6ZW9mKHBqX3NvY2thZGRyX2luNikuCisgKiAKKyAqIEBwYXJhbSBhZGRyCSAgICBTb2NrZXQgYWRkcmVzcy4KKyAqCisgKiBAcmV0dXJuCSAgICBMZW5ndGggaW4gYnl0ZXMuCisgKi8KK1BKX0RFQ0wodW5zaWduZWQpIHBqX3NvY2thZGRyX2dldF9sZW4oY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkcik7CisKKy8qKiAKKyAqIENvcHkgb25seSB0aGUgYWRkcmVzcyBwYXJ0IChzaW5fYWRkci9zaW42X2FkZHIpIG9mIGEgc29ja2V0IGFkZHJlc3MuCisgKgorICogQHBhcmFtIGRzdAkgICAgRGVzdGluYXRpb24gc29ja2V0IGFkZHJlc3MuCisgKiBAcGFyYW0gc3JjCSAgICBTb3VyY2Ugc29ja2V0IGFkZHJlc3MuCisgKgorICogQHNlZSBAcGpfc29ja2FkZHJfY3AoKQorICovCitQSl9ERUNMKHZvaWQpIHBqX3NvY2thZGRyX2NvcHlfYWRkcihwal9zb2NrYWRkciAqZHN0LAorCQkJCSAgICBjb25zdCBwal9zb2NrYWRkciAqc3JjKTsKKy8qKgorICogQ29weSBzb2NrZXQgYWRkcmVzcy4gVGhpcyB3aWxsIGNvcHkgdGhlIHdob2xlIHN0cnVjdHVyZSBkZXBlbmRpbmcKKyAqIG9uIHRoZSBhZGRyZXNzIGZhbWlseSBvZiB0aGUgc291cmNlIHNvY2tldCBhZGRyZXNzLgorICoKKyAqIEBwYXJhbSBkc3QJICAgIERlc3RpbmF0aW9uIHNvY2tldCBhZGRyZXNzLgorICogQHBhcmFtIHNyYwkgICAgU291cmNlIHNvY2tldCBhZGRyZXNzLgorICoKKyAqIEBzZWUgQHBqX3NvY2thZGRyX2NvcHlfYWRkcigpCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfc29ja2FkZHJfY3AocGpfc29ja2FkZHJfdCAqZHN0LCBjb25zdCBwal9zb2NrYWRkcl90ICpzcmMpOworCisvKioKKyAqIEdldCB0aGUgSVAgYWRkcmVzcyBvZiBhbiBJUHY0IHNvY2tldCBhZGRyZXNzLgorICogVGhlIGFkZHJlc3MgaXMgcmV0dXJuZWQgYXMgMzJiaXQgdmFsdWUgaW4gaG9zdCBieXRlIG9yZGVyLgorICoKKyAqIEBwYXJhbSBhZGRyCSAgICBUaGUgSVAgc29ja2V0IGFkZHJlc3MuCisgKiBAcmV0dXJuCSAgICAzMmJpdCBhZGRyZXNzLCBpbiBob3N0IGJ5dGUgb3JkZXIuCisgKi8KK1BKX0RFQ0wocGpfaW5fYWRkcikgcGpfc29ja2FkZHJfaW5fZ2V0X2FkZHIoY29uc3QgcGpfc29ja2FkZHJfaW4gKmFkZHIpOworCisvKioKKyAqIFNldCB0aGUgSVAgYWRkcmVzcyBvZiBhbiBJUHY0IHNvY2tldCBhZGRyZXNzLgorICoKKyAqIEBwYXJhbSBhZGRyCSAgICBUaGUgSVAgc29ja2V0IGFkZHJlc3MuCisgKiBAcGFyYW0gaG9zdGFkZHIgIFRoZSBob3N0IGFkZHJlc3MsIGluIGhvc3QgYnl0ZSBvcmRlci4KKyAqLworUEpfREVDTCh2b2lkKSBwal9zb2NrYWRkcl9pbl9zZXRfYWRkcihwal9zb2NrYWRkcl9pbiAqYWRkciwKKwkJCQkgICAgICBwal91aW50MzJfdCBob3N0YWRkcik7CisKKy8qKgorICogU2V0IHRoZSBJUCBhZGRyZXNzIG9mIGFuIElQIHNvY2tldCBhZGRyZXNzIGZyb20gc3RyaW5nIGFkZHJlc3MsIAorICogd2l0aCByZXNvbHZpbmcgdGhlIGhvc3QgaWYgbmVjZXNzYXJ5LiBUaGUgc3RyaW5nIGFkZHJlc3MgbWF5IGJlIGluIGEKKyAqIHN0YW5kYXJkIG51bWJlcnMgYW5kIGRvdHMgbm90YXRpb24gb3IgbWF5IGJlIGEgaG9zdG5hbWUuIElmIGhvc3RuYW1lCisgKiBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgcmVzb2x2ZSB0aGUgaG9zdCBpbnRvIHRoZSBJUAorICogYWRkcmVzcy4KKyAqCisgKiBAc2VlIHBqX3NvY2thZGRyX3NldF9zdHJfYWRkcigpCisgKgorICogQHBhcmFtIGFkZHIJICAgIFRoZSBJUCBzb2NrZXQgYWRkcmVzcyB0byBiZSBzZXQuCisgKiBAcGFyYW0gY3AJICAgIFRoZSBhZGRyZXNzIHN0cmluZywgd2hpY2ggY2FuIGJlIGluIGEgc3RhbmRhcmQgCisgKgkJICAgIGRvdHRlZCBudW1iZXJzIG9yIGEgaG9zdG5hbWUgdG8gYmUgcmVzb2x2ZWQuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrYWRkcl9pbl9zZXRfc3RyX2FkZHIoIHBqX3NvY2thZGRyX2luICphZGRyLAorCQkJCQkgICAgICAgICAgY29uc3QgcGpfc3RyX3QgKmNwKTsKKworLyoqCisgKiBTZXQgdGhlIElQIGFkZHJlc3Mgb2YgYW4gSVB2NCBvciBJUHY2IHNvY2tldCBhZGRyZXNzIGZyb20gc3RyaW5nIGFkZHJlc3MsCisgKiB3aXRoIHJlc29sdmluZyB0aGUgaG9zdCBpZiBuZWNlc3NhcnkuIFRoZSBzdHJpbmcgYWRkcmVzcyBtYXkgYmUgaW4gYQorICogc3RhbmRhcmQgSVB2NiBvciBJUHY2IGFkZHJlc3Mgb3IgbWF5IGJlIGEgaG9zdG5hbWUuIElmIGhvc3RuYW1lCisgKiBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgcmVzb2x2ZSB0aGUgaG9zdCBpbnRvIHRoZSBJUAorICogYWRkcmVzcyBhY2NvcmRpbmcgdG8gdGhlIGFkZHJlc3MgZmFtaWx5LgorICoKKyAqIEBwYXJhbSBhZgkgICAgQWRkcmVzcyBmYW1pbHkuCisgKiBAcGFyYW0gYWRkcgkgICAgVGhlIElQIHNvY2tldCBhZGRyZXNzIHRvIGJlIHNldC4KKyAqIEBwYXJhbSBjcAkgICAgVGhlIGFkZHJlc3Mgc3RyaW5nLCB3aGljaCBjYW4gYmUgaW4gYSBzdGFuZGFyZCAKKyAqCQkgICAgSVAgbnVtYmVycyAoSVB2NCBvciBJUHY2KSBvciBhIGhvc3RuYW1lIHRvIGJlIHJlc29sdmVkLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja2FkZHJfc2V0X3N0cl9hZGRyKGludCBhZiwKKwkJCQkJICAgICAgcGpfc29ja2FkZHIgKmFkZHIsCisJCQkJCSAgICAgIGNvbnN0IHBqX3N0cl90ICpjcCk7CisKKy8qKgorICogR2V0IHRoZSBwb3J0IG51bWJlciBvZiBhIHNvY2tldCBhZGRyZXNzLCBpbiBob3N0IGJ5dGUgb3JkZXIuIAorICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYm90aCBJUHY0IGFuZCBJUHY2IHNvY2tldCBhZGRyZXNzLgorICogCisgKiBAcGFyYW0gYWRkcgkgICAgU29ja2V0IGFkZHJlc3MuCisgKgorICogQHJldHVybgkgICAgUG9ydCBudW1iZXIsIGluIGhvc3QgYnl0ZSBvcmRlci4KKyAqLworUEpfREVDTChwal91aW50MTZfdCkgcGpfc29ja2FkZHJfZ2V0X3BvcnQoY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkcik7CisKKy8qKgorICogR2V0IHRoZSB0cmFuc3BvcnQgbGF5ZXIgcG9ydCBudW1iZXIgb2YgYW4gSW50ZXJuZXQgc29ja2V0IGFkZHJlc3MuCisgKiBUaGUgcG9ydCBpcyByZXR1cm5lZCBpbiBob3N0IGJ5dGUgb3JkZXIuCisgKgorICogQHBhcmFtIGFkZHIJICAgIFRoZSBJUCBzb2NrZXQgYWRkcmVzcy4KKyAqIEByZXR1cm4JICAgIFBvcnQgbnVtYmVyLCBpbiBob3N0IGJ5dGUgb3JkZXIuCisgKi8KK1BKX0RFQ0wocGpfdWludDE2X3QpIHBqX3NvY2thZGRyX2luX2dldF9wb3J0KGNvbnN0IHBqX3NvY2thZGRyX2luICphZGRyKTsKKworLyoqCisgKiBTZXQgdGhlIHBvcnQgbnVtYmVyIG9mIGFuIEludGVybmV0IHNvY2tldCBhZGRyZXNzLgorICoKKyAqIEBwYXJhbSBhZGRyCSAgICBUaGUgc29ja2V0IGFkZHJlc3MuCisgKiBAcGFyYW0gaG9zdHBvcnQgIFRoZSBwb3J0IG51bWJlciwgaW4gaG9zdCBieXRlIG9yZGVyLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrYWRkcl9zZXRfcG9ydChwal9zb2NrYWRkciAqYWRkciwgCisJCQkJCSAgcGpfdWludDE2X3QgaG9zdHBvcnQpOworCisvKioKKyAqIFNldCB0aGUgcG9ydCBudW1iZXIgb2YgYW4gSVB2NCBzb2NrZXQgYWRkcmVzcy4KKyAqCisgKiBAc2VlIHBqX3NvY2thZGRyX3NldF9wb3J0KCkKKyAqCisgKiBAcGFyYW0gYWRkcgkgICAgVGhlIElQIHNvY2tldCBhZGRyZXNzLgorICogQHBhcmFtIGhvc3Rwb3J0ICBUaGUgcG9ydCBudW1iZXIsIGluIGhvc3QgYnl0ZSBvcmRlci4KKyAqLworUEpfREVDTCh2b2lkKSBwal9zb2NrYWRkcl9pbl9zZXRfcG9ydChwal9zb2NrYWRkcl9pbiAqYWRkciwgCisJCQkJICAgICAgcGpfdWludDE2X3QgaG9zdHBvcnQpOworCisvKioKKyAqIFBhcnNlIHN0cmluZyBjb250YWluaW5nIElQIGFkZHJlc3MgYW5kIG9wdGlvbmFsIHBvcnQgaW50byBzb2NrZXQgYWRkcmVzcywKKyAqIHBvc3NpYmx5IGFsc28gd2l0aCBhZGRyZXNzIGZhbWlseSBkZXRlY3Rpb24uIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgYm90aAorICogSVB2NCBhbmQgSVB2NiBwYXJzaW5nLCBob3dldmVyIElQdjYgcGFyc2luZyBtYXkgb25seSBiZSBkb25lIGlmIElQdjYgaXMKKyAqIGVuYWJsZWQgZHVyaW5nIGNvbXBpbGF0aW9uLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgcGFyc2luZyBzZXZlcmFsIGZvcm1hdHMuIFNhbXBsZSBJUHY0IGlucHV0cyBhbmQKKyAqIHRoZWlyIGRlZmF1bHQgcmVzdWx0czo6CisgKiAgLSAiMTAuMC4wLjE6ODAiOiBhZGRyZXNzIDEwLjAuMC4xIGFuZCBwb3J0IDgwLgorICogIC0gIjEwLjAuMC4xIjogYWRkcmVzcyAxMC4wLjAuMSBhbmQgcG9ydCB6ZXJvLgorICogIC0gIjEwLjAuMC4xOiI6IGFkZHJlc3MgMTAuMC4wLjEgYW5kIHBvcnQgemVyby4KKyAqICAtICIxMC4wLjAuMTowIjogYWRkcmVzcyAxMC4wLjAuMSBhbmQgcG9ydCB6ZXJvLgorICogIC0gIjo4MCI6IGFkZHJlc3MgMC4wLjAuMCBhbmQgcG9ydCA4MC4KKyAqICAtICI6IjogYWRkcmVzcyAwLjAuMC4wIGFuZCBwb3J0IDAuCisgKiAgLSAibG9jYWxob3N0IjogYWRkcmVzcyAxMjcuMC4wLjEgYW5kIHBvcnQgMC4KKyAqICAtICJsb2NhbGhvc3Q6IjogYWRkcmVzcyAxMjcuMC4wLjEgYW5kIHBvcnQgMC4KKyAqICAtICJsb2NhbGhvc3Q6ODAiOiBhZGRyZXNzIDEyNy4wLjAuMSBhbmQgcG9ydCA4MC4KKyAqCisgKiBTYW1wbGUgSVB2NiBpbnB1dHMgYW5kIHRoZWlyIGRlZmF1bHQgcmVzdWx0czoKKyAqICAtICJbZmVjMDo6MDFdOjgwIjogYWRkcmVzcyBmZWMwOjowMSBhbmQgcG9ydCA4MAorICogIC0gIltmZWMwOjowMV0iOiBhZGRyZXNzIGZlYzA6OjAxIGFuZCBwb3J0IDAKKyAqICAtICJbZmVjMDo6MDFdOiI6IGFkZHJlc3MgZmVjMDo6MDEgYW5kIHBvcnQgMAorICogIC0gIltmZWMwOjowMV06MCI6IGFkZHJlc3MgZmVjMDo6MDEgYW5kIHBvcnQgMAorICogIC0gImZlYzA6OjAxIjogYWRkcmVzcyBmZWMwOjowMSBhbmQgcG9ydCAwCisgKiAgLSAiZmVjMDo6MDE6ODAiOiBhZGRyZXNzIGZlYzA6OjAxOjgwIGFuZCBwb3J0IDAKKyAqICAtICI6OiI6IGFkZHJlc3MgemVybyAoOjopIGFuZCBwb3J0IDAKKyAqICAtICJbOjpdIjogYWRkcmVzcyB6ZXJvICg6OikgYW5kIHBvcnQgMAorICogIC0gIls6Ol06IjogYWRkcmVzcyB6ZXJvICg6OikgYW5kIHBvcnQgMAorICogIC0gIjo6OiI6IGFkZHJlc3MgemVybyAoOjopIGFuZCBwb3J0IDAKKyAqICAtICJbOjpdOjgwIjogYWRkcmVzcyB6ZXJvICg6OikgYW5kIHBvcnQgMAorICogIC0gIjo6OjgwIjogYWRkcmVzcyB6ZXJvICg6OikgYW5kIHBvcnQgODAKKyAqCisgKiBOb3RlOiB3aGVuIHRoZSBJUHY2IHNvY2tldCBhZGRyZXNzIGNvbnRhaW5zIHBvcnQgbnVtYmVyLCB0aGUgSVAgCisgKiBwYXJ0IG9mIHRoZSBzb2NrZXQgYWRkcmVzcyBzaG91bGQgYmUgZW5jbG9zZWQgd2l0aCBzcXVhcmUgYnJhY2tldHMsIAorICogb3RoZXJ3aXNlIHRoZSBwb3J0IG51bWJlciB3aWxsIGJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIElQIGFkZHJlc3MKKyAqIChzZWUgImZlYzA6OjAxOjgwIiBleGFtcGxlIGFib3ZlKS4KKyAqCisgKiBAcGFyYW0gYWYJICAgIE9wdGlvbmFsbHkgc3BlY2lmeSB0aGUgYWRkcmVzcyBmYW1pbHkgdG8gYmUgdXNlZC4gSWYgdGhlCisgKgkJICAgIGFkZHJlc3MgZmFtaWx5IGlzIHRvIGJlIGRlZHVjdGVkIGZyb20gdGhlIGlucHV0LCBzcGVjaWZ5CisgKgkJICAgIHBqX0FGX1VOU1BFQygpIGhlcmUuIE90aGVyIHN1cHBvcnRlZCB2YWx1ZXMgYXJlCisgKgkJICAgICNwal9BRl9JTkVUKCkgYW5kICNwal9BRl9JTkVUNigpCisgKiBAcGFyYW0gb3B0aW9ucyAgIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBhc3Npc3QgdGhlIHBhcnNpbmcsIG11c3QgYmUgemVybworICoJCSAgICBmb3Igbm93LgorICogQHBhcmFtIHN0cgkgICAgVGhlIGlucHV0IHN0cmluZyB0byBiZSBwYXJzZWQuCisgKiBAcGFyYW0gYWRkcgkgICAgUG9pbnRlciB0byBzdG9yZSB0aGUgcmVzdWx0LgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1MgaWYgdGhlIHBhcnNpbmcgaXMgc3VjY2Vzc2Z1bC4KKyAqCisgKiBAc2VlIHBqX3NvY2thZGRyX3BhcnNlMigpCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NvY2thZGRyX3BhcnNlKGludCBhZiwgdW5zaWduZWQgb3B0aW9ucywKKwkJCQkgICAgICAgY29uc3QgcGpfc3RyX3QgKnN0ciwKKwkJCQkgICAgICAgcGpfc29ja2FkZHIgKmFkZHIpOworCisvKioKKyAqIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byAjcGpfc29ja2FkZHJfcGFyc2UoKSwgZXhjZXB0IHRoYXQgaXQgd2lsbCBub3QKKyAqIGNvbnZlcnQgdGhlIGhvc3RwYXJ0IGludG8gSVAgYWRkcmVzcyAodGh1cyBwb3NzaWJseSByZXNvbHZpbmcgdGhlIGhvc3RuYW1lCisgKiBpbnRvIGEgI3BqX3NvY2thZGRyLiAKKyAqCisgKiBVbmxpa2UgI3BqX3NvY2thZGRyX3BhcnNlKCksIHRoaXMgZnVuY3Rpb24gaGFzIGEgbGltaXRhdGlvbiB0aGF0IGlmIHBvcnQgCisgKiBudW1iZXIgaXMgc3BlY2lmaWVkIGluIGFuIElQdjYgaW5wdXQgc3RyaW5nLCB0aGUgSVAgcGFydCBvZiB0aGUgSVB2NiBzb2NrZXQKKyAqIGFkZHJlc3MgTVVTVCBiZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHMsIG90aGVyd2lzZSB0aGUgcG9ydCBudW1iZXIgd2lsbAorICogYmUgY29uc2lkZXJlZCBhcyBwYXJ0IG9mIHRoZSBJUHY2IElQIGFkZHJlc3MuCisgKgorICogQHBhcmFtIGFmCSAgICBPcHRpb25hbGx5IHNwZWNpZnkgdGhlIGFkZHJlc3MgZmFtaWx5IHRvIGJlIHVzZWQuIElmIHRoZQorICoJCSAgICBhZGRyZXNzIGZhbWlseSBpcyB0byBiZSBkZWR1Y3RlZCBmcm9tIHRoZSBpbnB1dCwgc3BlY2lmeQorICoJCSAgICAjcGpfQUZfVU5TUEVDKCkgaGVyZS4gT3RoZXIgc3VwcG9ydGVkIHZhbHVlcyBhcmUKKyAqCQkgICAgI3BqX0FGX0lORVQoKSBhbmQgI3BqX0FGX0lORVQ2KCkKKyAqIEBwYXJhbSBvcHRpb25zICAgQWRkaXRpb25hbCBvcHRpb25zIHRvIGFzc2lzdCB0aGUgcGFyc2luZywgbXVzdCBiZSB6ZXJvCisgKgkJICAgIGZvciBub3cuCisgKiBAcGFyYW0gc3RyCSAgICBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIHBhcnNlZC4KKyAqIEBwYXJhbSBob3N0cGFydCAgT3B0aW9uYWwgcG9pbnRlciB0byBzdG9yZSB0aGUgaG9zdCBwYXJ0IG9mIHRoZSBzb2NrZXQgCisgKgkJICAgIGFkZHJlc3MsIHdpdGggYW55IGJyYWNrZXRzIHJlbW92ZWQuCisgKiBAcGFyYW0gcG9ydAkgICAgT3B0aW9uYWwgcG9pbnRlciB0byBzdG9yZSB0aGUgcG9ydCBudW1iZXIuIElmIHBvcnQgbnVtYmVyCisgKgkJICAgIGlzIG5vdCBmb3VuZCwgdGhpcyB3aWxsIGJlIHNldCB0byB6ZXJvIHVwb24gcmV0dXJuLgorICogQHBhcmFtIHJhZgkgICAgT3B0aW9uYWwgcG9pbnRlciB0byBzdG9yZSB0aGUgZGV0ZWN0ZWQgYWRkcmVzcyBmYW1pbHkgb2YKKyAqCQkgICAgdGhlIGlucHV0IGFkZHJlc3MuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBpZiB0aGUgcGFyc2luZyBpcyBzdWNjZXNzZnVsLgorICoKKyAqIEBzZWUgcGpfc29ja2FkZHJfcGFyc2UoKQorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrYWRkcl9wYXJzZTIoaW50IGFmLCB1bnNpZ25lZCBvcHRpb25zLAorCQkJCSAgICAgICAgY29uc3QgcGpfc3RyX3QgKnN0ciwKKwkJCQkgICAgICAgIHBqX3N0cl90ICpob3N0cGFydCwKKwkJCQkgICAgICAgIHBqX3VpbnQxNl90ICpwb3J0LAorCQkJCQlpbnQgKnJhZik7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEhPU1QgTkFNRSBBTkQgQUREUkVTUy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKioKKyAqIEdldCBzeXN0ZW0ncyBob3N0IG5hbWUuCisgKgorICogQHJldHVybgkgICAgVGhlIGhvc3RuYW1lLCBvciBlbXB0eSBzdHJpbmcgaWYgdGhlIGhvc3RuYW1lIGNhbiBub3QKKyAqCQkgICAgYmUgaWRlbnRpZmllZC4KKyAqLworUEpfREVDTChjb25zdCBwal9zdHJfdCopIHBqX2dldGhvc3RuYW1lKHZvaWQpOworCisvKioKKyAqIEdldCBob3N0J3MgSVAgYWRkcmVzcywgd2hpY2ggdGhlIHRoZSBmaXJzdCBJUCBhZGRyZXNzIHRoYXQgaXMgcmVzb2x2ZWQKKyAqIGZyb20gdGhlIGhvc3RuYW1lLgorICoKKyAqIEByZXR1cm4JICAgIFRoZSBob3N0J3MgSVAgYWRkcmVzcywgUEpfSU5BRERSX05PTkUgaWYgdGhlIGhvc3QKKyAqCQkgICAgSVAgYWRkcmVzcyBjYW4gbm90IGJlIGlkZW50aWZpZWQuCisgKi8KK1BKX0RFQ0wocGpfaW5fYWRkcikgcGpfZ2V0aG9zdGFkZHIodm9pZCk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU09DS0VUIEFQSS4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKioKKyAqIENyZWF0ZSBuZXcgc29ja2V0L2VuZHBvaW50IGZvciBjb21tdW5pY2F0aW9uLgorICoKKyAqIEBwYXJhbSBmYW1pbHkgICAgU3BlY2lmaWVzIGEgY29tbXVuaWNhdGlvbiBkb21haW47IHRoaXMgc2VsZWN0cyB0aGUKKyAqCQkgICAgcHJvdG9jb2wgZmFtaWx5IHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgY29tbXVuaWNhdGlvbi4KKyAqIEBwYXJhbSB0eXBlCSAgICBUaGUgc29ja2V0IGhhcyB0aGUgaW5kaWNhdGVkIHR5cGUsIHdoaWNoIHNwZWNpZmllcyB0aGUgCisgKgkJICAgIGNvbW11bmljYXRpb24gc2VtYW50aWNzLgorICogQHBhcmFtIHByb3RvY29sICBTcGVjaWZpZXMgIGEgIHBhcnRpY3VsYXIgIHByb3RvY29sICB0byAgYmUgdXNlZCB3aXRoIHRoZQorICoJCSAgICBzb2NrZXQuICBOb3JtYWxseSBvbmx5IGEgc2luZ2xlIHByb3RvY29sIGV4aXN0cyB0byBzdXBwb3J0IAorICoJCSAgICBhIHBhcnRpY3VsYXIgc29ja2V0ICB0eXBlICB3aXRoaW4gIGEgZ2l2ZW4gcHJvdG9jb2wgZmFtaWx5LCAKKyAqCQkgICAgaW4gd2hpY2ggYSBjYXNlIHByb3RvY29sIGNhbiBiZSBzcGVjaWZpZWQgYXMgMC4KKyAqIEBwYXJhbSBzb2NrCSAgICBOZXcgc29ja2V0IGRlc2NyaXB0b3IsIG9yIFBKX0lOVkFMSURfU09DS0VUIG9uIGVycm9yLgorICoKKyAqIEByZXR1cm4JICAgIFplcm8gb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19zb2NrZXQoaW50IGZhbWlseSwgCisJCQkJICAgIGludCB0eXBlLCAKKwkJCQkgICAgaW50IHByb3RvY29sLAorCQkJCSAgICBwal9zb2NrX3QgKnNvY2spOworCisvKioKKyAqIENsb3NlIHRoZSBzb2NrZXQgZGVzY3JpcHRvci4KKyAqCisgKiBAcGFyYW0gc29ja2ZkICAgIFRoZSBzb2NrZXQgZGVzY3JpcHRvci4KKyAqCisgKiBAcmV0dXJuCSAgICBaZXJvIG9uIHN1Y2Nlc3MuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NvY2tfY2xvc2UocGpfc29ja190IHNvY2tmZCk7CisKKworLyoqCisgKiBUaGlzIGZ1bmN0aW9uIGdpdmVzIHRoZSBzb2NrZXQgc29ja2ZkIHRoZSBsb2NhbCBhZGRyZXNzIG15X2FkZHIuIG15X2FkZHIgaXMKKyAqIGFkZHJsZW4gYnl0ZXMgbG9uZy4gIFRyYWRpdGlvbmFsbHksIHRoaXMgaXMgY2FsbGVkIGFzc2lnbmluZyBhIG5hbWUgdG8KKyAqIGEgc29ja2V0LiBXaGVuIGEgc29ja2V0IGlzIGNyZWF0ZWQgd2l0aCAjcGpfc29ja19zb2NrZXQoKSwgaXQgZXhpc3RzIGluIGEKKyAqIG5hbWUgc3BhY2UgKGFkZHJlc3MgZmFtaWx5KSBidXQgaGFzIG5vIG5hbWUgYXNzaWduZWQuCisgKgorICogQHBhcmFtIHNvY2tmZCAgICBUaGUgc29ja2V0IGRlc3JpcHRvci4KKyAqIEBwYXJhbSBteV9hZGRyICAgVGhlIGxvY2FsIGFkZHJlc3MgdG8gYmluZCB0aGUgc29ja2V0IHRvLgorICogQHBhcmFtIGFkZHJsZW4gICBUaGUgbGVuZ3RoIG9mIHRoZSBhZGRyZXNzLgorICoKKyAqIEByZXR1cm4JICAgIFplcm8gb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19iaW5kKCBwal9zb2NrX3Qgc29ja2ZkLCAKKwkJCQkgICBjb25zdCBwal9zb2NrYWRkcl90ICpteV9hZGRyLAorCQkJCSAgIGludCBhZGRybGVuKTsKKworLyoqCisgKiBCaW5kIHRoZSBJUCBzb2NrZXQgc29ja2ZkIHRvIHRoZSBnaXZlbiBhZGRyZXNzIGFuZCBwb3J0LgorICoKKyAqIEBwYXJhbSBzb2NrZmQgICAgVGhlIHNvY2tldCBkZXNjcmlwdG9yLgorICogQHBhcmFtIGFkZHIJICAgIExvY2FsIGFkZHJlc3MgdG8gYmluZCB0aGUgc29ja2V0IHRvLCBpbiBob3N0IGJ5dGUgb3JkZXIuCisgKiBAcGFyYW0gcG9ydAkgICAgVGhlIGxvY2FsIHBvcnQgdG8gYmluZCB0aGUgc29ja2V0IHRvLCBpbiBob3N0IGJ5dGUgb3JkZXIuCisgKgorICogQHJldHVybgkgICAgWmVybyBvbiBzdWNjZXNzLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrX2JpbmRfaW4oIHBqX3NvY2tfdCBzb2NrZmQsIAorCQkJCSAgICAgIHBqX3VpbnQzMl90IGFkZHIsCisJCQkJICAgICAgcGpfdWludDE2X3QgcG9ydCk7CisKKy8qKgorICogQmluZCB0aGUgSVAgc29ja2V0IHNvY2tmZCB0byB0aGUgZ2l2ZW4gYWRkcmVzcyBhbmQgYSByYW5kb20gcG9ydCBpbiB0aGUKKyAqIHNwZWNpZmllZCByYW5nZS4KKyAqCisgKiBAcGFyYW0gc29ja2ZkICAgIAlUaGUgc29ja2V0IGRlc3JpcHRvci4KKyAqIEBwYXJhbSBhZGRyICAgICAgCVRoZSBsb2NhbCBhZGRyZXNzIGFuZCBwb3J0IHRvIGJpbmQgdGhlIHNvY2tldCB0by4KKyAqIEBwYXJhbSBwb3J0X3JhbmdlCVRoZSBwb3J0IHJhbmdlLCByZWxhdGl2ZSB0aGUgdG8gc3RhcnQgcG9ydCBudW1iZXIKKyAqIAkJCXNwZWNpZmllZCBpbiBwb3J0IGZpZWxkIGluICNhZGRyLiBOb3RlIHRoYXQgaWYgdGhlCisgKiAJCQlwb3J0IGlzIHplcm8sIHRoaXMgcGFyYW0gd2lsbCBiZSBpZ25vcmVkLgorICogQHBhcmFtIG1heF90cnkgICAJTWF4aW11bSByZXRyaWVzLgorICoKKyAqIEByZXR1cm4JICAgIAlaZXJvIG9uIHN1Y2Nlc3MuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NvY2tfYmluZF9yYW5kb20oIHBqX3NvY2tfdCBzb2NrZmQsCisJCQkJICAgICAgICAgIGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJICAgICAgICAgIHBqX3VpbnQxNl90IHBvcnRfcmFuZ2UsCisJCQkJICAgICAgICAgIHBqX3VpbnQxNl90IG1heF90cnkpOworCisjaWYgUEpfSEFTX1RDUAorLyoqCisgKiBMaXN0ZW4gZm9yIGluY29taW5nIGNvbm5lY3Rpb24uIFRoaXMgZnVuY3Rpb24gb25seSBhcHBsaWVzIHRvIGNvbm5lY3Rpb24KKyAqIG9yaWVudGVkIHNvY2tldHMgKHN1Y2ggYXMgUEpfU09DS19TVFJFQU0gb3IgUEpfU09DS19TRVFQQUNLRVQpLCBhbmQgaXQKKyAqIGluZGljYXRlcyB0aGUgd2lsbGluZ25lc3MgdG8gYWNjZXB0IGluY29taW5nIGNvbm5lY3Rpb25zLgorICoKKyAqIEBwYXJhbSBzb2NrZmQJVGhlIHNvY2tldCBkZXNjcmlwdG9yLgorICogQHBhcmFtIGJhY2tsb2cJRGVmaW5lcyB0aGUgbWF4aW11bSBsZW5ndGggdGhlIHF1ZXVlIG9mIHBlbmRpbmcKKyAqCQkJY29ubmVjdGlvbnMgbWF5IGdyb3cgdG8uCisgKgorICogQHJldHVybgkJWmVybyBvbiBzdWNjZXNzLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrX2xpc3RlbiggcGpfc29ja190IHNvY2tmZCwgCisJCQkJICAgICBpbnQgYmFja2xvZyApOworCisvKioKKyAqIEFjY2VwdCBuZXcgY29ubmVjdGlvbiBvbiB0aGUgc3BlY2lmaWVkIGNvbm5lY3Rpb24gb3JpZW50ZWQgc2VydmVyIHNvY2tldC4KKyAqCisgKiBAcGFyYW0gc2VydmVyZmQgIFRoZSBzZXJ2ZXIgc29ja2V0LgorICogQHBhcmFtIG5ld3NvY2sgICBOZXcgc29ja2V0IG9uIHN1Y2Nlc3MsIG9mIFBKX0lOVkFMSURfU09DS0VUIGlmIGZhaWxlZC4KKyAqIEBwYXJhbSBhZGRyCSAgICBBIHBvaW50ZXIgdG8gc29ja2FkZHIgdHlwZS4gSWYgdGhlIGFyZ3VtZW50IGlzIG5vdCBOVUxMLAorICoJCSAgICBpdCB3aWxsIGJlIGZpbGxlZCBieSB0aGUgYWRkcmVzcyBvZiBjb25uZWN0aW5nIGVudGl0eS4KKyAqIEBwYXJhbSBhZGRybGVuICAgSW5pdGlhbGx5IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBhZGRyZXNzLCBhbmQgdXBvbgorICoJCSAgICByZXR1cm4gd2lsbCBiZSBmaWxsZWQgd2l0aCB0aGUgZXhhY3QgYWRkcmVzcyBsZW5ndGguCisgKgorICogQHJldHVybgkgICAgWmVybyBvbiBzdWNjZXNzLCBvciB0aGUgZXJyb3IgbnVtYmVyLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrX2FjY2VwdCggcGpfc29ja190IHNlcnZlcmZkLAorCQkJCSAgICAgcGpfc29ja190ICpuZXdzb2NrLAorCQkJCSAgICAgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkgICAgIGludCAqYWRkcmxlbik7CisjZW5kaWYKKworLyoqCisgKiBUaGUgZmlsZSBkZXNjcmlwdG9yIHNvY2tmZCBtdXN0IHJlZmVyIHRvIGEgc29ja2V0LiAgSWYgdGhlIHNvY2tldCBpcyBvZgorICogdHlwZSBQSl9TT0NLX0RHUkFNICB0aGVuIHRoZSBzZXJ2X2FkZHIgYWRkcmVzcyBpcyB0aGUgYWRkcmVzcyB0byB3aGljaAorICogZGF0YWdyYW1zIGFyZSBzZW50IGJ5IGRlZmF1bHQsIGFuZCB0aGUgb25seSBhZGRyZXNzIGZyb20gd2hpY2ggZGF0YWdyYW1zCisgKiBhcmUgcmVjZWl2ZWQuIElmIHRoZSBzb2NrZXQgaXMgb2YgdHlwZSBQSl9TT0NLX1NUUkVBTSBvciBQSl9TT0NLX1NFUVBBQ0tFVCwKKyAqIHRoaXMgY2FsbCBhdHRlbXB0cyB0byBtYWtlIGEgY29ubmVjdGlvbiB0byBhbm90aGVyIHNvY2tldC4gIFRoZQorICogb3RoZXIgc29ja2V0IGlzIHNwZWNpZmllZCBieSBzZXJ2X2FkZHIsIHdoaWNoIGlzIGFuIGFkZHJlc3MgKG9mIGxlbmd0aAorICogYWRkcmxlbikgaW4gdGhlIGNvbW11bmljYXRpb25zIHNwYWNlIG9mIHRoZSAgc29ja2V0LiAgRWFjaCAgY29tbXVuaWNhdGlvbnMKKyAqIHNwYWNlIGludGVycHJldHMgdGhlIHNlcnZfYWRkciBwYXJhbWV0ZXIgaW4gaXRzIG93biB3YXkuCisgKgorICogQHBhcmFtIHNvY2tmZAlUaGUgc29ja2V0IGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gc2Vydl9hZGRyCVNlcnZlciBhZGRyZXNzIHRvIGNvbm5lY3QgdG8uCisgKiBAcGFyYW0gYWRkcmxlbglUaGUgbGVuZ3RoIG9mIHNlcnZlciBhZGRyZXNzLgorICoKKyAqIEByZXR1cm4JCVplcm8gb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19jb25uZWN0KCBwal9zb2NrX3Qgc29ja2ZkLAorCQkJCSAgICAgIGNvbnN0IHBqX3NvY2thZGRyX3QgKnNlcnZfYWRkciwKKwkJCQkgICAgICBpbnQgYWRkcmxlbik7CisKKy8qKgorICogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHBlZXIgd2hpY2ggaXMgY29ubmVjdGVkIHRvIHNvY2tldCBzb2NrZmQuCisgKgorICogQHBhcmFtIHNvY2tmZAlUaGUgc29ja2V0IGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gYWRkcgkJUG9pbnRlciB0byBzb2NrYWRkciBzdHJ1Y3R1cmUgdG8gd2hpY2ggdGhlIGFkZHJlc3MKKyAqCQkJd2lsbCBiZSByZXR1cm5lZC4KKyAqIEBwYXJhbSBuYW1lbGVuCUluaXRpYWxseSB0aGUgbGVuZ3RoIG9mIHRoZSBhZGRyLiBVcG9uIHJldHVybiB0aGUgdmFsdWUKKyAqCQkJd2lsbCBiZSBzZXQgdG8gdGhlIGFjdHVhbCBsZW5ndGggb2YgdGhlIGFkZHJlc3MuCisgKgorICogQHJldHVybgkJWmVybyBvbiBzdWNjZXNzLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrX2dldHBlZXJuYW1lKHBqX3NvY2tfdCBzb2NrZmQsCisJCQkJCSAgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJICBpbnQgKm5hbWVsZW4pOworCisvKioKKyAqIFJldHVybiB0aGUgY3VycmVudCBuYW1lIG9mIHRoZSBzcGVjaWZpZWQgc29ja2V0LgorICoKKyAqIEBwYXJhbSBzb2NrZmQJVGhlIHNvY2tldCBkZXNjcmlwdG9yLgorICogQHBhcmFtIGFkZHIJCVBvaW50ZXIgdG8gc29ja2FkZHIgc3RydWN0dXJlIHRvIHdoaWNoIHRoZSBhZGRyZXNzCisgKgkJCXdpbGwgYmUgcmV0dXJuZWQuCisgKiBAcGFyYW0gbmFtZWxlbglJbml0aWFsbHkgdGhlIGxlbmd0aCBvZiB0aGUgYWRkci4gVXBvbiByZXR1cm4gdGhlIHZhbHVlCisgKgkJCXdpbGwgYmUgc2V0IHRvIHRoZSBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBhZGRyZXNzLgorICoKKyAqIEByZXR1cm4JCVplcm8gb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19nZXRzb2NrbmFtZSggcGpfc29ja190IHNvY2tmZCwKKwkJCQkJICBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCQkgIGludCAqbmFtZWxlbik7CisKKy8qKgorICogR2V0IHNvY2tldCBvcHRpb24gYXNzb2NpYXRlZCB3aXRoIGEgc29ja2V0LiBPcHRpb25zIG1heSBleGlzdCBhdCBtdWx0aXBsZQorICogcHJvdG9jb2wgbGV2ZWxzOyB0aGV5IGFyZSBhbHdheXMgcHJlc2VudCBhdCB0aGUgdXBwZXJtb3N0IHNvY2tldCBsZXZlbC4KKyAqCisgKiBAcGFyYW0gc29ja2ZkCVRoZSBzb2NrZXQgZGVzY3JpcHRvci4KKyAqIEBwYXJhbSBsZXZlbAkJVGhlIGxldmVsIHdoaWNoIHRvIGdldCB0aGUgb3B0aW9uIGZyb20uCisgKiBAcGFyYW0gb3B0bmFtZQlUaGUgb3B0aW9uIG5hbWUuCisgKiBAcGFyYW0gb3B0dmFsCUlkZW50aWZpZXMgdGhlIGJ1ZmZlciB3aGljaCB0aGUgdmFsdWUgd2lsbCBiZQorICoJCQlyZXR1cm5lZC4KKyAqIEBwYXJhbSBvcHRsZW4JSW5pdGlhbGx5IGNvbnRhaW5zIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciwgdXBvbgorICoJCQlyZXR1cm4gd2lsbCBiZSBzZXQgdG8gdGhlIGFjdHVhbCBzaXplIG9mIHRoZSB2YWx1ZS4KKyAqCisgKiBAcmV0dXJuCQlaZXJvIG9uIHN1Y2Nlc3MuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NvY2tfZ2V0c29ja29wdCggcGpfc29ja190IHNvY2tmZCwKKwkJCQkJIHBqX3VpbnQxNl90IGxldmVsLAorCQkJCQkgcGpfdWludDE2X3Qgb3B0bmFtZSwKKwkJCQkJIHZvaWQgKm9wdHZhbCwKKwkJCQkJIGludCAqb3B0bGVuKTsKKy8qKgorICogTWFuaXB1bGF0ZSB0aGUgb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzb2NrZXQuIE9wdGlvbnMgbWF5IGV4aXN0IGF0IAorICogbXVsdGlwbGUgcHJvdG9jb2wgbGV2ZWxzOyB0aGV5IGFyZSBhbHdheXMgcHJlc2VudCBhdCB0aGUgdXBwZXJtb3N0IHNvY2tldCAKKyAqIGxldmVsLgorICoKKyAqIEBwYXJhbSBzb2NrZmQJVGhlIHNvY2tldCBkZXNjcmlwdG9yLgorICogQHBhcmFtIGxldmVsCQlUaGUgbGV2ZWwgd2hpY2ggdG8gZ2V0IHRoZSBvcHRpb24gZnJvbS4KKyAqIEBwYXJhbSBvcHRuYW1lCVRoZSBvcHRpb24gbmFtZS4KKyAqIEBwYXJhbSBvcHR2YWwJSWRlbnRpZmllcyB0aGUgYnVmZmVyIHdoaWNoIGNvbnRhaW4gdGhlIHZhbHVlLgorICogQHBhcmFtIG9wdGxlbglUaGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZS4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9yIHRoZSBzdGF0dXMgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19zZXRzb2Nrb3B0KCBwal9zb2NrX3Qgc29ja2ZkLAorCQkJCQkgcGpfdWludDE2X3QgbGV2ZWwsCisJCQkJCSBwal91aW50MTZfdCBvcHRuYW1lLAorCQkJCQkgY29uc3Qgdm9pZCAqb3B0dmFsLAorCQkJCQkgaW50IG9wdGxlbik7CisKKworLyoqCisgKiBIZWxwZXIgZnVuY3Rpb24gdG8gc2V0IHNvY2tldCBidWZmZXIgc2l6ZSB1c2luZyAjcGpfc29ja19zZXRzb2Nrb3B0KCkKKyAqIHdpdGggY2FwYWJpbGl0eSB0byBhdXRvIHJldHJ5IHdpdGggbG93ZXIgYnVmZmVyIHNldHRpbmcgdmFsdWUgdW50aWwKKyAqIHRoZSBoaWdoZXN0IHBvc3NpYmxlIHZhbHVlIGlzIHN1Y2Nlc3NmdWxseSBzZXQuCisgKgorICogQHBhcmFtIHNvY2tmZAlUaGUgc29ja2V0IGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gb3B0bmFtZQlUaGUgb3B0aW9uIG5hbWUsIHZhbGlkIHZhbHVlcyBhcmUgcGpfU09fUkNWQlVGKCkKKyAqCQkJYW5kIHBqX1NPX1NOREJVRigpLgorICogQHBhcmFtIGF1dG9fcmV0cnkJT3B0aW9uIHdoZXRoZXIgYXV0byByZXRyeSB3aXRoIGxvd2VyIHZhbHVlIGlzCisgKgkJCWVuYWJsZWQuCisgKiBAcGFyYW0gYnVmX3NpemUJT24gaW5wdXQsIHNwZWNpZnkgdGhlIHByZWZlcmVkIGJ1ZmZlciBzaXplIHNldHRpbmcsCisgKgkJCW9uIG91dHB1dCwgdGhlIGJ1ZmZlciBzaXplIHNldHRpbmcgYXBwbGllZC4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9yIHRoZSBzdGF0dXMgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19zZXRzb2Nrb3B0X3NvYnVmKCBwal9zb2NrX3Qgc29ja2ZkLAorCQkJCQkgICAgICAgcGpfdWludDE2X3Qgb3B0bmFtZSwKKwkJCQkJICAgICAgIHBqX2Jvb2xfdCBhdXRvX3JldHJ5LAorCQkJCQkgICAgICAgdW5zaWduZWQgKmJ1Zl9zaXplKTsKKworCisvKioKKyAqIFJlY2VpdmVzIGRhdGEgc3RyZWFtIG9yIG1lc3NhZ2UgY29taW5nIHRvIHRoZSBzcGVjaWZpZWQgc29ja2V0LgorICoKKyAqIEBwYXJhbSBzb2NrZmQJVGhlIHNvY2tldCBkZXNjcmlwdG9yLgorICogQHBhcmFtIGJ1ZgkJVGhlIGJ1ZmZlciB0byByZWNlaXZlIHRoZSBkYXRhIG9yIG1lc3NhZ2UuCisgKiBAcGFyYW0gbGVuCQlPbiBpbnB1dCwgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLiBPbiByZXR1cm4sCisgKgkJCWNvbnRhaW5zIHRoZSBsZW5ndGggb2YgZGF0YSByZWNlaXZlZC4KKyAqIEBwYXJhbSBmbGFncwkJRmxhZ3MgKHN1Y2ggYXMgcGpfTVNHX1BFRUsoKSkuCisgKgorICogQHJldHVybgkJUEpfU1VDQ0VTUyBvciB0aGUgZXJyb3IgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19yZWN2KHBqX3NvY2tfdCBzb2NrZmQsCisJCQkJICB2b2lkICpidWYsCisJCQkJICBwal9zc2l6ZV90ICpsZW4sCisJCQkJICB1bnNpZ25lZCBmbGFncyk7CisKKy8qKgorICogUmVjZWl2ZXMgZGF0YSBzdHJlYW0gb3IgbWVzc2FnZSBjb21pbmcgdG8gdGhlIHNwZWNpZmllZCBzb2NrZXQuCisgKgorICogQHBhcmFtIHNvY2tmZAlUaGUgc29ja2V0IGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gYnVmCQlUaGUgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGRhdGEgb3IgbWVzc2FnZS4KKyAqIEBwYXJhbSBsZW4JCU9uIGlucHV0LCB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIuIE9uIHJldHVybiwKKyAqCQkJY29udGFpbnMgdGhlIGxlbmd0aCBvZiBkYXRhIHJlY2VpdmVkLgorICogQHBhcmFtIGZsYWdzCQlGbGFncyAoc3VjaCBhcyBwal9NU0dfUEVFSygpKS4KKyAqIEBwYXJhbSBmcm9tCQlJZiBub3QgTlVMTCwgaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCB0aGUgc291cmNlCisgKgkJCWFkZHJlc3Mgb2YgdGhlIGNvbm5lY3Rpb24uCisgKiBAcGFyYW0gZnJvbWxlbglJbml0aWFsbHkgY29udGFpbnMgdGhlIGxlbmd0aCBvZiBmcm9tIGFkZHJlc3MsCisgKgkJCWFuZCB1cG9uIHJldHVybiB3aWxsIGJlIGZpbGxlZCB3aXRoIHRoZSBhY3R1YWwKKyAqCQkJbGVuZ3RoIG9mIHRoZSBhZGRyZXNzLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb3IgdGhlIGVycm9yIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NvY2tfcmVjdmZyb20oIHBqX3NvY2tfdCBzb2NrZmQsCisJCQkJICAgICAgdm9pZCAqYnVmLAorCQkJCSAgICAgIHBqX3NzaXplX3QgKmxlbiwKKwkJCQkgICAgICB1bnNpZ25lZCBmbGFncywKKwkJCQkgICAgICBwal9zb2NrYWRkcl90ICpmcm9tLAorCQkJCSAgICAgIGludCAqZnJvbWxlbik7CisKKy8qKgorICogVHJhbnNtaXQgZGF0YSB0byB0aGUgc29ja2V0LgorICoKKyAqIEBwYXJhbSBzb2NrZmQJU29ja2V0IGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gYnVmCQlCdWZmZXIgY29udGFpbmluZyBkYXRhIHRvIGJlIHNlbnQuCisgKiBAcGFyYW0gbGVuCQlPbiBpbnB1dCwgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyLgorICoJCQlVcG9uIHJldHVybiwgaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCB0aGUgbGVuZ3RoCisgKgkJCW9mIGRhdGEgc2VudC4KKyAqIEBwYXJhbSBmbGFncwkJRmxhZ3MgKHN1Y2ggYXMgcGpfTVNHX0RPTlRST1VURSgpKS4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIG9yIHRoZSBzdGF0dXMgY29kZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19zZW5kKHBqX3NvY2tfdCBzb2NrZmQsCisJCQkJICBjb25zdCB2b2lkICpidWYsCisJCQkJICBwal9zc2l6ZV90ICpsZW4sCisJCQkJICB1bnNpZ25lZCBmbGFncyk7CisKKy8qKgorICogVHJhbnNtaXQgZGF0YSB0byB0aGUgc29ja2V0IHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4KKyAqCisgKiBAcGFyYW0gc29ja2ZkCVNvY2tldCBkZXNjcmlwdG9yLgorICogQHBhcmFtIGJ1ZgkJQnVmZmVyIGNvbnRhaW5pbmcgZGF0YSB0byBiZSBzZW50LgorICogQHBhcmFtIGxlbgkJT24gaW5wdXQsIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlci4KKyAqCQkJVXBvbiByZXR1cm4sIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggdGhlIGxlbmd0aAorICoJCQlvZiBkYXRhIHNlbnQuCisgKiBAcGFyYW0gZmxhZ3MJCUZsYWdzIChzdWNoIGFzIHBqX01TR19ET05UUk9VVEUoKSkuCisgKiBAcGFyYW0gdG8JCVRoZSBhZGRyZXNzIHRvIHNlbmQuCisgKiBAcGFyYW0gdG9sZW4JCVRoZSBsZW5ndGggb2YgdGhlIGFkZHJlc3MgaW4gYnl0ZXMuCisgKgorICogQHJldHVybgkJUEpfU1VDQ0VTUyBvciB0aGUgc3RhdHVzIGNvZGUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2VuZHRvKHBqX3NvY2tfdCBzb2NrZmQsCisJCQkJICAgIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCQkgICAgcGpfc3NpemVfdCAqbGVuLAorCQkJCSAgICB1bnNpZ25lZCBmbGFncywKKwkJCQkgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqdG8sCisJCQkJICAgIGludCB0b2xlbik7CisKKyNpZiBQSl9IQVNfVENQCisvKioKKyAqIFRoZSBzaHV0ZG93biBjYWxsIGNhdXNlcyBhbGwgb3IgcGFydCBvZiBhIGZ1bGwtZHVwbGV4IGNvbm5lY3Rpb24gb24gdGhlCisgKiBzb2NrZXQgYXNzb2NpYXRlZCB3aXRoIHNvY2tmZCB0byBiZSBzaHV0IGRvd24uCisgKgorICogQHBhcmFtIHNvY2tmZAlUaGUgc29ja2V0IGRlc2NyaXB0b3IuCisgKiBAcGFyYW0gaG93CQlJZiBob3cgaXMgUEpfU0hVVF9SRCwgZnVydGhlciByZWNlcHRpb25zIHdpbGwgYmUgCisgKgkJCWRpc2FsbG93ZWQuIElmIGhvdyBpcyBQSl9TSFVUX1dSLCBmdXJ0aGVyIHRyYW5zbWlzc2lvbnMKKyAqCQkJd2lsbCBiZSBkaXNhbGxvd2VkLiBJZiBob3cgaXMgUEpfU0hVVF9SRFdSLCBmdXJ0aGVyIAorICoJCQlyZWNlcHRpb25zIGFuZHRyYW5zbWlzc2lvbnMgd2lsbCBiZSBkaXNhbGxvd2VkLgorICoKKyAqIEByZXR1cm4JCVplcm8gb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19zaHV0ZG93biggcGpfc29ja190IHNvY2tmZCwKKwkJCQkgICAgICAgaW50IGhvdyk7CisjZW5kaWYKKworLyoqCisgKiBAfQorICovCisKKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpfU09DS19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9zb2NrX3Fvcy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9zb2NrX3Fvcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZDlhZmQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3NvY2tfcW9zLmgKQEAgLTAsMCArMSw0MjcgQEAKKy8qICRJZDogc29ja19xb3MuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX1NPQ0tfUU9TX0hfXworI2RlZmluZSBfX1BKX1NPQ0tfUU9TX0hfXworCisvKioKKyAqIEBmaWxlIHNvY2tfcW9zLmgKKyAqIEBicmllZiBTb2NrZXQgUW9TIEFQSQorICovCisKKyNpbmNsdWRlIDxwai9zb2NrLmg+CisKK1BKX0JFR0lOX0RFQ0wgCisKKworLyoqCisgKiBAZGVmZ3JvdXAgc29ja2V0X3FvcyBTb2NrZXQgUXVhbGl0eSBvZiBTZXJ2aWNlIChRb1MpIEFQSTogVE9TLCBEU0NQLCBXTU0sIElFRUUgODAyLjFwCisgKiBAaW5ncm91cCBQSl9TT0NLCisgKiBAeworCisKKyAgICBcc2VjdGlvbiBpbnRybyBRb1MgVGVjaG5vbG9naWVzCisKKyAgICBRb1Mgc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSBmb3IgYm90aCBMYXllciAyIGFuZCAzIG9mIFRDUC9JUCBwcm90b2NvbHM6CisKKyAgICBcc3Vic2VjdGlvbiBpbnRyb19pZWVlODAyMXAgTGF5ZXIgMjogSUVFRSA4MDIuMXAgZm9yIEV0aGVybmV0CisKKyAgICBJRUVFIDgwMi4xcCB0YWdnaW5nIHdpbGwgbWFyayBmcmFtZXMgc2VudCBieSBhIGhvc3QgZm9yIHByaW9yaXRpemVkIAorICAgIGRlbGl2ZXJ5IHVzaW5nIGEgMy1iaXQgUHJpb3JpdHkgZmllbGQgaW4gdGhlIHZpcnR1YWwgbG9jYWwgYXJlYSBuZXR3b3JrIAorICAgIChWTEFOKSBoZWFkZXIgb2YgdGhlIEV0aGVybmV0IGZyYW1lLiBUaGUgVkxBTiBoZWFkZXIgaXMgcGxhY2VkIGluc2lkZSAKKyAgICB0aGUgRXRoZXJuZXQgaGVhZGVyLCBiZXR3ZWVuIHRoZSBTb3VyY2UgQWRkcmVzcyBmaWVsZCBhbmQgZWl0aGVyIHRoZSAKKyAgICBMZW5ndGggZmllbGQgKGZvciBhbiBJRUVFIDgwMi4zIGZyYW1lKSBvciB0aGUgRXRoZXJUeXBlIGZpZWxkIChmb3IgYW4KKyAgICBFdGhlcm5ldCBJSSBmcmFtZSkuCisKKyAgICBcc3Vic2VjdGlvbiBpbnRyb193bW0gTGF5ZXIgMjogV01NCisKKyAgICBBdCB0aGUgTmV0d29yayBJbnRlcmZhY2UgbGF5ZXIgZm9yIElFRUUgODAyLjExIHdpcmVsZXNzLCB0aGUgV2ktRmkgCisgICAgQWxsaWFuY2UgY2VydGlmaWNhdGlvbiBmb3IgV2ktRmkgTXVsdGltZWRpYSAoV01NKSBkZWZpbmVzIGZvdXIgYWNjZXNzIAorICAgIGNhdGVnb3JpZXMgZm9yIHByaW9yaXRpemluZyBuZXR3b3JrIHRyYWZmaWMuIFRoZXNlIGFjY2VzcyBjYXRlZ29yaWVzIAorICAgIGFyZSAoaW4gb3JkZXIgb2YgaGlnaGVzdCB0byBsb3dlc3QgcHJpb3JpdHkpIHZvaWNlLCB2aWRlbywgYmVzdC1lZmZvcnQsIAorICAgIGFuZCBiYWNrZ3JvdW5kLiBIb3N0IHN1cHBvcnQgZm9yIFdNTSBwcmlvcml0aXphdGlvbiByZXF1aXJlcyB0aGF0IGJvdGggCisgICAgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVycyBhbmQgdGhlaXIgZHJpdmVycyBzdXBwb3J0IFdNTS4gV2lyZWxlc3MgCisgICAgYWNjZXNzIHBvaW50cyAoQVBzKSBtdXN0IGhhdmUgV01NIGVuYWJsZWQuCisKKyAgICBcc3Vic2VjdGlvbiBpbnRyb19kc2NwIExheWVyIDM6IERTQ1AKKworICAgIEF0IHRoZSBJbnRlcm5ldCBsYXllciwgeW91IGNhbiB1c2UgRGlmZmVyZW50aWF0ZWQgU2VydmljZXMvRGlmZnNlcnYgYW5kCisgICAgc2V0IHRoZSB2YWx1ZSBvZiB0aGUgRGlmZmVyZW50aWF0ZWQgU2VydmljZXMgQ29kZSBQb2ludCAoRFNDUCkgaW4gdGhlIAorICAgIElQIGhlYWRlci4gQXMgZGVmaW5lZCBpbiBSRkMgMjQ3NCwgdGhlIERTQ1AgdmFsdWUgaXMgdGhlIGhpZ2gtb3JkZXIgNiBiaXRzCisgICAgb2YgdGhlIElQIHZlcnNpb24gNCAoSVB2NCkgVE9TIGZpZWxkIGFuZCB0aGUgSVAgdmVyc2lvbiA2IChJUHY2KSBUcmFmZmljIAorICAgIENsYXNzIGZpZWxkLgorCisgICAgXHN1YnNlY3Rpb24gaW50cm9fb3RoZXIgTGF5ZXIgMzogT3RoZXIKKworICAgIE90aGVyIG1lY2hhbmlzbXMgZXhpc3QgKHN1Y2ggYXMgUlNWUCwgSW50U2VydikgYnV0IHRoaXMgd2lsbCBub3QgYmUgCisgICAgaW1wbGVtZW50ZWQuCisKKworICAgIFxzZWN0aW9uIGF2YWlsYWJpbGl0eSBRb1MgQXZhaWxhYmlsaXR5CisKKyAgICBcc3Vic2VjdGlvbiBsaW51eCBMaW51eAorCisgICAgRFNDUCBpcyBhdmFpbGFibGUgdmlhIElQIFRPUyBvcHRpb24uCisKKyAgICBFdGhlcm5ldCA4MDIuMXAgdGFnZ2luZyBpcyBkb25lIGJ5IHNldHRpbmcgc2V0c29ja29wdChTT19QUklPUklUWSkgb3B0aW9uIAorICAgIG9mIHRoZSBzb2NrZXQsIHRoZW4gd2l0aCB0aGUgc2V0X2VncmVzc19tYXAgb3B0aW9uIG9mIHRoZSB2Y29uZmlnIHV0aWxpdHkgCisgICAgdG8gY29udmVydCB0aGlzIHRvIHNldCB2bGFuLXFvcyBmaWVsZCBvZiB0aGUgcGFja2V0LgorCisgICAgV01NIGlzIG5vdCBrbm93biB0byBiZSBhdmFpbGFibGUuCisKKyAgICBcc3Vic2VjdGlvbiB3aW5kb3dzIFdpbmRvd3MgYW5kIFdpbmRvd3MgTW9iaWxlCisKKyAgICAoSXQncyBhIG1lc3MhKQorCisgICAgRFNDUCBpcyBzZXR0YWJsZSB3aXRoIHNldHNvY2tvcHQoKSBvbiBXaW5kb3dzIDIwMDAgb3Igb2xkZXIsIGJ1dCBXaW5kb3dzIAorICAgIHdvdWxkIHNpbGVudGx5IGlnbm9yZSB0aGlzIGNhbGwgb24gV2luWFAgb3IgbGF0ZXIsIHVubGVzcyBhZG1pbmlzdHJhdG9yIAorICAgIG1vZGlmaWVzIHRoZSByZWdpc3RyeS4gT24gV2luZG93cyAyMDAwLCBXaW5kb3dzIFhQLCBhbmQgV2luZG93cyBTZXJ2ZXIgCisgICAgMjAwMywgR1FvUyAoR2VuZXJpYyBRb1MpIEFQSSBpcyB0aGUgc3RhbmRhcmQgQVBJLCBidXQgdGhpcyBBUEkgbWF5IG5vdCBiZQorICAgIHN1cHBvcnRlZCBpbiB0aGUgZnV0dXJlLiBPbiBWaXN0YSBhbmQgV2luZG93cyA3LCB0aGUgaXMgYSBuZXcgUW9TMiBBUEksIAorICAgIGFsc28ga25vd24gYXMgUXVhbGl0eSBXaW5kb3dzIEF1ZGlvLVZpZGVvIEV4cGVyaWVuY2UgKHFXQVZFKS4KKworICAgIElFRUUgODAyLjFwIHRhZ2dpbmcgaXMgYXZhaWxhYmxlIHZpYSBUcmFmZmljIENvbnRyb2wgKFRDKSBBUEksIGF2YWlsYWJsZQorICAgIG9uIFdpbmRvd3MgWFAgU1AyLCBidXQgdGhpcyBuZWVkcyBhZG1pbmlzdHJhdG9yIGFjY2Vzcy4gRm9yIFZpc3RhIGFuZCAKKyAgICBsYXRlciwgaXQncyBpbiBxV0FWRS4KKworICAgIFdNTSBpcyBhdmFpbGFibGUgZm9yIG1vYmlsZSBwbGF0Zm9ybXMgb24gV2luZG93cyBNb2JpbGUgNiBwbGF0Zm9ybSBhbmQgCisgICAgV2luZG93cyBFbWJlZGRlZCBDRSA2LCB2aWEgc2V0c29ja29wdChJUF9EU0NQX1RSQUZGSUNfVFlQRSkuIHFXQVZFIAorICAgIHN1cHBvcnRzIHRoaXMgYXMgd2VsbC4KKworICAgIFxzdWJzZWN0aW9uIHN5bWJpYW4gU3ltYmlhbiBTNjAgM3JkIEVkCisKKyAgICBCb3RoIERTQ1AgYW5kIFdNTSBpcyBzdXBwb3J0ZWQgdmlhIFJTb2NrZXQ6OlNldE9wdCgpIHdpdGggd2lsbCBzZXQgYm90aCAKKyAgICBMYXllciAyIGFuZCBMYXllciAzIFFvUyBzZXR0aW5ncyBhY2NvcmRpbmdseS4gSW50ZXJuYWxseSwgUEpMSUIgc2V0cyB0aGUKKyAgICBEU0NQIGZpZWxkIG9mIHRoZSBzb2NrZXQsIGFuZCBiYXNlZCBvbiBjZXJ0YWluIERTQ1AgdmFsdWVzIG1hcHBpbmcsCisgICAgU3ltYmlhbiB3aWxsIHNldCB0aGUgV01NIHRhZyBhY2NvcmRpbmdseS4KKworICAgIFxzZWN0aW9uIGFwaSBQSkxJQidzIFFvUyBBUEkgQWJzdHJhY3Rpb24KKworICAgIEJhc2VkIG9uIHRoZSBhYm92ZSwgdGhlIGZvbGxvd2luZyBBUEkgaXMgaW1wbGVtZW50ZWQuCisKKyAgICBEZWNsYXJlIHRoZSBmb2xsb3dpbmcgInN0YW5kYXJkIiB0cmFmZmljIHR5cGVzLgorCisgICAgXGNvZGUKKyAgICAgdHlwZWRlZiBlbnVtIHBqX3Fvc190eXBlCisgICAgIHsKKwlQSl9RT1NfVFlQRV9CRVNUX0VGRk9SVCwKKwlQSl9RT1NfVFlQRV9CQUNLR1JPVU5ELAorCVBKX1FPU19UWVBFX1ZJREVPLAorCVBKX1FPU19UWVBFX1ZPSUNFLAorCVBKX1FPU19UWVBFX0NPTlRST0wKKyAgICAgfSBwal9xb3NfdHlwZTsKKyAgICBcZW5kY29kZQorCisgICAgVGhlIHRyYWZmaWMgY2xhc3NlcyBhYm92ZSB3aWxsIGRldGVybWluZSBob3cgdGhlIExheWVyIDIgYW5kIDMgUW9TIAorICAgIHNldHRpbmdzIHdpbGwgYmUgdXNlZC4gVGhlIHN0YW5kYXJkIG1hcHBpbmcgYmV0d2VlbiB0aGUgY2xhc3NlcyBhYm92ZSAKKyAgICB0byB0aGUgY29ycmVzcG9uZGluZyBMYXllciAyIGFuZCAzIHNldHRpbmdzIGFyZSBhcyBmb2xsb3dzOgorCisgICAgXGNvZGUKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIFBKTElCIFRyYWZmaWMgVHlwZSAJSVAgRFNDUCAJV01NIAkJICAgIDgwMi4xcAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgQkVTVF9FRkZPUlQgCTB4MDAgCQlCRSAoQnVsayBFZmZvcnQpIAkwCisgICAgQkFDS0dST1VORCAJCTB4MDggCQlCSyAoQnVsaykgCQkyCisgICAgVklERU8gCQkweDI4IAkJVkkgKFZpZGVvKSAJCTUKKyAgICBWT0lDRSAJCTB4MzAgCQlWTyAoVm9pY2UpIAkJNgorICAgIENPTlRST0wgCQkweDM4IAkJVk8gKFZvaWNlKSAJCTcKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIFxlbmRjb2RlCisKKyAgICBUaGVyZSBhcmUgdHdvIHNldHMgb2YgQVBJIHByb3ZpZGVkIHRvIG1hbmlwdWxhdGUgdGhlIFFvUyBwYXJhbWV0ZXJzLgorCisgICAgXHN1YnNlY3Rpb24gcG9ydGFibGVfYXBpIFBvcnRhYmxlIEFQSQorCisgICAgVGhlIGZpcnN0IHNldCBvZiBBUEkgaXM6CisKKyAgICBcY29kZQorICAgICAvLyBTZXQgUW9TIHBhcmFtZXRlcnMKKyAgICAgUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19zZXRfcW9zX3R5cGUocGpfc29ja190IHNvY2ssCisJCQkJCSAgICAgICBwal9xb3NfdHlwZSB2YWwpOworCisgICAgIC8vIEdldCBRb1MgcGFyYW1ldGVycworICAgICBQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrX2dldF9xb3NfdHlwZShwal9zb2NrX3Qgc29jaywKKwkJCQkJICAgICAgIHBqX3Fvc190eXBlICpwX3ZhbCk7CisgICAgXGVuZGNvZGUKKworICAgIFRoZSBBUEkgd2lsbCBzZXQgdGhlIHRyYWZmaWMgdHlwZSBhY2NvcmRpbmcgdG8gdGhlIERTQ1AgY2xhc3MsIGZvciBib3RoIAorICAgIExheWVyIDIgYW5kIExheWVyIDMgUW9TIHNldHRpbmdzLCB3aGVyZSBpdCdzIGF2YWlsYWJsZS4gSWYgYW55IG9mIHRoZSAKKyAgICBsYXllciBRb1Mgc2V0dGluZyBpcyBub3Qgc2V0dGFibGUsIHRoZSBBUEkgd2lsbCBzaWxlbnRseSBpZ25vcmUgaXQuIAorICAgIElmIGJvdGggbGF5ZXJzIGFyZSBub3Qgc2V0YWJsZSwgdGhlIEFQSSB3aWxsIHJldHVybiBlcnJvci4KKworICAgIFRoZSBBUEkgYWJvdmUgaXMgdGhlIHJlY29tbWVuZGVkIHVzZSBvZiBRb1MsIHNpbmNlIGl0IGlzIHRoZSBtb3N0IAorICAgIHBvcnRhYmxlIGFjcm9zcyBhbGwgcGxhdGZvcm1zLgorCisgICAgXHN1YnNlY3Rpb24gZGV0YWlsX2FwaSBGaW5lIEdyYWluZWQgQ29udHJvbCBBUEkKKworICAgIFRoZSBzZWNvbmQgc2V0IG9mIEFQSSBpcyBpbnRlbmRlZCBmb3IgYXBwbGljYXRpb24gdGhhdCB3YW50cyB0byBmaW5lIAorICAgIHR1bmUgdGhlIFFvUyBwYXJhbWV0ZXJzLgorCisgICAgVGhlIExheWVyIDIgYW5kIDMgUW9TIHBhcmFtZXRlcnMgYXJlIHN0b3JlZCBpbiBwal9xb3NfcGFyYW1zIHN0cnVjdHVyZToKKworICAgIFxjb2RlCisgICAgIHR5cGVkZWYgZW51bSBwal9xb3NfZmxhZworICAgICB7CisJUEpfUU9TX1BBUkFNX0hBU19EU0NQID0gMSwKKwlQSl9RT1NfUEFSQU1fSEFTX1NPX1BSSU8gPSAyLAorCVBKX1FPU19QQVJBTV9IQVNfV01NID0gNAorICAgICB9IHBqX3Fvc19mbGFnOworCisgICAgIHR5cGVkZWYgZW51bSBwal9xb3Nfd21tX3ByaW8KKyAgICAgeworCVBKX1FPU19XTU1fUFJJT19CVUxLX0VGRk9SVCwKKwlQSl9RT1NfV01NX1BSSU9fQlVMSywKKwlQSl9RT1NfV01NX1BSSU9fVklERU8sCisJUEpfUU9TX1dNTV9QUklPX1ZPSUNFCisgICAgIH0gcGpfcW9zX3dtbV9wcmlvOworCisgICAgIHR5cGVkZWYgc3RydWN0IHBqX3Fvc19wYXJhbXMKKyAgICAgeworCXBqX3VpbnQ4X3QgICAgICBmbGFnczsgICAgLy8gRGV0ZXJtaW5lcyB3aGljaCB2YWx1ZXMgdG8gCisJCQkJICAvLyBzZXQsIGJpdG1hc2sgb2YgcGpfcW9zX2ZsYWcKKwlwal91aW50OF90ICAgICAgZHNjcF92YWw7IC8vIFRoZSA2IGJpdHMgRFNDUCB2YWx1ZSB0byBzZXQKKwlwal91aW50OF90ICAgICAgc29fcHJpbzsgIC8vIFNPX1BSSU9SSVRZIHZhbHVlCisJcGpfcW9zX3dtbV9wcmlvIHdtbV9wcmlvOyAvLyBXTU0gcHJpb3JpdHkgdmFsdWUKKyAgICAgfSBwal9xb3NfcGFyYW1zOworICAgIFxlbmRjb2RlCisKKyAgICBUaGUgc2Vjb25kIHNldCBvZiBBUEkgd2l0aCBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgdGhlIHBhcmFtZXRlcnMgCisgICAgYXJlOgorCisgICAgXGNvZGUKKyAgICAgLy8gUmV0cmlldmUgUW9TIHBhcmFtcyBmb3IgdGhlIHNwZWNpZmllZCB0cmFmZmljIHR5cGUKKyAgICAgUEpfREVDTChwal9zdGF0dXNfdCkgcGpfcW9zX2dldF9wYXJhbXMocGpfcW9zX3R5cGUgdHlwZSwgCisJCQkJCSAgICBwal9xb3NfcGFyYW1zICpwKTsKKworICAgICAvLyBTZXQgUW9TIHBhcmFtZXRlcnMgdG8gdGhlIHNvY2tldAorICAgICBQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrX3NldF9xb3NfcGFyYW1zKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkJIGNvbnN0IHBqX3Fvc19wYXJhbXMgKnApOworCisgICAgIC8vIEdldCBRb1MgcGFyYW1ldGVycyBmcm9tIHRoZSBzb2NrZXQKKyAgICAgUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19nZXRfcW9zX3BhcmFtcyhwal9zb2NrX3Qgc29jaywKKwkJCQkJCSBwal9xb3NfcGFyYW1zICpwKTsKKyAgICBcZW5kY29kZQorCisKKyAgICBJbXBvcnRhbnQ6CisKKyAgICBUaGUgcGpfc29ja19zZXQvZ2V0X3Fvc19wYXJhbXMoKSBBUElzIGFyZSBub3QgcG9ydGFibGUsIGFuZCBpdCdzIHByb2JhYmx5IAorICAgIG9ubHkgZ29pbmcgdG8gYmUgaW1wbGVtZW50ZWQgb24gTGludXguIEFwcGxpY2F0aW9uIHNob3VsZCBhbHdheXMgdHJ5IHRvIAorICAgIHVzZSBwal9zb2NrX3NldF9xb3NfdHlwZSgpIGluc3RlYWQuCisgKi8KKworCisvKioKKyAqIEhpZ2ggbGV2ZWwgdHJhZmZpYyBjbGFzc2lmaWNhdGlvbi4KKyAqLwordHlwZWRlZiBlbnVtIHBqX3Fvc190eXBlCit7CisgICAgUEpfUU9TX1RZUEVfQkVTVF9FRkZPUlQsCS8qKjwgQmVzdCBlZmZvcnQgdHJhZmZpYyAoZGVmYXVsdCB2YWx1ZSkuCisJCQkJICAgICBBbnkgUW9TIGZ1bmN0aW9uIGNhbGxzIHdpdGggc3BlY2lmeWluZworCQkJCSAgICAgdGhpcyB2YWx1ZSBhcmUgZWZmZWN0aXZlbHkgbm8tb3AJKi8KKyAgICBQSl9RT1NfVFlQRV9CQUNLR1JPVU5ELAkvKio8IEJhY2tncm91bmQgdHJhZmZpYy4JCSovCisgICAgUEpfUU9TX1RZUEVfVklERU8sCQkvKio8IFZpZGVvIHRyYWZmaWMuCQkJKi8KKyAgICBQSl9RT1NfVFlQRV9WT0lDRSwJCS8qKjwgVm9pY2UgdHJhZmZpYy4JCQkqLworICAgIFBKX1FPU19UWVBFX0NPTlRST0wJCS8qKjwgQ29udHJvbCB0cmFmZmljLgkJCSovCit9IHBqX3Fvc190eXBlOworCisvKioKKyAqIEJpdG1hc2sgZmxhZyB0byBpbmRpY2F0ZSB3aGljaCBRb1MgbGF5ZXIgc2V0dGluZyBpcyBzZXQgaW4gdGhlIAorICogXGEgZmxhZ3MgZmllbGQgb2YgdGhlICNwal9xb3NfcGFyYW1zIHN0cnVjdHVyZS4gCisgKi8KK3R5cGVkZWYgZW51bSBwal9xb3NfZmxhZworeworICAgIFBKX1FPU19QQVJBTV9IQVNfRFNDUCA9IDEsCSAgICAvKio8IERTQ1AgZmllbGQgaXMgc2V0LgkgICAgKi8KKyAgICBQSl9RT1NfUEFSQU1fSEFTX1NPX1BSSU8gPSAyLCAgIC8qKjwgU29ja2V0IFNPX1BSSU9SSVRZCSAgICAqLworICAgIFBKX1FPU19QQVJBTV9IQVNfV01NID0gNAkgICAgLyoqPCBXTU0gIGZpZWxkIGlzIHNldC4gCSAgICAqLworfSBwal9xb3NfZmxhZzsKKworCisvKioKKyAqIFN0YW5kYXJkIFdNTSBwcmlvcml0aWVzLgorICovCit0eXBlZGVmIGVudW0gcGpfcW9zX3dtbV9wcmlvCit7CisgICAgUEpfUU9TX1dNTV9QUklPX0JVTEtfRUZGT1JULAkvKio8IEJ1bGsgZWZmb3J0IHByaW9yaXR5ICAgKi8KKyAgICBQSl9RT1NfV01NX1BSSU9fQlVMSywJCS8qKjwgQnVsayBwcmlvcml0eS4JICAgICovCisgICAgUEpfUU9TX1dNTV9QUklPX1ZJREVPLAkJLyoqPCBWaWRlbyBwcmlvcml0eQkgICAgKi8KKyAgICBQSl9RT1NfV01NX1BSSU9fVk9JQ0UJCS8qKjwgVm9pY2UgcHJpb3JpdHkJICAgICovCit9IHBqX3Fvc193bW1fcHJpbzsKKworCisvKioKKyAqIFFvUyBwYXJhbWV0ZXJzIHRvIGJlIHNldCBvciByZXRyaWV2ZWQgdG8vZnJvbSB0aGUgc29ja2V0LgorICovCit0eXBlZGVmIHN0cnVjdCBwal9xb3NfcGFyYW1zCit7CisgICAgcGpfdWludDhfdCAgICAgIGZsYWdzOyAgICAvKio8IERldGVybWluZXMgd2hpY2ggdmFsdWVzIHRvIAorCQkJCSAgIHNldCwgYml0bWFzayBvZiBwal9xb3NfZmxhZwkgICAgKi8KKyAgICBwal91aW50OF90ICAgICAgZHNjcF92YWw7IC8qKjwgVGhlIDYgYml0cyBEU0NQIHZhbHVlIHRvIHNldAkgICAgKi8KKyAgICBwal91aW50OF90ICAgICAgc29fcHJpbzsgIC8qKjwgU09fUFJJT1JJVFkgdmFsdWUJCSAgICAqLworICAgIHBqX3Fvc193bW1fcHJpbyB3bW1fcHJpbzsgLyoqPCBXTU0gcHJpb3JpdHkgdmFsdWUJCSAgICAqLworfSBwal9xb3NfcGFyYW1zOworCisKKworLyoqCisgKiBUaGlzIGlzIHRoZSBoaWdoIGxldmVsIGFuZCBwb3J0YWJsZSBBUEkgdG8gZW5hYmxlIFFvUyBvbiB0aGUgc3BlY2lmaWVkIAorICogc29ja2V0LCBieSBzZXR0aW5nIHRoZSB0cmFmZmljIHR5cGUgdG8gdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXIuCisgKgorICogQHBhcmFtIHNvY2sJICAgIFRoZSBzb2NrZXQuCisgKiBAcGFyYW0gdHlwZQkgICAgVHJhZmZpYyB0eXBlIHRvIGJlIHNldC4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIGlmIGF0IGxlYXN0IExheWVyIDIgb3IgTGF5ZXIgMyBzZXR0aW5nIGlzCisgKgkJICAgIHN1Y2Nlc3NmdWxseSBzZXQuIElmIGJvdGggTGF5ZXIgMiBhbmQgTGF5ZXIgMyBzZXR0aW5ncworICoJCSAgICBjYW4ndCBiZSBzZXQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZXJyb3IuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2V0X3Fvc190eXBlKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgIHBqX3Fvc190eXBlIHR5cGUpOworCisvKioKKyAqIFRoaXMgaXMgdGhlIGhpZ2ggbGV2ZWwgYW5kIHBvcnRhYmxlIEFQSSB0byBnZXQgdGhlIHRyYWZmaWMgdHlwZSB0aGF0IGhhcworICogYmVlbiBzZXQgb24gdGhlIHNvY2tldC4gT24gb2NjYXNpb25zIHdoZXJlIHRoZSBMYXllciAyIG9yIExheWVyIDMgc2V0dGluZ3MKKyAqIHdlcmUgbW9kaWZpZWQgYnkgdXNpbmcgbG93IGxldmVsIEFQSSwgdGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIGFwcHJveGltYXRpb24KKyAqIG9mIHRoZSBjbG9zZXN0IFFvUyB0eXBlIHRoYXQgbWF0Y2hlcyB0aGUgc2V0dGluZ3MuCisgKgorICogQHBhcmFtIHNvY2sJICAgIFRoZSBzb2NrZXQuCisgKiBAcGFyYW0gcF90eXBlICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgdHJhZmZpYyB0eXBlIG9mIHRoZSBzb2NrZXQuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBpZiB0cmFmZmljIHR5cGUgZm9yIHRoZSBzb2NrZXQgY2FuIGJlIG9idGFpbmVkCisgKgkJICAgIG9yIGFwcHJveGltYXRlZC4uCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NvY2tfZ2V0X3Fvc190eXBlKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgIHBqX3Fvc190eXBlICpwX3R5cGUpOworCisKKy8qKgorICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGFwcGx5IFFvUyB0byB0aGUgc29ja2V0LCBhbmQgcHJpbnQgZXJyb3IKKyAqIGxvZ2dpbmcgaWYgdGhlIG9wZXJhdGlvbnMgZmFpbGVkLiBCb3RoIFFvUyB0cmFmZmljIHR5cGUgYW5kIHRoZSBsb3cgbGV2ZWwKKyAqIFFvUyBwYXJhbWV0ZXJzIGNhbiBiZSBhcHBsaWVkIHdpdGggdGhpcyBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0gc29jawkJVGhlIHNvY2tldCBoYW5kbGUuCisgKiBAcGFyYW0gcW9zX3R5cGUJUW9TIHRyYWZmaWMgdHlwZS4gVGhlIFFvUyB0cmFmZmljIHR5cGUgd2lsbCBiZSBhcHBsaWVkCisgKgkJCW9ubHkgaWYgdGhlIHZhbHVlIGlzIG5vdCBQSl9RT1NfVFlQRV9CRVNUX0VGRk9SVCwKKyAqIEBwYXJhbSBxb3NfcGFyYW1zCU9wdGlvbmFsIGxvdy1sZXZlbCBRb1MgcGFyYW1ldGVycy4gVGhpcyB3aWxsIGJlIAorICoJCQlhcHBsaWVkIG9ubHkgaWYgdGhpcyBhcmd1bWVudCBpcyBub3QgTlVMTCBhbmQgdGhlIAorICoJCQlmbGFncyBpbnNpZGUgdGhlIHN0cnVjdHVyZSBpcyBub24temVyby4gVXBvbiByZXR1cm4sIAorICoJCQl0aGUgZmxhZ3Mgd2lsbCBpbmRpY2F0ZSB3aGljaCBwYXJhbWV0ZXJzIGhhdmUgYmVlbiAKKyAqCQkJYXBwbGllZCBzdWNjZXNzZnVsbHkuCisgKiBAcGFyYW0gbG9nX2xldmVsCVRoaXMgZnVuY3Rpb24gd2lsbCBwcmludCB0byBsb2cgYXQgdGhpcyBsZXZlbCB1cG9uCisgKgkJCWVuY291bnRlcmluZyBlcnJvcnMuCisgKiBAcGFyYW0gbG9nX3NlbmRlcglPcHRpb25hbCBzZW5kZXIgbmFtZSBpbiB0aGUgbG9nLgorICogQHBhcmFtIHNvY2tfbmFtZQlPcHRpb25hbCBuYW1lIHRvIGhlbHAgaWRlbnRpZnkgdGhlIHNvY2tldCBpbiB0aGUgbG9nLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1MgaWYgYXQgbGVhc3QgTGF5ZXIgMiBvciBMYXllciAzIHNldHRpbmcgaXMKKyAqCQkJc3VjY2Vzc2Z1bGx5IHNldC4gSWYgYm90aCBMYXllciAyIGFuZCBMYXllciAzIHNldHRpbmdzCisgKgkJCWNhbid0IGJlIHNldCwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBlcnJvci4KKyAqCisgKiBAc2VlIHBqX3NvY2tfYXBwbHlfcW9zMigpCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NvY2tfYXBwbHlfcW9zKHBqX3NvY2tfdCBzb2NrLAorCQkJCSAgICAgICBwal9xb3NfdHlwZSBxb3NfdHlwZSwKKwkJCQkgICAgICAgcGpfcW9zX3BhcmFtcyAqcW9zX3BhcmFtcywKKwkJCQkgICAgICAgdW5zaWduZWQgbG9nX2xldmVsLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpsb2dfc2VuZGVyLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpzb2NrX25hbWUpOworCisvKioKKyAqIFZhcmlhbnQgb2YgI3BqX3NvY2tfYXBwbHlfcW9zKCkgd2hlcmUgdGhlIFxhIHFvc19wYXJhbXMgcGFyYW1ldGVyIGlzCisgKiBjb25zdC4KKyAqCisgKiBAc2VlIHBqX3NvY2tfYXBwbHlfcW9zKCkKKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19hcHBseV9xb3MyKHBqX3NvY2tfdCBzb2NrLAorIAkJCQkgICAgICAgIHBqX3Fvc190eXBlIHFvc190eXBlLAorCQkJCSAgICAgICAgY29uc3QgcGpfcW9zX3BhcmFtcyAqcW9zX3BhcmFtcywKKwkJCQkgICAgICAgIHVuc2lnbmVkIGxvZ19sZXZlbCwKKwkJCQkgICAgICAgIGNvbnN0IGNoYXIgKmxvZ19zZW5kZXIsCisJCQkJICAgICAgICBjb25zdCBjaGFyICpzb2NrX25hbWUpOworCisvKioKKyAqIFJldHJpZXZlIHRoZSBzdGFuZGFyZCBtYXBwaW5nIG9mIFFvUyBwYXJhbXMgZm9yIHRoZSBzcGVjaWZpZWQgdHJhZmZpYworICogdHlwZS4KKyAqCisgKiBAcGFyYW0gdHlwZQkgICAgVGhlIHRyYWZmaWMgdHlwZSBmcm9tIHdoaWNoIHRoZSBRb1MgcGFyYW1ldGVycworICoJCSAgICBhcmUgdG8gYmUgcmV0cmlldmVkLgorICogQHBhcmFtIHBfcGFyYW0gICBQb2ludGVyIHRvIHJlY2VpdmUgdGhlIFFvUyBwYXJhbWV0ZXJzLgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2VzcyBvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAqLyAKK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3Fvc19nZXRfcGFyYW1zKHBqX3Fvc190eXBlIHR5cGUsIAorCQkJCSAgICAgICBwal9xb3NfcGFyYW1zICpwX3BhcmFtKTsKKworCisvKioKKyAqIFJldHJpZXZlIHRoZSB0cmFmZmljIHR5cGUgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgUW9TIHBhcmFtZXRlcnMuCisgKiBJZiBubyBleGFjdCBtYXRjaGluZyBpcyBmb3VuZCwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhbgorICogYXBwcm94aW1hdGlvbiBvZiB0aGUgY2xvc2VzdCBtYXRjaGluZyB0cmFmZmljIHR5cGUgZm9yIHRoZSBzcGVjaWZpZWQKKyAqIFFvUyBwYXJhbWV0ZXJzLgorICoKKyAqIEBwYXJhbSBwYXJhbQkgICAgU3RydWN0dXJlIGNvbnRhaW5pbmcgUW9TIHBhcmFtZXRlcnMgdG8gbWFwIGludG8KKyAqCQkgICAgInN0YW5kYXJkIiB0cmFmZmljIHR5cGVzLgorICogQHBhcmFtIHBfdHlwZSAgICBQb2ludGVyIHRvIHJlY2VpdmUgdGhlIHRyYWZmaWMgdHlwZS4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3Mgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisgKi8gCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9xb3NfZ2V0X3R5cGUoY29uc3QgcGpfcW9zX3BhcmFtcyAqcGFyYW0sCisJCQkJICAgICBwal9xb3NfdHlwZSAqcF90eXBlKTsKKworCisvKioKKyAqIFRoaXMgaXMgYSBsb3cgbGV2ZWwgQVBJIHRvIHNldCBRb1MgcGFyYW1ldGVycyB0byB0aGUgc29ja2V0LgorICoKKyAqIEBwYXJhbSBzb2NrCSAgICBUaGUgc29ja2V0LgorICogQHBhcmFtIHBhcmFtCSAgICBTdHJ1Y3R1cmUgY29udGFpbmluZyBRb1MgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkCisgKgkJICAgIHRvIHRoZSBzb2NrZXQuIFVwb24gcmV0dXJuLCB0aGUgXGEgZmxhZ3MgZmllbGQKKyAqCQkgICAgb2YgdGhpcyBzdHJ1Y3R1cmUgd2lsbCBiZSBzZXQgd2l0aCBiaXRtYXNrIHZhbHVlCisgKgkJICAgIGluZGljYXRpbmcgd2hpY2ggUW9TIHNldHRpbmdzIGhhdmUgc3VjY2Vzc2Z1bGx5CisgKgkJICAgIGJlZW4gYXBwbGllZCB0byB0aGUgc29ja2V0LgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1MgaWYgYXQgbGVhc3Qgb25lIGZpZWxkIHNldHRpbmcgaGFzIGJlZW4KKyAqCQkgICAgc3VjY2Vzc2Z1bGx5IHNldC4gSWYgbm8gc2V0dGluZyBjYW4ndCBiZSBzZXQsIAorICoJCSAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGVycm9yLgorICovIAorUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc29ja19zZXRfcW9zX3BhcmFtcyhwal9zb2NrX3Qgc29jaywKKwkJCQkJICAgIHBqX3Fvc19wYXJhbXMgKnBhcmFtKTsKKworLyoqCisgKiBUaGlzIGlzIGEgbG93IGxldmVsIEFQSSB0byBnZXQgUW9TIHBhcmFtZXRlcnMgZnJvbSB0aGUgc29ja2V0LgorICoKKyAqIEBwYXJhbSBzb2NrCSAgICBUaGUgc29ja2V0LgorICogQHBhcmFtIHBfcGFyYW0gICBQb2ludGVyIHRvIHJlY2VpdmUgdGhlIHBhcmFtZXRlcnMuIFVwb24gcmV0dXJuaW5nCisgKgkJICAgIHN1Y2Nlc3NmdWxseSwgdGhlIFxhIGZsYWdzIGZpZWxkIG9mIHRoaXMgc3RydWN0dXJlCisgKgkJICAgIHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgYml0bWFzaworICoJCSAgICB0byBpbmRpY2F0ZSB3aGljaCBmaWVsZHMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseQorICoJCSAgICByZXRyaWV2ZWQuCisgKgorICogQHJldHVybgkgICAgUEpfU1VDQ0VTUyBvbiBzdWNjZXNzIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zb2NrX2dldF9xb3NfcGFyYW1zKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgICAgcGpfcW9zX3BhcmFtcyAqcF9wYXJhbSk7CisKKworLyoqCisgKiBAfQorICovCisKKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpfU09DS19RT1NfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovc29ja19zZWxlY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzM5ZGIxCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9zb2NrX3NlbGVjdC5oCkBAIC0wLDAgKzEsMTUyIEBACisvKiAkSWQ6IHNvY2tfc2VsZWN0LmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9TRUxFQ1RfSF9fCisjZGVmaW5lIF9fUEpfU0VMRUNUX0hfXworCisvKioKKyAqIEBmaWxlIHNvY2tfc2VsZWN0LmgKKyAqIEBicmllZiBTb2NrZXQgc2VsZWN0KCkuCisgKi8KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisKK1BKX0JFR0lOX0RFQ0wgCisKKy8qKgorICogQGRlZmdyb3VwIFBKX1NPQ0tfU0VMRUNUIFNvY2tldCBzZWxlY3QoKSBBUEkuCisgKiBAaW5ncm91cCBQSl9JTworICogQHsKKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHBvcnRhYmxlIGFic3RyYWN0aW9uIGZvciBcYSBzZWxlY3QoKSBsaWtlIEFQSS4KKyAqIFRoZSBhYnN0cmFjdGlvbiBpcyBuZWVkZWQgc28gdGhhdCBpdCBjYW4gdXRpbGl6ZSB2YXJpb3VzIGV2ZW50CisgKiBkaXNwYXRjaGluZyBtZWNoYW5pc21zIHRoYXQgYXJlIGF2YWlsYWJsZSBhY3Jvc3MgcGxhdGZvcm1zLgorICoKKyAqIFRoZSBBUEkgaXMgdmVyeSBzaW1pbGFyIHRvIG5vcm1hbCBcYSBzZWxlY3QoKSB1c2FnZS4gCisgKgorICogXHNlY3Rpb24gcGpfc29ja19zZWxlY3RfZXhhbXBsZXNfc2VjIEV4YW1wbGVzCisgKgorICogRm9yIHNvbWUgZXhhbXBsZXMgb24gaG93IHRvIHVzZSB0aGUgc2VsZWN0IEFQSSwgcGxlYXNlIHNlZToKKyAqCisgKiAgLSBccmVmIHBhZ2VfcGpsaWJfc2VsZWN0X3Rlc3QKKyAqLworCisvKioKKyAqIFBvcnRhYmxlIHN0cnVjdHVyZSBkZWNsYXJhdGlvbnMgZm9yIHBqX2ZkX3NldC4KKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBwal9zb2NrX3NlbGVjdCgpIGRvZXMgbm90IHVzZSB0aGlzIHN0cnVjdHVyZSAKKyAqIHBlci1zZSwgYnV0IGluc3RlYWQgaXQgd2lsbCB1c2UgdGhlIG5hdGl2ZSBmZF9zZXQgc3RydWN0dXJlLiBIb3dldmVyLAorICogd2UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGUgc2l6ZSBvZiBwal9mZF9zZXRfdCBjYW4gYWNjb21vZGF0ZSB0aGUKKyAqIG5hdGl2ZSBmZF9zZXQgc3RydWN0dXJlLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9mZF9zZXRfdAoreworICAgIHBqX3NvY2tfdCBkYXRhW1BKX0lPUVVFVUVfTUFYX0hBTkRMRVMrIDRdOyAvKio8IE9wYXF1ZSBidWZmZXIgZm9yIGZkX3NldCAqLworfSBwal9mZF9zZXRfdDsKKworCisvKioKKyAqIEluaXRpYWxpemUgdGhlIGRlc2NyaXB0b3Igc2V0IHBvaW50ZWQgdG8gYnkgZmRzZXRwIHRvIHRoZSBudWxsIHNldC4KKyAqCisgKiBAcGFyYW0gZmRzZXRwICAgIFRoZSBkZXNjcmlwdG9yIHNldC4KKyAqLworUEpfREVDTCh2b2lkKSBQSl9GRF9aRVJPKHBqX2ZkX3NldF90ICpmZHNldHApOworCisKKy8qKgorICogVGhpcyBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgYXBwbGljYXRpb24gc2hvdWxkbid0IHVzZSB0aGlzLgorICogCisgKiBHZXQgdGhlIG51bWJlciBvZiBkZXNjcmlwdG9ycyBpbiB0aGUgc2V0LiBUaGlzIGlzIGRlZmluZWQgaW4gc29ja19zZWxlY3QuYworICogVGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBudW1iZXIgb2Ygc29ja2V0cyBzZXQgZnJvbSBQSl9GRF9TRVQKKyAqIG9wZXJhdGlvbi4gV2hlbiB0aGUgc2V0IGlzIG1vZGlmaWVkIGJ5IG90aGVyIG1lYW5zIChzdWNoIGFzIGJ5IHNlbGVjdCgpKSwKKyAqIHRoZSBjb3VudCB3aWxsIG5vdCBiZSByZWZsZWN0ZWQgaGVyZS4KKyAqCisgKiBAcGFyYW0gZmRzZXRwICAgIFRoZSBkZXNjcmlwdG9yIHNldC4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgIE51bWJlciBvZiBkZXNjcmlwdG9ycyBpbiB0aGUgc2V0LgorICovCitQSl9ERUNMKHBqX3NpemVfdCkgUEpfRkRfQ09VTlQoY29uc3QgcGpfZmRfc2V0X3QgKmZkc2V0cCk7CisKKworLyoqCisgKiBBZGQgdGhlIGZpbGUgZGVzY3JpcHRvciBmZCB0byB0aGUgc2V0IHBvaW50ZWQgdG8gYnkgZmRzZXRwLiAKKyAqIElmIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQgaXMgYWxyZWFkeSBpbiB0aGlzIHNldCwgdGhlcmUgc2hhbGwgYmUgbm8gZWZmZWN0CisgKiBvbiB0aGUgc2V0LCBub3Igd2lsbCBhbiBlcnJvciBiZSByZXR1cm5lZC4KKyAqCisgKiBAcGFyYW0gZmQJICAgIFRoZSBzb2NrZXQgZGVzY3JpcHRvci4KKyAqIEBwYXJhbSBmZHNldHAgICAgVGhlIGRlc2NyaXB0b3Igc2V0LgorICovCitQSl9ERUNMKHZvaWQpIFBKX0ZEX1NFVChwal9zb2NrX3QgZmQsIHBqX2ZkX3NldF90ICpmZHNldHApOworCisvKioKKyAqIFJlbW92ZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkIGZyb20gdGhlIHNldCBwb2ludGVkIHRvIGJ5IGZkc2V0cC4gCisgKiBJZiBmZCBpcyBub3QgYSBtZW1iZXIgb2YgdGhpcyBzZXQsIHRoZXJlIHNoYWxsIGJlIG5vIGVmZmVjdCBvbiB0aGUgc2V0LCAKKyAqIG5vciB3aWxsIGFuIGVycm9yIGJlIHJldHVybmVkLgorICoKKyAqIEBwYXJhbSBmZAkgICAgVGhlIHNvY2tldCBkZXNjcmlwdG9yLgorICogQHBhcmFtIGZkc2V0cCAgICBUaGUgZGVzY3JpcHRvciBzZXQuCisgKi8KK1BKX0RFQ0wodm9pZCkgUEpfRkRfQ0xSKHBqX3NvY2tfdCBmZCwgcGpfZmRfc2V0X3QgKmZkc2V0cCk7CisKKworLyoqCisgKiBFdmFsdWF0ZSB0byBub24temVybyBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkIGlzIGEgbWVtYmVyIG9mIHRoZSBzZXQgCisgKiBwb2ludGVkIHRvIGJ5IGZkc2V0cCwgYW5kIHNoYWxsIGV2YWx1YXRlIHRvIHplcm8gb3RoZXJ3aXNlLgorICoKKyAqIEBwYXJhbSBmZAkgICAgVGhlIHNvY2tldCBkZXNjcmlwdG9yLgorICogQHBhcmFtIGZkc2V0cCAgICBUaGUgZGVzY3JpcHRvciBzZXQuCisgKgorICogQHJldHVybgkgICAgTm9uemVybyBpZiBmZCBpcyBtZW1iZXIgb2YgdGhlIGRlc2NyaXB0b3Igc2V0LgorICovCitQSl9ERUNMKHBqX2Jvb2xfdCkgUEpfRkRfSVNTRVQocGpfc29ja190IGZkLCBjb25zdCBwal9mZF9zZXRfdCAqZmRzZXRwKTsKKworCisvKioKKyAqIFRoaXMgZnVuY3Rpb24gd2FpdCBmb3IgYSBudW1iZXIgb2YgZmlsZSAgZGVzY3JpcHRvcnMgdG8gY2hhbmdlIHN0YXR1cy4KKyAqIFRoZSBiZWhhdmlvdXIgaXMgdGhlIHNhbWUgYXMgc2VsZWN0KCkgZnVuY3Rpb24gY2FsbCB3aGljaCBhcHBlYXIgaW4KKyAqIHN0YW5kYXJkIEJTRCBzb2NrZXQgbGlicmFyaWVzLgorICoKKyAqIEBwYXJhbSBuCSAgICBPbiBVbmljZXMsIHRoaXMgc3BlY2lmaWVzIHRoZSBoaWdoZXN0LW51bWJlcmVkCisgKgkJICAgIGRlc2NyaXB0b3IgaW4gYW55IG9mIHRoZSB0aHJlZSBzZXQsIHBsdXMgMS4gT24gV2luZG93cywKKyAqCQkgICAgdGhlIHZhbHVlIGlzIGlnbm9yZWQuCisgKiBAcGFyYW0gcmVhZGZkcyAgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYSBzZXQgb2Ygc29ja2V0cyB0byBiZSBjaGVja2VkIGZvciAKKyAqCQkgICAgcmVhZGFiaWxpdHkuCisgKiBAcGFyYW0gd3JpdGVmZHMgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYSBzZXQgb2Ygc29ja2V0cyB0byBiZSBjaGVja2VkIGZvciAKKyAqCQkgICAgd3JpdGFiaWxpdHkuCisgKiBAcGFyYW0gZXhjZXB0ZmRzIE9wdGlvbmFsIHBvaW50ZXIgdG8gYSBzZXQgb2Ygc29ja2V0cyB0byBiZSBjaGVja2VkIGZvciAKKyAqCQkgICAgZXJyb3JzLgorICogQHBhcmFtIHRpbWVvdXQgICBNYXhpbXVtIHRpbWUgZm9yIHNlbGVjdCB0byB3YWl0LCBvciBudWxsIGZvciBibG9ja2luZyAKKyAqCQkgICAgb3BlcmF0aW9ucy4KKyAqCisgKiBAcmV0dXJuCSAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHNvY2tldCBoYW5kbGVzIHRoYXQgYXJlIHJlYWR5LCBvcgorICoJCSAgICB6ZXJvIGlmIHRoZSB0aW1lIGxpbWl0IGV4cGlyZWQsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkLgorICovCitQSl9ERUNMKGludCkgcGpfc29ja19zZWxlY3QoIGludCBuLCAKKwkJCSAgICAgcGpfZmRfc2V0X3QgKnJlYWRmZHMsIAorCQkJICAgICBwal9mZF9zZXRfdCAqd3JpdGVmZHMsCisJCQkgICAgIHBqX2ZkX3NldF90ICpleGNlcHRmZHMsIAorCQkJICAgICBjb25zdCBwal90aW1lX3ZhbCAqdGltZW91dCk7CisKKworLyoqCisgKiBAfQorICovCisKKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpfU0VMRUNUX0hfXyAqLwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9zc2xfc29jay5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9zc2xfc29jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYzA4YTkKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3NzbF9zb2NrLmgKQEAgLTAsMCArMSwxMDU5IEBACisvKiAkSWQ6IHNzbF9zb2NrLmggNDUwNiAyMDEzLTA0LTI2IDA2OjAxOjQzWiBiZW5ueWxwICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX1NTTF9TT0NLX0hfXworI2RlZmluZSBfX1BKX1NTTF9TT0NLX0hfXworCisvKioKKyAqIEBmaWxlIHNzbF9zb2NrLmgKKyAqIEBicmllZiBTZWN1cmUgc29ja2V0CisgKi8KKworI2luY2x1ZGUgPHBqL2lvcXVldWUuaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovc29ja19xb3MuaD4KKworCitQSl9CRUdJTl9ERUNMCisKKy8qKgorICogQGRlZmdyb3VwIFBKX1NTTF9TT0NLIFNlY3VyZSBzb2NrZXQgSS9PCisgKiBAYnJpZWYgU2VjdXJlIHNvY2tldCBwcm92aWRlcyBzZWN1cml0eSBvbiBzb2NrZXQgb3BlcmF0aW9uIHVzaW5nIHN0YW5kYXJkCisgKiBzZWN1cml0eSBwcm90b2NvbHMgc3VjaCBhcyBTU0wgYW5kIFRMUy4KKyAqIEBpbmdyb3VwIFBKX0lPCisgKiBAeworICoKKyAqIFNlY3VyZSBzb2NrZXQgd3JhcHMgbm9ybWFsIHNvY2tldCBhbmQgYXBwbGllcyBzZWN1cml0eSBmZWF0dXJlcywgaS5lOiAKKyAqIHByaXZhY3kgYW5kIGRhdGEgaW50ZWdyaXR5LCBvbiB0aGUgc29ja2V0IHRyYWZmaWMsIHVzaW5nIHN0YW5kYXJkIHNlY3VyaXR5CisgKiBwcm90b2NvbHMgc3VjaCBhcyBTU0wgYW5kIFRMUy4KKyAqCisgKiBTZWN1cmUgc29ja2V0IGVtcGxveXMgYWN0aXZlIHNvY2tldCBvcGVyYXRpb25zLCB3aGljaCBpcyBzaW1pbGFyIHRvIChhbmQKKyAqIGRlc2NyaWJlZCBtb3JlIGRldGFpbCkgaW4gXHJlZiBQSl9BQ1RJVkVTT0NLLgorICovCisKKworIC8qKgorICogVGhpcyBvcGFxdWUgc3RydWN0dXJlIGRlc2NyaWJlcyB0aGUgc2VjdXJlIHNvY2tldC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfc3NsX3NvY2tfdCBwal9zc2xfc29ja190OworCisKKy8qKgorICogT3BhcXVlIGRlY2xhcmF0aW9uIG9mIGVuZHBvaW50IGNlcnRpZmljYXRlIG9yIGNyZWRlbnRpYWxzLiBUaGlzIG1heSBjb250YWlucworICogY2VydGlmaWNhdGUsIHByaXZhdGUga2V5LCBhbmQgdHJ1c3RlZCBDZXJ0aWZpY2F0ZSBBdXRob3JpdGllcyBsaXN0LgorICovCit0eXBlZGVmIHN0cnVjdCBwal9zc2xfY2VydF90IHBqX3NzbF9jZXJ0X3Q7CisKKwordHlwZWRlZiBlbnVtIHBqX3NzbF9jZXJ0X3ZlcmlmeV9mbGFnX3QKK3sKKyAgICAvKioKKyAgICAgKiBObyBlcnJvciBpbiB2ZXJpZmljYXRpb24uCisgICAgICovCisgICAgUEpfU1NMX0NFUlRfRVNVQ0NFU1MJCQkJPSAwLAorCisgICAgLyoqCisgICAgICogVGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQuCisgICAgICovCisgICAgUEpfU1NMX0NFUlRfRUlTU1VFUl9OT1RfRk9VTkQJCQk9ICgxIDw8IDApLAorCisgICAgLyoqCisgICAgICogVGhlIGNlcnRpZmljYXRlIGlzIHVudHJ1c3RlZC4KKyAgICAgKi8KKyAgICBQSl9TU0xfQ0VSVF9FVU5UUlVTVEVECQkJCT0gKDEgPDwgMSksCisKKyAgICAvKioKKyAgICAgKiBUaGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQgb3Igbm90IHlldCB2YWxpZC4KKyAgICAgKi8KKyAgICBQSl9TU0xfQ0VSVF9FVkFMSURJVFlfUEVSSU9ECQkJPSAoMSA8PCAyKSwKKworICAgIC8qKgorICAgICAqIE9uZSBvciBtb3JlIGZpZWxkcyBvZiB0aGUgY2VydGlmaWNhdGUgY2Fubm90IGJlIGRlY29kZWQgZHVlIHRvCisgICAgICogaW52YWxpZCBmb3JtYXQuCisgICAgICovCisgICAgUEpfU1NMX0NFUlRfRUlOVkFMSURfRk9STUFUCQkJCT0gKDEgPDwgMyksCisKKyAgICAvKioKKyAgICAgKiBUaGUgY2VydGlmaWNhdGUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgcHVycG9zZS4KKyAgICAgKi8KKyAgICBQSl9TU0xfQ0VSVF9FSU5WQUxJRF9QVVJQT1NFCQkJPSAoMSA8PCA0KSwKKworICAgIC8qKgorICAgICAqIFRoZSBpc3N1ZXIgaW5mbyBpbiB0aGUgY2VydGlmaWNhdGUgZG9lcyBub3QgbWF0Y2ggdG8gdGhlIChjYW5kaWRhdGUpIAorICAgICAqIGlzc3VlciBjZXJ0aWZpY2F0ZSwgZS5nOiBpc3N1ZXIgbmFtZSBub3QgbWF0Y2ggdG8gc3ViamVjdCBuYW1lCisgICAgICogb2YgKGNhbmRpZGF0ZSkgaXNzdWVyIGNlcnRpZmljYXRlLgorICAgICAqLworICAgIFBKX1NTTF9DRVJUX0VJU1NVRVJfTUlTTUFUQ0gJCQk9ICgxIDw8IDUpLAorCisgICAgLyoqCisgICAgICogVGhlIENSTCBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQgb3IgY2Fubm90IGJlIHJlYWQgcHJvcGVybHkuCisgICAgICovCisgICAgUEpfU1NMX0NFUlRfRUNSTF9GQUlMVVJFCQkJCT0gKDEgPDwgNiksCisKKyAgICAvKioKKyAgICAgKiBUaGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gcmV2b2tlZC4KKyAgICAgKi8KKyAgICBQSl9TU0xfQ0VSVF9FUkVWT0tFRAkJCQk9ICgxIDw8IDcpLAorCisgICAgLyoqCisgICAgICogVGhlIGNlcnRpZmljYXRlIGNoYWluIGxlbmd0aCBpcyB0b28gbG9uZy4KKyAgICAgKi8KKyAgICBQSl9TU0xfQ0VSVF9FQ0hBSU5fVE9PX0xPTkcJCQkJPSAoMSA8PCA4KSwKKworICAgIC8qKgorICAgICAqIFRoZSBzZXJ2ZXIgaWRlbnRpdHkgZG9lcyBub3QgbWF0Y2ggdG8gYW55IGlkZW50aXRpZXMgc3BlY2lmaWVkIGluIAorICAgICAqIHRoZSBjZXJ0aWZpY2F0ZSwgZS5nOiBzdWJqZWN0QWx0TmFtZSBleHRlbnNpb24sIHN1YmplY3QgY29tbW9uIG5hbWUuCisgICAgICogVGhpcyBmbGFnIHdpbGwgb25seSBiZSBzZXQgYnkgYXBwbGljYXRpb24gYXMgU1NMIHNvY2tldCBkb2VzIG5vdCAKKyAgICAgKiBwZXJmb3JtIHNlcnZlciBpZGVudGl0eSB2ZXJpZmljYXRpb24uCisgICAgICovCisgICAgUEpfU1NMX0NFUlRfRUlERU5USVRZX05PVF9NQVRDSAkJCT0gKDEgPDwgMzApLAorCisgICAgLyoqCisgICAgICogVW5rbm93biB2ZXJpZmljYXRpb24gZXJyb3IuCisgICAgICovCisgICAgUEpfU1NMX0NFUlRfRVVOS05PV04JCQkJPSAoMSA8PCAzMSkKKworfSBwal9zc2xfY2VydF92ZXJpZnlfZmxhZ190OworCisKK3R5cGVkZWYgZW51bSBwal9zc2xfY2VydF9uYW1lX3R5cGUKK3sKKyAgICBQSl9TU0xfQ0VSVF9OQU1FX1VOS05PV04gPSAwLAorICAgIFBKX1NTTF9DRVJUX05BTUVfUkZDODIyLAorICAgIFBKX1NTTF9DRVJUX05BTUVfRE5TLAorICAgIFBKX1NTTF9DRVJUX05BTUVfVVJJLAorICAgIFBKX1NTTF9DRVJUX05BTUVfSVAKK30gcGpfc3NsX2NlcnRfbmFtZV90eXBlOworCisvKioKKyAqIERlc2NyaWJlIHN0cnVjdHVyZSBvZiBjZXJ0aWZpY2F0ZSBpbmZvLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9zc2xfY2VydF9pbmZvIHsKKworICAgIHVuc2lnbmVkCXZlcnNpb247CSAgICAvKio8IENlcnRpZmljYXRlIHZlcnNpb24JKi8KKworICAgIHBqX3VpbnQ4X3QJc2VyaWFsX25vWzIwXTsJICAgIC8qKjwgU2VyaWFsIG51bWJlciwgYXJyYXkgb2YKKwkJCQkgICAgICAgICBvY3RldHMsIGZpcnN0IGluZGV4IGlzCisJCQkJCSBNU0IJCQkqLworCisgICAgc3RydWN0IHsKKyAgICAgICAgcGpfc3RyX3QJY247CSAgICAvKio8IENvbW1vbiBuYW1lCQkqLworICAgICAgICBwal9zdHJfdAlpbmZvOwkgICAgLyoqPCBPbmUgbGluZSBzdWJqZWN0LCBmaWVsZHMKKwkJCQkJIGFyZSBzZXBhcmF0ZWQgYnkgc2xhc2gsIGUuZzoKKwkJCQkJICJDTj1zYW1wbGUub3JnL09VPUhSRCIgKi8KKyAgICB9IHN1YmplY3Q7CQkJICAgIC8qKjwgU3ViamVjdAkJKi8KKworICAgIHN0cnVjdCB7CisgICAgICAgIHBqX3N0cl90CWNuOwkgICAgLyoqPCBDb21tb24gbmFtZQkJKi8KKyAgICAgICAgcGpfc3RyX3QJaW5mbzsJICAgIC8qKjwgT25lIGxpbmUgc3ViamVjdCwgZmllbGRzCisJCQkJCSBhcmUgc2VwYXJhdGVkIGJ5IHNsYXNoLiovCisgICAgfSBpc3N1ZXI7CQkJICAgIC8qKjwgSXNzdWVyCQkJKi8KKworICAgIHN0cnVjdCB7CisJcGpfdGltZV92YWwJc3RhcnQ7CSAgICAvKio8IFZhbGlkaXR5IHN0YXJ0CQkqLworCXBqX3RpbWVfdmFsCWVuZDsJICAgIC8qKjwgVmFsaWRpdHkgZW5kCQkqLworCXBqX2Jvb2xfdAlnbXQ7CSAgICAvKio8IEZsYWcgaWYgdmFsaWRpdHkgZGF0ZS90aW1lIAorCQkJCQkgdXNlIEdNVAkJKi8KKyAgICB9IHZhbGlkaXR5OwkJCSAgICAvKio8IFZhbGlkaXR5CQkqLworCisgICAgc3RydWN0IHsKKwl1bnNpZ25lZAljbnQ7CSAgICAvKio8ICMgb2YgZW50cnkJCSovCisJc3RydWN0IHsKKwkgICAgcGpfc3NsX2NlcnRfbmFtZV90eXBlIHR5cGU7CisJCQkJICAgIC8qKjwgTmFtZSB0eXBlCQkqLworCSAgICBwal9zdHJfdAluYW1lOwkgICAgLyoqPCBUaGUgbmFtZQkJKi8KKwl9ICplbnRyeTsJCSAgICAvKio8IFN1YmplY3QgYWx0IG5hbWUgZW50cnkgKi8KKyAgICB9IHN1YmpfYWx0X25hbWU7CQkgICAgLyoqPCBTdWJqZWN0IGFsdGVybmF0aXZlCisJCQkJCSBuYW1lIGV4dGVuc2lvbgkJKi8KKworfSBwal9zc2xfY2VydF9pbmZvOworCisKKy8qKgorICogQ3JlYXRlIGNyZWRlbnRpYWwgZnJvbSBmaWxlcy4KKyAqCisgKiBAcGFyYW0gQ0FfZmlsZQlUaGUgZmlsZSBvZiB0cnVzdGVkIENBIGxpc3QuCisgKiBAcGFyYW0gY2VydF9maWxlCVRoZSBmaWxlIG9mIGNlcnRpZmljYXRlLgorICogQHBhcmFtIHByaXZrZXlfZmlsZQlUaGUgZmlsZSBvZiBwcml2YXRlIGtleS4KKyAqIEBwYXJhbSBwcml2a2V5X3Bhc3MJVGhlIHBhc3N3b3JkIG9mIHByaXZhdGUga2V5LCBpZiBhbnkuCisgKiBAcGFyYW0gcF9jZXJ0CVBvaW50ZXIgdG8gY3JlZGVudGlhbCBpbnN0YW5jZSB0byBiZSBjcmVhdGVkLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgd2hlbiBzdWNjZXNzZnVsLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zc2xfY2VydF9sb2FkX2Zyb21fZmlsZXMocGpfcG9vbF90ICpwb29sLAorCQkJCQkJIGNvbnN0IHBqX3N0cl90ICpDQV9maWxlLAorCQkJCQkJIGNvbnN0IHBqX3N0cl90ICpjZXJ0X2ZpbGUsCisJCQkJCQkgY29uc3QgcGpfc3RyX3QgKnByaXZrZXlfZmlsZSwKKwkJCQkJCSBjb25zdCBwal9zdHJfdCAqcHJpdmtleV9wYXNzLAorCQkJCQkJIHBqX3NzbF9jZXJ0X3QgKipwX2NlcnQpOworCisKKy8qKgorICogRHVtcCBTU0wgY2VydGlmaWNhdGUgaW5mby4KKyAqCisgKiBAcGFyYW0gY2kJCVRoZSBjZXJ0aWZpY2F0ZSBpbmZvLgorICogQHBhcmFtIGluZGVudAlTdHJpbmcgZm9yIGxlZnQgaW5kZW50YXRpb24uCisgKiBAcGFyYW0gYnVmCQlUaGUgYnVmZmVyIHdoZXJlIGNlcnRpZmljYXRlIGluZm8gd2lsbCBiZSBwcmludGVkIG9uLgorICogQHBhcmFtIGJ1Zl9zaXplCVRoZSBidWZmZXIgc2l6ZS4KKyAqCisgKiBAcmV0dXJuCQlUaGUgbGVuZ3RoIG9mIHRoZSBkdW1wIHJlc3VsdCwgb3IgLTEgd2hlbiBidWZmZXIgc2l6ZQorICoJCQlpcyBub3Qgc3VmZmljaWVudC4KKyAqLworUEpfREVDTChwal9zc2l6ZV90KSBwal9zc2xfY2VydF9pbmZvX2R1bXAoY29uc3QgcGpfc3NsX2NlcnRfaW5mbyAqY2ksCisJCQkJCSAgY29uc3QgY2hhciAqaW5kZW50LAorCQkJCQkgIGNoYXIgKmJ1ZiwKKwkJCQkJICBwal9zaXplX3QgYnVmX3NpemUpOworCisKKy8qKgorICogR2V0IFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gZXJyb3IgbWVzc2FnZXMgZnJvbSB2ZXJpZmljYXRpb24gc3RhdHVzLgorICoKKyAqIEBwYXJhbSB2ZXJpZnlfc3RhdHVzCVRoZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHN0YXR1cy4KKyAqIEBwYXJhbSBlcnJvcl9zdHJpbmdzCUFycmF5IG9mIHN0cmluZ3MgdG8gcmVjZWl2ZSB0aGUgdmVyaWZpY2F0aW9uIGVycm9yIAorICoJCQltZXNzYWdlcy4KKyAqIEBwYXJhbSBjb3VudAkJT24gaW5wdXQgaXQgc3BlY2lmaWVzIG1heGltdW0gZXJyb3IgbWVzc2FnZXMgc2hvdWxkIGJlCisgKgkJCXJldHJpZXZlZC4gT24gb3V0cHV0IGl0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVycm9yCisgKgkJCW1lc3NhZ2VzIHJldHJpZXZlZC4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIHdoZW4gc3VjY2Vzc2Z1bC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3NsX2NlcnRfZ2V0X3ZlcmlmeV9zdGF0dXNfc3RyaW5ncygKKwkJCQkJCSBwal91aW50MzJfdCB2ZXJpZnlfc3RhdHVzLCAKKwkJCQkJCSBjb25zdCBjaGFyICplcnJvcl9zdHJpbmdzW10sCisJCQkJCQkgdW5zaWduZWQgKmNvdW50KTsKKworCisvKiogCisgKiBDaXBoZXIgc3VpdGVzIGVudW1lcmF0aW9uLgorICovCit0eXBlZGVmIGVudW0gcGpfc3NsX2NpcGhlciB7CisKKyAgICAvKiBOVUxMICovCisgICAgUEpfVExTX05VTExfV0lUSF9OVUxMX05VTEwgICAgICAgICAgICAgICAJPSAweDAwMDAwMDAwLAorCisgICAgLyogVExTL1NTTHYzICovCisgICAgUEpfVExTX1JTQV9XSVRIX05VTExfTUQ1ICAgICAgICAgICAgICAgICAJPSAweDAwMDAwMDAxLAorICAgIFBKX1RMU19SU0FfV0lUSF9OVUxMX1NIQSAgICAgICAgICAgICAgICAgCT0gMHgwMDAwMDAwMiwKKyAgICBQSl9UTFNfUlNBX1dJVEhfTlVMTF9TSEEyNTYgICAgICAgICAgICAgIAk9IDB4MDAwMDAwM0IsCisgICAgUEpfVExTX1JTQV9XSVRIX1JDNF8xMjhfTUQ1ICAgICAgICAgICAgICAJPSAweDAwMDAwMDA0LAorICAgIFBKX1RMU19SU0FfV0lUSF9SQzRfMTI4X1NIQSAgICAgICAgICAgICAgCT0gMHgwMDAwMDAwNSwKKyAgICBQSl9UTFNfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSAgICAgICAgIAk9IDB4MDAwMDAwMEEsCisgICAgUEpfVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSAgICAgICAgICAJPSAweDAwMDAwMDJGLAorICAgIFBKX1RMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEgICAgICAgICAgCT0gMHgwMDAwMDAzNSwKKyAgICBQSl9UTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2ICAgICAgIAk9IDB4MDAwMDAwM0MsCisgICAgUEpfVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NiAgICAgICAJPSAweDAwMDAwMDNELAorICAgIFBKX1RMU19ESF9EU1NfV0lUSF8zREVTX0VERV9DQkNfU0hBICAgICAgCT0gMHgwMDAwMDAwRCwKKyAgICBQSl9UTFNfREhfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSAgICAgIAk9IDB4MDAwMDAwMTAsCisgICAgUEpfVExTX0RIRV9EU1NfV0lUSF8zREVTX0VERV9DQkNfU0hBICAgICAJPSAweDAwMDAwMDEzLAorICAgIFBKX1RMU19ESEVfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSAgICAgCT0gMHgwMDAwMDAxNiwKKyAgICBQSl9UTFNfREhfRFNTX1dJVEhfQUVTXzEyOF9DQkNfU0hBICAgICAgIAk9IDB4MDAwMDAwMzAsCisgICAgUEpfVExTX0RIX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSAgICAgICAJPSAweDAwMDAwMDMxLAorICAgIFBKX1RMU19ESEVfRFNTX1dJVEhfQUVTXzEyOF9DQkNfU0hBICAgICAgCT0gMHgwMDAwMDAzMiwKKyAgICBQSl9UTFNfREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSAgICAgIAk9IDB4MDAwMDAwMzMsCisgICAgUEpfVExTX0RIX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NIQSAgICAgICAJPSAweDAwMDAwMDM2LAorICAgIFBKX1RMU19ESF9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEgICAgICAgCT0gMHgwMDAwMDAzNywKKyAgICBQSl9UTFNfREhFX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NIQSAgICAgIAk9IDB4MDAwMDAwMzgsCisgICAgUEpfVExTX0RIRV9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEgICAgICAJPSAweDAwMDAwMDM5LAorICAgIFBKX1RMU19ESF9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYgICAgCT0gMHgwMDAwMDAzRSwKKyAgICBQSl9UTFNfREhfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2ICAgIAk9IDB4MDAwMDAwM0YsCisgICAgUEpfVExTX0RIRV9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYgICAJPSAweDAwMDAwMDQwLAorICAgIFBKX1RMU19ESEVfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2ICAgCT0gMHgwMDAwMDA2NywKKyAgICBQSl9UTFNfREhfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2ICAgIAk9IDB4MDAwMDAwNjgsCisgICAgUEpfVExTX0RIX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NiAgICAJPSAweDAwMDAwMDY5LAorICAgIFBKX1RMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2ICAgCT0gMHgwMDAwMDA2QSwKKyAgICBQSl9UTFNfREhFX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NiAgIAk9IDB4MDAwMDAwNkIsCisgICAgUEpfVExTX0RIX2Fub25fV0lUSF9SQzRfMTI4X01ENSAgICAgICAgICAJPSAweDAwMDAwMDE4LAorICAgIFBKX1RMU19ESF9hbm9uX1dJVEhfM0RFU19FREVfQ0JDX1NIQSAgICAgCT0gMHgwMDAwMDAxQiwKKyAgICBQSl9UTFNfREhfYW5vbl9XSVRIX0FFU18xMjhfQ0JDX1NIQSAgICAgIAk9IDB4MDAwMDAwMzQsCisgICAgUEpfVExTX0RIX2Fub25fV0lUSF9BRVNfMjU2X0NCQ19TSEEgICAgICAJPSAweDAwMDAwMDNBLAorICAgIFBKX1RMU19ESF9hbm9uX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2ICAgCT0gMHgwMDAwMDA2QywKKyAgICBQSl9UTFNfREhfYW5vbl9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NiAgIAk9IDB4MDAwMDAwNkQsCisKKyAgICAvKiBUTFMgKGRlcHJlY2F0ZWQpICovCisgICAgUEpfVExTX1JTQV9FWFBPUlRfV0lUSF9SQzRfNDBfTUQ1ICAgICAgICAJPSAweDAwMDAwMDAzLAorICAgIFBKX1RMU19SU0FfRVhQT1JUX1dJVEhfUkMyX0NCQ180MF9NRDUgICAgCT0gMHgwMDAwMDAwNiwKKyAgICBQSl9UTFNfUlNBX1dJVEhfSURFQV9DQkNfU0hBICAgICAgICAgICAgIAk9IDB4MDAwMDAwMDcsCisgICAgUEpfVExTX1JTQV9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBICAgICAJPSAweDAwMDAwMDA4LAorICAgIFBKX1RMU19SU0FfV0lUSF9ERVNfQ0JDX1NIQSAgICAgICAgICAgICAgCT0gMHgwMDAwMDAwOSwKKyAgICBQSl9UTFNfREhfRFNTX0VYUE9SVF9XSVRIX0RFUzQwX0NCQ19TSEEgIAk9IDB4MDAwMDAwMEIsCisgICAgUEpfVExTX0RIX0RTU19XSVRIX0RFU19DQkNfU0hBICAgICAgICAgICAJPSAweDAwMDAwMDBDLAorICAgIFBKX1RMU19ESF9SU0FfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQSAgCT0gMHgwMDAwMDAwRSwKKyAgICBQSl9UTFNfREhfUlNBX1dJVEhfREVTX0NCQ19TSEEgICAgICAgICAgIAk9IDB4MDAwMDAwMEYsCisgICAgUEpfVExTX0RIRV9EU1NfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQSAJPSAweDAwMDAwMDExLAorICAgIFBKX1RMU19ESEVfRFNTX1dJVEhfREVTX0NCQ19TSEEgICAgICAgICAgCT0gMHgwMDAwMDAxMiwKKyAgICBQSl9UTFNfREhFX1JTQV9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBIAk9IDB4MDAwMDAwMTQsCisgICAgUEpfVExTX0RIRV9SU0FfV0lUSF9ERVNfQ0JDX1NIQSAgICAgICAgICAJPSAweDAwMDAwMDE1LAorICAgIFBKX1RMU19ESF9hbm9uX0VYUE9SVF9XSVRIX1JDNF80MF9NRDUgICAgCT0gMHgwMDAwMDAxNywKKyAgICBQSl9UTFNfREhfYW5vbl9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBIAk9IDB4MDAwMDAwMTksCisgICAgUEpfVExTX0RIX2Fub25fV0lUSF9ERVNfQ0JDX1NIQSAgICAgICAgICAJPSAweDAwMDAwMDFBLAorCisgICAgLyogU1NMdjMgKi8KKyAgICBQSl9TU0xfRk9SVEVaWkFfS0VBX1dJVEhfTlVMTF9TSEEgICAgICAgIAk9IDB4MDAwMDAwMUMsCisgICAgUEpfU1NMX0ZPUlRFWlpBX0tFQV9XSVRIX0ZPUlRFWlpBX0NCQ19TSEEJPSAweDAwMDAwMDFELAorICAgIFBKX1NTTF9GT1JURVpaQV9LRUFfV0lUSF9SQzRfMTI4X1NIQSAgICAgCT0gMHgwMDAwMDAxRSwKKyAgICAKKyAgICAvKiBTU0x2MiAqLworICAgIFBKX1NTTF9DS19SQzRfMTI4X1dJVEhfTUQ1ICAgICAgICAgICAgICAgCT0gMHgwMDAxMDA4MCwKKyAgICBQSl9TU0xfQ0tfUkM0XzEyOF9FWFBPUlQ0MF9XSVRIX01ENSAgICAgIAk9IDB4MDAwMjAwODAsCisgICAgUEpfU1NMX0NLX1JDMl8xMjhfQ0JDX1dJVEhfTUQ1ICAgICAgICAgICAJPSAweDAwMDMwMDgwLAorICAgIFBKX1NTTF9DS19SQzJfMTI4X0NCQ19FWFBPUlQ0MF9XSVRIX01ENSAgCT0gMHgwMDA0MDA4MCwKKyAgICBQSl9TU0xfQ0tfSURFQV8xMjhfQ0JDX1dJVEhfTUQ1ICAgICAgICAgIAk9IDB4MDAwNTAwODAsCisgICAgUEpfU1NMX0NLX0RFU182NF9DQkNfV0lUSF9NRDUgICAgICAgICAgICAJPSAweDAwMDYwMDQwLAorICAgIFBKX1NTTF9DS19ERVNfMTkyX0VERTNfQ0JDX1dJVEhfTUQ1ICAgICAgCT0gMHgwMDA3MDBDMAorCit9IHBqX3NzbF9jaXBoZXI7CisKKworLyoqCisgKiBHZXQgY2lwaGVyIGxpc3Qgc3VwcG9ydGVkIGJ5IFNTTC9UTFMgYmFja2VuZC4KKyAqCisgKiBAcGFyYW0gY2lwaGVycwlUaGUgY2lwaGVycyBidWZmZXIgdG8gcmVjZWl2ZSBjaXBoZXIgbGlzdC4KKyAqIEBwYXJhbSBjaXBoZXJfbnVtCU1heGltdW0gbnVtYmVyIG9mIGNpcGhlcnMgdG8gYmUgcmVjZWl2ZWQuCisgKgorICogQHJldHVybgkJUEpfU1VDQ0VTUyB3aGVuIHN1Y2Nlc3NmdWwuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NzbF9jaXBoZXJfZ2V0X2F2YWlsYWJsZXMocGpfc3NsX2NpcGhlciBjaXBoZXJzW10sCisJCQkJCSAgICAgICAgICB1bnNpZ25lZCAqY2lwaGVyX251bSk7CisKKworLyoqCisgKiBDaGVjayBpZiB0aGUgc3BlY2lmaWVkIGNpcGhlciBpcyBzdXBwb3J0ZWQgYnkgU1NML1RMUyBiYWNrZW5kLgorICoKKyAqIEBwYXJhbSBjaXBoZXIJVGhlIGNpcGhlci4KKyAqCisgKiBAcmV0dXJuCQlQSl9UUlVFIHdoZW4gc3VwcG9ydGVkLgorICovCitQSl9ERUNMKHBqX2Jvb2xfdCkgcGpfc3NsX2NpcGhlcl9pc19zdXBwb3J0ZWQocGpfc3NsX2NpcGhlciBjaXBoZXIpOworCisKKy8qKgorICogR2V0IGNpcGhlciBuYW1lIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gY2lwaGVyCVRoZSBjaXBoZXIuCisgKgorICogQHJldHVybgkJVGhlIGNpcGhlciBuYW1lIG9yIE5VTEwgaWYgY2lwaGVyIGlzIG5vdCByZWNvZ25pemVkLworICoJCQlzdXBwb3J0ZWQuCisgKi8KK1BKX0RFQ0woY29uc3QgY2hhciopIHBqX3NzbF9jaXBoZXJfbmFtZShwal9zc2xfY2lwaGVyIGNpcGhlcik7CisKKworLyoqCisgKiBHZXQgY2lwaGVyIElEIGZyb20gY2lwaGVyIG5hbWUgc3RyaW5nLgorICoKKyAqIEBwYXJhbSBjaXBoZXJfbmFtZQlUaGUgY2lwaGVyIG5hbWUgc3RyaW5nLgorICoKKyAqIEByZXR1cm4JCVRoZSBjaXBoZXIgSUQgb3IgUEpfVExTX1VOS05PV05fQ0lQSEVSIGlmIHRoZSBjaXBoZXIKKyAqCQkJbmFtZSBzdHJpbmcgaXMgbm90IHJlY29nbml6ZWQvc3VwcG9ydGVkLgorICovCitQSl9ERUNMKHBqX3NzbF9jaXBoZXIpIHBqX3NzbF9jaXBoZXJfaWQoY29uc3QgY2hhciAqY2lwaGVyX25hbWUpOworCisKKy8qKgorICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGNhbGxiYWNrcyB0byBiZSBjYWxsZWQgYnkgdGhlIHNlY3VyZSBzb2NrZXQuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX3NzbF9zb2NrX2NiCit7CisgICAgLyoqCisgICAgICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiBhIGRhdGEgYXJyaXZlcyBhcyB0aGUgcmVzdWx0IG9mCisgICAgICogcGpfc3NsX3NvY2tfc3RhcnRfcmVhZCgpLgorICAgICAqCisgICAgICogQHBhcmFtIHNzb2NrCVRoZSBzZWN1cmUgc29ja2V0LgorICAgICAqIEBwYXJhbSBkYXRhCVRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgbmV3IGRhdGEsIGlmIGFueS4gSWYgCisgICAgICoJCQl0aGUgc3RhdHVzIGFyZ3VtZW50IGlzIG5vbi1QSl9TVUNDRVNTLCB0aGlzIAorICAgICAqCQkJYXJndW1lbnQgbWF5IGJlIE5VTEwuCisgICAgICogQHBhcmFtIHNpemUJVGhlIGxlbmd0aCBvZiBkYXRhIGluIHRoZSBidWZmZXIuCisgICAgICogQHBhcmFtIHN0YXR1cwlUaGUgc3RhdHVzIG9mIHRoZSByZWFkIG9wZXJhdGlvbi4gVGhpcyBtYXkgY29udGFpbgorICAgICAqCQkJbm9uLVBKX1NVQ0NFU1MgZm9yIGV4YW1wbGUgd2hlbiB0aGUgVENQIGNvbm5lY3Rpb24KKyAgICAgKgkJCWhhcyBiZWVuIGNsb3NlZC4gSW4gdGhpcyBjYXNlLCB0aGUgYnVmZmVyIG1heQorICAgICAqCQkJY29udGFpbiBsZWZ0IG92ZXIgZGF0YSBmcm9tIHByZXZpb3VzIGNhbGxiYWNrIHdoaWNoCisgICAgICoJCQl0aGUgYXBwbGljYXRpb24gbWF5IHdhbnQgdG8gcHJvY2Vzcy4KKyAgICAgKiBAcGFyYW0gcmVtYWluZGVyCUlmIGFwcGxpY2F0aW9uIHdpc2hlcyB0byBsZWF2ZSBzb21lIGRhdGEgaW4gdGhlIAorICAgICAqCQkJYnVmZmVyIChjb21tb24gZm9yIFRDUCBhcHBsaWNhdGlvbnMpLCBpdCBzaG91bGQgCisgICAgICoJCQltb3ZlIHRoZSByZW1haW5kZXIgZGF0YSB0byB0aGUgZnJvbnQgcGFydCBvZiB0aGUgCisgICAgICoJCQlidWZmZXIgYW5kIHNldCB0aGUgcmVtYWluZGVyIGxlbmd0aCBoZXJlLiBUaGUgdmFsdWUKKyAgICAgKgkJCW9mIHRoaXMgcGFyYW1ldGVyIHdpbGwgYmUgaWdub3JlZCBmb3IgZGF0YWdyYW0KKyAgICAgKgkJCXNvY2tldHMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuCQlQSl9UUlVFIGlmIGZ1cnRoZXIgcmVhZCBpcyBkZXNpcmVkLCBhbmQgUEpfRkFMU0UgCisgICAgICoJCQl3aGVuIGFwcGxpY2F0aW9uIG5vIGxvbmdlciB3YW50cyB0byByZWNlaXZlIGRhdGEuCisgICAgICoJCQlBcHBsaWNhdGlvbiBtYXkgZGVzdHJveSB0aGUgc2VjdXJlIHNvY2tldCBpbiB0aGUKKyAgICAgKgkJCWNhbGxiYWNrIGFuZCByZXR1cm4gUEpfRkFMU0UgaGVyZS4KKyAgICAgKi8KKyAgICBwal9ib29sX3QgKCpvbl9kYXRhX3JlYWQpKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJICAgICAgdm9pZCAqZGF0YSwKKwkJCSAgICAgIHBqX3NpemVfdCBzaXplLAorCQkJICAgICAgcGpfc3RhdHVzX3Qgc3RhdHVzLAorCQkJICAgICAgcGpfc2l6ZV90ICpyZW1haW5kZXIpOworICAgIC8qKgorICAgICAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gYSBwYWNrZXQgYXJyaXZlcyBhcyB0aGUgcmVzdWx0IG9mCisgICAgICogcGpfc3NsX3NvY2tfc3RhcnRfcmVjdmZyb20oKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzc29jawlUaGUgc2VjdXJlIHNvY2tldC4KKyAgICAgKiBAcGFyYW0gZGF0YQlUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHBhY2tldCwgaWYgYW55LiBJZiAKKyAgICAgKgkJCXRoZSBzdGF0dXMgYXJndW1lbnQgaXMgbm9uLVBKX1NVQ0NFU1MsIHRoaXMgCisgICAgICoJCQlhcmd1bWVudCB3aWxsIGJlIHNldCB0byBOVUxMLgorICAgICAqIEBwYXJhbSBzaXplCVRoZSBsZW5ndGggb2YgcGFja2V0IGluIHRoZSBidWZmZXIuIElmIAorICAgICAqCQkJdGhlIHN0YXR1cyBhcmd1bWVudCBpcyBub24tUEpfU1VDQ0VTUywgdGhpcyAKKyAgICAgKgkJCWFyZ3VtZW50IHdpbGwgYmUgc2V0IHRvIHplcm8uCisgICAgICogQHBhcmFtIHNyY19hZGRyCVNvdXJjZSBhZGRyZXNzIG9mIHRoZSBwYWNrZXQuCisgICAgICogQHBhcmFtIGFkZHJfbGVuCUxlbmd0aCBvZiB0aGUgc291cmNlIGFkZHJlc3MuCisgICAgICogQHBhcmFtIHN0YXR1cwlUaGlzIGNvbnRhaW5zCisgICAgICoKKyAgICAgKiBAcmV0dXJuCQlQSl9UUlVFIGlmIGZ1cnRoZXIgcmVhZCBpcyBkZXNpcmVkLCBhbmQgUEpfRkFMU0UgCisgICAgICoJCQl3aGVuIGFwcGxpY2F0aW9uIG5vIGxvbmdlciB3YW50cyB0byByZWNlaXZlIGRhdGEuCisgICAgICoJCQlBcHBsaWNhdGlvbiBtYXkgZGVzdHJveSB0aGUgc2VjdXJlIHNvY2tldCBpbiB0aGUKKyAgICAgKgkJCWNhbGxiYWNrIGFuZCByZXR1cm4gUEpfRkFMU0UgaGVyZS4KKyAgICAgKi8KKyAgICBwal9ib29sX3QgKCpvbl9kYXRhX3JlY3Zmcm9tKShwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkgIHZvaWQgKmRhdGEsCisJCQkJICBwal9zaXplX3Qgc2l6ZSwKKwkJCQkgIGNvbnN0IHBqX3NvY2thZGRyX3QgKnNyY19hZGRyLAorCQkJCSAgaW50IGFkZHJfbGVuLAorCQkJCSAgcGpfc3RhdHVzX3Qgc3RhdHVzKTsKKworICAgIC8qKgorICAgICAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gZGF0YSBoYXMgYmVlbiBzZW50LgorICAgICAqCisgICAgICogQHBhcmFtIHNzb2NrCVRoZSBzZWN1cmUgc29ja2V0LgorICAgICAqIEBwYXJhbSBzZW5kX2tleQlLZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZW5kIG9wZXJhdGlvbi4KKyAgICAgKiBAcGFyYW0gc2VudAlJZiB2YWx1ZSBpcyBwb3NpdGl2ZSBub24temVybyBpdCBpbmRpY2F0ZXMgdGhlCisgICAgICoJCQludW1iZXIgb2YgZGF0YSBzZW50LiBXaGVuIHRoZSB2YWx1ZSBpcyBuZWdhdGl2ZSwKKyAgICAgKgkJCWl0IGNvbnRhaW5zIHRoZSBlcnJvciBjb2RlIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQKKyAgICAgKgkJCWJ5IG5lZ2F0aW5nIHRoZSB2YWx1ZSAoaS5lLiBzdGF0dXM9LXNlbnQpLgorICAgICAqCisgICAgICogQHJldHVybgkJQXBwbGljYXRpb24gbWF5IGRlc3Ryb3kgdGhlIHNlY3VyZSBzb2NrZXQgaW4gdGhlCisgICAgICoJCQljYWxsYmFjayBhbmQgcmV0dXJuIFBKX0ZBTFNFIGhlcmUuCisgICAgICovCisgICAgcGpfYm9vbF90ICgqb25fZGF0YV9zZW50KShwal9zc2xfc29ja190ICpzc29jaywKKwkJCSAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKnNlbmRfa2V5LAorCQkJICAgICAgcGpfc3NpemVfdCBzZW50KTsKKworICAgIC8qKgorICAgICAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gbmV3IGNvbm5lY3Rpb24gYXJyaXZlcyBhcyB0aGUgcmVzdWx0CisgICAgICogb2YgcGpfc3NsX3NvY2tfc3RhcnRfYWNjZXB0KCkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3NvY2sJVGhlIHNlY3VyZSBzb2NrZXQuCisgICAgICogQHBhcmFtIG5ld3NvY2sJVGhlIG5ldyBpbmNvbWluZyBzZWN1cmUgc29ja2V0LgorICAgICAqIEBwYXJhbSBzcmNfYWRkcglUaGUgc291cmNlIGFkZHJlc3Mgb2YgdGhlIGNvbm5lY3Rpb24uCisgICAgICogQHBhcmFtIGFkZHJfbGVuCUxlbmd0aCBvZiB0aGUgc291cmNlIGFkZHJlc3MuCisgICAgICoKKyAgICAgKiBAcmV0dXJuCQlQSl9UUlVFIGlmIGZ1cnRoZXIgYWNjZXB0KCkgaXMgZGVzaXJlZCwgYW5kIFBKX0ZBTFNFCisgICAgICoJCQl3aGVuIGFwcGxpY2F0aW9uIG5vIGxvbmdlciB3YW50cyB0byBhY2NlcHQgaW5jb21pbmcKKyAgICAgKgkJCWNvbm5lY3Rpb24uIEFwcGxpY2F0aW9uIG1heSBkZXN0cm95IHRoZSBzZWN1cmUgc29ja2V0CisgICAgICoJCQlpbiB0aGUgY2FsbGJhY2sgYW5kIHJldHVybiBQSl9GQUxTRSBoZXJlLgorICAgICAqLworICAgIHBqX2Jvb2xfdCAoKm9uX2FjY2VwdF9jb21wbGV0ZSkocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJICAgIHBqX3NzbF9zb2NrX3QgKm5ld3NvY2ssCisJCQkJICAgIGNvbnN0IHBqX3NvY2thZGRyX3QgKnNyY19hZGRyLAorCQkJCSAgICBpbnQgc3JjX2FkZHJfbGVuKTsKKworICAgIC8qKgorICAgICAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gcGVuZGluZyBjb25uZWN0IG9wZXJhdGlvbiBoYXMgYmVlbgorICAgICAqIGNvbXBsZXRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzc29jawlUaGUgc2VjdXJlIHNvY2tldC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzCVRoZSBjb25uZWN0aW9uIHJlc3VsdC4gSWYgY29ubmVjdGlvbiBoYXMgYmVlbgorICAgICAqCQkJc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkLCB0aGUgc3RhdHVzIHdpbGwgY29udGFpbgorICAgICAqCQkJUEpfU1VDQ0VTUy4KKyAgICAgKgorICAgICAqIEByZXR1cm4JCUFwcGxpY2F0aW9uIG1heSBkZXN0cm95IHRoZSBzZWN1cmUgc29ja2V0IGluIHRoZQorICAgICAqCQkJY2FsbGJhY2sgYW5kIHJldHVybiBQSl9GQUxTRSBoZXJlLiAKKyAgICAgKi8KKyAgICBwal9ib29sX3QgKCpvbl9jb25uZWN0X2NvbXBsZXRlKShwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkgICAgIHBqX3N0YXR1c190IHN0YXR1cyk7CisKK30gcGpfc3NsX3NvY2tfY2I7CisKKworLyoqIAorICogRW51bWVyYXRpb24gb2Ygc2VjdXJlIHNvY2tldCBwcm90b2NvbCB0eXBlcy4KKyAqLwordHlwZWRlZiBlbnVtIHBqX3NzbF9zb2NrX3Byb3RvCit7CisgICAgUEpfU1NMX1NPQ0tfUFJPVE9fREVGQVVMVCwJICAgIC8qKjwgRGVmYXVsdCBwcm90b2NvbCBvZiBiYWNrZW5kLgkqLworICAgIFBKX1NTTF9TT0NLX1BST1RPX1RMUzEsCSAgICAvKio8IFRMU3YxLjAgcHJvdG9jb2wuCQkqLworICAgIFBKX1NTTF9TT0NLX1BST1RPX1NTTDMsCSAgICAvKio8IFNTTHYzLjAgcHJvdG9jb2wuCQkqLworICAgIFBKX1NTTF9TT0NLX1BST1RPX1NTTDIzLAkgICAgLyoqPCBTU0x2My4wIGJ1dCBjYW4gcm9sbCBiYWNrIHRvIAorCQkJCQkgU1NMdjIuMC4JCQkqLworICAgIFBKX1NTTF9TT0NLX1BST1RPX1NTTDIsCSAgICAvKio8IFNTTHYyLjAgcHJvdG9jb2wuCQkqLworICAgIFBKX1NTTF9TT0NLX1BST1RPX0RUTFMxCSAgICAvKio8IERUTFN2MS4wIHByb3RvY29sLgkJKi8KK30gcGpfc3NsX3NvY2tfcHJvdG87CisKKworLyoqCisgKiBEZWZpbml0aW9uIG9mIHNlY3VyZSBzb2NrZXQgaW5mbyBzdHJ1Y3R1cmUuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX3NzbF9zb2NrX2luZm8gCit7CisgICAgLyoqCisgICAgICogRGVzY3JpYmVzIHdoZXRoZXIgc2VjdXJlIHNvY2tldCBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLCBpLmU6IFRMUy9TU0wgCisgICAgICogaGFuZHNoYWtpbmcgaGFzIGJlZW4gZG9uZSBzdWNjZXNzZnVsbHkuCisgICAgICovCisgICAgcGpfYm9vbF90IGVzdGFibGlzaGVkOworCisgICAgLyoqCisgICAgICogRGVzY3JpYmVzIHNlY3VyZSBzb2NrZXQgcHJvdG9jb2wgYmVpbmcgdXNlZC4KKyAgICAgKi8KKyAgICBwal9zc2xfc29ja19wcm90byBwcm90bzsKKworICAgIC8qKgorICAgICAqIERlc2NyaWJlcyBjaXBoZXIgc3VpdGUgYmVpbmcgdXNlZCwgdGhpcyB3aWxsIG9ubHkgYmUgc2V0IHdoZW4gY29ubmVjdGlvbgorICAgICAqIGlzIGVzdGFibGlzaGVkLgorICAgICAqLworICAgIHBqX3NzbF9jaXBoZXIgY2lwaGVyOworCisgICAgLyoqCisgICAgICogRGVzY3JpYmVzIGxvY2FsIGFkZHJlc3MuCisgICAgICovCisgICAgcGpfc29ja2FkZHIgbG9jYWxfYWRkcjsKKworICAgIC8qKgorICAgICAqIERlc2NyaWJlcyByZW1vdGUgYWRkcmVzcy4KKyAgICAgKi8KKyAgICBwal9zb2NrYWRkciByZW1vdGVfYWRkcjsKKyAgIAorICAgIC8qKgorICAgICAqIERlc2NyaWJlcyBhY3RpdmUgbG9jYWwgY2VydGlmaWNhdGUgaW5mby4KKyAgICAgKi8KKyAgICBwal9zc2xfY2VydF9pbmZvICpsb2NhbF9jZXJ0X2luZm87CisgICAKKyAgICAvKioKKyAgICAgKiBEZXNjcmliZXMgYWN0aXZlIHJlbW90ZSBjZXJ0aWZpY2F0ZSBpbmZvLgorICAgICAqLworICAgIHBqX3NzbF9jZXJ0X2luZm8gKnJlbW90ZV9jZXJ0X2luZm87CisKKyAgICAvKioKKyAgICAgKiBTdGF0dXMgb2YgcGVlciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uCisgICAgICovCisgICAgcGpfdWludDMyX3QJCXZlcmlmeV9zdGF0dXM7CisKKyAgICAvKioKKyAgICAgKiBMYXN0IG5hdGl2ZSBlcnJvciByZXR1cm5lZCBieSB0aGUgYmFja2VuZC4KKyAgICAgKi8KKyAgICB1bnNpZ25lZCBsb25nCWxhc3RfbmF0aXZlX2VycjsKKworfSBwal9zc2xfc29ja19pbmZvOworCisKKy8qKgorICogRGVmaW5pdGlvbiBvZiBzZWN1cmUgc29ja2V0IGNyZWF0aW9uIHBhcmFtZXRlcnMuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX3NzbF9zb2NrX3BhcmFtCit7CisgICAgLyoqCisgICAgICogU3BlY2lmaWVzIHNvY2tldCBhZGRyZXNzIGZhbWlseSwgZWl0aGVyIHBqX0FGX0lORVQoKSBhbmQgcGpfQUZfSU5FVDYoKS4KKyAgICAgKgorICAgICAqIERlZmF1bHQgaXMgcGpfQUZfSU5FVCgpLgorICAgICAqLworICAgIGludCBzb2NrX2FmOworCisgICAgLyoqCisgICAgICogU3BlY2lmeSBzb2NrZXQgdHlwZSwgZWl0aGVyIHBqX1NPQ0tfREdSQU0oKSBvciBwal9TT0NLX1NUUkVBTSgpLgorICAgICAqCisgICAgICogRGVmYXVsdCBpcyBwal9TT0NLX1NUUkVBTSgpLgorICAgICAqLworICAgIGludCBzb2NrX3R5cGU7CisKKyAgICAvKioKKyAgICAgKiBTcGVjaWZ5IHRoZSBpb3F1ZXVlIHRvIHVzZS4gU2VjdXJlIHNvY2tldCB1c2VzIHRoZSBpb3F1ZXVlIHRvIHBlcmZvcm0KKyAgICAgKiBhY3RpdmUgc29ja2V0IG9wZXJhdGlvbnMsIHNlZSBccmVmIFBKX0FDVElWRVNPQ0sgZm9yIG1vcmUgZGV0YWlsLgorICAgICAqLworICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZTsKKworICAgIC8qKgorICAgICAqIFNwZWNpZnkgdGhlIHRpbWVyIGhlYXAgdG8gdXNlLiBTZWN1cmUgc29ja2V0IHVzZXMgdGhlIHRpbWVyIHRvIHByb3ZpZGUKKyAgICAgKiBhdXRvIGNhbmNlbGF0aW9uIG9uIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gd2hlbiBpdCB0YWtlcyBsb25nZXIgdGltZSAKKyAgICAgKiB0aGFuIHNwZWNpZmllZCB0aW1lb3V0IHBlcmlvZCwgZS5nOiBzZWN1cml0eSBuZWdvdGlhdGlvbiB0aW1lb3V0LgorICAgICAqLworICAgIHBqX3RpbWVyX2hlYXBfdCAqdGltZXJfaGVhcDsKKworICAgIC8qKgorICAgICAqIFNwZWNpZnkgc2VjdXJlIHNvY2tldCBjYWxsYmFja3MsIHNlZSAjcGpfc3NsX3NvY2tfY2IuCisgICAgICovCisgICAgcGpfc3NsX3NvY2tfY2IgY2I7CisKKyAgICAvKioKKyAgICAgKiBTcGVjaWZ5IHNlY3VyZSBzb2NrZXQgdXNlciBkYXRhLgorICAgICAqLworICAgIHZvaWQgKnVzZXJfZGF0YTsKKworICAgIC8qKgorICAgICAqIFNwZWNpZnkgc2VjdXJpdHkgcHJvdG9jb2wgdG8gdXNlLCBzZWUgI3BqX3NzbF9zb2NrX3Byb3RvLgorICAgICAqCisgICAgICogRGVmYXVsdCBpcyBQSl9TU0xfU09DS19QUk9UT19ERUZBVUxULgorICAgICAqLworICAgIHBqX3NzbF9zb2NrX3Byb3RvIHByb3RvOworCisgICAgLyoqCisgICAgICogTnVtYmVyIG9mIGNvbmN1cnJlbnQgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMgdGhhdCBpcyB0byBiZSBzdXBwb3J0ZWQKKyAgICAgKiBieSB0aGUgc2VjdXJlIHNvY2tldC4gVGhpcyB2YWx1ZSBvbmx5IGFmZmVjdHMgc29ja2V0IHJlY2VpdmUgYW5kCisgICAgICogYWNjZXB0IG9wZXJhdGlvbnMgLS0gdGhlIHNlY3VyZSBzb2NrZXQgd2lsbCBpc3N1ZSBvbmUgb3IgbW9yZSAKKyAgICAgKiBhc3luY2hyb25vdXMgcmVhZCBhbmQgYWNjZXB0IG9wZXJhdGlvbnMgYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoaXMKKyAgICAgKiBmaWVsZC4gU2V0dGluZyB0aGlzIGZpZWxkIHRvIG1vcmUgdGhhbiBvbmUgd2lsbCBhbGxvdyBtb3JlIHRoYW4gb25lCisgICAgICogaW5jb21pbmcgZGF0YSBvciBpbmNvbWluZyBjb25uZWN0aW9ucyB0byBiZSBwcm9jZXNzZWQgc2ltdWx0YW5lb3VzbHkKKyAgICAgKiBvbiBtdWx0aXByb2Nlc3NvciBzeXN0ZW1zLCB3aGVuIHRoZSBpb3F1ZXVlIGlzIHBvbGxlZCBieSBtb3JlIHRoYW4KKyAgICAgKiBvbmUgdGhyZWFkcy4KKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEuCisgICAgICovCisgICAgdW5zaWduZWQgYXN5bmNfY250OworCisgICAgLyoqCisgICAgICogVGhlIGlvcXVldWUgY29uY3VycmVuY3kgdG8gYmUgZm9yY2VkIG9uIHRoZSBzb2NrZXQgd2hlbiBpdCBpcyAKKyAgICAgKiByZWdpc3RlcmVkIHRvIHRoZSBpb3F1ZXVlLiBTZWUgI3BqX2lvcXVldWVfc2V0X2NvbmN1cnJlbmN5KCkgZm9yIG1vcmUKKyAgICAgKiBpbmZvIGFib3V0IGlvcXVldWUgY29uY3VycmVuY3kuCisgICAgICoKKyAgICAgKiBXaGVuIHRoaXMgdmFsdWUgaXMgLTEsIHRoZSBjb25jdXJyZW5jeSBzZXR0aW5nIHdpbGwgbm90IGJlIGZvcmNlZCBmb3IKKyAgICAgKiB0aGlzIHNvY2tldCwgYW5kIHRoZSBzb2NrZXQgd2lsbCBpbmhlcml0IHRoZSBjb25jdXJyZW5jeSBzZXR0aW5nIG9mIAorICAgICAqIHRoZSBpb3F1ZXVlLiBXaGVuIHRoaXMgdmFsdWUgaXMgemVybywgdGhlIHNlY3VyZSBzb2NrZXQgd2lsbCBkaXNhYmxlCisgICAgICogY29uY3VycmVuY3kgZm9yIHRoZSBzb2NrZXQuIFdoZW4gdGhpcyB2YWx1ZSBpcyArMSwgdGhlIHNlY3VyZSBzb2NrZXQKKyAgICAgKiB3aWxsIGVuYWJsZSBjb25jdXJyZW5jeSBmb3IgdGhlIHNvY2tldC4KKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIC0xLgorICAgICAqLworICAgIGludCBjb25jdXJyZW5jeTsKKworICAgIC8qKgorICAgICAqIElmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlIHNlY3VyZSBzb2NrZXQgd2lsbCBtYWtlIHN1cmUgdGhhdAorICAgICAqIGFzeW5jaHJvbm91cyBzZW5kIG9wZXJhdGlvbiB3aXRoIHN0cmVhbSBvcmllbnRlZCBzb2NrZXQgd2lsbCBvbmx5CisgICAgICogY2FsbCB0aGUgY2FsbGJhY2sgYWZ0ZXIgYWxsIGRhdGEgaGFzIGJlZW4gc2VudC4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAqIHNlY3VyZSBzb2NrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IHJlc2VuZCB0aGUgcmVtYWluaW5nIGRhdGEgdW50aWwKKyAgICAgKiBhbGwgZGF0YSBoYXMgYmVlbiBzZW50LgorICAgICAqCisgICAgICogUGxlYXNlIG5vdGUgdGhhdCB3aGVuIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgaXQgaXMgcG9zc2libGUgdGhhdAorICAgICAqIGVycm9yIGlzIHJlcG9ydGVkIGFmdGVyIHBhcnRpYWwgZGF0YSBoYXMgYmVlbiBzZW50LiBBbHNvIHNldHRpbmcKKyAgICAgKiB0aGlzIHdpbGwgZGlzYWJsZSB0aGUgaW9xdWV1ZSBjb25jdXJyZW5jeSBmb3IgdGhlIHNvY2tldC4KKyAgICAgKgorICAgICAqIERlZmF1bHQgdmFsdWUgaXMgMS4KKyAgICAgKi8KKyAgICBwal9ib29sX3Qgd2hvbGVfZGF0YTsKKworICAgIC8qKgorICAgICAqIFNwZWNpZnkgYnVmZmVyIHNpemUgZm9yIHNlbmRpbmcgb3BlcmF0aW9uLiBCdWZmZXJpbmcgc2VuZGluZyBkYXRhCisgICAgICogaXMgdXNlZCBmb3IgYWxsb3dpbmcgYXBwbGljYXRpb24gdG8gcGVyZm9ybSBtdWx0aXBsZSBvdXRzdGFuZGluZyAKKyAgICAgKiBzZW5kIG9wZXJhdGlvbnMuIFdoZW5ldmVyIGFwcGxpY2F0aW9uIHNwZWNpZmllcyB0aGlzIHNldHRpbmcgdG9vCisgICAgICogc21hbGwsIHNlbmRpbmcgb3BlcmF0aW9uIG1heSByZXR1cm4gUEpfRU5PTUVNLgorICAgICAqICAKKyAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIDgxOTIgYnl0ZXMuCisgICAgICovCisgICAgcGpfc2l6ZV90IHNlbmRfYnVmZmVyX3NpemU7CisKKyAgICAvKioKKyAgICAgKiBTcGVjaWZ5IGJ1ZmZlciBzaXplIGZvciByZWNlaXZpbmcgZW5jcnlwdGVkIChhbmQgcGVyaGFwcyBjb21wcmVzc2VkKQorICAgICAqIGRhdGEgb24gdW5kZXJseWluZyBzb2NrZXQuIFRoaXMgc2V0dGluZyBpcyB1bnVzZWQgb24gU3ltYmlhbiwgc2luY2UgCisgICAgICogU1NML1RMUyBTeW1iaWFuIGJhY2tlbmQsIENTZWN1cmVTb2NrZXQsIGNhbiB1c2UgYXBwbGljYXRpb24gYnVmZmVyIAorICAgICAqIGRpcmVjdGx5LgorICAgICAqCisgICAgICogRGVmYXVsdCB2YWx1ZSBpcyAxNTAwLgorICAgICAqLworICAgIHBqX3NpemVfdCByZWFkX2J1ZmZlcl9zaXplOworCisgICAgLyoqCisgICAgICogTnVtYmVyIG9mIGNpcGhlcnMgY29udGFpbmVkIGluIHRoZSBzcGVjaWZpZWQgY2lwaGVyIHByZWZlcmVuY2UuIAorICAgICAqIElmIHRoaXMgaXMgc2V0IHRvIHplcm8sIHRoZW4gZGVmYXVsdCBjaXBoZXIgbGlzdCBvZiB0aGUgYmFja2VuZCAKKyAgICAgKiB3aWxsIGJlIHVzZWQuCisgICAgICovCisgICAgdW5zaWduZWQgY2lwaGVyc19udW07CisKKyAgICAvKioKKyAgICAgKiBDaXBoZXJzIGFuZCBvcmRlciBwcmVmZXJlbmNlLiBJZiBlbXB0eSwgdGhlbiBkZWZhdWx0IGNpcGhlciBsaXN0IGFuZAorICAgICAqIGl0cyBkZWZhdWx0IG9yZGVyIG9mIHRoZSBiYWNrZW5kIHdpbGwgYmUgdXNlZC4KKyAgICAgKi8KKyAgICBwal9zc2xfY2lwaGVyICpjaXBoZXJzOworCisgICAgLyoqCisgICAgICogU2VjdXJpdHkgbmVnb3RpYXRpb24gdGltZW91dC4gSWYgdGhpcyBpcyBzZXQgdG8gemVybyAoYm90aCBzZWMgYW5kIAorICAgICAqIG1zZWMpLCB0aGUgbmVnb3RpYXRpb24gZG9lc24ndCBoYXZlIGEgdGltZW91dC4KKyAgICAgKgorICAgICAqIERlZmF1bHQgdmFsdWUgaXMgemVyby4KKyAgICAgKi8KKyAgICBwal90aW1lX3ZhbAl0aW1lb3V0OworCisgICAgLyoqCisgICAgICogU3BlY2lmeSB3aGV0aGVyIGVuZHBvaW50IHNob3VsZCB2ZXJpZnkgcGVlciBjZXJ0aWZpY2F0ZS4KKyAgICAgKgorICAgICAqIERlZmF1bHQgdmFsdWUgaXMgUEpfRkFMU0UuCisgICAgICovCisgICAgcGpfYm9vbF90IHZlcmlmeV9wZWVyOworICAgIAorICAgIC8qKgorICAgICAqIFdoZW4gc2VjdXJlIHNvY2tldCBpcyBhY3RpbmcgYXMgc2VydmVyIChoYW5kbGVzIGluY29taW5nIGNvbm5lY3Rpb24pLAorICAgICAqIGl0IHdpbGwgcmVxdWlyZSB0aGUgY2xpZW50IHRvIHByb3ZpZGUgY2VydGlmaWNhdGUuCisgICAgICoKKyAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIFBKX0ZBTFNFLgorICAgICAqLworICAgIHBqX2Jvb2xfdCByZXF1aXJlX2NsaWVudF9jZXJ0OworCisgICAgLyoqCisgICAgICogU2VydmVyIG5hbWUgaW5kaWNhdGlvbi4gV2hlbiBzZWN1cmUgc29ja2V0IGlzIGFjdGluZyBhcyBjbGllbnQgCisgICAgICogKHBlcmZvcm0gb3V0Z29pbmcgY29ubmVjdGlvbikgYW5kIHRoZSBzZXJ2ZXIgbWF5IGhvc3QgbXVsdGlwbGUKKyAgICAgKiAndmlydHVhbCcgc2VydmVycyBhdCBhIHNpbmdsZSB1bmRlcmx5aW5nIG5ldHdvcmsgYWRkcmVzcywgc2V0dGluZworICAgICAqIHRoaXMgd2lsbCBhbGxvdyBjbGllbnQgdG8gdGVsbCB0aGUgc2VydmVyIGEgbmFtZSBvZiB0aGUgc2VydmVyCisgICAgICogaXQgaXMgY29udGFjdGluZy4KKyAgICAgKgorICAgICAqIERlZmF1bHQgdmFsdWUgaXMgemVyby9ub3Qtc2V0LgorICAgICAqLworICAgIHBqX3N0cl90IHNlcnZlcl9uYW1lOworCisgICAgLyoqCisgICAgICogU3BlY2lmeSBpZiBTT19SRVVTRUFERFIgc2hvdWxkIGJlIHVzZWQgZm9yIGxpc3RlbmluZyBzb2NrZXQuIFRoaXMKKyAgICAgKiBvcHRpb24gd2lsbCBvbmx5IGJlIHVzZWQgd2l0aCBhY2NlcHQoKSBvcGVyYXRpb24uCisgICAgICoKKyAgICAgKiBEZWZhdWx0IGlzIFBKX0ZBTFNFLgorICAgICAqLworICAgIHBqX2Jvb2xfdCByZXVzZV9hZGRyOworCisgICAgLyoqCisgICAgICogUW9TIHRyYWZmaWMgdHlwZSB0byBiZSBzZXQgb24gdGhpcyB0cmFuc3BvcnQuIFdoZW4gYXBwbGljYXRpb24gd2FudHMKKyAgICAgKiB0byBhcHBseSBRb1MgdGFnZ2luZyB0byB0aGUgdHJhbnNwb3J0LCBpdCdzIHByZWZlcmFibGUgdG8gc2V0IHRoaXMKKyAgICAgKiBmaWVsZCByYXRoZXIgdGhhbiBcYSBxb3NfcGFyYW0gZmllbGRzIHNpbmNlIHRoaXMgaXMgbW9yZSBwb3J0YWJsZS4KKyAgICAgKgorICAgICAqIERlZmF1bHQgdmFsdWUgaXMgUEpfUU9TX1RZUEVfQkVTVF9FRkZPUlQuCisgICAgICovCisgICAgcGpfcW9zX3R5cGUgcW9zX3R5cGU7CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGxvdyBsZXZlbCBRb1MgcGFyYW1ldGVycyB0byB0aGUgdHJhbnNwb3J0LiBUaGlzIGlzIGEgbG93ZXIKKyAgICAgKiBsZXZlbCBvcGVyYXRpb24gdGhhbiBzZXR0aW5nIHRoZSBcYSBxb3NfdHlwZSBmaWVsZCBhbmQgbWF5IG5vdCBiZQorICAgICAqIHN1cHBvcnRlZCBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAqCisgICAgICogQnkgZGVmYXVsdCBhbGwgc2V0dGluZ3MgaW4gdGhpcyBzdHJ1Y3R1cmUgYXJlIGRpc2FibGVkLgorICAgICAqLworICAgIHBqX3Fvc19wYXJhbXMgcW9zX3BhcmFtczsKKworICAgIC8qKgorICAgICAqIFNwZWNpZnkgaWYgdGhlIHRyYW5zcG9ydCBzaG91bGQgaWdub3JlIGFueSBlcnJvcnMgd2hlbiBzZXR0aW5nIHRoZSBRb1MKKyAgICAgKiB0cmFmZmljIHR5cGUvcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIERlZmF1bHQ6IFBKX1RSVUUKKyAgICAgKi8KKyAgICBwal9ib29sX3QgcW9zX2lnbm9yZV9lcnJvcjsKKworCit9IHBqX3NzbF9zb2NrX3BhcmFtOworCisKKy8qKgorICogSW5pdGlhbGl6ZSB0aGUgc2VjdXJlIHNvY2tldCBwYXJhbWV0ZXJzIGZvciBpdHMgY3JlYXRpb24gd2l0aCAKKyAqIHRoZSBkZWZhdWx0IHZhbHVlcy4KKyAqCisgKiBAcGFyYW0gcGFyYW0JCVRoZSBwYXJhbWV0ZXIgdG8gYmUgaW5pdGlhbGl6ZWQuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfc3NsX3NvY2tfcGFyYW1fZGVmYXVsdChwal9zc2xfc29ja19wYXJhbSAqcGFyYW0pOworCisKKy8qKgorICogQ3JlYXRlIHNlY3VyZSBzb2NrZXQgaW5zdGFuY2UuCisgKgorICogQHBhcmFtIHBvb2wJCVRoZSBwb29sIGZvciBhbGxvY2F0aW5nIHNlY3VyZSBzb2NrZXQgaW5zdGFuY2UuCisgKiBAcGFyYW0gcGFyYW0JCVRoZSBzZWN1cmUgc29ja2V0IHBhcmFtZXRlciwgc2VlICNwal9zc2xfc29ja19wYXJhbS4KKyAqIEBwYXJhbSBwX3Nzb2NrCVBvaW50ZXIgdG8gc2VjdXJlIHNvY2tldCBpbnN0YW5jZSB0byBiZSBjcmVhdGVkLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgd2hlbiBzdWNjZXNzZnVsLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19jcmVhdGUocGpfcG9vbF90ICpwb29sLAorCQkJCQljb25zdCBwal9zc2xfc29ja19wYXJhbSAqcGFyYW0sCisJCQkJCXBqX3NzbF9zb2NrX3QgKipwX3Nzb2NrKTsKKworCisvKioKKyAqIFNldCBzZWN1cmUgc29ja2V0IGNlcnRpZmljYXRlIG9yIGNyZWRlbnRpYWxzLiBDcmVkZW50aWFscyBtYXkgaW5jbHVkZSAKKyAqIGNlcnRpZmljYXRlLCBwcml2YXRlIGtleSBhbmQgdHJ1c3RlZCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0aWVzIGxpc3QuIAorICogTm9ybWFsbHksIHNlcnZlciBzb2NrZXQgbXVzdCBwcm92aWRlIGNlcnRpZmljYXRlIChhbmQgcHJpdmF0ZSBrZXkpLgorICogU29ja2V0IGNsaWVudCBtYXkgYWxzbyBuZWVkIHRvIHByb3ZpZGUgY2VydGlmaWNhdGUgaW4gY2FzZSByZXF1ZXN0ZWQKKyAqIGJ5IHRoZSBzZXJ2ZXIuCisgKgorICogQHBhcmFtIHNzb2NrCQlUaGUgc2VjdXJlIHNvY2tldCBpbnN0YW5jZS4KKyAqIEBwYXJhbSBwb29sCQlUaGUgcG9vbC4KKyAqIEBwYXJhbSBjZXJ0CQlUaGUgZW5kcG9pbnQgY2VydGlmaWNhdGUvY3JlZGVudGlhbHMsIHNlZQorICoJCQkjcGpfc3NsX2NlcnRfdC4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIGlmIHRoZSBvcGVyYXRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bCwKKyAqCQkJb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc2V0X2NlcnRpZmljYXRlKAorCQkJCQkgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJCSAgICBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICBjb25zdCBwal9zc2xfY2VydF90ICpjZXJ0KTsKKworCisvKioKKyAqIENsb3NlIGFuZCBkZXN0cm95IHRoZSBzZWN1cmUgc29ja2V0LgorICoKKyAqIEBwYXJhbSBzc29jawkJVGhlIHNlY3VyZSBzb2NrZXQuCisgKgorICogQHJldHVybgkJUEpfU1VDQ0VTUyBpZiB0aGUgb3BlcmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWwsCisgKgkJCW9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX2Nsb3NlKHBqX3NzbF9zb2NrX3QgKnNzb2NrKTsKKworCisvKioKKyAqIEFzc29jaWF0ZSBhcmJpdHJhcnkgZGF0YSB3aXRoIHRoZSBzZWN1cmUgc29ja2V0LiBBcHBsaWNhdGlvbiBtYXkKKyAqIGluc3BlY3QgdGhpcyBkYXRhIGluIHRoZSBjYWxsYmFja3MgYW5kIGFzc29jaWF0ZSBpdCB3aXRoIGhpZ2hlcgorICogbGV2ZWwgcHJvY2Vzc2luZy4KKyAqCisgKiBAcGFyYW0gc3NvY2sJCVRoZSBzZWN1cmUgc29ja2V0LgorICogQHBhcmFtIHVzZXJfZGF0YQlUaGUgdXNlciBkYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2VjdXJlCisgKgkJCXNvY2tldC4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIGlmIHRoZSBvcGVyYXRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bCwKKyAqCQkJb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc2V0X3VzZXJfZGF0YShwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgICAgIHZvaWQgKnVzZXJfZGF0YSk7CisKKy8qKgorICogUmV0cmlldmUgdGhlIHVzZXIgZGF0YSBwcmV2aW91c2x5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlY3VyZQorICogc29ja2V0LgorICoKKyAqIEBwYXJhbSBzc29jawkJVGhlIHNlY3VyZSBzb2NrZXQuCisgKgorICogQHJldHVybgkJVGhlIHVzZXIgZGF0YS4KKyAqLworUEpfREVDTCh2b2lkKikgcGpfc3NsX3NvY2tfZ2V0X3VzZXJfZGF0YShwal9zc2xfc29ja190ICpzc29jayk7CisKKworLyoqCisgKiBSZXRyaWV2ZSB0aGUgbG9jYWwgYWRkcmVzcyBhbmQgcG9ydCB1c2VkIGJ5IHNwZWNpZmllZCBzZWN1cmUgc29ja2V0LgorICoKKyAqIEBwYXJhbSBzc29jawkJVGhlIHNlY3VyZSBzb2NrZXQuCisgKiBAcGFyYW0gaW5mbwkJVGhlIGluZm8gYnVmZmVyIHRvIGJlIHNldCwgc2VlICNwal9zc2xfc29ja19pbmZvLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb24gc3VjY2Vzc2Z1bC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfZ2V0X2luZm8ocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJCSAgcGpfc3NsX3NvY2tfaW5mbyAqaW5mbyk7CisKKworLyoqCisgKiBTdGFydHMgcmVhZCBvcGVyYXRpb24gb24gdGhpcyBzZWN1cmUgc29ja2V0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlCisgKiBcYSBhc3luY19jbnQgbnVtYmVyIG9mIGJ1ZmZlcnMgKHRoZSBcYSBhc3luY19jbnQgcGFyYW1ldGVyIHdhcyBnaXZlbgorICogaW4gXGEgcGpfc3NsX3NvY2tfY3JlYXRlKCkgZnVuY3Rpb24pIHdoZXJlIGVhY2ggYnVmZmVyIGlzIFxhIGJ1ZmZfc2l6ZQorICogbG9uZy4gVGhlIGJ1ZmZlcnMgYXJlIGFsbG9jYXRlZCBmcm9tIHRoZSBzcGVjaWZpZWQgXGEgcG9vbC4gT25jZSB0aGUgCisgKiBidWZmZXJzIGFyZSBjcmVhdGVkLCBpdCB0aGVuIGlzc3VlcyBcYSBhc3luY19jbnQgbnVtYmVyIG9mIGFzeW5jaHJvbm91cworICogXGEgcmVjdigpIG9wZXJhdGlvbnMgdG8gdGhlIHNvY2tldCBhbmQgcmV0dXJucyBiYWNrIHRvIGNhbGxlci4gSW5jb21pbmcKKyAqIGRhdGEgb24gdGhlIHNvY2tldCB3aWxsIGJlIHJlcG9ydGVkIGJhY2sgdG8gYXBwbGljYXRpb24gdmlhIHRoZSAKKyAqIFxhIG9uX2RhdGFfcmVhZCgpIGNhbGxiYWNrLgorICoKKyAqIEFwcGxpY2F0aW9uIG9ubHkgbmVlZHMgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIG9uY2UgdG8gaW5pdGlhdGUgcmVhZAorICogb3BlcmF0aW9ucy4gRnVydGhlciByZWFkIG9wZXJhdGlvbnMgd2lsbCBiZSBkb25lIGF1dG9tYXRpY2FsbHkgYnkgdGhlCisgKiBzZWN1cmUgc29ja2V0IHdoZW4gXGEgb25fZGF0YV9yZWFkKCkgY2FsbGJhY2sgcmV0dXJucyBub24temVyby4gCisgKgorICogQHBhcmFtIHNzb2NrCQlUaGUgc2VjdXJlIHNvY2tldC4KKyAqIEBwYXJhbSBwb29sCQlQb29sIHVzZWQgdG8gYWxsb2NhdGUgYnVmZmVycyBmb3IgaW5jb21pbmcgZGF0YS4KKyAqIEBwYXJhbSBidWZmX3NpemUJVGhlIHNpemUgb2YgZWFjaCBidWZmZXIsIGluIGJ5dGVzLgorICogQHBhcmFtIGZsYWdzCQlGbGFncyB0byBiZSBnaXZlbiB0byBwal9pb3F1ZXVlX3JlY3YoKS4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIGlmIHRoZSBvcGVyYXRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bCwKKyAqCQkJb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc3RhcnRfcmVhZChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgIHVuc2lnbmVkIGJ1ZmZfc2l6ZSwKKwkJCQkJICAgIHBqX3VpbnQzMl90IGZsYWdzKTsKKworLyoqCisgKiBTYW1lIGFzICNwal9zc2xfc29ja19zdGFydF9yZWFkKCksIGV4Y2VwdCB0aGF0IHRoZSBhcHBsaWNhdGlvbgorICogc3VwcGxpZXMgdGhlIGJ1ZmZlcnMgZm9yIHRoZSByZWFkIG9wZXJhdGlvbiBzbyB0aGF0IHRoZSBhY2l2ZSBzb2NrZXQKKyAqIGRvZXMgbm90IGhhdmUgdG8gYWxsb2NhdGUgdGhlIGJ1ZmZlcnMuCisgKgorICogQHBhcmFtIHNzb2NrCQlUaGUgc2VjdXJlIHNvY2tldC4KKyAqIEBwYXJhbSBwb29sCQlQb29sIHVzZWQgdG8gYWxsb2NhdGUgYnVmZmVycyBmb3IgaW5jb21pbmcgZGF0YS4KKyAqIEBwYXJhbSBidWZmX3NpemUJVGhlIHNpemUgb2YgZWFjaCBidWZmZXIsIGluIGJ5dGVzLgorICogQHBhcmFtIHJlYWRidWYJQXJyYXkgb2YgcGFja2V0IGJ1ZmZlcnMsIGVhY2ggaGFzIGJ1ZmZfc2l6ZSBzaXplLgorICogQHBhcmFtIGZsYWdzCQlGbGFncyB0byBiZSBnaXZlbiB0byBwal9pb3F1ZXVlX3JlY3YoKS4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIGlmIHRoZSBvcGVyYXRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bCwKKyAqCQkJb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc3RhcnRfcmVhZDIocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJCSAgICAgcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICAgIHVuc2lnbmVkIGJ1ZmZfc2l6ZSwKKwkJCQkJICAgICB2b2lkICpyZWFkYnVmW10sCisJCQkJCSAgICAgcGpfdWludDMyX3QgZmxhZ3MpOworCisvKioKKyAqIFNhbWUgYXMgcGpfc3NsX3NvY2tfc3RhcnRfcmVhZCgpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQKKyAqIG9ubHkgZm9yIGRhdGFncmFtIHNvY2tldHMsIGFuZCBpdCB3aWxsIHRyaWdnZXIgXGEgb25fZGF0YV9yZWN2ZnJvbSgpCisgKiBjYWxsYmFjayBpbnN0ZWFkLgorICoKKyAqIEBwYXJhbSBzc29jawkJVGhlIHNlY3VyZSBzb2NrZXQuCisgKiBAcGFyYW0gcG9vbAkJUG9vbCB1c2VkIHRvIGFsbG9jYXRlIGJ1ZmZlcnMgZm9yIGluY29taW5nIGRhdGEuCisgKiBAcGFyYW0gYnVmZl9zaXplCVRoZSBzaXplIG9mIGVhY2ggYnVmZmVyLCBpbiBieXRlcy4KKyAqIEBwYXJhbSBmbGFncwkJRmxhZ3MgdG8gYmUgZ2l2ZW4gdG8gcGpfaW9xdWV1ZV9yZWN2ZnJvbSgpLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1MgaWYgdGhlIG9wZXJhdGlvbiBoYXMgYmVlbiBzdWNjZXNzZnVsLAorICoJCQlvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19zdGFydF9yZWN2ZnJvbShwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJCXBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJCXVuc2lnbmVkIGJ1ZmZfc2l6ZSwKKwkJCQkJCXBqX3VpbnQzMl90IGZsYWdzKTsKKworLyoqCisgKiBTYW1lIGFzICNwal9zc2xfc29ja19zdGFydF9yZWN2ZnJvbSgpIGV4Y2VwdCB0aGF0IHRoZSByZWN2ZnJvbSgpIAorICogb3BlcmF0aW9uIHRha2VzIHRoZSBidWZmZXIgZnJvbSB0aGUgYXJndW1lbnQgcmF0aGVyIHRoYW4gY3JlYXRpbmcKKyAqIG5ldyBvbmVzLgorICoKKyAqIEBwYXJhbSBzc29jawkJVGhlIHNlY3VyZSBzb2NrZXQuCisgKiBAcGFyYW0gcG9vbAkJUG9vbCB1c2VkIHRvIGFsbG9jYXRlIGJ1ZmZlcnMgZm9yIGluY29taW5nIGRhdGEuCisgKiBAcGFyYW0gYnVmZl9zaXplCVRoZSBzaXplIG9mIGVhY2ggYnVmZmVyLCBpbiBieXRlcy4KKyAqIEBwYXJhbSByZWFkYnVmCUFycmF5IG9mIHBhY2tldCBidWZmZXJzLCBlYWNoIGhhcyBidWZmX3NpemUgc2l6ZS4KKyAqIEBwYXJhbSBmbGFncwkJRmxhZ3MgdG8gYmUgZ2l2ZW4gdG8gcGpfaW9xdWV1ZV9yZWN2ZnJvbSgpLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1MgaWYgdGhlIG9wZXJhdGlvbiBoYXMgYmVlbiBzdWNjZXNzZnVsLAorICoJCQlvciB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19zdGFydF9yZWN2ZnJvbTIocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJCQkgcGpfcG9vbF90ICpwb29sLAorCQkJCQkJIHVuc2lnbmVkIGJ1ZmZfc2l6ZSwKKwkJCQkJCSB2b2lkICpyZWFkYnVmW10sCisJCQkJCQkgcGpfdWludDMyX3QgZmxhZ3MpOworCisvKioKKyAqIFNlbmQgZGF0YSB1c2luZyB0aGUgc29ja2V0LgorICoKKyAqIEBwYXJhbSBzc29jawkJVGhlIHNlY3VyZSBzb2NrZXQuCisgKiBAcGFyYW0gc2VuZF9rZXkJVGhlIG9wZXJhdGlvbiBrZXkgdG8gc2VuZCB0aGUgZGF0YSwgd2hpY2ggaXMgdXNlZnVsCisgKgkJCWlmIGFwcGxpY2F0aW9uIHdhbnRzIHRvIHN1Ym1pdCBtdWx0aXBsZSBwZW5kaW5nCisgKgkJCXNlbmQgb3BlcmF0aW9ucyBhbmQgd2FudCB0byB0cmFjayB3aGljaCBleGFjdCBkYXRhIAorICoJCQloYXMgYmVlbiBzZW50IGluIHRoZSBcYSBvbl9kYXRhX3NlbnQoKSBjYWxsYmFjay4KKyAqIEBwYXJhbSBkYXRhCQlUaGUgZGF0YSB0byBiZSBzZW50LiBUaGlzIGRhdGEgbXVzdCByZW1haW4gdmFsaWQKKyAqCQkJdW50aWwgdGhlIGRhdGEgaGFzIGJlZW4gc2VudC4KKyAqIEBwYXJhbSBzaXplCQlUaGUgc2l6ZSBvZiB0aGUgZGF0YS4KKyAqIEBwYXJhbSBmbGFncwkJRmxhZ3MgdG8gYmUgZ2l2ZW4gdG8gcGpfaW9xdWV1ZV9zZW5kKCkuCisgKgorICogQHJldHVybgkJUEpfU1VDQ0VTUyBpZiBkYXRhIGhhcyBiZWVuIHNlbnQgaW1tZWRpYXRlbHksIG9yCisgKgkJCVBKX0VQRU5ESU5HIGlmIGRhdGEgY2Fubm90IGJlIHNlbnQgaW1tZWRpYXRlbHkgb3IKKyAqCQkJUEpfRU5PTUVNIHdoZW4gc2VuZGluZyBidWZmZXIgY291bGQgbm90IGhhbmRsZSBhbGwKKyAqCQkJcXVldWVkIGRhdGEsIHNlZSBcYSBzZW5kX2J1ZmZlcl9zaXplLiBUaGUgY2FsbGJhY2sKKyAqCQkJXGEgb25fZGF0YV9zZW50KCkgd2lsbCBiZSBjYWxsZWQgd2hlbiBkYXRhIGlzIGFjdHVhbGx5CisgKgkJCXNlbnQuIEFueSBvdGhlciByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIGVycm9yIGNvbmRpdGlvbi4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc2VuZChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpzZW5kX2tleSwKKwkJCQkgICAgICBjb25zdCB2b2lkICpkYXRhLAorCQkJCSAgICAgIHBqX3NzaXplX3QgKnNpemUsCisJCQkJICAgICAgdW5zaWduZWQgZmxhZ3MpOworCisvKioKKyAqIFNlbmQgZGF0YWdyYW0gdXNpbmcgdGhlIHNvY2tldC4KKyAqCisgKiBAcGFyYW0gc3NvY2sJCVRoZSBzZWN1cmUgc29ja2V0LgorICogQHBhcmFtIHNlbmRfa2V5CVRoZSBvcGVyYXRpb24ga2V5IHRvIHNlbmQgdGhlIGRhdGEsIHdoaWNoIGlzIHVzZWZ1bAorICoJCQlpZiBhcHBsaWNhdGlvbiB3YW50cyB0byBzdWJtaXQgbXVsdGlwbGUgcGVuZGluZworICoJCQlzZW5kIG9wZXJhdGlvbnMgYW5kIHdhbnQgdG8gdHJhY2sgd2hpY2ggZXhhY3QgZGF0YSAKKyAqCQkJaGFzIGJlZW4gc2VudCBpbiB0aGUgXGEgb25fZGF0YV9zZW50KCkgY2FsbGJhY2suCisgKiBAcGFyYW0gZGF0YQkJVGhlIGRhdGEgdG8gYmUgc2VudC4gVGhpcyBkYXRhIG11c3QgcmVtYWluIHZhbGlkCisgKgkJCXVudGlsIHRoZSBkYXRhIGhhcyBiZWVuIHNlbnQuCisgKiBAcGFyYW0gc2l6ZQkJVGhlIHNpemUgb2YgdGhlIGRhdGEuCisgKiBAcGFyYW0gZmxhZ3MJCUZsYWdzIHRvIGJlIGdpdmVuIHRvIHBqX2lvcXVldWVfc2VuZCgpLgorICogQHBhcmFtIGFkZHIJCVRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLgorICogQHBhcmFtIGFkZHJfbGVuCUxlbmd0aCBvZiBidWZmZXIgY29udGFpbmluZyBkZXN0aW5hdGlvbiBhZGRyZXNzLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1MgaWYgZGF0YSBoYXMgYmVlbiBzZW50IGltbWVkaWF0ZWx5LCBvcgorICoJCQlQSl9FUEVORElORyBpZiBkYXRhIGNhbm5vdCBiZSBzZW50IGltbWVkaWF0ZWx5LiBJbgorICoJCQl0aGlzIGNhc2UgdGhlIFxhIG9uX2RhdGFfc2VudCgpIGNhbGxiYWNrIHdpbGwgYmUKKyAqCQkJY2FsbGVkIHdoZW4gZGF0YSBpcyBhY3R1YWxseSBzZW50LiBBbnkgb3RoZXIgcmV0dXJuCisgKgkJCXZhbHVlIGluZGljYXRlcyBlcnJvciBjb25kaXRpb24uCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3NlbmR0byhwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJcGpfaW9xdWV1ZV9vcF9rZXlfdCAqc2VuZF9rZXksCisJCQkJCWNvbnN0IHZvaWQgKmRhdGEsCisJCQkJCXBqX3NzaXplX3QgKnNpemUsCisJCQkJCXVuc2lnbmVkIGZsYWdzLAorCQkJCQljb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCQlpbnQgYWRkcl9sZW4pOworCisKKy8qKgorICogU3RhcnRzIGFzeW5jaHJvbm91cyBzb2NrZXQgYWNjZXB0KCkgb3BlcmF0aW9ucyBvbiB0aGlzIHNlY3VyZSBzb2NrZXQuIAorICogVGhpcyBmdW5jdGlvbiB3aWxsIGlzc3VlIFxhIGFzeW5jX2NudCBudW1iZXIgb2YgYXN5bmNocm9ub3VzIFxhIGFjY2VwdCgpIAorICogb3BlcmF0aW9ucyB0byB0aGUgc29ja2V0IGFuZCByZXR1cm5zIGJhY2sgdG8gY2FsbGVyLiBJbmNvbWluZworICogY29ubmVjdGlvbiBvbiB0aGUgc29ja2V0IHdpbGwgYmUgcmVwb3J0ZWQgYmFjayB0byBhcHBsaWNhdGlvbiB2aWEgdGhlCisgKiBcYSBvbl9hY2NlcHRfY29tcGxldGUoKSBjYWxsYmFjay4KKyAqCisgKiBBcHBsaWNhdGlvbiBvbmx5IG5lZWRzIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBvbmNlIHRvIGluaXRpYXRlIGFjY2VwdCgpCisgKiBvcGVyYXRpb25zLiBGdXJ0aGVyIGFjY2VwdCgpIG9wZXJhdGlvbnMgd2lsbCBiZSBkb25lIGF1dG9tYXRpY2FsbHkgYnkgCisgKiB0aGUgc2VjdXJlIHNvY2tldCB3aGVuIFxhIG9uX2FjY2VwdF9jb21wbGV0ZSgpIGNhbGxiYWNrIHJldHVybnMgbm9uLXplcm8uCisgKgorICogQHBhcmFtIHNzb2NrCQlUaGUgc2VjdXJlIHNvY2tldC4KKyAqIEBwYXJhbSBwb29sCQlQb29sIHVzZWQgdG8gYWxsb2NhdGUgc29tZSBpbnRlcm5hbCBkYXRhIGZvciB0aGUKKyAqCQkJb3BlcmF0aW9uLgorICogQHBhcmFtIGxvY2FsYWRkcglMb2NhbCBhZGRyZXNzIHRvIGJpbmQgb24uCisgKiBAcGFyYW0gYWRkcl9sZW4JTGVuZ3RoIG9mIGJ1ZmZlciBjb250YWluaW5nIGxvY2FsIGFkZHJlc3MuCisgKgorICogQHJldHVybgkJUEpfU1VDQ0VTUyBpZiB0aGUgb3BlcmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWwsCisgKgkJCW9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3N0YXJ0X2FjY2VwdChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgICAgcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICAgICBjb25zdCBwal9zb2NrYWRkcl90ICpsb2NhbF9hZGRyLAorCQkJCQkgICAgICBpbnQgYWRkcl9sZW4pOworCisKKy8qKgorICogU3RhcnRzIGFzeW5jaHJvbm91cyBzb2NrZXQgY29ubmVjdCgpIG9wZXJhdGlvbiBhbmQgU1NML1RMUyBoYW5kc2hha2luZyAKKyAqIGZvciB0aGlzIHNvY2tldC4gT25jZSB0aGUgY29ubmVjdGlvbiBpcyBkb25lIChlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIG5vdCksCisgKiB0aGUgXGEgb25fY29ubmVjdF9jb21wbGV0ZSgpIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICoKKyAqIEBwYXJhbSBzc29jawkJVGhlIHNlY3VyZSBzb2NrZXQuCisgKiBAcGFyYW0gcG9vbAkJVGhlIHBvb2wgdG8gYWxsb2NhdGUgc29tZSBpbnRlcm5hbCBkYXRhIGZvciB0aGUKKyAqCQkJb3BlcmF0aW9uLgorICogQHBhcmFtIGxvY2FsYWRkcglMb2NhbCBhZGRyZXNzLgorICogQHBhcmFtIHJlbWFkZHIJUmVtb3RlIGFkZHJlc3MuCisgKiBAcGFyYW0gYWRkcl9sZW4JTGVuZ3RoIG9mIGJ1ZmZlciBjb250YWluaW5nIGFib3ZlIGFkZHJlc3Nlcy4KKyAqCisgKiBAcmV0dXJuCQlQSl9TVUNDRVNTIGlmIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGltbWVkaWF0ZWx5CisgKgkJCW9yIFBKX0VQRU5ESU5HIGlmIGNvbm5lY3Rpb24gY2Fubm90IGJlIGVzdGFibGlzaGVkIAorICoJCQlpbW1lZGlhdGVseS4gSW4gdGhpcyBjYXNlIHRoZSBcYSBvbl9jb25uZWN0X2NvbXBsZXRlKCkKKyAqCQkJY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgd2hlbiBjb25uZWN0aW9uIGlzIGNvbXBsZXRlLiAKKyAqCQkJQW55IG90aGVyIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgZXJyb3IgY29uZGl0aW9uLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19zdGFydF9jb25uZWN0KHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCQkgICAgICAgcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICAgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqbG9jYWxhZGRyLAorCQkJCQkgICAgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqcmVtYWRkciwKKwkJCQkJICAgICAgIGludCBhZGRyX2xlbik7CisKKworLyoqCisgKiBTdGFydHMgU1NML1RMUyByZW5lZ290aWF0aW9uIG92ZXIgYW4gYWxyZWFkeSBlc3RhYmxpc2hlZCBTU0wgY29ubmVjdGlvbgorICogZm9yIHRoaXMgc29ja2V0LiBUaGlzIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgdHJhbnNwYXJlbnRseSwgbm8gY2FsbGJhY2sgCisgKiB3aWxsIGJlIGNhbGxlZCBvbmNlIHRoZSByZW5lZ290aWF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIEhvd2V2ZXIsIAorICogd2hlbiB0aGUgcmVuZWdvdGlhdGlvbiBmYWlscywgdGhlIGNvbm5lY3Rpb24gd2lsbCBiZSBjbG9zZWQgYW5kIGNhbGxiYWNrCisgKiBcYSBvbl9kYXRhX3JlYWQoKSB3aWxsIGJlIGludm9rZWQgd2l0aCBub24tUEpfU1VDQ0VTUyBzdGF0dXMgY29kZS4KKyAqCisgKiBAcGFyYW0gc3NvY2sJCVRoZSBzZWN1cmUgc29ja2V0LgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1MgaWYgcmVuZWdvdGlhdGlvbiBpcyBjb21wbGV0ZWQgaW1tZWRpYXRlbHksCisgKgkJCW9yIFBKX0VQRU5ESU5HIGlmIHJlbmVnb3RpYXRpb24gaGFzIGJlZW4gc3RhcnRlZCBhbmQKKyAqCQkJd2FpdGluZyBmb3IgY29tcGxldGlvbiwgb3IgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgCisgKgkJCW9uIGZhaWx1cmUuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3JlbmVnb3RpYXRlKHBqX3NzbF9zb2NrX3QgKnNzb2NrKTsKKworCisvKioKKyAqIEB9CisgKi8KKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpfU1NMX1NPQ0tfSF9fICovCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3N0cmluZy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9zdHJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGJlMDA1Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9zdHJpbmcuaApAQCAtMCwwICsxLDcxMiBAQAorLyogJElkOiBzdHJpbmcuaCA0NzA0IDIwMTQtMDEtMTYgMDU6MzA6NDZaIG1pbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9TVFJJTkdfSF9fCisjZGVmaW5lIF9fUEpfU1RSSU5HX0hfXworCisvKioKKyAqIEBmaWxlIHN0cmluZy5oCisgKiBAYnJpZWYgUEpMSUIgU3RyaW5nIE9wZXJhdGlvbnMuCisgKi8KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3N0cmluZy5oPgorCisKK1BKX0JFR0lOX0RFQ0wKKworLyoqCisgKiBAZGVmZ3JvdXAgUEpfUFNUUiBTdHJpbmcgT3BlcmF0aW9ucworICogQGluZ3JvdXAgUEpfRFMKKyAqIEB7CisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBzdHJpbmcgbWFuaXB1bGF0aW9uIEFQSS4KKyAqCisgKiBcc2VjdGlvbiBwal9wc3RyX25vdF9udWxsX3NlYyBQSkxJQiBTdHJpbmcgaXMgTk9UIE51bGwgVGVybWluYXRlZCEKKyAqCisgKiBUaGF0IGlzIHRoZSBmaXJzdCBpbmZvcm1hdGlvbiB0aGF0IGRldmVsb3BlcnMgbmVlZCB0byBrbm93LiBJbnN0ZWFkCisgKiBvZiB1c2luZyBub3JtYWwgQyBzdHJpbmcsIHN0cmluZ3MgaW4gUEpMSUIgYXJlIHJlcHJlc2VudGVkIGFzCisgKiBwal9zdHJfdCBzdHJ1Y3R1cmUgYmVsb3c6CisgKgorICogPHByZT4KKyAqICAgdHlwZWRlZiBzdHJ1Y3QgcGpfc3RyX3QKKyAqICAgeworICogICAgICAgY2hhciAgICAgICpwdHI7CisgKiAgICAgICBwal9zaXplX3QgIHNsZW47CisgKiAgIH0gcGpfc3RyX3Q7CisgKiA8L3ByZT4KKyAqCisgKiBUaGVyZSBhcmUgc29tZSBhZHZhbnRhZ2VzIG9mIHVzaW5nIHRoaXMgYXBwcm9hY2g6CisgKiAgLSB0aGUgc3RyaW5nIGNhbiBwb2ludCB0byBhcmJpdHJhcnkgbG9jYXRpb24gaW4gbWVtb3J5IGV2ZW4KKyAqICAgIGlmIHRoZSBzdHJpbmcgaW4gdGhhdCBsb2NhdGlvbiBpcyBub3QgbnVsbCB0ZXJtaW5hdGVkLiBUaGlzIGlzCisgKiAgICBtb3N0IHVzZWZ1bGwgZm9yIHRleHQgcGFyc2luZywgd2hlcmUgdGhlIHBhcnNlZCB0ZXh0IGNhbiBqdXN0CisgKiAgICBwb2ludCB0byB0aGUgb3JpZ2luYWwgdGV4dCBpbiB0aGUgaW5wdXQuIElmIHdlIHVzZSBDIHN0cmluZywKKyAqICAgIHRoZW4gd2Ugd2lsbCBoYXZlIHRvIGNvcHkgdGhlIHRleHQgcG9ydGlvbiBmcm9tIHRoZSBpbnB1dAorICogICAgdG8gYSBzdHJpbmcgdmFyaWFibGUuCisgKiAgLSBiZWNhdXNlIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpcyBrbm93biwgc3RyaW5nIGNvcHkgb3BlcmF0aW9uCisgKiAgICBjYW4gYmUgbWFkZSBtb3JlIGVmZmljaWVudC4KKyAqCisgKiBNb3N0IG9mIEFQSXMgaW4gUEpMSUIgdGhhdCBleHBlY3Qgb3IgcmV0dXJuIHN0cmluZyB3aWxsIHJlcHJlc2VudAorICogdGhlIHN0cmluZyBhcyBwal9zdHJfdCBpbnN0ZWFkIG9mIG5vcm1hbCBDIHN0cmluZy4KKyAqCisgKiBcc2VjdGlvbiBwal9wc3RyX2V4YW1wbGVzX3NlYyBFeGFtcGxlcworICoKKyAqIEZvciBzb21lIGV4YW1wbGVzLCBwbGVhc2Ugc2VlOgorICogIC0gQHJlZiBwYWdlX3BqbGliX3N0cmluZ190ZXN0CisgKi8KKworLyoqCisgKiBDcmVhdGUgc3RyaW5nIGluaXRpYWxpemVyIGZyb20gYSBub3JtYWwgQyBzdHJpbmcuCisgKgorICogQHBhcmFtIHN0cglOdWxsIHRlcm1pbmF0ZWQgc3RyaW5nIHRvIGJlIHN0b3JlZC4KKyAqCisgKiBAcmV0dXJuCXBqX3N0cl90LgorICovCitQSl9JREVDTChwal9zdHJfdCkgcGpfc3RyKGNoYXIgKnN0cik7CisKKy8qKgorICogQ3JlYXRlIGNvbnN0YW50IHN0cmluZyBmcm9tIG5vcm1hbCBDIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gc3RyCVRoZSBzdHJpbmcgdG8gYmUgaW5pdGlhbGl6ZWQuCisgKiBAcGFyYW0gcwlOdWxsIHRlcm1pbmF0ZWQgc3RyaW5nLgorICoKKyAqIEByZXR1cm4JcGpfc3RyX3QuCisgKi8KK1BKX0lOTElORShjb25zdCBwal9zdHJfdCopIHBqX2NzdHIocGpfc3RyX3QgKnN0ciwgY29uc3QgY2hhciAqcykKK3sKKyAgICBzdHItPnB0ciA9IChjaGFyKilzOworICAgIHN0ci0+c2xlbiA9IHMgPyAocGpfc3NpemVfdClzdHJsZW4ocykgOiAwOworICAgIHJldHVybiBzdHI7Cit9CisKKy8qKgorICogU2V0IHRoZSBwb2ludGVyIGFuZCBsZW5ndGggdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4KKyAqCisgKiBAcGFyYW0gc3RyCSAgICB0aGUgc3RyaW5nLgorICogQHBhcmFtIHB0cgkgICAgcG9pbnRlciB0byBzZXQuCisgKiBAcGFyYW0gbGVuZ3RoICAgIGxlbmd0aCB0byBzZXQuCisgKgorICogQHJldHVybiB0aGUgc3RyaW5nLgorICovCitQSl9JTkxJTkUocGpfc3RyX3QqKSBwal9zdHJzZXQoIHBqX3N0cl90ICpzdHIsIGNoYXIgKnB0ciwgcGpfc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBzdHItPnB0ciA9IHB0cjsKKyAgICBzdHItPnNsZW4gPSAocGpfc3NpemVfdClsZW5ndGg7CisgICAgcmV0dXJuIHN0cjsKK30KKworLyoqCisgKiBTZXQgdGhlIHBvaW50ZXIgYW5kIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHRvIHRoZSBzb3VyY2Ugc3RyaW5nLCB3aGljaAorICogbXVzdCBiZSBOVUxMIHRlcm1pbmF0ZWQuCisgKgorICogQHBhcmFtIHN0cgkgICAgdGhlIHN0cmluZy4KKyAqIEBwYXJhbSBzcmMJICAgIHBvaW50ZXIgdG8gc2V0LgorICoKKyAqIEByZXR1cm4gdGhlIHN0cmluZy4KKyAqLworUEpfSU5MSU5FKHBqX3N0cl90KikgcGpfc3Ryc2V0MiggcGpfc3RyX3QgKnN0ciwgY2hhciAqc3JjKQoreworICAgIHN0ci0+cHRyID0gc3JjOworICAgIHN0ci0+c2xlbiA9IHNyYyA/IChwal9zc2l6ZV90KXN0cmxlbihzcmMpIDogMDsKKyAgICByZXR1cm4gc3RyOworfQorCisvKioKKyAqIFNldCB0aGUgcG9pbnRlciBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLgorICoKKyAqIEBwYXJhbSBzdHIJICAgIFRoZSB0YXJnZXQgc3RyaW5nLgorICogQHBhcmFtIGJlZ2luCSAgICBUaGUgc3RhcnQgb2YgdGhlIHN0cmluZy4KKyAqIEBwYXJhbSBlbmQJICAgIFRoZSBlbmQgb2YgdGhlIHN0cmluZy4KKyAqCisgKiBAcmV0dXJuIHRoZSB0YXJnZXQgc3RyaW5nLgorICovCitQSl9JTkxJTkUocGpfc3RyX3QqKSBwal9zdHJzZXQzKCBwal9zdHJfdCAqc3RyLCBjaGFyICpiZWdpbiwgY2hhciAqZW5kICkKK3sKKyAgICBzdHItPnB0ciA9IGJlZ2luOworICAgIHN0ci0+c2xlbiA9IChwal9zc2l6ZV90KShlbmQtYmVnaW4pOworICAgIHJldHVybiBzdHI7Cit9CisKKy8qKgorICogQXNzaWduIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gZHN0CSAgICBUaGUgdGFyZ2V0IHN0cmluZy4KKyAqIEBwYXJhbSBzcmMJICAgIFRoZSBzb3VyY2Ugc3RyaW5nLgorICoKKyAqIEByZXR1cm4gdGhlIHRhcmdldCBzdHJpbmcuCisgKi8KK1BKX0lERUNMKHBqX3N0cl90KikgcGpfc3RyYXNzaWduKCBwal9zdHJfdCAqZHN0LCBwal9zdHJfdCAqc3JjICk7CisKKy8qKgorICogQ29weSBzdHJpbmcgY29udGVudHMuCisgKgorICogQHBhcmFtIGRzdAkgICAgVGhlIHRhcmdldCBzdHJpbmcuCisgKiBAcGFyYW0gc3JjCSAgICBUaGUgc291cmNlIHN0cmluZy4KKyAqCisgKiBAcmV0dXJuIHRoZSB0YXJnZXQgc3RyaW5nLgorICovCitQSl9JREVDTChwal9zdHJfdCopIHBqX3N0cmNweShwal9zdHJfdCAqZHN0LCBjb25zdCBwal9zdHJfdCAqc3JjKTsKKworLyoqCisgKiBDb3B5IHN0cmluZyBjb250ZW50cy4KKyAqCisgKiBAcGFyYW0gZHN0CSAgICBUaGUgdGFyZ2V0IHN0cmluZy4KKyAqIEBwYXJhbSBzcmMJICAgIFRoZSBzb3VyY2Ugc3RyaW5nLgorICoKKyAqIEByZXR1cm4gdGhlIHRhcmdldCBzdHJpbmcuCisgKi8KK1BKX0lERUNMKHBqX3N0cl90KikgcGpfc3RyY3B5Mihwal9zdHJfdCAqZHN0LCBjb25zdCBjaGFyICpzcmMpOworCisvKioKKyAqIENvcHkgc291cmNlIHN0cmluZyB0byBkZXN0aW5hdGlvbiB1cCB0byB0aGUgc3BlY2lmaWVkIG1heCBsZW5ndGguCisgKgorICogQHBhcmFtIGRzdAkgICAgVGhlIHRhcmdldCBzdHJpbmcuCisgKiBAcGFyYW0gc3JjCSAgICBUaGUgc291cmNlIHN0cmluZy4KKyAqIEBwYXJhbSBtYXgJICAgIE1heGltdW0gY2hhcmFjdGVycyB0byBjb3B5LgorICoKKyAqIEByZXR1cm4gdGhlIHRhcmdldCBzdHJpbmcuCisgKi8KK1BKX0lERUNMKHBqX3N0cl90KikgcGpfc3RybmNweShwal9zdHJfdCAqZHN0LCBjb25zdCBwal9zdHJfdCAqc3JjLCAKKwkJCSAgICAgICBwal9zc2l6ZV90IG1heCk7CisKKy8qKgorICogQ29weSBzb3VyY2Ugc3RyaW5nIHRvIGRlc3RpbmF0aW9uIHVwIHRvIHRoZSBzcGVjaWZpZWQgbWF4IGxlbmd0aCwKKyAqIGFuZCBOVUxMIHRlcm1pbmF0ZSB0aGUgZGVzdGluYXRpb24uIElmIHNvdXJjZSBzdHJpbmcgbGVuZ3RoIGlzCisgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWF4LCB0aGVuIG1heC0xIHdpbGwgYmUgY29waWVkLgorICoKKyAqIEBwYXJhbSBkc3QJICAgIFRoZSB0YXJnZXQgc3RyaW5nLgorICogQHBhcmFtIHNyYwkgICAgVGhlIHNvdXJjZSBzdHJpbmcuCisgKiBAcGFyYW0gbWF4CSAgICBNYXhpbXVtIGNoYXJhY3RlcnMgdG8gY29weS4KKyAqCisgKiBAcmV0dXJuIHRoZSB0YXJnZXQgc3RyaW5nLgorICovCitQSl9JREVDTChwal9zdHJfdCopIHBqX3N0cm5jcHlfd2l0aF9udWxsKHBqX3N0cl90ICpkc3QsIGNvbnN0IHBqX3N0cl90ICpzcmMsCisJCQkJCSBwal9zc2l6ZV90IG1heCk7CisKKy8qKgorICogRHVwbGljYXRlIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gcG9vbAkgICAgVGhlIHBvb2wuCisgKiBAcGFyYW0gZHN0CSAgICBUaGUgc3RyaW5nIHJlc3VsdC4KKyAqIEBwYXJhbSBzcmMJICAgIFRoZSBzdHJpbmcgdG8gZHVwbGljYXRlLgorICoKKyAqIEByZXR1cm4gdGhlIHN0cmluZyByZXN1bHQuCisgKi8KK1BKX0lERUNMKHBqX3N0cl90KikgcGpfc3RyZHVwKHBqX3Bvb2xfdCAqcG9vbCwKKwkJCSAgICAgIHBqX3N0cl90ICpkc3QsCisJCQkgICAgICBjb25zdCBwal9zdHJfdCAqc3JjKTsKKworLyoqCisgKiBEdXBsaWNhdGUgc3RyaW5nIGFuZCBOVUxMIHRlcm1pbmF0ZSB0aGUgZGVzdGluYXRpb24gc3RyaW5nLgorICoKKyAqIEBwYXJhbSBwb29sCSAgICBUaGUgcG9vbC4KKyAqIEBwYXJhbSBkc3QJICAgIFRoZSBzdHJpbmcgcmVzdWx0LgorICogQHBhcmFtIHNyYwkgICAgVGhlIHN0cmluZyB0byBkdXBsaWNhdGUuCisgKgorICogQHJldHVybgkgICAgVGhlIHN0cmluZyByZXN1bHQuCisgKi8KK1BKX0lERUNMKHBqX3N0cl90KikgcGpfc3RyZHVwX3dpdGhfbnVsbChwal9wb29sX3QgKnBvb2wsCisJCQkJCXBqX3N0cl90ICpkc3QsCisJCQkJCWNvbnN0IHBqX3N0cl90ICpzcmMpOworCisvKioKKyAqIER1cGxpY2F0ZSBzdHJpbmcuCisgKgorICogQHBhcmFtIHBvb2wJICAgIFRoZSBwb29sLgorICogQHBhcmFtIGRzdAkgICAgVGhlIHN0cmluZyByZXN1bHQuCisgKiBAcGFyYW0gc3JjCSAgICBUaGUgc3RyaW5nIHRvIGR1cGxpY2F0ZS4KKyAqCisgKiBAcmV0dXJuIHRoZSBzdHJpbmcgcmVzdWx0LgorICovCitQSl9JREVDTChwal9zdHJfdCopIHBqX3N0cmR1cDIocGpfcG9vbF90ICpwb29sLAorCQkJICAgICAgIHBqX3N0cl90ICpkc3QsCisJCQkgICAgICAgY29uc3QgY2hhciAqc3JjKTsKKworLyoqCisgKiBEdXBsaWNhdGUgc3RyaW5nIGFuZCBOVUxMIHRlcm1pbmF0ZSB0aGUgZGVzdGluYXRpb24gc3RyaW5nLgorICoKKyAqIEBwYXJhbSBwb29sCSAgICBUaGUgcG9vbC4KKyAqIEBwYXJhbSBkc3QJICAgIFRoZSBzdHJpbmcgcmVzdWx0LgorICogQHBhcmFtIHNyYwkgICAgVGhlIHN0cmluZyB0byBkdXBsaWNhdGUuCisgKgorICogQHJldHVybgkgICAgVGhlIHN0cmluZyByZXN1bHQuCisgKi8KK1BKX0lERUNMKHBqX3N0cl90KikgcGpfc3RyZHVwMl93aXRoX251bGwocGpfcG9vbF90ICpwb29sLAorCQkJCQkgcGpfc3RyX3QgKmRzdCwKKwkJCQkJIGNvbnN0IGNoYXIgKnNyYyk7CisKKworLyoqCisgKiBEdXBsaWNhdGUgc3RyaW5nLgorICoKKyAqIEBwYXJhbSBwb29sCSAgICBUaGUgcG9vbC4KKyAqIEBwYXJhbSBzcmMJICAgIFRoZSBzdHJpbmcgdG8gZHVwbGljYXRlLgorICoKKyAqIEByZXR1cm4gdGhlIHN0cmluZyByZXN1bHQuCisgKi8KK1BKX0lERUNMKHBqX3N0cl90KSBwal9zdHJkdXAzKHBqX3Bvb2xfdCAqcG9vbCwgY29uc3QgY2hhciAqc3JjKTsKKworLyoqCisgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLgorICoKKyAqIEBwYXJhbSBzdHIJICAgIFRoZSBzdHJpbmcuCisgKgorICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCisgKi8KK1BKX0lOTElORShwal9zaXplX3QpIHBqX3N0cmxlbiggY29uc3QgcGpfc3RyX3QgKnN0ciApCit7CisgICAgcmV0dXJuIHN0ci0+c2xlbjsKK30KKworLyoqCisgKiBSZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIHN0cmluZyBkYXRhLgorICoKKyAqIEBwYXJhbSBzdHIJICAgIFRoZSBzdHJpbmcuCisgKgorICogQHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgc3RyaW5nIGJ1ZmZlci4KKyAqLworUEpfSU5MSU5FKGNvbnN0IGNoYXIqKSBwal9zdHJidWYoIGNvbnN0IHBqX3N0cl90ICpzdHIgKQoreworICAgIHJldHVybiBzdHItPnB0cjsKK30KKworLyoqCisgKiBDb21wYXJlIHN0cmluZ3MuIAorICoKKyAqIEBwYXJhbSBzdHIxCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gc3RyMgkgICAgVGhlIHN0cmluZyB0byBjb21wYXJlLgorICoKKyAqIEByZXR1cm4gCisgKgktIDwgMCBpZiBzdHIxIGlzIGxlc3MgdGhhbiBzdHIyCisgKiAgICAgIC0gMCAgIGlmIHN0cjEgaXMgaWRlbnRpY2FsIHRvIHN0cjIKKyAqICAgICAgLSA+IDAgaWYgc3RyMSBpcyBncmVhdGVyIHRoYW4gc3RyMgorICovCitQSl9JREVDTChpbnQpIHBqX3N0cmNtcCggY29uc3QgcGpfc3RyX3QgKnN0cjEsIGNvbnN0IHBqX3N0cl90ICpzdHIyKTsKKworLyoqCisgKiBDb21wYXJlIHN0cmluZ3MuCisgKgorICogQHBhcmFtIHN0cjEJICAgIFRoZSBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSBzdHIyCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKgorICogQHJldHVybiAKKyAqCS0gPCAwIGlmIHN0cjEgaXMgbGVzcyB0aGFuIHN0cjIKKyAqICAgICAgLSAwICAgaWYgc3RyMSBpcyBpZGVudGljYWwgdG8gc3RyMgorICogICAgICAtID4gMCBpZiBzdHIxIGlzIGdyZWF0ZXIgdGhhbiBzdHIyCisgKi8KK1BKX0lERUNMKGludCkgcGpfc3RyY21wMiggY29uc3QgcGpfc3RyX3QgKnN0cjEsIGNvbnN0IGNoYXIgKnN0cjIgKTsKKworLyoqCisgKiBDb21wYXJlIHN0cmluZ3MuIAorICoKKyAqIEBwYXJhbSBzdHIxCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gc3RyMgkgICAgVGhlIHN0cmluZyB0byBjb21wYXJlLgorICogQHBhcmFtIGxlbgkgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY29tcGFyZS4KKyAqCisgKiBAcmV0dXJuIAorICoJLSA8IDAgaWYgc3RyMSBpcyBsZXNzIHRoYW4gc3RyMgorICogICAgICAtIDAgICBpZiBzdHIxIGlzIGlkZW50aWNhbCB0byBzdHIyCisgKiAgICAgIC0gPiAwIGlmIHN0cjEgaXMgZ3JlYXRlciB0aGFuIHN0cjIKKyAqLworUEpfSURFQ0woaW50KSBwal9zdHJuY21wKCBjb25zdCBwal9zdHJfdCAqc3RyMSwgY29uc3QgcGpfc3RyX3QgKnN0cjIsIAorCQkJICBwal9zaXplX3QgbGVuKTsKKworLyoqCisgKiBDb21wYXJlIHN0cmluZ3MuIAorICoKKyAqIEBwYXJhbSBzdHIxCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gc3RyMgkgICAgVGhlIHN0cmluZyB0byBjb21wYXJlLgorICogQHBhcmFtIGxlbgkgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY29tcGFyZS4KKyAqCisgKiBAcmV0dXJuIAorICoJLSA8IDAgaWYgc3RyMSBpcyBsZXNzIHRoYW4gc3RyMgorICogICAgICAtIDAgICBpZiBzdHIxIGlzIGlkZW50aWNhbCB0byBzdHIyCisgKiAgICAgIC0gPiAwIGlmIHN0cjEgaXMgZ3JlYXRlciB0aGFuIHN0cjIKKyAqLworUEpfSURFQ0woaW50KSBwal9zdHJuY21wMiggY29uc3QgcGpfc3RyX3QgKnN0cjEsIGNvbnN0IGNoYXIgKnN0cjIsIAorCQkJICAgcGpfc2l6ZV90IGxlbik7CisKKy8qKgorICogUGVyZm9ybSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gdG8gdGhlIHN0cmluZ3MuCisgKgorICogQHBhcmFtIHN0cjEJICAgIFRoZSBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSBzdHIyCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKgorICogQHJldHVybiAKKyAqCS0gPCAwIGlmIHN0cjEgaXMgbGVzcyB0aGFuIHN0cjIKKyAqICAgICAgLSAwICAgaWYgc3RyMSBpcyBlcXVhbCB0byBzdHIyCisgKiAgICAgIC0gPiAwIGlmIHN0cjEgaXMgZ3JlYXRlciB0aGFuIHN0cjIKKyAqLworUEpfSURFQ0woaW50KSBwal9zdHJpY21wKGNvbnN0IHBqX3N0cl90ICpzdHIxLCBjb25zdCBwal9zdHJfdCAqc3RyMik7CisKKy8qKgorICogUGVyZm9ybSBsb3dlcmNhc2UgY29tcGFyaXNvbiB0byB0aGUgc3RyaW5ncyB3aGljaCBjb25zaXN0cyBvZiBvbmx5CisgKiBhbG51bSBjaGFyYWN0ZXJzLiBNb3JlIG92ZXIsIGl0IHdpbGwgb25seSByZXR1cm4gbm9uLXplcm8gaWYgYm90aAorICogc3RyaW5ncyBhcmUgbm90IGVxdWFsLCBub3QgdGhlIHVzdWFsIG5lZ2F0aXZlIG9yIHBvc2l0aXZlIHZhbHVlLgorICoKKyAqIElmIG5vbi1hbG51bSBpbnB1dHMgYXJlIGdpdmVuLCB0aGVuIHRoZSBmdW5jdGlvbiBtYXkgbWlzdGFrZW5seSAKKyAqIHRyZWF0IHR3byBzdHJpbmdzIGFzIGVxdWFsLgorICoKKyAqIEBwYXJhbSBzdHIxCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gc3RyMgkgICAgVGhlIHN0cmluZyB0byBjb21wYXJlLgorICogQHBhcmFtIGxlbgkgICAgVGhlIGxlbmd0aCB0byBjb21wYXJlLgorICoKKyAqIEByZXR1cm4gCisgKiAgICAgIC0gMAkgICAgaWYgc3RyMSBpcyBlcXVhbCB0byBzdHIyCisgKiAgICAgIC0gKC0xKQkgICAgaWYgbm90IGVxdWFsLgorICovCisjaWYgZGVmaW5lZChQSl9IQVNfU1RSSUNNUF9BTE5VTSkgJiYgUEpfSEFTX1NUUklDTVBfQUxOVU0hPTAKK1BKX0lERUNMKGludCkgc3RybmljbXBfYWxudW0oY29uc3QgY2hhciAqc3RyMSwgY29uc3QgY2hhciAqc3RyMiwKKwkJCSAgICAgaW50IGxlbik7CisjZWxzZQorI2RlZmluZSBzdHJuaWNtcF9hbG51bQlwal9hbnNpX3N0cm5pY21wCisjZW5kaWYKKworLyoqCisgKiBQZXJmb3JtIGxvd2VyY2FzZSBjb21wYXJpc29uIHRvIHRoZSBzdHJpbmdzIHdoaWNoIGNvbnNpc3RzIG9mIG9ubHkKKyAqIGFsbnVtIGNoYXJhY3RlcnMuIE1vcmUgb3ZlciwgaXQgd2lsbCBvbmx5IHJldHVybiBub24temVybyBpZiBib3RoCisgKiBzdHJpbmdzIGFyZSBub3QgZXF1YWwsIG5vdCB0aGUgdXN1YWwgbmVnYXRpdmUgb3IgcG9zaXRpdmUgdmFsdWUuCisgKgorICogSWYgbm9uLWFsbnVtIGlucHV0cyBhcmUgZ2l2ZW4sIHRoZW4gdGhlIGZ1bmN0aW9uIG1heSBtaXN0YWtlbmx5IAorICogdHJlYXQgdHdvIHN0cmluZ3MgYXMgZXF1YWwuCisgKgorICogQHBhcmFtIHN0cjEJICAgIFRoZSBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSBzdHIyCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKgorICogQHJldHVybiAKKyAqICAgICAgLSAwCSAgICBpZiBzdHIxIGlzIGVxdWFsIHRvIHN0cjIKKyAqICAgICAgLSAoLTEpCSAgICBpZiBub3QgZXF1YWwuCisgKi8KKyNpZiBkZWZpbmVkKFBKX0hBU19TVFJJQ01QX0FMTlVNKSAmJiBQSl9IQVNfU1RSSUNNUF9BTE5VTSE9MAorUEpfSURFQ0woaW50KSBwal9zdHJpY21wX2FsbnVtKGNvbnN0IHBqX3N0cl90ICpzdHIxLCBjb25zdCBwal9zdHJfdCAqc3RyMik7CisjZWxzZQorI2RlZmluZSBwal9zdHJpY21wX2FsbnVtICAgIHBqX3N0cmljbXAKKyNlbmRpZgorCisvKioKKyAqIFBlcmZvcm0gY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uIHRvIHRoZSBzdHJpbmdzLgorICoKKyAqIEBwYXJhbSBzdHIxCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gc3RyMgkgICAgVGhlIHN0cmluZyB0byBjb21wYXJlLgorICoKKyAqIEByZXR1cm4gCisgKgktIDwgMCBpZiBzdHIxIGlzIGxlc3MgdGhhbiBzdHIyCisgKiAgICAgIC0gMCAgIGlmIHN0cjEgaXMgaWRlbnRpY2FsIHRvIHN0cjIKKyAqICAgICAgLSA+IDAgaWYgc3RyMSBpcyBncmVhdGVyIHRoYW4gc3RyMgorICovCitQSl9JREVDTChpbnQpIHBqX3N0cmljbXAyKCBjb25zdCBwal9zdHJfdCAqc3RyMSwgY29uc3QgY2hhciAqc3RyMik7CisKKy8qKgorICogUGVyZm9ybSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gdG8gdGhlIHN0cmluZ3MuCisgKgorICogQHBhcmFtIHN0cjEJICAgIFRoZSBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSBzdHIyCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gbGVuCSAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb21wYXJlLgorICoKKyAqIEByZXR1cm4gCisgKgktIDwgMCBpZiBzdHIxIGlzIGxlc3MgdGhhbiBzdHIyCisgKiAgICAgIC0gMCAgIGlmIHN0cjEgaXMgaWRlbnRpY2FsIHRvIHN0cjIKKyAqICAgICAgLSA+IDAgaWYgc3RyMSBpcyBncmVhdGVyIHRoYW4gc3RyMgorICovCitQSl9JREVDTChpbnQpIHBqX3N0cm5pY21wKCBjb25zdCBwal9zdHJfdCAqc3RyMSwgY29uc3QgcGpfc3RyX3QgKnN0cjIsIAorCQkJICAgcGpfc2l6ZV90IGxlbik7CisKKy8qKgorICogUGVyZm9ybSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gdG8gdGhlIHN0cmluZ3MuCisgKgorICogQHBhcmFtIHN0cjEJICAgIFRoZSBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSBzdHIyCSAgICBUaGUgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gbGVuCSAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb21wYXJlLgorICoKKyAqIEByZXR1cm4gCisgKgktIDwgMCBpZiBzdHIxIGlzIGxlc3MgdGhhbiBzdHIyCisgKiAgICAgIC0gMCAgIGlmIHN0cjEgaXMgaWRlbnRpY2FsIHRvIHN0cjIKKyAqICAgICAgLSA+IDAgaWYgc3RyMSBpcyBncmVhdGVyIHRoYW4gc3RyMgorICovCitQSl9JREVDTChpbnQpIHBqX3N0cm5pY21wMiggY29uc3QgcGpfc3RyX3QgKnN0cjEsIGNvbnN0IGNoYXIgKnN0cjIsIAorCQkJICAgIHBqX3NpemVfdCBsZW4pOworCisvKioKKyAqIENvbmNhdGVuYXRlIHN0cmluZ3MuCisgKgorICogQHBhcmFtIGRzdAkgICAgVGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KKyAqIEBwYXJhbSBzcmMJICAgIFRoZSBzb3VyY2Ugc3RyaW5nLgorICovCitQSl9JREVDTCh2b2lkKSBwal9zdHJjYXQocGpfc3RyX3QgKmRzdCwgY29uc3QgcGpfc3RyX3QgKnNyYyk7CisKKworLyoqCisgKiBDb25jYXRlbmF0ZSBzdHJpbmdzLgorICoKKyAqIEBwYXJhbSBkc3QJICAgIFRoZSBkZXN0aW5hdGlvbiBzdHJpbmcuCisgKiBAcGFyYW0gc3JjCSAgICBUaGUgc291cmNlIHN0cmluZy4KKyAqLworUEpfSURFQ0wodm9pZCkgcGpfc3RyY2F0Mihwal9zdHJfdCAqZHN0LCBjb25zdCBjaGFyICpzcmMpOworCisKKy8qKgorICogRmluZHMgYSBjaGFyYWN0ZXIgaW4gYSBzdHJpbmcuCisgKgorICogQHBhcmFtIHN0cgkgICAgVGhlIHN0cmluZy4KKyAqIEBwYXJhbSBjaHIJICAgIFRoZSBjaGFyYWN0ZXIgdG8gZmluZC4KKyAqCisgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIGZpcnN0IGNoYXJhY3RlciBmb3VuZCwgb3IgTlVMTC4KKyAqLworUEpfSU5MSU5FKGNoYXIqKSBwal9zdHJjaHIoIGNvbnN0IHBqX3N0cl90ICpzdHIsIGludCBjaHIpCit7CisgICAgcmV0dXJuIChjaGFyKikgbWVtY2hyKChjaGFyKilzdHItPnB0ciwgY2hyLCBzdHItPnNsZW4pOworfQorCisvKioKKyAqIEZpbmQgdGhlIG9jY3VyZW5jZSBvZiBhIHN1YnN0cmluZyBzdWJzdHIgaW4gc3RyaW5nIHN0ci4KKyAqCisgKiBAcGFyYW0gc3RyCSAgICBUaGUgc3RyaW5nIHRvIHNlYXJjaC4KKyAqIEBwYXJhbSBzdWJzdHIgICAgVGhlIHN0cmluZyB0byBzZWFyY2ggZm8uCisgKgorICogQHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgcG9zaXRpb24gb2Ygc3Vic3RyIGluIHN0ciwgb3IgTlVMTC4gTm90ZQorICogICAgICAgICB0aGF0IGlmIHN0ciBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkLCB0aGUgcmV0dXJuZWQgcG9pbnRlcgorICogICAgICAgICBpcyBwb2ludGluZyB0byBub24tTlVMTCB0ZXJtaW5hdGVkIHN0cmluZy4KKyAqLworUEpfREVDTChjaGFyKikgcGpfc3Ryc3RyKGNvbnN0IHBqX3N0cl90ICpzdHIsIGNvbnN0IHBqX3N0cl90ICpzdWJzdHIpOworCisvKioKKyAqIFBlcmZvcm1zIHN1YnN0cmluZyBsb29rdXAgbGlrZSBwal9zdHJzdHIoKSBidXQgaWdub3JlcyB0aGUgY2FzZSBvZgorICogYm90aCBzdHJpbmdzLgorICoKKyAqIEBwYXJhbSBzdHIJICAgIFRoZSBzdHJpbmcgdG8gc2VhcmNoLgorICogQHBhcmFtIHN1YnN0ciAgICBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmby4KKyAqCisgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBwb3NpdGlvbiBvZiBzdWJzdHIgaW4gc3RyLCBvciBOVUxMLiBOb3RlCisgKiAgICAgICAgIHRoYXQgaWYgc3RyIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWQsIHRoZSByZXR1cm5lZCBwb2ludGVyCisgKiAgICAgICAgIGlzIHBvaW50aW5nIHRvIG5vbi1OVUxMIHRlcm1pbmF0ZWQgc3RyaW5nLgorICovCitQSl9ERUNMKGNoYXIqKSBwal9zdHJpc3RyKGNvbnN0IHBqX3N0cl90ICpzdHIsIGNvbnN0IHBqX3N0cl90ICpzdWJzdHIpOworCisvKioKKyAqIFJlbW92ZSAodHJpbSkgbGVhZGluZyB3aGl0ZXNwYWNlcyBmcm9tIHRoZSBzdHJpbmcuCisgKgorICogQHBhcmFtIHN0cgkgICAgVGhlIHN0cmluZy4KKyAqCisgKiBAcmV0dXJuIHRoZSBzdHJpbmcuCisgKi8KK1BKX0RFQ0wocGpfc3RyX3QqKSBwal9zdHJsdHJpbSggcGpfc3RyX3QgKnN0ciApOworCisvKioKKyAqIFJlbW92ZSAodHJpbSkgdGhlIHRyYWlsaW5nIHdoaXRlc3BhY2VzIGZyb20gdGhlIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gc3RyCSAgICBUaGUgc3RyaW5nLgorICoKKyAqIEByZXR1cm4gdGhlIHN0cmluZy4KKyAqLworUEpfREVDTChwal9zdHJfdCopIHBqX3N0cnJ0cmltKCBwal9zdHJfdCAqc3RyICk7CisKKy8qKgorICogUmVtb3ZlICh0cmltKSBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlcyBmcm9tIHRoZSBzdHJpbmcuCisgKgorICogQHBhcmFtIHN0cgkgICAgVGhlIHN0cmluZy4KKyAqCisgKiBAcmV0dXJuIHRoZSBzdHJpbmcuCisgKi8KK1BKX0lERUNMKHBqX3N0cl90KikgcGpfc3RydHJpbSggcGpfc3RyX3QgKnN0ciApOworCisvKioKKyAqIEluaXRpYWxpemUgdGhlIGJ1ZmZlciB3aXRoIHNvbWUgcmFuZG9tIHN0cmluZy4gTm90ZSB0aGF0IHRoZSAKKyAqIGdlbmVyYXRlZCBzdHJpbmcgaXMgbm90IE5VTEwgdGVybWluYXRlZC4KKyAqCisgKiBAcGFyYW0gc3RyCSAgICB0aGUgc3RyaW5nIHRvIHN0b3JlIHRoZSByZXN1bHQuCisgKiBAcGFyYW0gbGVuZ3RoICAgIHRoZSBsZW5ndGggb2YgdGhlIHJhbmRvbSBzdHJpbmcgdG8gZ2VuZXJhdGUuCisgKgorICogQHJldHVybiB0aGUgc3RyaW5nLgorICovCitQSl9ERUNMKGNoYXIqKSBwal9jcmVhdGVfcmFuZG9tX3N0cmluZyhjaGFyICpzdHIsIHBqX3NpemVfdCBsZW5ndGgpOworCisvKioKKyAqIENvbnZlcnQgc3RyaW5nIHRvIHNpZ25lZCBpbnRlZ2VyLiBUaGUgY29udmVyc2lvbiB3aWxsIHN0b3AgYXMKKyAqIHNvb24gYXMgbm9uLWRpZ2l0IGNoYXJhY3RlciBpcyBmb3VuZCBvciBhbGwgdGhlIGNoYXJhY3RlcnMgaGF2ZQorICogYmVlbiBwcm9jZXNzZWQuCisgKgorICogQHBhcmFtIHN0cgl0aGUgc3RyaW5nLgorICoKKyAqIEByZXR1cm4gdGhlIGludGVnZXIuCisgKi8KK1BKX0RFQ0wobG9uZykgcGpfc3RydG9sKGNvbnN0IHBqX3N0cl90ICpzdHIpOworCisvKioKKyAqIENvbnZlcnQgc3RyaW5nIHRvIHVuc2lnbmVkIGludGVnZXIuIFRoZSBjb252ZXJzaW9uIHdpbGwgc3RvcCBhcworICogc29vbiBhcyBub24tZGlnaXQgY2hhcmFjdGVyIGlzIGZvdW5kIG9yIGFsbCB0aGUgY2hhcmFjdGVycyBoYXZlCisgKiBiZWVuIHByb2Nlc3NlZC4KKyAqCisgKiBAcGFyYW0gc3RyCXRoZSBzdHJpbmcuCisgKgorICogQHJldHVybiB0aGUgdW5zaWduZWQgaW50ZWdlci4KKyAqLworUEpfREVDTCh1bnNpZ25lZCBsb25nKSBwal9zdHJ0b3VsKGNvbnN0IHBqX3N0cl90ICpzdHIpOworCisvKioKKyAqIENvbnZlcnQgc3RyaW5ncyB0byBhbiB1bnNpZ25lZCBsb25nLWludGVnZXIgdmFsdWUuCisgKiBUaGlzIGZ1bmN0aW9uIHN0b3BzIHJlYWRpbmcgdGhlIHN0cmluZyBpbnB1dCBlaXRoZXIgd2hlbiB0aGUgbnVtYmVyCisgKiBvZiBjaGFyYWN0ZXJzIGhhcyBleGNlZWRlZCB0aGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBvciBpdCBoYXMgcmVhZCAKKyAqIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXQgY2Fubm90IHJlY29nbml6ZSBhcyBwYXJ0IG9mIGEgbnVtYmVyLCB0aGF0IGlzCisgKiBhIGNoYXJhY3RlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYmFzZS4gCisgKgorICogQHBhcmFtIHN0cgkgICAgVGhlIGlucHV0IHN0cmluZy4KKyAqIEBwYXJhbSBlbmRwdHIgICAgT3B0aW9uYWwgcG9pbnRlciB0byByZWNlaXZlIHRoZSByZW1haW5kZXIvdW5wYXJzZWQKKyAqCQkgICAgcG9ydGlvbiBvZiB0aGUgaW5wdXQuCisgKiBAcGFyYW0gYmFzZQkgICAgTnVtYmVyIGJhc2UgdG8gdXNlLgorICoKKyAqIEByZXR1cm4gdGhlIHVuc2lnbmVkIGludGVnZXIgbnVtYmVyLgorICovCitQSl9ERUNMKHVuc2lnbmVkIGxvbmcpIHBqX3N0cnRvdWwyKGNvbnN0IHBqX3N0cl90ICpzdHIsIHBqX3N0cl90ICplbmRwdHIsCisJCQkJICAgdW5zaWduZWQgYmFzZSk7CisKKy8qKgorICogQ29udmVydCBzdHJpbmcgdG8gZmxvYXQuCisgKgorICogQHBhcmFtIHN0cgl0aGUgc3RyaW5nLgorICoKKyAqIEByZXR1cm4gdGhlIHZhbHVlLgorICovCitQSl9ERUNMKGZsb2F0KSBwal9zdHJ0b2YoY29uc3QgcGpfc3RyX3QgKnN0cik7CisKKy8qKgorICogVXRpbGl0eSB0byBjb252ZXJ0IHVuc2lnbmVkIGludGVnZXIgdG8gc3RyaW5nLiBOb3RlIHRoYXQgdGhlCisgKiBzdHJpbmcgd2lsbCBiZSBOVUxMIHRlcm1pbmF0ZWQuCisgKgorICogQHBhcmFtIHZhbAkgICAgdGhlIHVuc2lnbmVkIGludGVnZXIgdmFsdWUuCisgKiBAcGFyYW0gYnVmCSAgICB0aGUgYnVmZmVyCisgKgorICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbgorICovCitQSl9ERUNMKGludCkgcGpfdXRvYSh1bnNpZ25lZCBsb25nIHZhbCwgY2hhciAqYnVmKTsKKworLyoqCisgKiBDb252ZXJ0IHVuc2lnbmVkIGludGVnZXIgdG8gc3RyaW5nIHdpdGggbWluaW11bSBkaWdpdHMuIE5vdGUgdGhhdCB0aGUKKyAqIHN0cmluZyB3aWxsIGJlIE5VTEwgdGVybWluYXRlZC4KKyAqCisgKiBAcGFyYW0gdmFsCSAgICBUaGUgdW5zaWduZWQgaW50ZWdlciB2YWx1ZS4KKyAqIEBwYXJhbSBidWYJICAgIFRoZSBidWZmZXIuCisgKiBAcGFyYW0gbWluX2RpZyAgIE1pbmltdW0gZGlnaXRzIHRvIGJlIHByaW50ZWQsIG9yIHplcm8gdG8gc3BlY2lmeSBubworICoJCSAgICBtaW5pbXVtIGRpZ2l0LgorICogQHBhcmFtIHBhZAkgICAgVGhlIHBhZGRpbmcgY2hhcmFjdGVyIHRvIGJlIHB1dCBpbiBmcm9udCBvZiB0aGUgc3RyaW5nCisgKgkJICAgIHdoZW4gdGhlIGRpZ2l0cyBpcyBsZXNzIHRoYW4gbWluaW11bS4KKyAqCisgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuLgorICovCitQSl9ERUNMKGludCkgcGpfdXRvYV9wYWQoIHVuc2lnbmVkIGxvbmcgdmFsLCBjaGFyICpidWYsIGludCBtaW5fZGlnLCBpbnQgcGFkKTsKKworCisvKioKKyAqIEZpbGwgdGhlIG1lbW9yeSBsb2NhdGlvbiB3aXRoIHplcm8uCisgKgorICogQHBhcmFtIGRzdAkgICAgVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAqIEBwYXJhbSBzaXplCSAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzLgorICovCitQSl9JTkxJTkUodm9pZCkgcGpfYnplcm8odm9pZCAqZHN0LCBwal9zaXplX3Qgc2l6ZSkKK3sKKyNpZiBkZWZpbmVkKFBKX0hBU19CWkVSTykgJiYgUEpfSEFTX0JaRVJPIT0wCisgICAgYnplcm8oZHN0LCBzaXplKTsKKyNlbHNlCisgICAgbWVtc2V0KGRzdCwgMCwgc2l6ZSk7CisjZW5kaWYKK30KKworCisvKioKKyAqIEZpbGwgdGhlIG1lbW9yeSBsb2NhdGlvbiB3aXRoIHZhbHVlLgorICoKKyAqIEBwYXJhbSBkc3QJICAgIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIuCisgKiBAcGFyYW0gYwkgICAgQ2hhcmFjdGVyIHRvIHNldC4KKyAqIEBwYXJhbSBzaXplCSAgICBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCisgKgorICogQHJldHVybiB0aGUgdmFsdWUgb2YgZHN0LgorICovCitQSl9JTkxJTkUodm9pZCopIHBqX21lbXNldCh2b2lkICpkc3QsIGludCBjLCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gbWVtc2V0KGRzdCwgYywgc2l6ZSk7Cit9CisKKy8qKgorICogQ29weSBidWZmZXIuCisgKgorICogQHBhcmFtIGRzdAkgICAgVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAqIEBwYXJhbSBzcmMJICAgIFRoZSBzb3VyY2UgYnVmZmVyLgorICogQHBhcmFtIHNpemUJICAgIFRoZSBzaXplIHRvIGNvcHkuCisgKgorICogQHJldHVybiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICovCitQSl9JTkxJTkUodm9pZCopIHBqX21lbWNweSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgcGpfc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIG1lbWNweShkc3QsIHNyYywgc2l6ZSk7Cit9CisKKy8qKgorICogTW92ZSBtZW1vcnkuCisgKgorICogQHBhcmFtIGRzdAkgICAgVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAqIEBwYXJhbSBzcmMJICAgIFRoZSBzb3VyY2UgYnVmZmVyLgorICogQHBhcmFtIHNpemUJICAgIFRoZSBzaXplIHRvIGNvcHkuCisgKgorICogQHJldHVybiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICovCitQSl9JTkxJTkUodm9pZCopIHBqX21lbW1vdmUodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHBqX3NpemVfdCBzaXplKQoreworICAgIHJldHVybiBtZW1tb3ZlKGRzdCwgc3JjLCBzaXplKTsKK30KKworLyoqCisgKiBDb21wYXJlIGJ1ZmZlcnMuCisgKgorICogQHBhcmFtIGJ1ZjEJICAgIFRoZSBmaXJzdCBidWZmZXIuCisgKiBAcGFyYW0gYnVmMgkgICAgVGhlIHNlY29uZCBidWZmZXIuCisgKiBAcGFyYW0gc2l6ZQkgICAgVGhlIHNpemUgdG8gY29tcGFyZS4KKyAqCisgKiBAcmV0dXJuIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSB2YWx1ZS4KKyAqLworUEpfSU5MSU5FKGludCkgcGpfbWVtY21wKGNvbnN0IHZvaWQgKmJ1ZjEsIGNvbnN0IHZvaWQgKmJ1ZjIsIHBqX3NpemVfdCBzaXplKQoreworICAgIHJldHVybiBtZW1jbXAoYnVmMSwgYnVmMiwgc2l6ZSk7Cit9CisKKy8qKgorICogRmluZCBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlci4KKyAqCisgKiBAcGFyYW0gYnVmCSAgICBUaGUgYnVmZmVyLgorICogQHBhcmFtIGMJICAgIFRoZSBjaGFyYWN0ZXIgdG8gZmluZC4KKyAqIEBwYXJhbSBzaXplCSAgICBUaGUgc2l6ZSB0byBjaGVjay4KKyAqCisgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIGxvY2F0aW9uIHdoZXJlIHRoZSBjaGFyYWN0ZXIgaXMgZm91bmQsIG9yIE5VTEwgaWYKKyAqICAgICAgICAgbm90IGZvdW5kLgorICovCitQSl9JTkxJTkUodm9pZCopIHBqX21lbWNocihjb25zdCB2b2lkICpidWYsIGludCBjLCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gKHZvaWQqKW1lbWNocigodm9pZCopYnVmLCBjLCBzaXplKTsKK30KKworCisvKioKKyAqIEB9CisgKi8KKworI2lmIFBKX0ZVTkNUSU9OU19BUkVfSU5MSU5FRAorIyAgaW5jbHVkZSA8cGovc3RyaW5nX2kuaD4KKyNlbmRpZgorCitQSl9FTkRfREVDTAorCisjZW5kaWYJLyogX19QSl9TVFJJTkdfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovc3RyaW5nX2kuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGovc3RyaW5nX2kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmI4NmYxCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai9zdHJpbmdfaS5oCkBAIC0wLDAgKzEsMzcxIEBACisvKiAkSWQ6IHN0cmluZ19pLmggNDUzNyAyMDEzLTA2LTE5IDA2OjQ3OjQzWiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisKKyNpbmNsdWRlIDxwai9wb29sLmg+CisKK1BKX0lERUYocGpfc3RyX3QpIHBqX3N0cihjaGFyICpzdHIpCit7CisgICAgcGpfc3RyX3QgZHN0OworICAgIGRzdC5wdHIgPSBzdHI7CisgICAgZHN0LnNsZW4gPSBzdHIgPyBwal9hbnNpX3N0cmxlbihzdHIpIDogMDsKKyAgICByZXR1cm4gZHN0OworfQorCitQSl9JREVGKHBqX3N0cl90KikgcGpfc3RyZHVwKHBqX3Bvb2xfdCAqcG9vbCwKKwkJCSAgICAgIHBqX3N0cl90ICpkc3QsCisJCQkgICAgICBjb25zdCBwal9zdHJfdCAqc3JjKQoreworICAgIC8qIFdpdGhvdXQgdGhpcywgZGVzdGluYXRpb24gd2lsbCBiZSBjb3JydXB0ZWQgKi8KKyAgICBpZiAoZHN0ID09IHNyYykKKwlyZXR1cm4gZHN0OworCisgICAgaWYgKHNyYy0+c2xlbikgeworCWRzdC0+cHRyID0gKGNoYXIqKXBqX3Bvb2xfYWxsb2MocG9vbCwgc3JjLT5zbGVuKTsKKwlwal9tZW1jcHkoZHN0LT5wdHIsIHNyYy0+cHRyLCBzcmMtPnNsZW4pOworICAgIH0KKyAgICBkc3QtPnNsZW4gPSBzcmMtPnNsZW47CisgICAgcmV0dXJuIGRzdDsKK30KKworUEpfSURFRihwal9zdHJfdCopIHBqX3N0cmR1cF93aXRoX251bGwoIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJcGpfc3RyX3QgKmRzdCwKKwkJCQkJY29uc3QgcGpfc3RyX3QgKnNyYykKK3sKKyAgICBkc3QtPnB0ciA9IChjaGFyKilwal9wb29sX2FsbG9jKHBvb2wsIHNyYy0+c2xlbisxKTsKKyAgICBpZiAoc3JjLT5zbGVuKSB7CisJcGpfbWVtY3B5KGRzdC0+cHRyLCBzcmMtPnB0ciwgc3JjLT5zbGVuKTsKKyAgICB9CisgICAgZHN0LT5zbGVuID0gc3JjLT5zbGVuOworICAgIGRzdC0+cHRyW2RzdC0+c2xlbl0gPSAnXDAnOworICAgIHJldHVybiBkc3Q7Cit9CisKK1BKX0lERUYocGpfc3RyX3QqKSBwal9zdHJkdXAyKHBqX3Bvb2xfdCAqcG9vbCwKKwkJCSAgICAgIHBqX3N0cl90ICpkc3QsCisJCQkgICAgICBjb25zdCBjaGFyICpzcmMpCit7CisgICAgZHN0LT5zbGVuID0gc3JjID8gcGpfYW5zaV9zdHJsZW4oc3JjKSA6IDA7CisgICAgaWYgKGRzdC0+c2xlbikgeworCWRzdC0+cHRyID0gKGNoYXIqKXBqX3Bvb2xfYWxsb2MocG9vbCwgZHN0LT5zbGVuKTsKKwlwal9tZW1jcHkoZHN0LT5wdHIsIHNyYywgZHN0LT5zbGVuKTsKKyAgICB9IGVsc2UgeworCWRzdC0+cHRyID0gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKworUEpfSURFRihwal9zdHJfdCopIHBqX3N0cmR1cDJfd2l0aF9udWxsKCBwal9wb29sX3QgKnBvb2wsCisJCQkJCSBwal9zdHJfdCAqZHN0LAorCQkJCQkgY29uc3QgY2hhciAqc3JjKQoreworICAgIGRzdC0+c2xlbiA9IHNyYyA/IHBqX2Fuc2lfc3RybGVuKHNyYykgOiAwOworICAgIGRzdC0+cHRyID0gKGNoYXIqKXBqX3Bvb2xfYWxsb2MocG9vbCwgZHN0LT5zbGVuKzEpOworICAgIGlmIChkc3QtPnNsZW4pIHsKKwlwal9tZW1jcHkoZHN0LT5wdHIsIHNyYywgZHN0LT5zbGVuKTsKKyAgICB9CisgICAgZHN0LT5wdHJbZHN0LT5zbGVuXSA9ICdcMCc7CisgICAgcmV0dXJuIGRzdDsKK30KKworUEpfSURFRihwal9zdHJfdCkgcGpfc3RyZHVwMyhwal9wb29sX3QgKnBvb2wsIGNvbnN0IGNoYXIgKnNyYykKK3sKKyAgICBwal9zdHJfdCB0ZW1wOworICAgIHBqX3N0cmR1cDIocG9vbCwgJnRlbXAsIHNyYyk7CisgICAgcmV0dXJuIHRlbXA7Cit9CisKK1BKX0lERUYocGpfc3RyX3QqKSBwal9zdHJhc3NpZ24oIHBqX3N0cl90ICpkc3QsIHBqX3N0cl90ICpzcmMgKQoreworICAgIGRzdC0+cHRyID0gc3JjLT5wdHI7CisgICAgZHN0LT5zbGVuID0gc3JjLT5zbGVuOworICAgIHJldHVybiBkc3Q7Cit9CisKK1BKX0lERUYocGpfc3RyX3QqKSBwal9zdHJjcHkocGpfc3RyX3QgKmRzdCwgY29uc3QgcGpfc3RyX3QgKnNyYykKK3sKKyAgICBkc3QtPnNsZW4gPSBzcmMtPnNsZW47CisgICAgaWYgKHNyYy0+c2xlbiA+IDApCisJcGpfbWVtY3B5KGRzdC0+cHRyLCBzcmMtPnB0ciwgc3JjLT5zbGVuKTsKKyAgICByZXR1cm4gZHN0OworfQorCitQSl9JREVGKHBqX3N0cl90KikgcGpfc3RyY3B5Mihwal9zdHJfdCAqZHN0LCBjb25zdCBjaGFyICpzcmMpCit7CisgICAgZHN0LT5zbGVuID0gc3JjID8gcGpfYW5zaV9zdHJsZW4oc3JjKSA6IDA7CisgICAgaWYgKGRzdC0+c2xlbiA+IDApCisJcGpfbWVtY3B5KGRzdC0+cHRyLCBzcmMsIGRzdC0+c2xlbik7CisgICAgcmV0dXJuIGRzdDsKK30KKworUEpfSURFRihwal9zdHJfdCopIHBqX3N0cm5jcHkoIHBqX3N0cl90ICpkc3QsIGNvbnN0IHBqX3N0cl90ICpzcmMsIAorCQkJICAgICAgIHBqX3NzaXplX3QgbWF4KQoreworICAgIGlmIChtYXggPiBzcmMtPnNsZW4pIG1heCA9IHNyYy0+c2xlbjsKKyAgICBwal9tZW1jcHkoZHN0LT5wdHIsIHNyYy0+cHRyLCBtYXgpOworICAgIGRzdC0+c2xlbiA9IG1heDsKKyAgICByZXR1cm4gZHN0OworfQorCitQSl9JREVGKHBqX3N0cl90KikgcGpfc3RybmNweV93aXRoX251bGwoIHBqX3N0cl90ICpkc3QsIGNvbnN0IHBqX3N0cl90ICpzcmMsCisJCQkJCSBwal9zc2l6ZV90IG1heCkKK3sKKyAgICBpZiAobWF4IDw9IHNyYy0+c2xlbikKKwltYXggPSBtYXgtMTsKKyAgICBlbHNlCisJbWF4ID0gc3JjLT5zbGVuOworCisgICAgcGpfbWVtY3B5KGRzdC0+cHRyLCBzcmMtPnB0ciwgbWF4KTsKKyAgICBkc3QtPnB0clttYXhdID0gJ1wwJzsKKyAgICBkc3QtPnNsZW4gPSBtYXg7CisgICAgcmV0dXJuIGRzdDsKK30KKworCitQSl9JREVGKGludCkgcGpfc3RyY21wKCBjb25zdCBwal9zdHJfdCAqc3RyMSwgY29uc3QgcGpfc3RyX3QgKnN0cjIpCit7CisgICAgaWYgKHN0cjEtPnNsZW4gPT0gMCkgeworCXJldHVybiBzdHIyLT5zbGVuPT0wID8gMCA6IC0xOworICAgIH0gZWxzZSBpZiAoc3RyMi0+c2xlbiA9PSAwKSB7CisJcmV0dXJuIDE7CisgICAgfSBlbHNlIHsKKwlwal9zaXplX3QgbWluID0gKHN0cjEtPnNsZW4gPCBzdHIyLT5zbGVuKT8gc3RyMS0+c2xlbiA6IHN0cjItPnNsZW47CisJaW50IHJlcyA9IHBqX21lbWNtcChzdHIxLT5wdHIsIHN0cjItPnB0ciwgbWluKTsKKwlpZiAocmVzID09IDApIHsKKwkgICAgcmV0dXJuIChzdHIxLT5zbGVuIDwgc3RyMi0+c2xlbikgPyAtMSA6CisJCSAgICAoc3RyMS0+c2xlbiA9PSBzdHIyLT5zbGVuID8gMCA6IDEpOworCX0gZWxzZSB7CisJICAgIHJldHVybiByZXM7CisJfQorICAgIH0KK30KKworUEpfSURFRihpbnQpIHBqX3N0cm5jbXAoIGNvbnN0IHBqX3N0cl90ICpzdHIxLCBjb25zdCBwal9zdHJfdCAqc3RyMiwgCisJCQkgcGpfc2l6ZV90IGxlbikKK3sKKyAgICBwal9zdHJfdCBjb3B5MSwgY29weTI7CisKKyAgICBpZiAobGVuIDwgKHVuc2lnbmVkKXN0cjEtPnNsZW4pIHsKKwljb3B5MS5wdHIgPSBzdHIxLT5wdHI7CisJY29weTEuc2xlbiA9IGxlbjsKKwlzdHIxID0gJmNvcHkxOworICAgIH0KKworICAgIGlmIChsZW4gPCAodW5zaWduZWQpc3RyMi0+c2xlbikgeworCWNvcHkyLnB0ciA9IHN0cjItPnB0cjsKKwljb3B5Mi5zbGVuID0gbGVuOworCXN0cjIgPSAmY29weTI7CisgICAgfQorCisgICAgcmV0dXJuIHBqX3N0cmNtcChzdHIxLCBzdHIyKTsKK30KKworUEpfSURFRihpbnQpIHBqX3N0cm5jbXAyKCBjb25zdCBwal9zdHJfdCAqc3RyMSwgY29uc3QgY2hhciAqc3RyMiwgCisJCQkgIHBqX3NpemVfdCBsZW4pCit7CisgICAgcGpfc3RyX3QgY29weTI7CisKKyAgICBpZiAoc3RyMikgeworCWNvcHkyLnB0ciA9IChjaGFyKilzdHIyOworCWNvcHkyLnNsZW4gPSBwal9hbnNpX3N0cmxlbihzdHIyKTsKKyAgICB9IGVsc2UgeworCWNvcHkyLnNsZW4gPSAwOworICAgIH0KKworICAgIHJldHVybiBwal9zdHJuY21wKHN0cjEsICZjb3B5MiwgbGVuKTsKK30KKworUEpfSURFRihpbnQpIHBqX3N0cmNtcDIoIGNvbnN0IHBqX3N0cl90ICpzdHIxLCBjb25zdCBjaGFyICpzdHIyICkKK3sKKyAgICBwal9zdHJfdCBjb3B5MjsKKworICAgIGlmIChzdHIyKSB7CisJY29weTIucHRyID0gKGNoYXIqKXN0cjI7CisJY29weTIuc2xlbiA9IHBqX2Fuc2lfc3RybGVuKHN0cjIpOworICAgIH0gZWxzZSB7CisJY29weTIucHRyID0gTlVMTDsKKwljb3B5Mi5zbGVuID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gcGpfc3RyY21wKHN0cjEsICZjb3B5Mik7Cit9CisKK1BKX0lERUYoaW50KSBwal9zdHJpY21wKCBjb25zdCBwal9zdHJfdCAqc3RyMSwgY29uc3QgcGpfc3RyX3QgKnN0cjIpCit7CisgICAgaWYgKHN0cjEtPnNsZW4gPT0gMCkgeworCXJldHVybiBzdHIyLT5zbGVuPT0wID8gMCA6IC0xOworICAgIH0gZWxzZSBpZiAoc3RyMi0+c2xlbiA9PSAwKSB7CisJcmV0dXJuIDE7CisgICAgfSBlbHNlIHsKKwlwal9zaXplX3QgbWluID0gKHN0cjEtPnNsZW4gPCBzdHIyLT5zbGVuKT8gc3RyMS0+c2xlbiA6IHN0cjItPnNsZW47CisJaW50IHJlcyA9IHBqX2Fuc2lfc3RybmljbXAoc3RyMS0+cHRyLCBzdHIyLT5wdHIsIG1pbik7CisJaWYgKHJlcyA9PSAwKSB7CisJICAgIHJldHVybiAoc3RyMS0+c2xlbiA8IHN0cjItPnNsZW4pID8gLTEgOgorCQkgICAgKHN0cjEtPnNsZW4gPT0gc3RyMi0+c2xlbiA/IDAgOiAxKTsKKwl9IGVsc2UgeworCSAgICByZXR1cm4gcmVzOworCX0KKyAgICB9Cit9CisKKyNpZiBkZWZpbmVkKFBKX0hBU19TVFJJQ01QX0FMTlVNKSAmJiBQSl9IQVNfU1RSSUNNUF9BTE5VTSE9MAorUEpfSURFRihpbnQpIHN0cm5pY21wX2FsbnVtKCBjb25zdCBjaGFyICpzdHIxLCBjb25zdCBjaGFyICpzdHIyLAorCQkJICAgICBpbnQgbGVuKQoreworICAgIGlmIChsZW49PTApCisJcmV0dXJuIDA7CisgICAgZWxzZSB7CisJcmVnaXN0ZXIgY29uc3QgcGpfdWludDMyX3QgKnAxID0gKHBqX3VpbnQzMl90KilzdHIxLCAKKwkJICAgICAgICAgICAgICAgICAgICpwMiA9IChwal91aW50MzJfdCopc3RyMjsKKwl3aGlsZSAobGVuID4gMyAmJiAoKnAxICYgMHg1RjVGNUY1Rik9PSgqcDIgJiAweDVGNUY1RjVGKSkKKwkgICAgKytwMSwgKytwMiwgbGVuLT00OworCisJaWYgKGxlbiA+IDMpCisJICAgIHJldHVybiAtMTsKKyNpZiBkZWZpbmVkKFBKX0lTX0xJVFRMRV9FTkRJQU4pICYmIFBKX0lTX0xJVFRMRV9FTkRJQU4hPTAKKwllbHNlIGlmIChsZW49PTMpCisJICAgIHJldHVybiAoKCpwMSAmIDB4MDA1RjVGNUYpPT0oKnAyICYgMHgwMDVGNUY1RikpID8gMCA6IC0xOworCWVsc2UgaWYgKGxlbj09MikKKwkgICAgcmV0dXJuICgoKnAxICYgMHgwMDAwNUY1Rik9PSgqcDIgJiAweDAwMDA1RjVGKSkgPyAwIDogLTE7CisJZWxzZSBpZiAobGVuPT0xKQorCSAgICByZXR1cm4gKCgqcDEgJiAweDAwMDAwMDVGKT09KCpwMiAmIDB4MDAwMDAwNUYpKSA/IDAgOiAtMTsKKyNlbHNlCisJZWxzZSBpZiAobGVuPT0zKQorCSAgICByZXR1cm4gKCgqcDEgJiAweDVGNUY1RjAwKT09KCpwMiAmIDB4NUY1RjVGMDApKSA/IDAgOiAtMTsKKwllbHNlIGlmIChsZW49PTIpCisJICAgIHJldHVybiAoKCpwMSAmIDB4NUY1RjAwMDApPT0oKnAyICYgMHg1RjVGMDAwMCkpID8gMCA6IC0xOworCWVsc2UgaWYgKGxlbj09MSkKKwkgICAgcmV0dXJuICgoKnAxICYgMHg1RjAwMDAwMCk9PSgqcDIgJiAweDVGMDAwMDAwKSkgPyAwIDogLTE7CisjZW5kaWYKKwllbHNlIAorCSAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK1BKX0lERUYoaW50KSBwal9zdHJpY21wX2FsbnVtKGNvbnN0IHBqX3N0cl90ICpzdHIxLCBjb25zdCBwal9zdHJfdCAqc3RyMikKK3sKKyAgICByZWdpc3RlciBpbnQgbGVuID0gc3RyMS0+c2xlbjsKKworICAgIGlmIChsZW4gIT0gc3RyMi0+c2xlbikgeworCXJldHVybiAobGVuIDwgc3RyMi0+c2xlbikgPyAtMSA6IDE7CisgICAgfSBlbHNlIGlmIChsZW4gPT0gMCkgeworCXJldHVybiAwOworICAgIH0gZWxzZSB7CisJcmVnaXN0ZXIgY29uc3QgcGpfdWludDMyX3QgKnAxID0gKHBqX3VpbnQzMl90KilzdHIxLT5wdHIsIAorCQkgICAgICAgICAgICAgICAgICAgKnAyID0gKHBqX3VpbnQzMl90KilzdHIyLT5wdHI7CisJd2hpbGUgKGxlbiA+IDMgJiYgKCpwMSAmIDB4NUY1RjVGNUYpPT0oKnAyICYgMHg1RjVGNUY1RikpCisJICAgICsrcDEsICsrcDIsIGxlbi09NDsKKworCWlmIChsZW4gPiAzKQorCSAgICByZXR1cm4gLTE7CisjaWYgZGVmaW5lZChQSl9JU19MSVRUTEVfRU5ESUFOKSAmJiBQSl9JU19MSVRUTEVfRU5ESUFOIT0wCisJZWxzZSBpZiAobGVuPT0zKQorCSAgICByZXR1cm4gKCgqcDEgJiAweDAwNUY1RjVGKT09KCpwMiAmIDB4MDA1RjVGNUYpKSA/IDAgOiAtMTsKKwllbHNlIGlmIChsZW49PTIpCisJICAgIHJldHVybiAoKCpwMSAmIDB4MDAwMDVGNUYpPT0oKnAyICYgMHgwMDAwNUY1RikpID8gMCA6IC0xOworCWVsc2UgaWYgKGxlbj09MSkKKwkgICAgcmV0dXJuICgoKnAxICYgMHgwMDAwMDA1Rik9PSgqcDIgJiAweDAwMDAwMDVGKSkgPyAwIDogLTE7CisjZWxzZQorCWVsc2UgaWYgKGxlbj09MykKKwkgICAgcmV0dXJuICgoKnAxICYgMHg1RjVGNUYwMCk9PSgqcDIgJiAweDVGNUY1RjAwKSkgPyAwIDogLTE7CisJZWxzZSBpZiAobGVuPT0yKQorCSAgICByZXR1cm4gKCgqcDEgJiAweDVGNUYwMDAwKT09KCpwMiAmIDB4NUY1RjAwMDApKSA/IDAgOiAtMTsKKwllbHNlIGlmIChsZW49PTEpCisJICAgIHJldHVybiAoKCpwMSAmIDB4NUYwMDAwMDApPT0oKnAyICYgMHg1RjAwMDAwMCkpID8gMCA6IC0xOworI2VuZGlmCisJZWxzZSAKKwkgICAgcmV0dXJuIDA7CisgICAgfQorfQorI2VuZGlmCS8qIFBKX0hBU19TVFJJQ01QX0FMTlVNICovCisKK1BKX0lERUYoaW50KSBwal9zdHJpY21wMiggY29uc3QgcGpfc3RyX3QgKnN0cjEsIGNvbnN0IGNoYXIgKnN0cjIpCit7CisgICAgcGpfc3RyX3QgY29weTI7CisKKyAgICBpZiAoc3RyMikgeworCWNvcHkyLnB0ciA9IChjaGFyKilzdHIyOworCWNvcHkyLnNsZW4gPSBwal9hbnNpX3N0cmxlbihzdHIyKTsKKyAgICB9IGVsc2UgeworCWNvcHkyLnB0ciA9IE5VTEw7CisJY29weTIuc2xlbiA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIHBqX3N0cmljbXAoc3RyMSwgJmNvcHkyKTsKK30KKworUEpfSURFRihpbnQpIHBqX3N0cm5pY21wKCBjb25zdCBwal9zdHJfdCAqc3RyMSwgY29uc3QgcGpfc3RyX3QgKnN0cjIsIAorCQkJICBwal9zaXplX3QgbGVuKQoreworICAgIHBqX3N0cl90IGNvcHkxLCBjb3B5MjsKKworICAgIGlmIChsZW4gPCAodW5zaWduZWQpc3RyMS0+c2xlbikgeworCWNvcHkxLnB0ciA9IHN0cjEtPnB0cjsKKwljb3B5MS5zbGVuID0gbGVuOworCXN0cjEgPSAmY29weTE7CisgICAgfQorCisgICAgaWYgKGxlbiA8ICh1bnNpZ25lZClzdHIyLT5zbGVuKSB7CisJY29weTIucHRyID0gc3RyMi0+cHRyOworCWNvcHkyLnNsZW4gPSBsZW47CisJc3RyMiA9ICZjb3B5MjsKKyAgICB9CisKKyAgICByZXR1cm4gcGpfc3RyaWNtcChzdHIxLCBzdHIyKTsKK30KKworUEpfSURFRihpbnQpIHBqX3N0cm5pY21wMiggY29uc3QgcGpfc3RyX3QgKnN0cjEsIGNvbnN0IGNoYXIgKnN0cjIsIAorCQkJICAgcGpfc2l6ZV90IGxlbikKK3sKKyAgICBwal9zdHJfdCBjb3B5MjsKKworICAgIGlmIChzdHIyKSB7CisJY29weTIucHRyID0gKGNoYXIqKXN0cjI7CisJY29weTIuc2xlbiA9IHBqX2Fuc2lfc3RybGVuKHN0cjIpOworICAgIH0gZWxzZSB7CisJY29weTIuc2xlbiA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIHBqX3N0cm5pY21wKHN0cjEsICZjb3B5MiwgbGVuKTsKK30KKworUEpfSURFRih2b2lkKSBwal9zdHJjYXQocGpfc3RyX3QgKmRzdCwgY29uc3QgcGpfc3RyX3QgKnNyYykKK3sKKyAgICBpZiAoc3JjLT5zbGVuKSB7CisJcGpfbWVtY3B5KGRzdC0+cHRyICsgZHN0LT5zbGVuLCBzcmMtPnB0ciwgc3JjLT5zbGVuKTsKKwlkc3QtPnNsZW4gKz0gc3JjLT5zbGVuOworICAgIH0KK30KKworUEpfSURFRih2b2lkKSBwal9zdHJjYXQyKHBqX3N0cl90ICpkc3QsIGNvbnN0IGNoYXIgKnN0cikKK3sKKyAgICBwal9zaXplX3QgbGVuID0gc3RyPyBwal9hbnNpX3N0cmxlbihzdHIpIDogMDsKKyAgICBpZiAobGVuKSB7CisJcGpfbWVtY3B5KGRzdC0+cHRyICsgZHN0LT5zbGVuLCBzdHIsIGxlbik7CisJZHN0LT5zbGVuICs9IGxlbjsKKyAgICB9Cit9CisKK1BKX0lERUYocGpfc3RyX3QqKSBwal9zdHJ0cmltKCBwal9zdHJfdCAqc3RyICkKK3sKKyAgICBwal9zdHJsdHJpbShzdHIpOworICAgIHBqX3N0cnJ0cmltKHN0cik7CisgICAgcmV0dXJuIHN0cjsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai90aW1lci5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai90aW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkN2U3MWQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3RpbWVyLmgKQEAgLTAsMCArMSwzNzAgQEAKKy8qICRJZDogdGltZXIuaCA0NTY3IDIwMTMtMDctMTkgMDY6MzE6MjhaIGJlbm55bHAgJCAqLworLyogCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisKKyNpZm5kZWYgX19QSl9USU1FUl9IX18KKyNkZWZpbmUgX19QSl9USU1FUl9IX18KKworLyoqCisgKiBAZmlsZSB0aW1lci5oCisgKiBAYnJpZWYgVGltZXIgSGVhcAorICovCisKKyNpbmNsdWRlIDxwai90eXBlcy5oPgorI2luY2x1ZGUgPHBqL2xvY2suaD4KKworUEpfQkVHSU5fREVDTAorCisvKioKKyAqIEBkZWZncm91cCBQSl9USU1FUiBUaW1lciBIZWFwIE1hbmFnZW1lbnQuCisgKiBAaW5ncm91cCBQSl9NSVNDCisgKiBAYnJpZWYKKyAqIFRoZSB0aW1lciBzY2hlZHVsaW5nIGltcGxlbWVudGF0aW9uIGhlcmUgaXMgYmFzZWQgb24gQUNFIGxpYnJhcnkncyAKKyAqIEFDRV9UaW1lcl9IZWFwLCB3aXRoIG9ubHkgbGl0dGxlIG1vZGlmaWNhdGlvbiB0byBzdWl0IG91ciBsaWJyYXJ5J3Mgc3R5bGUKKyAqIChJIGV2ZW4gbGVmdCBtb3N0IG9mIHRoZSBjb21tZW50cyBpbiB0aGUgb3JpZ2luYWwgc291cmNlKS4KKyAqCisgKiBUbyBxdW90ZSB0aGUgb3JpZ2luYWwgcXVvdGUgaW4gQUNFX1RpbWVyX0hlYXBfVCBjbGFzczoKKyAqCisgKiAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyBhIGhlYXAtYmFzZWQgY2FsbG91dCBxdWV1ZSBvZgorICogICAgICBhYnNvbHV0ZSB0aW1lcy4gIFRoZXJlZm9yZSwgaW4gdGhlIGF2ZXJhZ2UgYW5kIHdvcnN0IGNhc2UsCisgKiAgICAgIHNjaGVkdWxpbmcsIGNhbmNlbGluZywgYW5kIGV4cGlyaW5nIHRpbWVycyBpcyBPKGxvZyBOKSAod2hlcmUKKyAqICAgICAgTiBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVycykuICBJbiBhZGRpdGlvbiwgd2UgY2FuIGFsc28KKyAqICAgICAgcHJlYWxsb2NhdGUgYXMgbWFueSBcYSBBQ0VfVGltZXJfTm9kZXMgYXMgdGhlcmUgYXJlIHNsb3RzIGluCisgKiAgICAgIHRoZSBoZWFwLiAgVGhpcyBhbGxvd3MgdXMgdG8gY29tcGxldGVseSByZW1vdmUgdGhlIG5lZWQgZm9yCisgKiAgICAgIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24sIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgcmVhbC10aW1lCisgKiAgICAgIHN5c3RlbXMuCisgKgorICogWW91IGNhbiBmaW5kIHRoZSBmaW5lIEFDRSBsaWJyYXJ5IGF0OgorICogIGh0dHA6Ly93d3cuY3Mud3VzdGwuZWR1L35zY2htaWR0L0FDRS5odG1sCisgKgorICogQUNFIGlzIENvcHlyaWdodCAoQykxOTkzLTIwMDYgRG91Z2xhcyBDLiBTY2htaWR0IDxkLnNjaG1pZHRAdmFuZGVyYmlsdC5lZHU+CisgKgorICogQHsKKyAqCisgKiBcc2VjdGlvbiBwal90aW1lcl9leGFtcGxlc19zZWMgRXhhbXBsZXMKKyAqCisgKiBGb3Igc29tZSBleGFtcGxlcyBvbiBob3cgdG8gdXNlIHRoZSB0aW1lciBoZWFwLCBwbGVhc2Ugc2VlIHRoZSBsaW5rIGJlbG93LgorICoKKyAqICAtIFxyZWYgcGFnZV9wamxpYl90aW1lcl90ZXN0CisgKi8KKworCisvKioKKyAqIFRoZSB0eXBlIGZvciBpbnRlcm5hbCB0aW1lciBJRC4KKyAqLwordHlwZWRlZiBpbnQgcGpfdGltZXJfaWRfdDsKKworLyoqIAorICogRm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgcGpfdGltZXJfZW50cnkuIAorICovCitzdHJ1Y3QgcGpfdGltZXJfZW50cnk7CisKKy8qKgorICogVGhlIHR5cGUgb2YgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IHRpbWVyIHNjaGVkdWxlciB3aGVuIGEgdGltZXIKKyAqIGhhcyBleHBpcmVkLgorICoKKyAqIEBwYXJhbSB0aW1lcl9oZWFwICAgIFRoZSB0aW1lciBoZWFwLgorICogQHBhcmFtIGVudHJ5ICAgICAgICAgVGltZXIgZW50cnkgd2hpY2ggdGltZXIncyBoYXMgZXhwaXJlZC4KKyAqLwordHlwZWRlZiB2b2lkIHBqX3RpbWVyX2hlYXBfY2FsbGJhY2socGpfdGltZXJfaGVhcF90ICp0aW1lcl9oZWFwLAorCQkJCSAgICBzdHJ1Y3QgcGpfdGltZXJfZW50cnkgKmVudHJ5KTsKKworCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgYW4gZW50cnkgdG8gdGhlIHRpbWVyLgorICovCit0eXBlZGVmIHN0cnVjdCBwal90aW1lcl9lbnRyeQoreworICAgIC8qKiAKKyAgICAgKiBVc2VyIGRhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZW50cnkuIAorICAgICAqIEFwcGxpY2F0aW9ucyBub3JtYWxseSB3aWxsIHB1dCB0aGUgaW5zdGFuY2Ugb2Ygb2JqZWN0IHRoYXQKKyAgICAgKiBvd25zIHRoZSB0aW1lciBlbnRyeSBpbiB0aGlzIGZpZWxkLgorICAgICAqLworICAgIHZvaWQgKnVzZXJfZGF0YTsKKworICAgIC8qKiAKKyAgICAgKiBBcmJpdHJhcnkgSUQgYXNzaWduZWQgYnkgdGhlIHVzZXIvb3duZXIgb2YgdGhpcyBlbnRyeS4gCisgICAgICogQXBwbGljYXRpb25zIGNhbiB1c2UgdGhpcyBJRCB0byBkaXN0aW5ndWlzaCBtdWx0aXBsZQorICAgICAqIHRpbWVyIGVudHJpZXMgdGhhdCBzaGFyZSB0aGUgc2FtZSBjYWxsYmFjayBhbmQgdXNlcl9kYXRhLgorICAgICAqLworICAgIGludCBpZDsKKworICAgIC8qKiAKKyAgICAgKiBDYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGltZXIgZXhwaXJlcy4gCisgICAgICovCisgICAgcGpfdGltZXJfaGVhcF9jYWxsYmFjayAqY2I7CisKKyAgICAvKiogCisgICAgICogSW50ZXJuYWwgdW5pcXVlIHRpbWVyIElELCB3aGljaCBpcyBhc3NpZ25lZCBieSB0aGUgdGltZXIgaGVhcC4gCisgICAgICogQXBwbGljYXRpb24gc2hvdWxkIG5vdCB0b3VjaCB0aGlzIElELgorICAgICAqLworICAgIHBqX3RpbWVyX2lkX3QgX3RpbWVyX2lkOworCisgICAgLyoqIAorICAgICAqIFRoZSBmdXR1cmUgdGltZSB3aGVuIHRoZSB0aW1lciBleHBpcmVzLCB3aGljaCB0aGUgdmFsdWUgaXMgdXBkYXRlZAorICAgICAqIGJ5IHRpbWVyIGhlYXAgd2hlbiB0aGUgdGltZXIgaXMgc2NoZWR1bGVkLgorICAgICAqLworICAgIHBqX3RpbWVfdmFsIF90aW1lcl92YWx1ZTsKKworICAgIC8qKgorICAgICAqIEludGVybmFsOiB0aGUgZ3JvdXAgbG9jayB1c2VkIGJ5IHRoaXMgZW50cnksIHNldCB3aGVuCisgICAgICogcGpfdGltZXJfaGVhcF9zY2hlZHVsZV93X2xvY2soKSBpcyB1c2VkLgorICAgICAqLworICAgIHBqX2dycF9sb2NrX3QgKl9ncnBfbG9jazsKKworI2lmIFBKX1RJTUVSX0RFQlVHCisgICAgY29uc3QgY2hhcgkqc3JjX2ZpbGU7CisgICAgaW50CQkgc3JjX2xpbmU7CisjZW5kaWYKK30gcGpfdGltZXJfZW50cnk7CisKKworLyoqCisgKiBDYWxjdWxhdGUgbWVtb3J5IHNpemUgcmVxdWlyZWQgdG8gY3JlYXRlIGEgdGltZXIgaGVhcC4KKyAqCisgKiBAcGFyYW0gY291bnQgICAgIE51bWJlciBvZiB0aW1lciBlbnRyaWVzIHRvIGJlIHN1cHBvcnRlZC4KKyAqIEByZXR1cm4gICAgICAgICAgTWVtb3J5IHNpemUgcmVxdWlyZW1lbnQgaW4gYnl0ZXMuCisgKi8KK1BKX0RFQ0wocGpfc2l6ZV90KSBwal90aW1lcl9oZWFwX21lbV9zaXplKHBqX3NpemVfdCBjb3VudCk7CisKKy8qKgorICogQ3JlYXRlIGEgdGltZXIgaGVhcC4KKyAqCisgKiBAcGFyYW0gcG9vbCAgICAgIFRoZSBwb29sIHdoZXJlIGFsbG9jYXRpb25zIGluIHRoZSB0aW1lciBoZWFwIHdpbGwgYmUgCisgKiAgICAgICAgICAgICAgICAgIGFsbG9jYXRlZC4gVGhlIHRpbWVyIGhlYXAgd2lsbCBkeW5hbWljbHkgYWxsb2NhdGUgCisgKiAgICAgICAgICAgICAgICAgIG1vcmUgc3RvcmF0ZSBmcm9tIHRoZSBwb29sIGlmIHRoZSBudW1iZXIgb2YgdGltZXIgCisgKiAgICAgICAgICAgICAgICAgIGVudHJpZXMgcmVnaXN0ZXJlZCBpcyBtb3JlIHRoYW4gdGhlIHNpemUgb3JpZ2luYWxseSAKKyAqICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICogQHBhcmFtIGNvdW50ICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXIgZW50cmllcyB0byBiZSBzdXBwb3J0ZWQgCisgKiAgICAgICAgICAgICAgICAgIGluaXRpYWxseS4gSWYgdGhlIGFwcGxpY2F0aW9uIHJlZ2lzdGVycyBtb3JlIGVudHJpZXMgCisgKiAgICAgICAgICAgICAgICAgIGR1cmluZyBydW50aW1lLCB0aGVuIHRoZSB0aW1lciBoZWFwIHdpbGwgcmVzaXplLgorICogQHBhcmFtIGh0ICAgICAgICBQb2ludGVyIHRvIHJlY2VpdmUgdGhlIGNyZWF0ZWQgdGltZXIgaGVhcC4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgIFBKX1NVQ0NFU1MsIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal90aW1lcl9oZWFwX2NyZWF0ZSggcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICBwal9zaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfdGltZXJfaGVhcF90ICoqaHQpOworCisvKioKKyAqIERlc3Ryb3kgdGhlIHRpbWVyIGhlYXAuCisgKgorICogQHBhcmFtIGh0ICAgICAgICBUaGUgdGltZXIgaGVhcC4KKyAqLworUEpfREVDTCh2b2lkKSBwal90aW1lcl9oZWFwX2Rlc3Ryb3koIHBqX3RpbWVyX2hlYXBfdCAqaHQgKTsKKworCisvKioKKyAqIFNldCBsb2NrIG9iamVjdCB0byBiZSB1c2VkIGJ5IHRoZSB0aW1lciBoZWFwLiBCeSBkZWZhdWx0LCB0aGUgdGltZXIgaGVhcAorICogdXNlcyBkdW1teSBzeW5jaHJvbml6YXRpb24uCisgKgorICogQHBhcmFtIGh0ICAgICAgICBUaGUgdGltZXIgaGVhcC4KKyAqIEBwYXJhbSBsb2NrICAgICAgVGhlIGxvY2sgb2JqZWN0IHRvIGJlIHVzZWQgZm9yIHN5bmNocm9uaXphdGlvbi4KKyAqIEBwYXJhbSBhdXRvX2RlbCAgSWYgbm9uemVybywgdGhlIGxvY2sgb2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIHdoZW4KKyAqICAgICAgICAgICAgICAgICAgdGhlIHRpbWVyIGhlYXAgaXMgZGVzdHJveWVkLgorICovCitQSl9ERUNMKHZvaWQpIHBqX3RpbWVyX2hlYXBfc2V0X2xvY2soIHBqX3RpbWVyX2hlYXBfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2xvY2tfdCAqbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfYm9vbF90IGF1dG9fZGVsICk7CisKKy8qKgorICogU2V0IG1heGltdW0gbnVtYmVyIG9mIHRpbWVkIG91dCBlbnRyaWVzIHRvIHByb2Nlc3MgaW4gYSBzaW5nbGUgcG9sbC4KKyAqCisgKiBAcGFyYW0gaHQgICAgICAgIFRoZSB0aW1lciBoZWFwLgorICogQHBhcmFtIGNvdW50ICAgICBOdW1iZXIgb2YgZW50cmllcy4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgIFRoZSBvbGQgbnVtYmVyLgorICovCitQSl9ERUNMKHVuc2lnbmVkKSBwal90aW1lcl9oZWFwX3NldF9tYXhfdGltZWRfb3V0X3Blcl9wb2xsKHBqX3RpbWVyX2hlYXBfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvdW50ICk7CisKKy8qKgorICogSW5pdGlhbGl6ZSBhIHRpbWVyIGVudHJ5LiBBcHBsaWNhdGlvbiBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGF0IGxlYXN0CisgKiBvbmNlIGJlZm9yZSBzY2hlZHVsaW5nIHRoZSBlbnRyeSB0byB0aGUgdGltZXIgaGVhcCwgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZQorICogdGhlIHRpbWVyIGVudHJ5LgorICoKKyAqIEBwYXJhbSBlbnRyeSAgICAgVGhlIHRpbWVyIGVudHJ5IHRvIGJlIGluaXRpYWxpemVkLgorICogQHBhcmFtIGlkICAgICAgICBBcmJpdHJhcnkgSUQgYXNzaWduZWQgYnkgdGhlIHVzZXIvb3duZXIgb2YgdGhpcyBlbnRyeS4KKyAqICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25zIGNhbiB1c2UgdGhpcyBJRCB0byBkaXN0aW5ndWlzaCBtdWx0aXBsZQorICogICAgICAgICAgICAgICAgICB0aW1lciBlbnRyaWVzIHRoYXQgc2hhcmUgdGhlIHNhbWUgY2FsbGJhY2sgYW5kIHVzZXJfZGF0YS4KKyAqIEBwYXJhbSB1c2VyX2RhdGEgVXNlciBkYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVudHJ5LiAKKyAqICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25zIG5vcm1hbGx5IHdpbGwgcHV0IHRoZSBpbnN0YW5jZSBvZiBvYmplY3QgdGhhdAorICogICAgICAgICAgICAgICAgICBvd25zIHRoZSB0aW1lciBlbnRyeSBpbiB0aGlzIGZpZWxkLgorICogQHBhcmFtIGNiICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGltZXIgZWxhcHNlcy4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgIFRoZSB0aW1lciBlbnRyeSBpdHNlbGYuCisgKi8KK1BKX0RFQ0wocGpfdGltZXJfZW50cnkqKSBwal90aW1lcl9lbnRyeV9pbml0KCBwal90aW1lcl9lbnRyeSAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aW1lcl9oZWFwX2NhbGxiYWNrICpjYiApOworCisvKioKKyAqIFF1ZXJpZXMgd2hldGhlciBhIHRpbWVyIGVudHJ5IGlzIGN1cnJlbnRseSBydW5uaW5nLgorICoKKyAqIEBwYXJhbSBlbnRyeSAgICAgVGhlIHRpbWVyIGVudHJ5IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gICAgICAgICAgUEpfVFJVRSBpZiB0aGUgdGltZXIgaXMgcnVubmluZy4gIFBKX0ZBTFNFIGlmIG5vdC4KKyAqLworUEpfREVDTChwal9ib29sX3QpIHBqX3RpbWVyX2VudHJ5X3J1bm5pbmcoIHBqX3RpbWVyX2VudHJ5ICplbnRyeSApOworCisvKioKKyAqIFNjaGVkdWxlIGEgdGltZXIgZW50cnkgd2hpY2ggd2lsbCBleHBpcmUgQUZURVIgdGhlIHNwZWNpZmllZCBkZWxheS4KKyAqCisgKiBAcGFyYW0gaHQgICAgICAgIFRoZSB0aW1lciBoZWFwLgorICogQHBhcmFtIGVudHJ5ICAgICBUaGUgZW50cnkgdG8gYmUgcmVnaXN0ZXJlZC4gCisgKiBAcGFyYW0gZGVsYXkgICAgIFRoZSBpbnRlcnZhbCB0byBleHBpcmUuCisgKiBAcmV0dXJuICAgICAgICAgIFBKX1NVQ0NFU1MsIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCisjaWYgUEpfVElNRVJfREVCVUcKKyMgIGRlZmluZSBwal90aW1lcl9oZWFwX3NjaGVkdWxlKGh0LGUsZCkgXAorCQkJcGpfdGltZXJfaGVhcF9zY2hlZHVsZV9kYmcoaHQsZSxkLF9fRklMRV9fLF9fTElORV9fKQorCisgIFBKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3RpbWVyX2hlYXBfc2NoZWR1bGVfZGJnKCBwal90aW1lcl9oZWFwX3QgKmh0LAorICAgICAgICAJCQkJCSAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKyAgICAgICAgCQkJCQkgICBjb25zdCBwal90aW1lX3ZhbCAqZGVsYXksCisgICAgICAgIAkJCQkJICAgY29uc3QgY2hhciAqc3JjX2ZpbGUsCisgICAgICAgIAkJCQkJICAgaW50IHNyY19saW5lKTsKKyNlbHNlCitQSl9ERUNMKHBqX3N0YXR1c190KSBwal90aW1lcl9oZWFwX3NjaGVkdWxlKCBwal90aW1lcl9oZWFwX3QgKmh0LAorCQkJCQkgICAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwgCisJCQkJCSAgICAgY29uc3QgcGpfdGltZV92YWwgKmRlbGF5KTsKKyNlbmRpZgkvKiBQSl9USU1FUl9ERUJVRyAqLworCisvKioKKyAqIFNjaGVkdWxlIGEgdGltZXIgZW50cnkgd2hpY2ggd2lsbCBleHBpcmUgQUZURVIgdGhlIHNwZWNpZmllZCBkZWxheSwgYW5kCisgKiBpbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudGVyIG9mIHRoZSBncm91cCBsb2NrIHdoaWxlIHRoZSB0aW1lciBlbnRyeQorICogaXMgYWN0aXZlLiBUaGUgZ3JvdXAgbG9jayByZWZlcmVuY2UgY291bnRlciB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgcmVsZWFzZWQKKyAqIGFmdGVyIHRoZSB0aW1lciBjYWxsYmFjayBpcyBjYWxsZWQgb3Igd2hlbiB0aGUgdGltZXIgaXMgY2FuY2VsbGVkLgorICoKKyAqIEBwYXJhbSBodCAgICAgICAgVGhlIHRpbWVyIGhlYXAuCisgKiBAcGFyYW0gZW50cnkgICAgIFRoZSBlbnRyeSB0byBiZSByZWdpc3RlcmVkLgorICogQHBhcmFtIGlkX3ZhbCAgICBUaGUgdmFsdWUgdG8gYmUgc2V0IHRvIHRoZSAiaWQiIGZpZWxkIG9mIHRoZSB0aW1lciBlbnRyeQorICogCQkgICAgb25jZSB0aGUgdGltZXIgaXMgc2NoZWR1bGVkLgorICogQHBhcmFtIGRlbGF5ICAgICBUaGUgaW50ZXJ2YWwgdG8gZXhwaXJlLgorICogQHBhcmFtIGdycF9sb2NrICBUaGUgZ3JvdXAgbG9jay4KKyAqCisgKiBAcmV0dXJuICAgICAgICAgIFBKX1NVQ0NFU1MsIG9yIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICovCisjaWYgUEpfVElNRVJfREVCVUcKKyMgIGRlZmluZSBwal90aW1lcl9oZWFwX3NjaGVkdWxlX3dfZ3JwX2xvY2soaHQsZSxkLGlkLGcpIFwKKwlwal90aW1lcl9oZWFwX3NjaGVkdWxlX3dfZ3JwX2xvY2tfZGJnKGh0LGUsZCxpZCxnLF9fRklMRV9fLF9fTElORV9fKQorCisgIFBKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3RpbWVyX2hlYXBfc2NoZWR1bGVfd19ncnBfbG9ja19kYmcoCisJCQkJCQkgICBwal90aW1lcl9oZWFwX3QgKmh0LAorICAgICAgICAJCQkJCSAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKyAgICAgICAgCQkJCQkgICBjb25zdCBwal90aW1lX3ZhbCAqZGVsYXksCisgICAgICAgIAkJCQkJICAgaW50IGlkX3ZhbCwKKyAgICAgICAgCQkJCQkgICBwal9ncnBfbG9ja190ICpncnBfbG9jaywKKyAgICAgICAgCQkJCQkgICBjb25zdCBjaGFyICpzcmNfZmlsZSwKKyAgICAgICAgCQkJCQkgICBpbnQgc3JjX2xpbmUpOworI2Vsc2UKK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX3RpbWVyX2hlYXBfc2NoZWR1bGVfd19ncnBfbG9jaygKKwkJCQkJCSAgICBwal90aW1lcl9oZWFwX3QgKmh0LAorCQkJCQkJICAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKwkJCQkJCSAgICBjb25zdCBwal90aW1lX3ZhbCAqZGVsYXksCisJCQkJCQkgICAgaW50IGlkX3ZhbCwKKwkJCQkJCSAgICBwal9ncnBfbG9ja190ICpncnBfbG9jayk7CisjZW5kaWYJLyogUEpfVElNRVJfREVCVUcgKi8KKworCisvKioKKyAqIENhbmNlbCBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB0aW1lci4gVGhpcyB3aWxsIGFsc28gZGVjcmVtZW50IHRoZQorICogcmVmZXJlbmNlIGNvdW50ZXIgb2YgdGhlIGdyb3VwIGxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0aW1lciBlbnRyeSwKKyAqIGlmIHRoZSBlbnRyeSB3YXMgc2NoZWR1bGVkIHdpdGggb25lLgorICoKKyAqIEBwYXJhbSBodCAgICAgICAgVGhlIHRpbWVyIGhlYXAuCisgKiBAcGFyYW0gZW50cnkgICAgIFRoZSBlbnRyeSB0byBiZSBjYW5jZWxsZWQuCisgKiBAcmV0dXJuICAgICAgICAgIFRoZSBudW1iZXIgb2YgdGltZXIgY2FuY2VsbGVkLCB3aGljaCBzaG91bGQgYmUgb25lIGlmIHRoZQorICogICAgICAgICAgICAgICAgICBlbnRyeSBoYXMgcmVhbGx5IGJlZW4gcmVnaXN0ZXJlZCwgb3IgemVybyBpZiBubyB0aW1lciB3YXMKKyAqICAgICAgICAgICAgICAgICAgY2FuY2VsbGVkLgorICovCitQSl9ERUNMKGludCkgcGpfdGltZXJfaGVhcF9jYW5jZWwoIHBqX3RpbWVyX2hlYXBfdCAqaHQsCisJCQkJICAgcGpfdGltZXJfZW50cnkgKmVudHJ5KTsKKworLyoqCisgKiBDYW5jZWwgb25seSBpZiB0aGUgcHJldmlvdXNseSByZWdpc3RlcmVkIHRpbWVyIGlzIGFjdGl2ZS4gVGhpcyB3aWxsCisgKiBhbHNvIGRlY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgb2YgdGhlIGdyb3VwIGxvY2sgYXNzb2NpYXRlZAorICogd2l0aCB0aGUgdGltZXIgZW50cnksIGlmIHRoZSBlbnRyeSB3YXMgc2NoZWR1bGVkIHdpdGggb25lLiBJbiBhbnkKKyAqIGNhc2UsIHNldCB0aGUgImlkIiB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLgorICoKKyAqIEBwYXJhbSBodCAgICAgICAgVGhlIHRpbWVyIGhlYXAuCisgKiBAcGFyYW0gZW50cnkgICAgIFRoZSBlbnRyeSB0byBiZSBjYW5jZWxsZWQuCisgKiBAcGFyYW0gaWRfdmFsICAgIFZhbHVlIHRvIGJlIHNldCB0byAiaWQiCisgKgorICogQHJldHVybiAgICAgICAgICBUaGUgbnVtYmVyIG9mIHRpbWVyIGNhbmNlbGxlZCwgd2hpY2ggc2hvdWxkIGJlIG9uZSBpZiB0aGUKKyAqICAgICAgICAgICAgICAgICAgZW50cnkgaGFzIHJlYWxseSBiZWVuIHJlZ2lzdGVyZWQsIG9yIHplcm8gaWYgbm8gdGltZXIgd2FzCisgKiAgICAgICAgICAgICAgICAgIGNhbmNlbGxlZC4KKyAqLworUEpfREVDTChpbnQpIHBqX3RpbWVyX2hlYXBfY2FuY2VsX2lmX2FjdGl2ZShwal90aW1lcl9oZWFwX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aW1lcl9lbnRyeSAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZF92YWwpOworCisvKioKKyAqIEdldCB0aGUgbnVtYmVyIG9mIHRpbWVyIGVudHJpZXMuCisgKgorICogQHBhcmFtIGh0ICAgICAgICBUaGUgdGltZXIgaGVhcC4KKyAqIEByZXR1cm4gICAgICAgICAgVGhlIG51bWJlciBvZiB0aW1lciBlbnRyaWVzLgorICovCitQSl9ERUNMKHBqX3NpemVfdCkgcGpfdGltZXJfaGVhcF9jb3VudCggcGpfdGltZXJfaGVhcF90ICpodCApOworCisvKioKKyAqIEdldCB0aGUgZWFybGllc3QgdGltZSByZWdpc3RlcmVkIGluIHRoZSB0aW1lciBoZWFwLiBUaGUgdGltZXIgaGVhcAorICogTVVTVCBoYXZlIGF0IGxlYXN0IG9uZSB0aW1lciBiZWluZyBzY2hlZHVsZWQgKGFwcGxpY2F0aW9uIHNob3VsZCB1c2UKKyAqICNwal90aW1lcl9oZWFwX2NvdW50KCkgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbikuCisgKgorICogQHBhcmFtIGh0ICAgICAgICBUaGUgdGltZXIgaGVhcC4KKyAqIEBwYXJhbSB0aW1ldmFsICAgVGhlIHRpbWUgZGVhZGxpbmUgb2YgdGhlIGVhcmxpZXN0IHRpbWVyIGVudHJ5LgorICoKKyAqIEByZXR1cm4gICAgICAgICAgUEpfU1VDQ0VTUywgb3IgUEpfRU5PVEZPVU5EIGlmIG5vIGVudHJ5IGlzIHNjaGVkdWxlZC4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfdGltZXJfaGVhcF9lYXJsaWVzdF90aW1lKCBwal90aW1lcl9oZWFwX3QgKmh0LCAKKwkJCQkJICAgICAgICAgIHBqX3RpbWVfdmFsICp0aW1ldmFsKTsKKworLyoqCisgKiBQb2xsIHRoZSB0aW1lciBoZWFwLCBjaGVjayBmb3IgZXhwaXJlZCB0aW1lcnMgYW5kIGNhbGwgdGhlIGNhbGxiYWNrIGZvcgorICogZWFjaCBvZiB0aGUgZXhwaXJlZCB0aW1lcnMuCisgKgorICogTm90ZTogcG9sbGluZyB0aGUgdGltZXIgaGVhcCBpcyBub3QgbmVjZXNzYXJ5IGluIFN5bWJpYW4uIFBsZWFzZSBzZWUKKyAqIEByZWYgUEpfU1lNQklBTl9PUyBmb3IgbW9yZSBpbmZvLgorICoKKyAqIEBwYXJhbSBodCAgICAgICAgIFRoZSB0aW1lciBoZWFwLgorICogQHBhcmFtIG5leHRfZGVsYXkgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IE5VTEwsIGl0IHdpbGwgYmUgZmlsbGVkIHVwIHdpdGgKKyAqCQkgICAgIHRoZSB0aW1lIGRlbGF5IHVudGlsIHRoZSBuZXh0IHRpbWVyIGVsYXBzZWQsIG9yIAorICoJCSAgICAgUEpfTUFYSU5UMzIgaW4gdGhlIHNlYyBwYXJ0IGlmIG5vIGVudHJ5IGV4aXN0LgorICoKKyAqIEByZXR1cm4gICAgICAgICAgIFRoZSBudW1iZXIgb2YgdGltZXJzIGV4cGlyZWQuCisgKi8KK1BKX0RFQ0wodW5zaWduZWQpIHBqX3RpbWVyX2hlYXBfcG9sbCggcGpfdGltZXJfaGVhcF90ICpodCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3RpbWVfdmFsICpuZXh0X2RlbGF5KTsKKworI2lmIFBKX1RJTUVSX0RFQlVHCisvKioKKyAqIER1bXAgdGltZXIgaGVhcCBlbnRyaWVzLgorICoKKyAqIEBwYXJhbSBodAkgICAgVGhlIHRpbWVyIGhlYXAuCisgKi8KK1BKX0RFQ0wodm9pZCkgcGpfdGltZXJfaGVhcF9kdW1wKHBqX3RpbWVyX2hlYXBfdCAqaHQpOworI2VuZGlmCisKKy8qKgorICogQH0KKyAqLworCitQSl9FTkRfREVDTAorCisjZW5kaWYJLyogX19QSl9USU1FUl9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai90eXBlcy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTI3MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3R5cGVzLmgKQEAgLTAsMCArMSw1NTYgQEAKKy8qICRJZDogdHlwZXMuaCA0NzA0IDIwMTQtMDEtMTYgMDU6MzA6NDZaIG1pbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSl9UWVBFU19IX18KKyNkZWZpbmUgX19QSl9UWVBFU19IX18KKworCisvKioKKyAqIEBmaWxlIHR5cGVzLmgKKyAqIEBicmllZiBEZWNsYXJhdGlvbiBvZiBiYXNpYyB0eXBlcyBhbmQgdXRpbGl0eS4KKyAqLworLyoqCisgKiBAZGVmZ3JvdXAgUEpfQkFTSUMgQmFzaWMgRGF0YSBUeXBlcyBhbmQgTGlicmFyeSBGdW5jdGlvbmFsaXR5LgorICogQGluZ3JvdXAgUEpfRFMKKyAqIEB7CisgKi8KKyNpbmNsdWRlIDxwai9jb25maWcuaD4KKworUEpfQkVHSU5fREVDTAorCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisKKy8qKiBTaWduZWQgMzJiaXQgaW50ZWdlci4gKi8KK3R5cGVkZWYgaW50CQlwal9pbnQzMl90OworCisvKiogVW5zaWduZWQgMzJiaXQgaW50ZWdlci4gKi8KK3R5cGVkZWYgdW5zaWduZWQgaW50CXBqX3VpbnQzMl90OworCisvKiogU2lnbmVkIDE2Yml0IGludGVnZXIuICovCit0eXBlZGVmIHNob3J0CQlwal9pbnQxNl90OworCisvKiogVW5zaWduZWQgMTZiaXQgaW50ZWdlci4gKi8KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQJcGpfdWludDE2X3Q7CisKKy8qKiBTaWduZWQgOGJpdCBpbnRlZ2VyLiAqLwordHlwZWRlZiBzaWduZWQgY2hhcglwal9pbnQ4X3Q7CisKKy8qKiBVbnNpZ25lZCA4Yml0IGludGVnZXIuICovCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIJcGpfdWludDhfdDsKKworLyoqIExhcmdlIHVuc2lnbmVkIGludGVnZXIuICovCit0eXBlZGVmIHNpemVfdAkJcGpfc2l6ZV90OworCisvKiogTGFyZ2Ugc2lnbmVkIGludGVnZXIuICovCisjaWYgZGVmaW5lZChQSl9XSU42NCkgJiYgUEpfV0lONjQhPTAKKyAgICB0eXBlZGVmIHBqX2ludDY0X3QgICAgIHBqX3NzaXplX3Q7CisjZWxzZQorICAgIHR5cGVkZWYgbG9uZyAgICAgICAgICAgcGpfc3NpemVfdDsKKyNlbmRpZgorCisvKiogU3RhdHVzIGNvZGUuICovCit0eXBlZGVmIGludAkJcGpfc3RhdHVzX3Q7CisKKy8qKiBCb29sZWFuLiAqLwordHlwZWRlZiBpbnQJCXBqX2Jvb2xfdDsKKworLyoqIE5hdGl2ZSBjaGFyIHR5cGUsIHdoaWNoIHdpbGwgYmUgZXF1YWwgdG8gd2NoYXJfdCBmb3IgVW5pY29kZQorICogYW5kIGNoYXIgZm9yIEFOU0kuICovCisjaWYgZGVmaW5lZChQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUpICYmIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSE9MAorICAgIHR5cGVkZWYgd2NoYXJfdCBwal9jaGFyX3Q7CisjZWxzZQorICAgIHR5cGVkZWYgY2hhciBwal9jaGFyX3Q7CisjZW5kaWYKKworLyoqIFRoaXMgbWFjcm8gY3JlYXRlcyBVbmljb2RlIG9yIEFOU0kgbGl0ZXJhbCBzdHJpbmcgZGVwZW5kaW5nIHdoZXRoZXIKKyAqICBuYXRpdmUgcGxhdGZvcm0gc3RyaW5nIGlzIFVuaWNvZGUgb3IgQU5TSS4gKi8KKyNpZiBkZWZpbmVkKFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSkgJiYgUEpfTkFUSVZFX1NUUklOR19JU19VTklDT0RFIT0wCisjICAgZGVmaW5lIFBKX1QobGl0ZXJhbF9zdHIpCUwjI2xpdGVyYWxfc3RyCisjZWxzZQorIyAgIGRlZmluZSBQSl9UKGxpdGVyYWxfc3RyKQlsaXRlcmFsX3N0cgorI2VuZGlmCisKKy8qKiBTb21lIGNvbnN0YW50cyAqLworZW51bSBwal9jb25zdGFudHNfCit7CisgICAgLyoqIFN0YXR1cyBpcyBPSy4gKi8KKyAgICBQSl9TVUNDRVNTPTAsCisKKyAgICAvKiogVHJ1ZSB2YWx1ZS4gKi8KKyAgICBQSl9UUlVFPTEsCisKKyAgICAvKiogRmFsc2UgdmFsdWUuICovCisgICAgUEpfRkFMU0U9MAorfTsKKworLyoqCisgKiBGaWxlIG9mZnNldCB0eXBlLgorICovCisjaWYgZGVmaW5lZChQSl9IQVNfSU5UNjQpICYmIFBKX0hBU19JTlQ2NCE9MAordHlwZWRlZiBwal9pbnQ2NF90IHBqX29mZl90OworI2Vsc2UKK3R5cGVkZWYgcGpfc3NpemVfdCBwal9vZmZfdDsKKyNlbmRpZgorCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisvKgorICogRGF0YSBzdHJ1Y3R1cmUgdHlwZXMuCisgKi8KKy8qKgorICogVGhpcyB0eXBlIGlzIHVzZWQgYXMgcmVwbGFjZW1lbnQgdG8gbGVnYWN5IEMgc3RyaW5nLCBhbmQgdXNlZCB0aHJvdWdob3V0CisgKiB0aGUgbGlicmFyeS4gQnkgY29udmVudGlvbiwgdGhlIHN0cmluZyBpcyBOT1QgbnVsbCB0ZXJtaW5hdGVkLgorICovCitzdHJ1Y3QgcGpfc3RyX3QKK3sKKyAgICAvKiogQnVmZmVyIHBvaW50ZXIsIHdoaWNoIGlzIGJ5IGNvbnZlbnRpb24gTk9UIG51bGwgdGVybWluYXRlZC4gKi8KKyAgICBjaGFyICAgICAgICpwdHI7CisKKyAgICAvKiogVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLiAqLworICAgIHBqX3NzaXplX3QgIHNsZW47Cit9OworCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgaGlnaCByZXNvbHV0aW9uICg2NGJpdCkgdGltZSB2YWx1ZS4gVGhlIHRpbWUKKyAqIHZhbHVlcyByZXByZXNlbnQgdGltZSBpbiBjeWNsZXMsIHdoaWNoIGlzIHJldHJpZXZlZCBieSBjYWxsaW5nCisgKiAjcGpfZ2V0X3RpbWVzdGFtcCgpLgorICovCit0eXBlZGVmIHVuaW9uIHBqX3RpbWVzdGFtcAoreworICAgIHN0cnVjdAorICAgIHsKKyNpZiBkZWZpbmVkKFBKX0lTX0xJVFRMRV9FTkRJQU4pICYmIFBKX0lTX0xJVFRMRV9FTkRJQU4hPTAKKwlwal91aW50MzJfdCBsbzsgICAgIC8qKjwgTG93IDMyLWJpdCB2YWx1ZSBvZiB0aGUgNjQtYml0IHZhbHVlLiAqLworCXBqX3VpbnQzMl90IGhpOyAgICAgLyoqPCBoaWdoIDMyLWJpdCB2YWx1ZSBvZiB0aGUgNjQtYml0IHZhbHVlLiAqLworI2Vsc2UKKwlwal91aW50MzJfdCBoaTsgICAgIC8qKjwgaGlnaCAzMi1iaXQgdmFsdWUgb2YgdGhlIDY0LWJpdCB2YWx1ZS4gKi8KKwlwal91aW50MzJfdCBsbzsgICAgIC8qKjwgTG93IDMyLWJpdCB2YWx1ZSBvZiB0aGUgNjQtYml0IHZhbHVlLiAqLworI2VuZGlmCisgICAgfSB1MzI7ICAgICAgICAgICAgICAgICAgLyoqPCBUaGUgNjQtYml0IHZhbHVlIGFzIHR3byAzMi1iaXQgdmFsdWVzLiAqLworCisjaWYgUEpfSEFTX0lOVDY0CisgICAgcGpfdWludDY0X3QgdTY0OyAgICAgICAgLyoqPCBUaGUgd2hvbGUgNjQtYml0IHZhbHVlLCB3aGVyZSBhdmFpbGFibGUuICovCisjZW5kaWYKK30gcGpfdGltZXN0YW1wOworCisKKworLyoqCisgKiBUaGUgb3BhcXVlIGRhdGEgdHlwZSBmb3IgbGlua2VkIGxpc3QsIHdoaWNoIGlzIHVzZWQgYXMgYXJndW1lbnRzIHRocm91Z2hvdXQKKyAqIHRoZSBsaW5rZWQgbGlzdCBvcGVyYXRpb25zLgorICovCit0eXBlZGVmIHZvaWQgcGpfbGlzdF90eXBlOworCisvKiogCisgKiBMaXN0LgorICovCit0eXBlZGVmIHN0cnVjdCBwal9saXN0IHBqX2xpc3Q7CisKKy8qKgorICogT3BhcXVlIGRhdGEgdHlwZSBmb3IgaGFzaCB0YWJsZXMuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX2hhc2hfdGFibGVfdCBwal9oYXNoX3RhYmxlX3Q7CisKKy8qKgorICogT3BhcXVlIGRhdGEgdHlwZSBmb3IgaGFzaCBlbnRyeSAob25seSB1c2VkIGludGVybmFsbHkgYnkgaGFzaCB0YWJsZSkuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX2hhc2hfZW50cnkgcGpfaGFzaF9lbnRyeTsKKworLyoqCisgKiBEYXRhIHR5cGUgZm9yIGhhc2ggc2VhcmNoIGl0ZXJhdG9yLgorICogVGhpcyBzdHJ1Y3R1cmUgc2hvdWxkIGJlIG9wYXF1ZSwgaG93ZXZlciBhcHBsaWNhdGlvbnMgbmVlZCB0byBkZWNsYXJlCisgKiBjb25jcmV0ZSB2YXJpYWJsZSBvZiB0aGlzIHR5cGUsIHRoYXQncyB3aHkgdGhlIGRlY2xhcmF0aW9uIGlzIHZpc2libGUgaGVyZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfaGFzaF9pdGVyYXRvcl90Cit7CisgICAgcGpfdWludDMyX3QJICAgICBpbmRleDsgICAgIC8qKjwgSW50ZXJuYWwgaW5kZXguICAgICAqLworICAgIHBqX2hhc2hfZW50cnkgICAqZW50cnk7ICAgICAvKio8IEludGVybmFsIGVudHJ5LiAgICAgKi8KK30gcGpfaGFzaF9pdGVyYXRvcl90OworCisKKy8qKgorICogRm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgbWVtb3J5IHBvb2wgZmFjdG9yeS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfcG9vbF9mYWN0b3J5IHBqX3Bvb2xfZmFjdG9yeTsKKworLyoqCisgKiBPcGFxdWUgZGF0YSB0eXBlIGZvciBtZW1vcnkgcG9vbC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfcG9vbF90IHBqX3Bvb2xfdDsKKworLyoqCisgKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBjYWNoaW5nIHBvb2wsIGEgcG9vbCBmYWN0b3J5IGltcGxlbWVudGF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9jYWNoaW5nX3Bvb2wgcGpfY2FjaGluZ19wb29sOworCisvKioKKyAqIFRoaXMgdHlwZSBpcyB1c2VkIGFzIHJlcGxhY2VtZW50IHRvIGxlZ2FjeSBDIHN0cmluZywgYW5kIHVzZWQgdGhyb3VnaG91dAorICogdGhlIGxpYnJhcnkuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX3N0cl90IHBqX3N0cl90OworCisvKioKKyAqIE9wYXF1ZSBkYXRhIHR5cGUgZm9yIEkvTyBRdWV1ZSBzdHJ1Y3R1cmUuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX2lvcXVldWVfdCBwal9pb3F1ZXVlX3Q7CisKKy8qKgorICogT3BhcXVlIGRhdGEgdHlwZSBmb3Iga2V5IHRoYXQgaWRlbnRpZmllcyBhIGhhbmRsZSByZWdpc3RlcmVkIHRvIHRoZQorICogSS9PIHF1ZXVlIGZyYW1ld29yay4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfaW9xdWV1ZV9rZXlfdCBwal9pb3F1ZXVlX2tleV90OworCisvKioKKyAqIE9wYXF1ZSBkYXRhIHRvIGlkZW50aWZ5IHRpbWVyIGhlYXAuCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX3RpbWVyX2hlYXBfdCBwal90aW1lcl9oZWFwX3Q7CisKKy8qKiAKKyAqIE9wYXF1ZSBkYXRhIHR5cGUgZm9yIGF0b21pYyBvcGVyYXRpb25zLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9hdG9taWNfdCBwal9hdG9taWNfdDsKKworLyoqCisgKiBWYWx1ZSB0eXBlIG9mIGFuIGF0b21pYyB2YXJpYWJsZS4KKyAqLwordHlwZWRlZiBQSl9BVE9NSUNfVkFMVUVfVFlQRSBwal9hdG9taWNfdmFsdWVfdDsKKyAKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKworLyoqIFRocmVhZCBoYW5kbGUuICovCit0eXBlZGVmIHN0cnVjdCBwal90aHJlYWRfdCBwal90aHJlYWRfdDsKKworLyoqIExvY2sgb2JqZWN0LiAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfbG9ja190IHBqX2xvY2tfdDsKKworLyoqIEdyb3VwIGxvY2sgKi8KK3R5cGVkZWYgc3RydWN0IHBqX2dycF9sb2NrX3QgcGpfZ3JwX2xvY2tfdDsKKworLyoqIE11dGV4IGhhbmRsZS4gKi8KK3R5cGVkZWYgc3RydWN0IHBqX211dGV4X3QgcGpfbXV0ZXhfdDsKKworLyoqIFNlbWFwaG9yZSBoYW5kbGUuICovCit0eXBlZGVmIHN0cnVjdCBwal9zZW1fdCBwal9zZW1fdDsKKworLyoqIEV2ZW50IG9iamVjdC4gKi8KK3R5cGVkZWYgc3RydWN0IHBqX2V2ZW50X3QgcGpfZXZlbnRfdDsKKworLyoqIFVuaWRpcmVjdGlvbmFsIHN0cmVhbSBwaXBlIG9iamVjdC4gKi8KK3R5cGVkZWYgc3RydWN0IHBqX3BpcGVfdCBwal9waXBlX3Q7CisKKy8qKiBPcGVyYXRpbmcgc3lzdGVtIGhhbmRsZS4gKi8KK3R5cGVkZWYgdm9pZCAqcGpfb3NoYW5kbGVfdDsKKworLyoqIFNvY2tldCBoYW5kbGUuICovCisjaWYgZGVmaW5lZChQSl9XSU42NCkgJiYgUEpfV0lONjQhPTAKKyAgICB0eXBlZGVmIHBqX2ludDY0X3QgcGpfc29ja190OworI2Vsc2UKKyAgICB0eXBlZGVmIGxvbmcgcGpfc29ja190OworI2VuZGlmCisKKy8qKiBHZW5lcmljIHNvY2tldCBhZGRyZXNzLiAqLwordHlwZWRlZiB2b2lkIHBqX3NvY2thZGRyX3Q7CisKKy8qKiBGb3J3YXJkIGRlY2xhcmF0aW9uLiAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfc29ja2FkZHJfaW4gcGpfc29ja2FkZHJfaW47CisKKy8qKiBDb2xvciB0eXBlLiAqLwordHlwZWRlZiB1bnNpZ25lZCBpbnQgcGpfY29sb3JfdDsKKworLyoqIEV4Y2VwdGlvbiBpZC4gKi8KK3R5cGVkZWYgaW50IHBqX2V4Y2VwdGlvbl9pZF90OworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisKKy8qKiBVdGlsaXR5IG1hY3JvIHRvIGNvbXB1dGUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBzdGF0aWMgYXJyYXkuICovCisjZGVmaW5lIFBKX0FSUkFZX1NJWkUoYSkgICAgKHNpemVvZihhKS9zaXplb2YoYVswXSkpCisKKy8qKiBNYXhpbXVtIHZhbHVlIGZvciBzaWduZWQgMzItYml0IGludGVnZXIuICovCisjZGVmaW5lIFBKX01BWElOVDMyICAweDdGRkZGRkZGTAorCisvKioKKyAqIExlbmd0aCBvZiBvYmplY3QgbmFtZXMuCisgKi8KKyNkZWZpbmUgUEpfTUFYX09CSl9OQU1FCTMyCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKy8qCisgKiBHZW5lcmFsLgorICovCisvKioKKyAqIEluaXRpYWxpemUgdGhlIFBKIExpYnJhcnkuCisgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJlZm9yZSB1c2luZyB0aGUgbGlicmFyeS4gVGhlIHB1cnBvc2Ugb2YgdGhpcworICogZnVuY3Rpb24gaXMgdG8gaW5pdGlhbGl6ZSBzdGF0aWMgbGlicmFyeSBkYXRhLCBzdWNoIGFzIGNoYXJhY3RlciB0YWJsZSB1c2VkCisgKiBpbiByYW5kb20gc3RyaW5nIGdlbmVyYXRpb24sIGFuZCB0byBpbml0aWFsaXplIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50CisgKiBmdW5jdGlvbmFsaXR5IChzdWNoIGFzIFdTQVN0YXJ0dXAoKSBpbiBXaW5kb3dzKS4KKyAqCisgKiBBcGFydCBmcm9tIGNhbGxpbmcgcGpfaW5pdCgpLCBhcHBsaWNhdGlvbiB0eXBpY2FsbHkgc2hvdWxkIGFsc28gaW5pdGlhbGl6ZQorICogdGhlIHJhbmRvbSBzZWVkIGJ5IGNhbGxpbmcgcGpfc3JhbmQoKS4KKyAqCisgKiBAcmV0dXJuIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfaW5pdCh2b2lkKTsKKworCisvKioKKyAqIFNodXRkb3duIFBKTElCLgorICovCitQSl9ERUNMKHZvaWQpIHBqX3NodXRkb3duKHZvaWQpOworCisvKioKKyAqIFR5cGUgb2YgY2FsbGJhY2sgdG8gcmVnaXN0ZXIgdG8gcGpfYXRleGl0KCkuCisgKi8KK3R5cGVkZWYgdm9pZCAoKnBqX2V4aXRfY2FsbGJhY2spKHZvaWQpOworCisvKioKKyAqIFJlZ2lzdGVyIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IFBKTElCIHdoZW4gcGpfc2h1dGRvd24oKSBpcyAKKyAqIGNhbGxlZC4KKyAqCisgKiBAcGFyYW0gZnVuYwkgICAgVGhlIGZ1bmN0aW9uIHRvIGJlIHJlZ2lzdGVyZWQuCisgKgorICogQHJldHVybiBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqX2F0ZXhpdChwal9leGl0X2NhbGxiYWNrIGZ1bmMpOworCisKKworLyoqCisgKiBTd2FwIHRoZSBieXRlIG9yZGVyIG9mIGFuIDE2Yml0IGRhdGEuCisgKgorICogQHBhcmFtIHZhbDE2CSAgICBUaGUgMTZiaXQgZGF0YS4KKyAqCisgKiBAcmV0dXJuCSAgICBBbiAxNmJpdCBkYXRhIHdpdGggc3dhcHBlZCBieXRlIG9yZGVyLgorICovCitQSl9JTkxJTkUocGpfaW50MTZfdCkgcGpfc3dhcDE2KHBqX2ludDE2X3QgdmFsMTYpCit7CisgICAgcGpfdWludDhfdCAqcCA9IChwal91aW50OF90KikmdmFsMTY7CisgICAgcGpfdWludDhfdCB0bXAgPSAqcDsKKyAgICAqcCA9ICoocCsxKTsKKyAgICAqKHArMSkgPSB0bXA7CisgICAgcmV0dXJuIHZhbDE2OworfQorCisvKioKKyAqIFN3YXAgdGhlIGJ5dGUgb3JkZXIgb2YgYW4gMzJiaXQgZGF0YS4KKyAqCisgKiBAcGFyYW0gdmFsMzIJICAgIFRoZSAzMmJpdCBkYXRhLgorICoKKyAqIEByZXR1cm4JICAgIEFuIDMyYml0IGRhdGEgd2l0aCBzd2FwcGVkIGJ5dGUgb3JkZXIuCisgKi8KK1BKX0lOTElORShwal9pbnQzMl90KSBwal9zd2FwMzIocGpfaW50MzJfdCB2YWwzMikKK3sKKyAgICBwal91aW50OF90ICpwID0gKHBqX3VpbnQ4X3QqKSZ2YWwzMjsKKyAgICBwal91aW50OF90IHRtcCA9ICpwOworICAgICpwID0gKihwKzMpOworICAgICoocCszKSA9IHRtcDsKKyAgICB0bXAgPSAqKHArMSk7CisgICAgKihwKzEpID0gKihwKzIpOworICAgICoocCsyKSA9IHRtcDsKKyAgICByZXR1cm4gdmFsMzI7Cit9CisKKworLyoqCisgKiBAfQorICovCisvKioKKyAqIEBhZGR0b2dyb3VwIFBKX1RJTUUgVGltZSBEYXRhIFR5cGUgYW5kIE1hbmlwdWxhdGlvbi4KKyAqIEBpbmdyb3VwIFBKX01JU0MKKyAqIEB7CisgKi8KKworLyoqCisgKiBSZXByZXNlbnRhdGlvbiBvZiB0aW1lIHZhbHVlIGluIHRoaXMgbGlicmFyeS4KKyAqIFRoaXMgdHlwZSBjYW4gYmUgdXNlZCB0byByZXByZXNlbnQgZWl0aGVyIGFuIGludGVydmFsIG9yIGEgc3BlY2lmaWMgdGltZQorICogb3IgZGF0ZS4gCisgKi8KK3R5cGVkZWYgc3RydWN0IHBqX3RpbWVfdmFsCit7CisgICAgLyoqIFRoZSBzZWNvbmRzIHBhcnQgb2YgdGhlIHRpbWUuICovCisgICAgbG9uZyAgICBzZWM7CisKKyAgICAvKiogVGhlIG1pbGlzZWNvbmRzIGZyYWN0aW9uIG9mIHRoZSB0aW1lLiAqLworICAgIGxvbmcgICAgbXNlYzsKKworfSBwal90aW1lX3ZhbDsKKworLyoqCisgKiBOb3JtYWxpemUgdGhlIHZhbHVlIGluIHRpbWUgdmFsdWUuCisgKiBAcGFyYW0gdCAgICAgVGltZSB2YWx1ZSB0byBiZSBub3JtYWxpemVkLgorICovCitQSl9ERUNMKHZvaWQpIHBqX3RpbWVfdmFsX25vcm1hbGl6ZShwal90aW1lX3ZhbCAqdCk7CisKKy8qKgorICogR2V0IHRoZSB0b3RhbCB0aW1lIHZhbHVlIGluIG1pbGlzZWNvbmRzLiBUaGlzIGlzIHRoZSBzYW1lIGFzCisgKiBtdWx0aXBseWluZyB0aGUgc2Vjb25kIHBhcnQgd2l0aCAxMDAwIGFuZCB0aGVuIGFkZCB0aGUgbWlsaXNlY29uZHMKKyAqIHBhcnQgdG8gdGhlIHJlc3VsdC4KKyAqCisgKiBAcGFyYW0gdCAgICAgVGhlIHRpbWUgdmFsdWUuCisgKiBAcmV0dXJuICAgICAgVG90YWwgdGltZSBpbiBtaWxpc2Vjb25kcy4KKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqLworI2RlZmluZSBQSl9USU1FX1ZBTF9NU0VDKHQpCSgodCkuc2VjICogMTAwMCArICh0KS5tc2VjKQorCisvKioKKyAqIFRoaXMgbWFjcm8gd2lsbCBjaGVjayBpZiBcYSB0MSBpcyBlcXVhbCB0byBcYSB0Mi4KKyAqCisgKiBAcGFyYW0gdDEgICAgVGhlIGZpcnN0IHRpbWUgdmFsdWUgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSB0MiAgICBUaGUgc2Vjb25kIHRpbWUgdmFsdWUgdG8gY29tcGFyZS4KKyAqIEByZXR1cm4gICAgICBOb24temVybyBpZiBib3RoIHRpbWUgdmFsdWVzIGFyZSBlcXVhbC4KKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqLworI2RlZmluZSBQSl9USU1FX1ZBTF9FUSh0MSwgdDIpCSgodDEpLnNlYz09KHQyKS5zZWMgJiYgKHQxKS5tc2VjPT0odDIpLm1zZWMpCisKKy8qKgorICogVGhpcyBtYWNybyB3aWxsIGNoZWNrIGlmIFxhIHQxIGlzIGdyZWF0ZXIgdGhhbiBcYSB0MgorICoKKyAqIEBwYXJhbSB0MSAgICBUaGUgZmlyc3QgdGltZSB2YWx1ZSB0byBjb21wYXJlLgorICogQHBhcmFtIHQyICAgIFRoZSBzZWNvbmQgdGltZSB2YWx1ZSB0byBjb21wYXJlLgorICogQHJldHVybiAgICAgIE5vbi16ZXJvIGlmIHQxIGlzIGdyZWF0ZXIgdGhhbiB0Mi4KKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqLworI2RlZmluZSBQSl9USU1FX1ZBTF9HVCh0MSwgdDIpCSgodDEpLnNlYz4odDIpLnNlYyB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodDEpLnNlYz09KHQyKS5zZWMgJiYgKHQxKS5tc2VjPih0MikubXNlYykpCisKKy8qKgorICogVGhpcyBtYWNybyB3aWxsIGNoZWNrIGlmIFxhIHQxIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBcYSB0MgorICoKKyAqIEBwYXJhbSB0MSAgICBUaGUgZmlyc3QgdGltZSB2YWx1ZSB0byBjb21wYXJlLgorICogQHBhcmFtIHQyICAgIFRoZSBzZWNvbmQgdGltZSB2YWx1ZSB0byBjb21wYXJlLgorICogQHJldHVybiAgICAgIE5vbi16ZXJvIGlmIHQxIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0Mi4KKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqLworI2RlZmluZSBQSl9USU1FX1ZBTF9HVEUodDEsIHQyKQkoUEpfVElNRV9WQUxfR1QodDEsdDIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBKX1RJTUVfVkFMX0VRKHQxLHQyKSkKKworLyoqCisgKiBUaGlzIG1hY3JvIHdpbGwgY2hlY2sgaWYgXGEgdDEgaXMgbGVzcyB0aGFuIFxhIHQyCisgKgorICogQHBhcmFtIHQxICAgIFRoZSBmaXJzdCB0aW1lIHZhbHVlIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gdDIgICAgVGhlIHNlY29uZCB0aW1lIHZhbHVlIHRvIGNvbXBhcmUuCisgKiBAcmV0dXJuICAgICAgTm9uLXplcm8gaWYgdDEgaXMgbGVzcyB0aGFuIHQyLgorICogQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFBKX1RJTUVfVkFMX0xUKHQxLCB0MikJKCEoUEpfVElNRV9WQUxfR1RFKHQxLHQyKSkpCisKKy8qKgorICogVGhpcyBtYWNybyB3aWxsIGNoZWNrIGlmIFxhIHQxIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBcYSB0Mi4KKyAqCisgKiBAcGFyYW0gdDEgICAgVGhlIGZpcnN0IHRpbWUgdmFsdWUgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSB0MiAgICBUaGUgc2Vjb25kIHRpbWUgdmFsdWUgdG8gY29tcGFyZS4KKyAqIEByZXR1cm4gICAgICBOb24temVybyBpZiB0MSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdDIuCisgKiBAaGlkZWluaXRpYWxpemVyCisgKi8KKyNkZWZpbmUgUEpfVElNRV9WQUxfTFRFKHQxLCB0MikJKCFQSl9USU1FX1ZBTF9HVCh0MSwgdDIpKQorCisvKioKKyAqIEFkZCBcYSB0MiB0byBcYSB0MSBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiBcYSB0MS4gRWZmZWN0aXZlbHkKKyAqCisgKiB0aGlzIG1hY3JvIHdpbGwgZXhwYW5kIGFzOiAoXGEgdDEgKz0gXGEgdDIpLgorICogQHBhcmFtIHQxICAgIFRoZSB0aW1lIHZhbHVlIHRvIGFkZC4KKyAqIEBwYXJhbSB0MiAgICBUaGUgdGltZSB2YWx1ZSB0byBiZSBhZGRlZCB0byBcYSB0MS4KKyAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAqLworI2RlZmluZSBQSl9USU1FX1ZBTF9BREQodDEsIHQyKQkgICAgZG8gewkJCSAgICBcCisJCQkJCSh0MSkuc2VjICs9ICh0Mikuc2VjOwkgICAgXAorCQkJCQkodDEpLm1zZWMgKz0gKHQyKS5tc2VjOwkgICAgXAorCQkJCQlwal90aW1lX3ZhbF9ub3JtYWxpemUoJih0MSkpOyBcCisJCQkJICAgIH0gd2hpbGUgKDApCisKKworLyoqCisgKiBTdWJzdHJhY3QgXGEgdDIgZnJvbSBcYSB0MSBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiBcYSB0MS4gRWZmZWN0aXZlbHkKKyAqIHRoaXMgbWFjcm8gd2lsbCBleHBhbmQgYXMgKFxhIHQxIC09IFxhIHQyKS4KKyAqCisgKiBAcGFyYW0gdDEgICAgVGhlIHRpbWUgdmFsdWUgdG8gc3Vic2N0cmFjdC4KKyAqIEBwYXJhbSB0MiAgICBUaGUgdGltZSB2YWx1ZSB0byBiZSBzdWJzdHJhY3RlZCBmcm9tIFxhIHQxLgorICogQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFBKX1RJTUVfVkFMX1NVQih0MSwgdDIpCSAgICBkbyB7CQkJICAgIFwKKwkJCQkJKHQxKS5zZWMgLT0gKHQyKS5zZWM7CSAgICBcCisJCQkJCSh0MSkubXNlYyAtPSAodDIpLm1zZWM7CSAgICBcCisJCQkJCXBqX3RpbWVfdmFsX25vcm1hbGl6ZSgmKHQxKSk7IFwKKwkJCQkgICAgfSB3aGlsZSAoMCkKKworCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudCB0aGUgcGFyc2VkIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUuCisgKiBJdCBpcyBhY3F1aXJlZCBieSBjYWxsaW5nICNwal90aW1lX2RlY29kZSgpLgorICovCit0eXBlZGVmIHN0cnVjdCBwal9wYXJzZWRfdGltZQoreworICAgIC8qKiBUaGlzIHJlcHJlc2VudHMgZGF5IG9mIHdlZWsgd2hlcmUgdmFsdWUgemVybyBtZWFucyBTdW5kYXkgKi8KKyAgICBpbnQgd2RheTsKKworICAgIC8qIFRoaXMgcmVwcmVzZW50cyBkYXkgb2YgdGhlIHllYXIsIDAtMzY1LCB3aGVyZSB6ZXJvIG1lYW5zCisgICAgICogIDFzdCBvZiBKYW51YXJ5LgorICAgICAqLworICAgIC8qaW50IHlkYXk7ICovCisKKyAgICAvKiogVGhpcyByZXByZXNlbnRzIGRheSBvZiBtb250aDogMS0zMSAqLworICAgIGludCBkYXk7CisKKyAgICAvKiogVGhpcyByZXByZXNlbnRzIG1vbnRoLCB3aXRoIHRoZSB2YWx1ZSBpcyAwIC0gMTEgKHplcm8gaXMgSmFudWFyeSkgKi8KKyAgICBpbnQgbW9uOworCisgICAgLyoqIFRoaXMgcmVwcmVzZW50IHRoZSBhY3R1YWwgeWVhciAodW5saWtlIGluIEFOU0kgbGliYyB3aGVyZQorICAgICAqICB0aGUgdmFsdWUgbXVzdCBiZSBhZGRlZCBieSAxOTAwKS4KKyAgICAgKi8KKyAgICBpbnQgeWVhcjsKKworICAgIC8qKiBUaGlzIHJlcHJlc2VudHMgdGhlIHNlY29uZCBwYXJ0LCB3aXRoIHRoZSB2YWx1ZSBpcyAwLTU5ICovCisgICAgaW50IHNlYzsKKworICAgIC8qKiBUaGlzIHJlcHJlc2VudHMgdGhlIG1pbnV0ZSBwYXJ0LCB3aXRoIHRoZSB2YWx1ZSBpczogMC01OSAqLworICAgIGludCBtaW47CisKKyAgICAvKiogVGhpcyByZXByZXNlbnRzIHRoZSBob3VyIHBhcnQsIHdpdGggdGhlIHZhbHVlIGlzIDAtMjMgKi8KKyAgICBpbnQgaG91cjsKKworICAgIC8qKiBUaGlzIHJlcHJlc2VudHMgdGhlIG1pbGlzZWNvbmQgcGFydCwgd2l0aCB0aGUgdmFsdWUgaXMgMC05OTkgKi8KKyAgICBpbnQgbXNlYzsKKworfSBwal9wYXJzZWRfdGltZTsKKworCisvKioKKyAqIEB9CS8vIFRpbWUgTWFuYWdlbWVudAorICovCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKy8qCisgKiBUZXJtaW5hbC4KKyAqLworLyoqCisgKiBDb2xvciBjb2RlIGNvbWJpbmF0aW9uLgorICovCitlbnVtIHsKKyAgICBQSl9URVJNX0NPTE9SX1IJPSAyLCAgICAvKio8IFJlZCAgICAgICAgICAgICovCisgICAgUEpfVEVSTV9DT0xPUl9HCT0gNCwgICAgLyoqPCBHcmVlbiAgICAgICAgICAqLworICAgIFBKX1RFUk1fQ09MT1JfQgk9IDEsICAgIC8qKjwgQmx1ZS4gICAgICAgICAgKi8KKyAgICBQSl9URVJNX0NPTE9SX0JSSUdIVCA9IDggICAgLyoqPCBCcmlnaHQgbWFzay4gICAqLworfTsKKworCisKKworUEpfRU5EX0RFQ0wKKworCisjZW5kaWYgLyogX19QSl9UWVBFU19IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai91bmljb2RlLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqL3VuaWNvZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGE0NDhhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvaW5jbHVkZS9wai91bmljb2RlLmgKQEAgLTAsMCArMSwxNDEgQEAKKy8qICRJZDogdW5pY29kZS5oIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKX1VOSUNPREVfSF9fCisjZGVmaW5lIF9fUEpfVU5JQ09ERV9IX18KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisKKworLyoqCisgKiBAZGVmZ3JvdXAgUEpfVU5JQ09ERSBVbmljb2RlIFN1cHBvcnQKKyAqIEBpbmdyb3VwIFBKX01JU0MKKyAqIEB7CisgKi8KKworUEpfQkVHSU5fREVDTAorCisKKy8qKgorICogQGZpbGUgdW5pY29kZS5oCisgKiBAYnJpZWYgUHJvdmlkZXMgVW5pY29kZSBjb252ZXJzaW9uIGZvciBVbmljb2RlIE9TZXMKKyAqLworCisvKioKKyAqIENvbnZlcnQgQU5TSSBzdHJpbmdzIHRvIFVuaWNvZGUgc3RyaW5ncy4KKyAqCisgKiBAcGFyYW0gc3RyCQkgICAgVGhlIEFOU0kgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC4KKyAqIEBwYXJhbSBsZW4JCSAgICBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBzdHJpbmcuCisgKiBAcGFyYW0gd2J1ZgkJICAgIEJ1ZmZlciB0byBob2xkIHRoZSBVbmljb2RlIHN0cmluZyBvdXRwdXQuCisgKiBAcGFyYW0gd2J1Zl9jb3VudAkgICAgQnVmZmVyIHNpemUsIGluIG51bWJlciBvZiBlbGVtZW50cyAobm90IGJ5dGVzKS4KKyAqCisgKiBAcmV0dXJuCQkgICAgVGhlIFVuaWNvZGUgc3RyaW5nLCBOVUxMIHRlcm1pbmF0ZWQuCisgKi8KK1BKX0RFQ0wod2NoYXJfdCopIHBqX2Fuc2lfdG9fdW5pY29kZShjb25zdCBjaGFyICpzdHIsIGludCBsZW4sCisJCQkJICAgICB3Y2hhcl90ICp3YnVmLCBpbnQgd2J1Zl9jb3VudCk7CisKKworLyoqCisgKiBDb252ZXJ0IFVuaWNvZGUgc3RyaW5nIHRvIEFOU0kgc3RyaW5nLgorICoKKyAqIEBwYXJhbSB3c3RyCQkgICAgVGhlIFVuaWNvZGUgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC4KKyAqIEBwYXJhbSBsZW4JCSAgICBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBzdHJpbmcuCisgKiBAcGFyYW0gYnVmCQkgICAgQnVmZmVyIHRvIGhvbGQgdGhlIEFOU0kgc3RyaW5nIG91dHB1dC4KKyAqIEBwYXJhbSBidWZfc2l6ZQkgICAgU2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlci4KKyAqCisgKiBAcmV0dXJuCQkgICAgVGhlIEFOU0kgc3RyaW5nLCBOVUxMIHRlcm1pbmF0ZWQuCisgKi8KK1BKX0RFQ0woY2hhciopIHBqX3VuaWNvZGVfdG9fYW5zaShjb25zdCB3Y2hhcl90ICp3c3RyLCBwal9zc2l6ZV90IGxlbiwKKwkJCQkgIGNoYXIgKmJ1ZiwgaW50IGJ1Zl9zaXplKTsKKworCisjaWYgZGVmaW5lZChQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUpICYmIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSE9MAorCisvKioKKyAqIFRoaXMgbWFjcm8gaXMgdXNlZCB0byBkZWNsYXJlIHRlbXBvcmFyeSBVbmljb2RlIGJ1ZmZlciBmb3IgQU5TSSB0byAKKyAqIFVuaWNvZGUgY29udmVyc2lvbiwgYW5kIHNob3VsZCBiZSBwdXQgaW4gZGVjbGFyYXRpb24gc2VjdGlvbiBvZiBhIGJsb2NrLgorICogV2hlbiBQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUgbWFjcm8gaXMgbm90IGRlZmluZWQsIHRoaXMgCisgKiBtYWNybyB3aWxsIGV4cGFuZCB0byBub3RoaW5nLgorICovCisjICAgZGVmaW5lIFBKX0RFQ0xfVU5JQ09ERV9URU1QX0JVRihidWYsc2l6ZSkgICB3Y2hhcl90IGJ1ZltzaXplXTsKKworLyoqCisgKiBUaGlzIG1hY3JvIHdpbGwgY29udmVydCBBTlNJIHN0cmluZyB0byBuYXRpdmUsIHdoZW4gdGhlIHBsYXRmb3JtJ3MKKyAqIG5hdGl2ZSBzdHJpbmcgaXMgVW5pY29kZSAoUEpfTkFUSVZFX1NUUklOR19JU19VTklDT0RFIGlzIG5vbi16ZXJvKS4KKyAqLworIyAgIGRlZmluZSBQSl9TVFJJTkdfVE9fTkFUSVZFKHMsYnVmLG1heCkJcGpfYW5zaV90b191bmljb2RlKCBcCisJCQkJCQkgICAgcywgc3RybGVuKHMpLCBcCisJCQkJCQkgICAgYnVmLCBtYXgpCisKKy8qKgorICogVGhpcyBtYWNybyBpcyB1c2VkIHRvIGRlY2xhcmUgdGVtcG9yYXJ5IEFOU0kgYnVmZmVyIGZvciBVbmljb2RlIHRvIAorICogQU5TSSBjb252ZXJzaW9uLCBhbmQgc2hvdWxkIGJlIHB1dCBpbiBkZWNsYXJhdGlvbiBzZWN0aW9uIG9mIGEgYmxvY2suCisgKiBXaGVuIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSBtYWNybyBpcyBub3QgZGVmaW5lZCwgdGhpcyAKKyAqIG1hY3JvIHdpbGwgZXhwYW5kIHRvIG5vdGhpbmcuCisgKi8KKyMgICBkZWZpbmUgUEpfREVDTF9BTlNJX1RFTVBfQlVGKGJ1ZixzaXplKQljaGFyIGJ1ZltzaXplXTsKKworCisvKioKKyAqIFRoaXMgbWFjcm8gd2lsbCBjb252ZXJ0IFVuaWNvZGUgc3RyaW5nIHRvIEFOU0ksIHdoZW4gdGhlIHBsYXRmb3JtJ3MKKyAqIG5hdGl2ZSBzdHJpbmcgaXMgVW5pY29kZSAoUEpfTkFUSVZFX1NUUklOR19JU19VTklDT0RFIGlzIG5vbi16ZXJvKS4KKyAqLworIyAgIGRlZmluZSBQSl9OQVRJVkVfVE9fU1RSSU5HKGNzLGJ1ZixtYXgpCXBqX3VuaWNvZGVfdG9fYW5zaSggXAorCQkJCQkJICAgIGNzLCB3Y3NsZW4oY3MpLCBcCisJCQkJCQkgICAgYnVmLCBtYXgpCisKKyNlbHNlCisKKy8qKgorICogVGhpcyBtYWNybyBpcyB1c2VkIHRvIGRlY2xhcmUgdGVtcG9yYXJ5IFVuaWNvZGUgYnVmZmVyIGZvciBBTlNJIHRvIAorICogVW5pY29kZSBjb252ZXJzaW9uLCBhbmQgc2hvdWxkIGJlIHB1dCBpbiBkZWNsYXJhdGlvbiBzZWN0aW9uIG9mIGEgYmxvY2suCisgKiBXaGVuIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSBtYWNybyBpcyBub3QgZGVmaW5lZCwgdGhpcyAKKyAqIG1hY3JvIHdpbGwgZXhwYW5kIHRvIG5vdGhpbmcuCisgKi8KKyMgICBkZWZpbmUgUEpfREVDTF9VTklDT0RFX1RFTVBfQlVGKHZhcixzaXplKQorLyoqCisgKiBUaGlzIG1hY3JvIHdpbGwgY29udmVydCBBTlNJIHN0cmluZyB0byBuYXRpdmUsIHdoZW4gdGhlIHBsYXRmb3JtJ3MKKyAqIG5hdGl2ZSBzdHJpbmcgaXMgVW5pY29kZSAoUEpfTkFUSVZFX1NUUklOR19JU19VTklDT0RFIGlzIG5vbi16ZXJvKS4KKyAqLworIyAgIGRlZmluZSBQSl9TVFJJTkdfVE9fTkFUSVZFKHMsYnVmLG1heCkJKChjaGFyKilzKQorLyoqCisgKiBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gZGVjbGFyZSB0ZW1wb3JhcnkgQU5TSSBidWZmZXIgZm9yIFVuaWNvZGUgdG8gCisgKiBBTlNJIGNvbnZlcnNpb24sIGFuZCBzaG91bGQgYmUgcHV0IGluIGRlY2xhcmF0aW9uIHNlY3Rpb24gb2YgYSBibG9jay4KKyAqIFdoZW4gUEpfTkFUSVZFX1NUUklOR19JU19VTklDT0RFIG1hY3JvIGlzIG5vdCBkZWZpbmVkLCB0aGlzIAorICogbWFjcm8gd2lsbCBleHBhbmQgdG8gbm90aGluZy4KKyAqLworIyAgIGRlZmluZSBQSl9ERUNMX0FOU0lfVEVNUF9CVUYoYnVmLHNpemUpCisvKioKKyAqIFRoaXMgbWFjcm8gd2lsbCBjb252ZXJ0IFVuaWNvZGUgc3RyaW5nIHRvIEFOU0ksIHdoZW4gdGhlIHBsYXRmb3JtJ3MKKyAqIG5hdGl2ZSBzdHJpbmcgaXMgVW5pY29kZSAoUEpfTkFUSVZFX1NUUklOR19JU19VTklDT0RFIGlzIG5vbi16ZXJvKS4KKyAqLworIyAgIGRlZmluZSBQSl9OQVRJVkVfVE9fU1RSSU5HKGNzLGJ1ZixtYXgpCSgoY2hhciopKGNvbnN0IGNoYXIqKWNzKQorCisjZW5kaWYKKworCisKK1BKX0VORF9ERUNMCisKKy8qCisgKiBAfQorICovCisKKworI2VuZGlmCS8qIF9fUEpfVU5JQ09ERV9IX18gKi8KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGpsaWIrKy5ocHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqbGliKysuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMmU3NGQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqbGliKysuaHBwCkBAIC0wLDAgKzEsMzUgQEAKKy8qICRJZDogcGpsaWIrKy5ocHAgMjM5NCAyMDA4LTEyLTIzIDE3OjI3OjUzWiBiZW5ueWxwICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fUEpMSUJQUF9IX18KKyNkZWZpbmUgX19QSkxJQlBQX0hfXworCisjaW5jbHVkZSA8cGorKy9maWxlLmhwcD4KKyNpbmNsdWRlIDxwaisrL3Bvb2wuaHBwPgorI2luY2x1ZGUgPHBqKysvaGFzaC5ocHA+CisjaW5jbHVkZSA8cGorKy9saXN0LmhwcD4KKyNpbmNsdWRlIDxwaisrL29zLmhwcD4KKyNpbmNsdWRlIDxwaisrL3Byb2FjdG9yLmhwcD4KKyNpbmNsdWRlIDxwaisrL3NjYW5uZXIuaHBwPgorI2luY2x1ZGUgPHBqKysvc29jay5ocHA+CisjaW5jbHVkZSA8cGorKy9zdHJpbmcuaHBwPgorI2luY2x1ZGUgPHBqKysvdGltZXIuaHBwPgorI2luY2x1ZGUgPHBqKysvdHJlZS5ocHA+CisKKyNlbmRpZgkvKiBfX1BKTElCUFBfSF9fICovCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqbGliLmggYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9pbmNsdWRlL3BqbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTExOWNiNAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2luY2x1ZGUvcGpsaWIuaApAQCAtMCwwICsxLDYzIEBACisvKiAkSWQ6IHBqbGliLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKworI2lmbmRlZiBfX1BKTElCX0hfXworI2RlZmluZSBfX1BKTElCX0hfXworCisvKioKKyAqIEBmaWxlIHBqbGliLmgKKyAqIEBicmllZiBJbmNsdWRlIGFsbCBQSkxJQiBoZWFkZXIgZmlsZXMuCisgKi8KKworI2luY2x1ZGUgPHBqL2FjdGl2ZXNvY2suaD4KKyNpbmNsdWRlIDxwai9hZGRyX3Jlc29sdi5oPgorI2luY2x1ZGUgPHBqL2FycmF5Lmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovY3R5cGUuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL2V4Y2VwdC5oPgorI2luY2x1ZGUgPHBqL2ZpZm9idWYuaD4KKyNpbmNsdWRlIDxwai9maWxlX2FjY2Vzcy5oPgorI2luY2x1ZGUgPHBqL2ZpbGVfaW8uaD4KKyNpbmNsdWRlIDxwai9ndWlkLmg+CisjaW5jbHVkZSA8cGovaGFzaC5oPgorI2luY2x1ZGUgPHBqL2lvcXVldWUuaD4KKyNpbmNsdWRlIDxwai9pcF9oZWxwZXIuaD4KKyNpbmNsdWRlIDxwai9saXN0Lmg+CisjaW5jbHVkZSA8cGovbG9jay5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL21hdGguaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9wb29sX2J1Zi5oPgorI2luY2x1ZGUgPHBqL3JhbmQuaD4KKyNpbmNsdWRlIDxwai9yYnRyZWUuaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovc29ja19xb3MuaD4KKyNpbmNsdWRlIDxwai9zb2NrX3NlbGVjdC5oPgorI2luY2x1ZGUgPHBqL3NzbF9zb2NrLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovdGltZXIuaD4KKyNpbmNsdWRlIDxwai91bmljb2RlLmg+CisKKyNpbmNsdWRlIDxwai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaD4KKworI2VuZGlmICAvKiBfX1BKTElCX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9saWIvbGlicGotYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkuYSBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL2xpYi9saWJwai1hcm0tdW5rbm93bi1saW51eC1hbmRyb2lkZWFiaS5hCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwY2E0NjkKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9saWIvbGlicGotYXJtLXVua25vd24tbGludXgtYW5kcm9pZGVhYmkuYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovYWN0aXZlc29jay5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2FjdGl2ZXNvY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTAwNGVmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2FjdGl2ZXNvY2suYwpAQCAtMCwwICsxLDk1MiBAQAorLyogJElkOiBhY3RpdmVzb2NrLmMgNDUzNyAyMDEzLTA2LTE5IDA2OjQ3OjQzWiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovYWN0aXZlc29jay5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zb2NrZXQuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisKKyNpZiBkZWZpbmVkKFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQpICYmIFwKKyAgICBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIT0wCisjICAgaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorCisgICAgc3RhdGljIHBqX2Jvb2xfdCBpb3NfYmdfc3VwcG9ydCA9IFBKX1RSVUU7CisjZW5kaWYKKworI2RlZmluZSBQSl9BQ1RJVkVTT0NLX01BWF9MT09QCSAgICA1MAorCisKK2VudW0gcmVhZF90eXBlCit7CisgICAgVFlQRV9OT05FLAorICAgIFRZUEVfUkVDViwKKyAgICBUWVBFX1JFQ1ZfRlJPTQorfTsKKworZW51bSBzaHV0ZG93bl9kaXIKK3sKKyAgICBTSFVUX05PTkUgPSAwLAorICAgIFNIVVRfUlggPSAxLAorICAgIFNIVVRfVFggPSAyCit9OworCitzdHJ1Y3QgcmVhZF9vcAoreworICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QJIG9wX2tleTsKKyAgICBwal91aW50OF90CQkqcGt0OworICAgIHVuc2lnbmVkCQkgbWF4X3NpemU7CisgICAgcGpfc2l6ZV90CQkgc2l6ZTsKKyAgICBwal9zb2NrYWRkcgkJIHNyY19hZGRyOworICAgIGludAkJCSBzcmNfYWRkcl9sZW47Cit9OworCitzdHJ1Y3QgYWNjZXB0X29wCit7CisgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdAkgb3Bfa2V5OworICAgIHBqX3NvY2tfdAkJIG5ld19zb2NrOworICAgIHBqX3NvY2thZGRyCQkgcmVtX2FkZHI7CisgICAgaW50CQkJIHJlbV9hZGRyX2xlbjsKK307CisKK3N0cnVjdCBzZW5kX2RhdGEKK3sKKyAgICBwal91aW50OF90CQkqZGF0YTsKKyAgICBwal9zc2l6ZV90CQkgbGVuOworICAgIHBqX3NzaXplX3QJCSBzZW50OworICAgIHVuc2lnbmVkCQkgZmxhZ3M7Cit9OworCitzdHJ1Y3QgcGpfYWN0aXZlc29ja190Cit7CisgICAgcGpfaW9xdWV1ZV9rZXlfdAkqa2V5OworICAgIHBqX2Jvb2xfdAkJIHN0cmVhbV9vcmllbnRlZDsKKyAgICBwal9ib29sX3QJCSB3aG9sZV9kYXRhOworICAgIHBqX2lvcXVldWVfdAkqaW9xdWV1ZTsKKyAgICB2b2lkCQkqdXNlcl9kYXRhOworICAgIHVuc2lnbmVkCQkgYXN5bmNfY291bnQ7CisgICAgdW5zaWduZWQJIAkgc2h1dGRvd247CisgICAgdW5zaWduZWQJCSBtYXhfbG9vcDsKKyAgICBwal9hY3RpdmVzb2NrX2NiCSBjYjsKKyNpZiBkZWZpbmVkKFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQpICYmIFwKKyAgICBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIT0wCisgICAgaW50CQkJIGJnX3NldHRpbmc7CisgICAgcGpfc29ja190CQkgc29jazsKKyAgICBDRlJlYWRTdHJlYW1SZWYJIHJlYWRTdHJlYW07CisjZW5kaWYKKyAgICAKKyAgICB1bnNpZ25lZAkJIGVycl9jb3VudGVyOworICAgIHBqX3N0YXR1c190CQkgbGFzdF9lcnI7CisKKyAgICBzdHJ1Y3Qgc2VuZF9kYXRhCSBzZW5kX2RhdGE7CisKKyAgICBzdHJ1Y3QgcmVhZF9vcAkqcmVhZF9vcDsKKyAgICBwal91aW50MzJfdAkJIHJlYWRfZmxhZ3M7CisgICAgZW51bSByZWFkX3R5cGUJIHJlYWRfdHlwZTsKKworICAgIHN0cnVjdCBhY2NlcHRfb3AJKmFjY2VwdF9vcDsKK307CisKKworc3RhdGljIHZvaWQgaW9xdWV1ZV9vbl9yZWFkX2NvbXBsZXRlKHBqX2lvcXVldWVfa2V5X3QgKmtleSwgCisJCQkJICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksIAorCQkJCSAgICAgcGpfc3NpemVfdCBieXRlc19yZWFkKTsKK3N0YXRpYyB2b2lkIGlvcXVldWVfb25fd3JpdGVfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKwkJCQkgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJICAgICAgcGpfc3NpemVfdCBieXRlc19zZW50KTsKKyNpZiBQSl9IQVNfVENQCitzdGF0aWMgdm9pZCBpb3F1ZXVlX29uX2FjY2VwdF9jb21wbGV0ZShwal9pb3F1ZXVlX2tleV90ICprZXksIAorCQkJCSAgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJICAgICAgIHBqX3NvY2tfdCBzb2NrLCAKKwkJCQkgICAgICAgcGpfc3RhdHVzX3Qgc3RhdHVzKTsKK3N0YXRpYyB2b2lkIGlvcXVldWVfb25fY29ubmVjdF9jb21wbGV0ZShwal9pb3F1ZXVlX2tleV90ICprZXksIAorCQkJCQlwal9zdGF0dXNfdCBzdGF0dXMpOworI2VuZGlmCisKK1BKX0RFRih2b2lkKSBwal9hY3RpdmVzb2NrX2NmZ19kZWZhdWx0KHBqX2FjdGl2ZXNvY2tfY2ZnICpjZmcpCit7CisgICAgcGpfYnplcm8oY2ZnLCBzaXplb2YoKmNmZykpOworICAgIGNmZy0+YXN5bmNfY250ID0gMTsKKyAgICBjZmctPmNvbmN1cnJlbmN5ID0gLTE7CisgICAgY2ZnLT53aG9sZV9kYXRhID0gUEpfVFJVRTsKK30KKworI2lmIGRlZmluZWQoUEpfSVBIT05FX09TX0hBU19NVUxUSVRBU0tJTkdfU1VQUE9SVCkgJiYgXAorICAgIFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQhPTAKK3N0YXRpYyB2b2lkIGFjdGl2ZXNvY2tfZGVzdHJveV9pcGhvbmVfb3Nfc3RyZWFtKHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2spCit7CisgICAgaWYgKGFzb2NrLT5yZWFkU3RyZWFtKSB7CisJQ0ZSZWFkU3RyZWFtQ2xvc2UoYXNvY2stPnJlYWRTdHJlYW0pOworCUNGUmVsZWFzZShhc29jay0+cmVhZFN0cmVhbSk7CisJYXNvY2stPnJlYWRTdHJlYW0gPSBOVUxMOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYWN0aXZlc29ja19jcmVhdGVfaXBob25lX29zX3N0cmVhbShwal9hY3RpdmVzb2NrX3QgKmFzb2NrKQoreworICAgIGlmIChpb3NfYmdfc3VwcG9ydCAmJiBhc29jay0+Ymdfc2V0dGluZyAmJiBhc29jay0+c3RyZWFtX29yaWVudGVkKSB7CisJYWN0aXZlc29ja19kZXN0cm95X2lwaG9uZV9vc19zdHJlYW0oYXNvY2spOworCisJQ0ZTdHJlYW1DcmVhdGVQYWlyV2l0aFNvY2tldChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhc29jay0+c29jaywKKwkJCQkgICAgICZhc29jay0+cmVhZFN0cmVhbSwgTlVMTCk7CisKKwlpZiAoIWFzb2NrLT5yZWFkU3RyZWFtIHx8CisJICAgIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KGFzb2NrLT5yZWFkU3RyZWFtLAorCQkJCSAgICBrQ0ZTdHJlYW1OZXR3b3JrU2VydmljZVR5cGUsCisJCQkJICAgIGtDRlN0cmVhbU5ldHdvcmtTZXJ2aWNlVHlwZVZvSVApCisJICAgICE9IFRSVUUgfHwKKwkgICAgQ0ZSZWFkU3RyZWFtT3Blbihhc29jay0+cmVhZFN0cmVhbSkgIT0gVFJVRSkKKwl7CisJICAgIFBKX0xPRygyLCgiIiwgIkZhaWxlZCB0byBjb25maWd1cmUgVENQIHRyYW5zcG9ydCBmb3IgVm9JUCAiCisJCSAgICAgICJ1c2FnZS4gQmFja2dyb3VuZCBtb2RlIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4iKSk7CisJICAgIAorCSAgICBhY3RpdmVzb2NrX2Rlc3Ryb3lfaXBob25lX29zX3N0cmVhbShhc29jayk7CisJfQorICAgIH0KK30KKworCitQSl9ERUYodm9pZCkgcGpfYWN0aXZlc29ja19zZXRfaXBob25lX29zX2JnKHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2ssCisJCQkJCSAgICBpbnQgdmFsKQoreworICAgIGFzb2NrLT5iZ19zZXR0aW5nID0gdmFsOworICAgIGlmIChhc29jay0+Ymdfc2V0dGluZykKKwlhY3RpdmVzb2NrX2NyZWF0ZV9pcGhvbmVfb3Nfc3RyZWFtKGFzb2NrKTsKKyAgICBlbHNlCisJYWN0aXZlc29ja19kZXN0cm95X2lwaG9uZV9vc19zdHJlYW0oYXNvY2spOworfQorCitQSl9ERUYodm9pZCkgcGpfYWN0aXZlc29ja19lbmFibGVfaXBob25lX29zX2JnKHBqX2Jvb2xfdCB2YWwpCit7CisgICAgaW9zX2JnX3N1cHBvcnQgPSB2YWw7Cit9CisjZW5kaWYKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9hY3RpdmVzb2NrX2NyZWF0ZSggcGpfcG9vbF90ICpwb29sLAorCQkJCQkgIHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgIGludCBzb2NrX3R5cGUsCisJCQkJCSAgY29uc3QgcGpfYWN0aXZlc29ja19jZmcgKm9wdCwKKwkJCQkJICBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisJCQkJCSAgY29uc3QgcGpfYWN0aXZlc29ja19jYiAqY2IsCisJCQkJCSAgdm9pZCAqdXNlcl9kYXRhLAorCQkJCQkgIHBqX2FjdGl2ZXNvY2tfdCAqKnBfYXNvY2spCit7CisgICAgcGpfYWN0aXZlc29ja190ICphc29jazsKKyAgICBwal9pb3F1ZXVlX2NhbGxiYWNrIGlvcV9jYjsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBvb2wgJiYgaW9xdWV1ZSAmJiBjYiAmJiBwX2Fzb2NrLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc29jayE9MCAmJiBzb2NrIT1QSl9JTlZBTElEX1NPQ0tFVCwgUEpfRUlOVkFMKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNvY2tfdHlwZT09cGpfU09DS19TVFJFQU0oKSB8fAorCQkgICAgIHNvY2tfdHlwZT09cGpfU09DS19ER1JBTSgpLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oIW9wdCB8fCBvcHQtPmFzeW5jX2NudCA+PSAxLCBQSl9FSU5WQUwpOworCisgICAgYXNvY2sgPSBQSl9QT09MX1pBTExPQ19UKHBvb2wsIHBqX2FjdGl2ZXNvY2tfdCk7CisgICAgYXNvY2stPmlvcXVldWUgPSBpb3F1ZXVlOworICAgIGFzb2NrLT5zdHJlYW1fb3JpZW50ZWQgPSAoc29ja190eXBlID09IHBqX1NPQ0tfU1RSRUFNKCkpOworICAgIGFzb2NrLT5hc3luY19jb3VudCA9IChvcHQ/IG9wdC0+YXN5bmNfY250IDogMSk7CisgICAgYXNvY2stPndob2xlX2RhdGEgPSAob3B0PyBvcHQtPndob2xlX2RhdGEgOiAxKTsKKyAgICBhc29jay0+bWF4X2xvb3AgPSBQSl9BQ1RJVkVTT0NLX01BWF9MT09QOworICAgIGFzb2NrLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisgICAgcGpfbWVtY3B5KCZhc29jay0+Y2IsIGNiLCBzaXplb2YoKmNiKSk7CisKKyAgICBwal9iemVybygmaW9xX2NiLCBzaXplb2YoaW9xX2NiKSk7CisgICAgaW9xX2NiLm9uX3JlYWRfY29tcGxldGUgPSAmaW9xdWV1ZV9vbl9yZWFkX2NvbXBsZXRlOworICAgIGlvcV9jYi5vbl93cml0ZV9jb21wbGV0ZSA9ICZpb3F1ZXVlX29uX3dyaXRlX2NvbXBsZXRlOworI2lmIFBKX0hBU19UQ1AKKyAgICBpb3FfY2Iub25fY29ubmVjdF9jb21wbGV0ZSA9ICZpb3F1ZXVlX29uX2Nvbm5lY3RfY29tcGxldGU7CisgICAgaW9xX2NiLm9uX2FjY2VwdF9jb21wbGV0ZSA9ICZpb3F1ZXVlX29uX2FjY2VwdF9jb21wbGV0ZTsKKyNlbmRpZgorCisgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrMihwb29sLCBpb3F1ZXVlLCBzb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdD8gb3B0LT5ncnBfbG9jayA6IE5VTEwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNvY2ssICZpb3FfY2IsICZhc29jay0+a2V5KTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlwal9hY3RpdmVzb2NrX2Nsb3NlKGFzb2NrKTsKKwlyZXR1cm4gc3RhdHVzOworICAgIH0KKyAgICAKKyAgICBpZiAoYXNvY2stPndob2xlX2RhdGEpIHsKKwkvKiBNdXN0IGRpc2FibGUgY29uY3VycmVuY3kgb3RoZXJ3aXNlIHRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gKi8KKwlwal9pb3F1ZXVlX3NldF9jb25jdXJyZW5jeShhc29jay0+a2V5LCAwKTsKKyAgICB9IGVsc2UgaWYgKG9wdCAmJiBvcHQtPmNvbmN1cnJlbmN5ID49IDApIHsKKwlwal9pb3F1ZXVlX3NldF9jb25jdXJyZW5jeShhc29jay0+a2V5LCBvcHQtPmNvbmN1cnJlbmN5KTsKKyAgICB9CisKKyNpZiBkZWZpbmVkKFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQpICYmIFwKKyAgICBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIT0wCisgICAgYXNvY2stPnNvY2sgPSBzb2NrOworICAgIGFzb2NrLT5iZ19zZXR0aW5nID0gUEpfQUNUSVZFU09DS19UQ1BfSVBIT05FX09TX0JHOworI2VuZGlmCisKKyAgICAqcF9hc29jayA9IGFzb2NrOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19jcmVhdGVfdWRwKCBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgIGNvbnN0IHBqX3NvY2thZGRyICphZGRyLAorCQkJCQkgICAgICBjb25zdCBwal9hY3RpdmVzb2NrX2NmZyAqb3B0LAorCQkJCQkgICAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisJCQkJCSAgICAgIGNvbnN0IHBqX2FjdGl2ZXNvY2tfY2IgKmNiLAorCQkJCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCisJCQkJCSAgICAgIHBqX2FjdGl2ZXNvY2tfdCAqKnBfYXNvY2ssCisJCQkJCSAgICAgIHBqX3NvY2thZGRyICpib3VuZF9hZGRyKQoreworICAgIHBqX3NvY2tfdCBzb2NrX2ZkOworICAgIHBqX3NvY2thZGRyIGRlZmF1bHRfYWRkcjsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBpZiAoYWRkciA9PSBOVUxMKSB7CisJcGpfc29ja2FkZHJfaW5pdChwal9BRl9JTkVUKCksICZkZWZhdWx0X2FkZHIsIE5VTEwsIDApOworCWFkZHIgPSAmZGVmYXVsdF9hZGRyOworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX3NvY2tfc29ja2V0KGFkZHItPmFkZHIuc2FfZmFtaWx5LCBwal9TT0NLX0RHUkFNKCksIDAsIAorCQkJICAgICZzb2NrX2ZkKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlyZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX3NvY2tfYmluZChzb2NrX2ZkLCBhZGRyLCBwal9zb2NrYWRkcl9nZXRfbGVuKGFkZHIpKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlwal9zb2NrX2Nsb3NlKHNvY2tfZmQpOworCXJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfYWN0aXZlc29ja19jcmVhdGUocG9vbCwgc29ja19mZCwgcGpfU09DS19ER1JBTSgpLCBvcHQsCisJCQkJICBpb3F1ZXVlLCBjYiwgdXNlcl9kYXRhLCBwX2Fzb2NrKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlwal9zb2NrX2Nsb3NlKHNvY2tfZmQpOworCXJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgaWYgKGJvdW5kX2FkZHIpIHsKKwlpbnQgYWRkcl9sZW4gPSBzaXplb2YoKmJvdW5kX2FkZHIpOworCXN0YXR1cyA9IHBqX3NvY2tfZ2V0c29ja25hbWUoc29ja19mZCwgYm91bmRfYWRkciwgJmFkZHJfbGVuKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgcGpfYWN0aXZlc29ja19jbG9zZSgqcF9hc29jayk7CisJICAgIHJldHVybiBzdGF0dXM7CisJfQorICAgIH0KKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2FjdGl2ZXNvY2tfY2xvc2UocGpfYWN0aXZlc29ja190ICphc29jaykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFzb2NrLCBQSl9FSU5WQUwpOworICAgIGFzb2NrLT5zaHV0ZG93biA9IFNIVVRfUlggfCBTSFVUX1RYOworICAgIGlmIChhc29jay0+a2V5KSB7CisjaWYgZGVmaW5lZChQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUKSAmJiBcCisgICAgUEpfSVBIT05FX09TX0hBU19NVUxUSVRBU0tJTkdfU1VQUE9SVCE9MAorCWFjdGl2ZXNvY2tfZGVzdHJveV9pcGhvbmVfb3Nfc3RyZWFtKGFzb2NrKTsKKyNlbmRpZgkKKwkKKwlwal9pb3F1ZXVlX3VucmVnaXN0ZXIoYXNvY2stPmtleSk7CisJYXNvY2stPmtleSA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19zZXRfdXNlcl9kYXRhKCBwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkJIHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFzb2NrLCBQSl9FSU5WQUwpOworICAgIGFzb2NrLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworUEpfREVGKHZvaWQqKSBwal9hY3RpdmVzb2NrX2dldF91c2VyX2RhdGEocGpfYWN0aXZlc29ja190ICphc29jaykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFzb2NrLCBOVUxMKTsKKyAgICByZXR1cm4gYXNvY2stPnVzZXJfZGF0YTsKK30KKworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2FjdGl2ZXNvY2tfc3RhcnRfcmVhZChwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkgICAgIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICB1bnNpZ25lZCBidWZmX3NpemUsCisJCQkJCSAgICAgcGpfdWludDMyX3QgZmxhZ3MpCit7CisgICAgdm9pZCAqKnJlYWRidWY7CisgICAgdW5zaWduZWQgaTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oYXNvY2sgJiYgcG9vbCAmJiBidWZmX3NpemUsIFBKX0VJTlZBTCk7CisKKyAgICByZWFkYnVmID0gKHZvaWQqKikgcGpfcG9vbF9jYWxsb2MocG9vbCwgYXNvY2stPmFzeW5jX2NvdW50LCAKKwkJCQkgICAgICBzaXplb2Yodm9pZCopKTsKKworICAgIGZvciAoaT0wOyBpPGFzb2NrLT5hc3luY19jb3VudDsgKytpKSB7CisJcmVhZGJ1ZltpXSA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgYnVmZl9zaXplKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGpfYWN0aXZlc29ja19zdGFydF9yZWFkMihhc29jaywgcG9vbCwgYnVmZl9zaXplLCByZWFkYnVmLCBmbGFncyk7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9hY3RpdmVzb2NrX3N0YXJ0X3JlYWQyKCBwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkgICAgICAgcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICAgICAgdW5zaWduZWQgYnVmZl9zaXplLAorCQkJCQkgICAgICAgdm9pZCAqcmVhZGJ1ZltdLAorCQkJCQkgICAgICAgcGpfdWludDMyX3QgZmxhZ3MpCit7CisgICAgdW5zaWduZWQgaTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFzb2NrICYmIHBvb2wgJiYgYnVmZl9zaXplLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oYXNvY2stPnJlYWRfdHlwZSA9PSBUWVBFX05PTkUsIFBKX0VJTlZBTElET1ApOworICAgIFBKX0FTU0VSVF9SRVRVUk4oYXNvY2stPnJlYWRfb3AgPT0gTlVMTCwgUEpfRUlOVkFMSURPUCk7CisKKyAgICBhc29jay0+cmVhZF9vcCA9IChzdHJ1Y3QgcmVhZF9vcCopCisJCSAgICAgcGpfcG9vbF9jYWxsb2MocG9vbCwgYXNvY2stPmFzeW5jX2NvdW50LCAKKwkJCQkgICAgc2l6ZW9mKHN0cnVjdCByZWFkX29wKSk7CisgICAgYXNvY2stPnJlYWRfdHlwZSA9IFRZUEVfUkVDVjsKKyAgICBhc29jay0+cmVhZF9mbGFncyA9IGZsYWdzOworCisgICAgZm9yIChpPTA7IGk8YXNvY2stPmFzeW5jX2NvdW50OyArK2kpIHsKKwlzdHJ1Y3QgcmVhZF9vcCAqciA9ICZhc29jay0+cmVhZF9vcFtpXTsKKwlwal9zc2l6ZV90IHNpemVfdG9fcmVhZDsKKworCXItPnBrdCA9IChwal91aW50OF90KilyZWFkYnVmW2ldOworCXNpemVfdG9fcmVhZCA9IHItPm1heF9zaXplID0gYnVmZl9zaXplOworCisJc3RhdHVzID0gcGpfaW9xdWV1ZV9yZWN2KGFzb2NrLT5rZXksICZyLT5vcF9rZXksIHItPnBrdCwgJnNpemVfdG9fcmVhZCwKKwkJCQkgUEpfSU9RVUVVRV9BTFdBWVNfQVNZTkMgfCBmbGFncyk7CisJUEpfQVNTRVJUX1JFVFVSTihzdGF0dXMgIT0gUEpfU1VDQ0VTUywgUEpfRUJVRyk7CisKKwlpZiAoc3RhdHVzICE9IFBKX0VQRU5ESU5HKQorCSAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19zdGFydF9yZWN2ZnJvbShwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkJIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJCSB1bnNpZ25lZCBidWZmX3NpemUsCisJCQkJCQkgcGpfdWludDMyX3QgZmxhZ3MpCit7CisgICAgdm9pZCAqKnJlYWRidWY7CisgICAgdW5zaWduZWQgaTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oYXNvY2sgJiYgcG9vbCAmJiBidWZmX3NpemUsIFBKX0VJTlZBTCk7CisKKyAgICByZWFkYnVmID0gKHZvaWQqKikgcGpfcG9vbF9jYWxsb2MocG9vbCwgYXNvY2stPmFzeW5jX2NvdW50LCAKKwkJCQkgICAgICBzaXplb2Yodm9pZCopKTsKKworICAgIGZvciAoaT0wOyBpPGFzb2NrLT5hc3luY19jb3VudDsgKytpKSB7CisJcmVhZGJ1ZltpXSA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgYnVmZl9zaXplKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGpfYWN0aXZlc29ja19zdGFydF9yZWN2ZnJvbTIoYXNvY2ssIHBvb2wsIGJ1ZmZfc2l6ZSwgCisJCQkJCSByZWFkYnVmLCBmbGFncyk7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9hY3RpdmVzb2NrX3N0YXJ0X3JlY3Zmcm9tMiggcGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkJCSAgIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJCSAgIHVuc2lnbmVkIGJ1ZmZfc2l6ZSwKKwkJCQkJCSAgIHZvaWQgKnJlYWRidWZbXSwKKwkJCQkJCSAgIHBqX3VpbnQzMl90IGZsYWdzKQoreworICAgIHVuc2lnbmVkIGk7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhc29jayAmJiBwb29sICYmIGJ1ZmZfc2l6ZSwgUEpfRUlOVkFMKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFzb2NrLT5yZWFkX3R5cGUgPT0gVFlQRV9OT05FLCBQSl9FSU5WQUxJRE9QKTsKKworICAgIGFzb2NrLT5yZWFkX29wID0gKHN0cnVjdCByZWFkX29wKikKKwkJICAgICBwal9wb29sX2NhbGxvYyhwb29sLCBhc29jay0+YXN5bmNfY291bnQsIAorCQkJCSAgICBzaXplb2Yoc3RydWN0IHJlYWRfb3ApKTsKKyAgICBhc29jay0+cmVhZF90eXBlID0gVFlQRV9SRUNWX0ZST007CisgICAgYXNvY2stPnJlYWRfZmxhZ3MgPSBmbGFnczsKKworICAgIGZvciAoaT0wOyBpPGFzb2NrLT5hc3luY19jb3VudDsgKytpKSB7CisJc3RydWN0IHJlYWRfb3AgKnIgPSAmYXNvY2stPnJlYWRfb3BbaV07CisJcGpfc3NpemVfdCBzaXplX3RvX3JlYWQ7CisKKwlyLT5wa3QgPSAocGpfdWludDhfdCopIHJlYWRidWZbaV07CisJc2l6ZV90b19yZWFkID0gci0+bWF4X3NpemUgPSBidWZmX3NpemU7CisJci0+c3JjX2FkZHJfbGVuID0gc2l6ZW9mKHItPnNyY19hZGRyKTsKKworCXN0YXR1cyA9IHBqX2lvcXVldWVfcmVjdmZyb20oYXNvY2stPmtleSwgJnItPm9wX2tleSwgci0+cGt0LAorCQkJCSAgICAgJnNpemVfdG9fcmVhZCwgCisJCQkJICAgICBQSl9JT1FVRVVFX0FMV0FZU19BU1lOQyB8IGZsYWdzLAorCQkJCSAgICAgJnItPnNyY19hZGRyLCAmci0+c3JjX2FkZHJfbGVuKTsKKwlQSl9BU1NFUlRfUkVUVVJOKHN0YXR1cyAhPSBQSl9TVUNDRVNTLCBQSl9FQlVHKTsKKworCWlmIChzdGF0dXMgIT0gUEpfRVBFTkRJTkcpCisJICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworc3RhdGljIHZvaWQgaW9xdWV1ZV9vbl9yZWFkX2NvbXBsZXRlKHBqX2lvcXVldWVfa2V5X3QgKmtleSwgCisJCQkJICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksIAorCQkJCSAgICAgcGpfc3NpemVfdCBieXRlc19yZWFkKQoreworICAgIHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2s7CisgICAgc3RydWN0IHJlYWRfb3AgKnIgPSAoc3RydWN0IHJlYWRfb3AqKW9wX2tleTsKKyAgICB1bnNpZ25lZCBsb29wID0gMDsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBhc29jayA9IChwal9hY3RpdmVzb2NrX3QqKSBwal9pb3F1ZXVlX2dldF91c2VyX2RhdGEoa2V5KTsKKworICAgIC8qIElnbm9yZSBpZiB3ZSd2ZSBiZWVuIHNodXRkb3duICovCisgICAgaWYgKGFzb2NrLT5zaHV0ZG93biAmIFNIVVRfUlgpCisJcmV0dXJuOworCisgICAgZG8geworCXVuc2lnbmVkIGZsYWdzOworCisJaWYgKGJ5dGVzX3JlYWQgPiAwKSB7CisJICAgIC8qCisJICAgICAqIFdlJ3ZlIGdvdCBuZXcgZGF0YS4KKwkgICAgICovCisJICAgIHBqX3NpemVfdCByZW1haW5kZXI7CisJICAgIHBqX2Jvb2xfdCByZXQ7CisKKwkgICAgLyogQXBwZW5kIHRoaXMgbmV3IGRhdGEgdG8gZXhpc3RpbmcgZGF0YS4gSWYgc29ja2V0IGlzIHN0cmVhbSAKKwkgICAgICogb3JpZW50ZWQsIHVzZXIgbWlnaHQgaGF2ZSBsZWZ0IHNvbWUgZGF0YSBpbiB0aGUgYnVmZmVyLiAKKwkgICAgICogT3RoZXJ3aXNlIGlmIHNvY2tldCBpcyBkYXRhZ3JhbSB0aGVyZSB3aWxsIGJlIG5vdGhpbmcgaW4gCisJICAgICAqIGV4aXN0aW5nIHBhY2tldCBoZW5jZSB0aGUgcGFja2V0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBuZXcKKwkgICAgICogcGFja2V0LgorCSAgICAgKi8KKwkgICAgci0+c2l6ZSArPSBieXRlc19yZWFkOworCisJICAgIC8qIFNldCBkZWZhdWx0IHJlbWFpbmRlciB0byB6ZXJvICovCisJICAgIHJlbWFpbmRlciA9IDA7CisKKwkgICAgLyogQW5kIHJldHVybiB2YWx1ZSB0byBUUlVFICovCisJICAgIHJldCA9IFBKX1RSVUU7CisKKwkgICAgLyogTm90aWZ5IGNhbGxiYWNrICovCisJICAgIGlmIChhc29jay0+cmVhZF90eXBlID09IFRZUEVfUkVDViAmJiBhc29jay0+Y2Iub25fZGF0YV9yZWFkKSB7CisJCXJldCA9ICgqYXNvY2stPmNiLm9uX2RhdGFfcmVhZCkoYXNvY2ssIHItPnBrdCwgci0+c2l6ZSwKKwkJCQkJCVBKX1NVQ0NFU1MsICZyZW1haW5kZXIpOworCSAgICB9IGVsc2UgaWYgKGFzb2NrLT5yZWFkX3R5cGUgPT0gVFlQRV9SRUNWX0ZST00gJiYgCisJCSAgICAgICBhc29jay0+Y2Iub25fZGF0YV9yZWN2ZnJvbSkgCisJICAgIHsKKwkJcmV0ID0gKCphc29jay0+Y2Iub25fZGF0YV9yZWN2ZnJvbSkoYXNvY2ssIHItPnBrdCwgci0+c2l6ZSwKKwkJCQkJCSAgICAmci0+c3JjX2FkZHIsIAorCQkJCQkJICAgIHItPnNyY19hZGRyX2xlbiwKKwkJCQkJCSAgICBQSl9TVUNDRVNTKTsKKwkgICAgfQorCisJICAgIC8qIElmIGNhbGxiYWNrIHJldHVybnMgZmFsc2UsIHdlIGhhdmUgYmVlbiBkZXN0cm95ZWQhICovCisJICAgIGlmICghcmV0KQorCQlyZXR1cm47CisKKwkgICAgLyogT25seSBzdHJlYW0gb3JpZW50ZWQgc29ja2V0IG1heSBsZWF2ZSBkYXRhIGluIHRoZSBwYWNrZXQgKi8KKwkgICAgaWYgKGFzb2NrLT5zdHJlYW1fb3JpZW50ZWQpIHsKKwkJci0+c2l6ZSA9IHJlbWFpbmRlcjsKKwkgICAgfSBlbHNlIHsKKwkJci0+c2l6ZSA9IDA7CisJICAgIH0KKworCX0gZWxzZSBpZiAoYnl0ZXNfcmVhZCA8PSAwICYmCisJCSAgIC1ieXRlc19yZWFkICE9IFBKX1NUQVRVU19GUk9NX09TKE9TRVJSX0VXT1VMREJMT0NLKSAmJgorCQkgICAtYnl0ZXNfcmVhZCAhPSBQSl9TVEFUVVNfRlJPTV9PUyhPU0VSUl9FSU5QUk9HUkVTUykgJiYgCisJCSAgIChhc29jay0+c3RyZWFtX29yaWVudGVkIHx8CisJCSAgICAtYnl0ZXNfcmVhZCAhPSBQSl9TVEFUVVNfRlJPTV9PUyhPU0VSUl9FQ09OTlJFU0VUKSkpIAorCXsKKwkgICAgcGpfc2l6ZV90IHJlbWFpbmRlcjsKKwkgICAgcGpfYm9vbF90IHJldDsKKworCSAgICBpZiAoYnl0ZXNfcmVhZCA9PSAwKSB7CisJCS8qIEZvciBzdHJlYW0vY29ubmVjdGlvbiBvcmllbnRlZCBzb2NrZXQsIHRoaXMgbWVhbnMgdGhlIAorCQkgKiBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZC4gRm9yIGRhdGFncmFtIHNvY2tldHMsIGl0IG1lYW5zCisJCSAqIHdlJ3ZlIHJlY2VpdmVkIGRhdGFncmFtIHdpdGggemVybyBsZW5ndGguCisJCSAqLworCQlpZiAoYXNvY2stPnN0cmVhbV9vcmllbnRlZCkKKwkJICAgIHN0YXR1cyA9IFBKX0VFT0Y7CisJCWVsc2UKKwkJICAgIHN0YXR1cyA9IFBKX1NVQ0NFU1M7CisJICAgIH0gZWxzZSB7CisJCS8qIFRoaXMgbWVhbnMgd2UndmUgZ290IGFuIGVycm9yLiBJZiB0aGlzIGlzIHN0cmVhbS9jb25uZWN0aW9uCisJCSAqIG9yaWVudGVkLCBpdCBtZWFucyBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZC4gRm9yIGRhdGFncmFtCisJCSAqIHNvY2tldHMsIGl0IG1lYW5zIHdlJ3ZlIGdvdCBzb21lIGVycm9yIChlLmcuIEVXT1VMREJMT0NLKS4KKwkJICovCisJCXN0YXR1cyA9IChwal9zdGF0dXNfdCktYnl0ZXNfcmVhZDsKKwkgICAgfQorCisJICAgIC8qIFNldCBkZWZhdWx0IHJlbWFpbmRlciB0byB6ZXJvICovCisJICAgIHJlbWFpbmRlciA9IDA7CisKKwkgICAgLyogQW5kIHJldHVybiB2YWx1ZSB0byBUUlVFICovCisJICAgIHJldCA9IFBKX1RSVUU7CisKKwkgICAgLyogTm90aWZ5IGNhbGxiYWNrICovCisJICAgIGlmIChhc29jay0+cmVhZF90eXBlID09IFRZUEVfUkVDViAmJiBhc29jay0+Y2Iub25fZGF0YV9yZWFkKSB7CisJCS8qIEZvciBjb25uZWN0aW9uIG9yaWVudGVkIHNvY2tldCwgd2Ugc3RpbGwgbmVlZCB0byByZXBvcnQgCisJCSAqIHRoZSByZW1haW5kZXIgZGF0YSAoaWYgYW55KSB0byB0aGUgdXNlciB0byBsZXQgdXNlciBkbyAKKwkJICogcHJvY2Vzc2luZyB3aXRoIHRoZSByZW1haW5kZXIgZGF0YSBiZWZvcmUgaXQgY2xvc2VzIHRoZQorCQkgKiBjb25uZWN0aW9uLgorCQkgKiBJZiB0aGVyZSBpcyBubyByZW1haW5kZXIgZGF0YSwgc2V0IHRoZSBwYWNrZXQgdG8gTlVMTC4KKwkJICovCisKKwkJLyogU2hvdWxkbid0IHNldCB0aGUgcGFja2V0IHRvIE5VTEwsIGFzIHRoZXJlIG1heSBiZSBhY3RpdmUgCisJCSAqIHNvY2tldCB1c2VyLCBzdWNoIGFzIFNTTCBzb2NrZXQsIHRoYXQgbmVlZHMgdG8gaGF2ZSBhY2Nlc3MKKwkJICogdG8gdGhlIHJlYWQgYnVmZmVyIHBhY2tldC4KKwkJICovCisJCS8vcmV0ID0gKCphc29jay0+Y2Iub25fZGF0YV9yZWFkKShhc29jaywgKHItPnNpemU/IHItPnBrdDpOVUxMKSwKKwkJLy8JCQkJci0+c2l6ZSwgc3RhdHVzLCAmcmVtYWluZGVyKTsKKwkJcmV0ID0gKCphc29jay0+Y2Iub25fZGF0YV9yZWFkKShhc29jaywgci0+cGt0LCByLT5zaXplLAorCQkJCQkJc3RhdHVzLCAmcmVtYWluZGVyKTsKKworCSAgICB9IGVsc2UgaWYgKGFzb2NrLT5yZWFkX3R5cGUgPT0gVFlQRV9SRUNWX0ZST00gJiYgCisJCSAgICAgICBhc29jay0+Y2Iub25fZGF0YV9yZWN2ZnJvbSkgCisJICAgIHsKKwkJLyogVGhpcyB3b3VsZCBhbHdheXMgYmUgZGF0YWdyYW0gb3JpZW50ZWQgaGVuY2UgdGhlcmUncyAKKwkJICogbm90aGluZyBpbiB0aGUgcGFja2V0LiBXZSBjYW4ndCBiZSBzdXJlIGlmIHRoZXJlIHdpbGwgYmUKKwkJICogYW55dGhpbmcgdXNlZnVsIGluIHRoZSBzb3VyY2VfYWRkciwgc28ganVzdCBwdXQgTlVMTAorCQkgKiB0aGVyZSB0b28uCisJCSAqLworCQkvKiBJbiBzb21lIHNjZW5hcmlvcywgc3RhdHVzIG1heSBiZSBQSl9TVUNDRVNTLiBUaGUgdXBwZXIgCisJCSAqIGxheWVyIGFwcGxpY2F0aW9uIG1heSBub3QgZXhwZWN0IHRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQKKwkJICogd2l0aCBzdWNjZXNzZnVsIHN0YXR1cyBhbmQgTlVMTCBkYXRhLCBzbyBsZXRzIG5vdCBjYWxsIHRoZQorCQkgKiBjYWxsYmFjayBpZiB0aGUgc3RhdHVzIGlzIFBKX1NVQ0NFU1MuCisJCSAqLworCQlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgKSB7CisJCSAgICByZXQgPSAoKmFzb2NrLT5jYi5vbl9kYXRhX3JlY3Zmcm9tKShhc29jaywgTlVMTCwgMCwKKwkJCQkJCQlOVUxMLCAwLCBzdGF0dXMpOworCQl9CisJICAgIH0KKworCSAgICAvKiBJZiBjYWxsYmFjayByZXR1cm5zIGZhbHNlLCB3ZSBoYXZlIGJlZW4gZGVzdHJveWVkISAqLworCSAgICBpZiAoIXJldCkKKwkJcmV0dXJuOworCisJICAgIC8qIEFsc28gc3RvcCBmdXJ0aGVyIHJlYWQgaWYgd2UndmUgYmVlbiBzaHV0ZG93biAqLworCSAgICBpZiAoYXNvY2stPnNodXRkb3duICYgU0hVVF9SWCkKKwkJcmV0dXJuOworCisJICAgIC8qIE9ubHkgc3RyZWFtIG9yaWVudGVkIHNvY2tldCBtYXkgbGVhdmUgZGF0YSBpbiB0aGUgcGFja2V0ICovCisJICAgIGlmIChhc29jay0+c3RyZWFtX29yaWVudGVkKSB7CisJCXItPnNpemUgPSByZW1haW5kZXI7CisJICAgIH0gZWxzZSB7CisJCXItPnNpemUgPSAwOworCSAgICB9CisJfQorCisJLyogUmVhZCBuZXh0IGRhdGEuIFdlIGxpbWl0IG91cnNlbHZlcyB0byBwcm9jZXNzaW5nIG1heF9sb29wIGltbWVkaWF0ZQorCSAqIGRhdGEsIHNvIHdoZW4gdGhlIGxvb3AgY291bnRlciBoYXMgZXhjZWVkZWQgdGhpcyB2YWx1ZSwgZm9yY2UgdGhlCisJICogcmVhZCgpL3JlY3Zmcm9tKCkgdG8gcmV0dXJuIHBlbmRpbmcgb3BlcmF0aW9uIHRvIGFsbG93IHRoZSBwcm9ncmFtCisJICogdG8gZG8gb3RoZXIgam9icy4KKwkgKi8KKwlieXRlc19yZWFkID0gci0+bWF4X3NpemUgLSByLT5zaXplOworCWZsYWdzID0gYXNvY2stPnJlYWRfZmxhZ3M7CisJaWYgKCsrbG9vcCA+PSBhc29jay0+bWF4X2xvb3ApCisJICAgIGZsYWdzIHw9IFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DOworCisJaWYgKGFzb2NrLT5yZWFkX3R5cGUgPT0gVFlQRV9SRUNWKSB7CisJICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfcmVjdihrZXksIG9wX2tleSwgci0+cGt0ICsgci0+c2l6ZSwgCisJCQkJICAgICAmYnl0ZXNfcmVhZCwgZmxhZ3MpOworCX0gZWxzZSB7CisJICAgIHItPnNyY19hZGRyX2xlbiA9IHNpemVvZihyLT5zcmNfYWRkcik7CisJICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfcmVjdmZyb20oa2V5LCBvcF9rZXksIHItPnBrdCArIHItPnNpemUsCisJCQkJICAgICAgICAgJmJ5dGVzX3JlYWQsIGZsYWdzLAorCQkJCQkgJnItPnNyY19hZGRyLCAmci0+c3JjX2FkZHJfbGVuKTsKKwl9CisKKwlpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpIHsKKwkgICAgLyogSW1tZWRpYXRlIGRhdGEgKi8KKwkgICAgOworCX0gZWxzZSBpZiAoc3RhdHVzICE9IFBKX0VQRU5ESU5HICYmIHN0YXR1cyAhPSBQSl9FQ0FOQ0VMTEVEKSB7CisJICAgIC8qIEVycm9yICovCisJICAgIGJ5dGVzX3JlYWQgPSAtc3RhdHVzOworCX0gZWxzZSB7CisJICAgIGJyZWFrOworCX0KKyAgICB9IHdoaWxlICgxKTsKKworfQorCisKK3N0YXRpYyBwal9zdGF0dXNfdCBzZW5kX3JlbWFpbmluZyhwal9hY3RpdmVzb2NrX3QgKmFzb2NrLCAKKwkJCQkgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKnNlbmRfa2V5KQoreworICAgIHN0cnVjdCBzZW5kX2RhdGEgKnNkID0gKHN0cnVjdCBzZW5kX2RhdGEqKXNlbmRfa2V5LT5hY3RpdmVzb2NrX2RhdGE7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgZG8geworCXBqX3NzaXplX3Qgc2l6ZTsKKworCXNpemUgPSBzZC0+bGVuIC0gc2QtPnNlbnQ7CisJc3RhdHVzID0gcGpfaW9xdWV1ZV9zZW5kKGFzb2NrLT5rZXksIHNlbmRfa2V5LCAKKwkJCQkgc2QtPmRhdGErc2QtPnNlbnQsICZzaXplLCBzZC0+ZmxhZ3MpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICAvKiBQZW5kaW5nIG9yIGVycm9yICovCisJICAgIGJyZWFrOworCX0KKworCXNkLT5zZW50ICs9IHNpemU7CisJaWYgKHNkLT5zZW50ID09IHNkLT5sZW4pIHsKKwkgICAgLyogVGhlIHdob2xlIGRhdGEgaGFzIGJlZW4gc2VudC4gKi8KKwkgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisJfQorCisgICAgfSB3aGlsZSAoc2QtPnNlbnQgPCBzZC0+bGVuKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9hY3RpdmVzb2NrX3NlbmQoIHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2ssCisJCQkJCXBqX2lvcXVldWVfb3Bfa2V5X3QgKnNlbmRfa2V5LAorCQkJCQljb25zdCB2b2lkICpkYXRhLAorCQkJCQlwal9zc2l6ZV90ICpzaXplLAorCQkJCQl1bnNpZ25lZCBmbGFncykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFzb2NrICYmIHNlbmRfa2V5ICYmIGRhdGEgJiYgc2l6ZSwgUEpfRUlOVkFMKTsKKworICAgIGlmIChhc29jay0+c2h1dGRvd24gJiBTSFVUX1RYKQorCXJldHVybiBQSl9FSU5WQUxJRE9QOworCisgICAgc2VuZF9rZXktPmFjdGl2ZXNvY2tfZGF0YSA9IE5VTEw7CisKKyAgICBpZiAoYXNvY2stPndob2xlX2RhdGEpIHsKKwlwal9zc2l6ZV90IHdob2xlOworCXBqX3N0YXR1c190IHN0YXR1czsKKworCXdob2xlID0gKnNpemU7CisKKwlzdGF0dXMgPSBwal9pb3F1ZXVlX3NlbmQoYXNvY2stPmtleSwgc2VuZF9rZXksIGRhdGEsIHNpemUsIGZsYWdzKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgLyogUGVuZGluZyBvciBlcnJvciAqLworCSAgICByZXR1cm4gc3RhdHVzOworCX0KKworCWlmICgqc2l6ZSA9PSB3aG9sZSkgeworCSAgICAvKiBUaGUgd2hvbGUgZGF0YSBoYXMgYmVlbiBzZW50LiAqLworCSAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKwl9CisKKwkvKiBEYXRhIHdhcyBwYXJ0aWFsbHkgc2VudCAqLworCWFzb2NrLT5zZW5kX2RhdGEuZGF0YSA9IChwal91aW50OF90KilkYXRhOworCWFzb2NrLT5zZW5kX2RhdGEubGVuID0gd2hvbGU7CisJYXNvY2stPnNlbmRfZGF0YS5zZW50ID0gKnNpemU7CisJYXNvY2stPnNlbmRfZGF0YS5mbGFncyA9IGZsYWdzOworCXNlbmRfa2V5LT5hY3RpdmVzb2NrX2RhdGEgPSAmYXNvY2stPnNlbmRfZGF0YTsKKworCS8qIFRyeSBhZ2FpbiAqLworCXN0YXR1cyA9IHNlbmRfcmVtYWluaW5nKGFzb2NrLCBzZW5kX2tleSk7CisJaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKSB7CisJICAgICpzaXplID0gd2hvbGU7CisJfQorCXJldHVybiBzdGF0dXM7CisKKyAgICB9IGVsc2UgeworCXJldHVybiBwal9pb3F1ZXVlX3NlbmQoYXNvY2stPmtleSwgc2VuZF9rZXksIGRhdGEsIHNpemUsIGZsYWdzKTsKKyAgICB9Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9hY3RpdmVzb2NrX3NlbmR0byggcGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkJICBwal9pb3F1ZXVlX29wX2tleV90ICpzZW5kX2tleSwKKwkJCQkJICBjb25zdCB2b2lkICpkYXRhLAorCQkJCQkgIHBqX3NzaXplX3QgKnNpemUsCisJCQkJCSAgdW5zaWduZWQgZmxhZ3MsCisJCQkJCSAgY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJICBpbnQgYWRkcl9sZW4pCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihhc29jayAmJiBzZW5kX2tleSAmJiBkYXRhICYmIHNpemUgJiYgYWRkciAmJiBhZGRyX2xlbiwgCisJCSAgICAgUEpfRUlOVkFMKTsKKworICAgIGlmIChhc29jay0+c2h1dGRvd24gJiBTSFVUX1RYKQorCXJldHVybiBQSl9FSU5WQUxJRE9QOworCisgICAgcmV0dXJuIHBqX2lvcXVldWVfc2VuZHRvKGFzb2NrLT5rZXksIHNlbmRfa2V5LCBkYXRhLCBzaXplLCBmbGFncywKKwkJCSAgICAgYWRkciwgYWRkcl9sZW4pOworfQorCisKK3N0YXRpYyB2b2lkIGlvcXVldWVfb25fd3JpdGVfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKwkJCQkgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJICAgICAgcGpfc3NpemVfdCBieXRlc19zZW50KQoreworICAgIHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2s7CisKKyAgICBhc29jayA9IChwal9hY3RpdmVzb2NrX3QqKSBwal9pb3F1ZXVlX2dldF91c2VyX2RhdGEoa2V5KTsKKworICAgIC8qIElnbm9yZSBpZiB3ZSd2ZSBiZWVuIHNodXRkb3duLiBUaGlzIG1heSBjYXVzZSBkYXRhIHRvIGJlIHBhcnRpYWxseQorICAgICAqIHNlbnQgZXZlbiB3aGVuICd3aG9sZWRhdGEnIHdhcyByZXF1ZXN0ZWQgaWYgdGhlIE9TIG9ubHkgc2VudCBwYXJ0aWFsCisgICAgICogYnVmZmVyLgorICAgICAqLworICAgIGlmIChhc29jay0+c2h1dGRvd24gJiBTSFVUX1RYKQorCXJldHVybjsKKworICAgIGlmIChieXRlc19zZW50ID4gMCAmJiBvcF9rZXktPmFjdGl2ZXNvY2tfZGF0YSkgeworCS8qIHdob2xlX2RhdGEgaXMgcmVxdWVzdGVkLiBNYWtlIHN1cmUgd2Ugc2VuZCBhbGwgdGhlIGRhdGEgKi8KKwlzdHJ1Y3Qgc2VuZF9kYXRhICpzZCA9IChzdHJ1Y3Qgc2VuZF9kYXRhKilvcF9rZXktPmFjdGl2ZXNvY2tfZGF0YTsKKworCXNkLT5zZW50ICs9IGJ5dGVzX3NlbnQ7CisJaWYgKHNkLT5zZW50ID09IHNkLT5sZW4pIHsKKwkgICAgLyogYWxsIGhhcyBiZWVuIHNlbnQgKi8KKwkgICAgYnl0ZXNfc2VudCA9IHNkLT5zZW50OworCSAgICBvcF9rZXktPmFjdGl2ZXNvY2tfZGF0YSA9IE5VTEw7CisJfSBlbHNlIHsKKwkgICAgLyogc2VuZCByZW1haW5pbmcgZGF0YSAqLworCSAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKwkgICAgc3RhdHVzID0gc2VuZF9yZW1haW5pbmcoYXNvY2ssIG9wX2tleSk7CisJICAgIGlmIChzdGF0dXMgPT0gUEpfRVBFTkRJTkcpCisJCXJldHVybjsKKwkgICAgZWxzZSBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisJCWJ5dGVzX3NlbnQgPSBzZC0+c2VudDsKKwkgICAgZWxzZQorCQlieXRlc19zZW50ID0gLXN0YXR1czsKKworCSAgICBvcF9rZXktPmFjdGl2ZXNvY2tfZGF0YSA9IE5VTEw7CisJfQorICAgIH0gCisKKyAgICBpZiAoYXNvY2stPmNiLm9uX2RhdGFfc2VudCkgeworCXBqX2Jvb2xfdCByZXQ7CisKKwlyZXQgPSAoKmFzb2NrLT5jYi5vbl9kYXRhX3NlbnQpKGFzb2NrLCBvcF9rZXksIGJ5dGVzX3NlbnQpOworCisJLyogSWYgY2FsbGJhY2sgcmV0dXJucyBmYWxzZSwgd2UgaGF2ZSBiZWVuIGRlc3Ryb3llZCEgKi8KKwlpZiAoIXJldCkKKwkgICAgcmV0dXJuOworICAgIH0KK30KKworI2lmIFBKX0hBU19UQ1AKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19zdGFydF9hY2NlcHQocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkJICAgICAgIHBqX3Bvb2xfdCAqcG9vbCkKK3sKKyAgICB1bnNpZ25lZCBpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhc29jaywgUEpfRUlOVkFMKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFzb2NrLT5hY2NlcHRfb3A9PU5VTEwsIFBKX0VJTlZBTElET1ApOworCisgICAgLyogSWdub3JlIGlmIHdlJ3ZlIGJlZW4gc2h1dGRvd24gKi8KKyAgICBpZiAoYXNvY2stPnNodXRkb3duKQorCXJldHVybiBQSl9FSU5WQUxJRE9QOworCisgICAgYXNvY2stPmFjY2VwdF9vcCA9IChzdHJ1Y3QgYWNjZXB0X29wKikKKwkJICAgICAgIHBqX3Bvb2xfY2FsbG9jKHBvb2wsIGFzb2NrLT5hc3luY19jb3VudCwKKwkJCQkgICAgICBzaXplb2Yoc3RydWN0IGFjY2VwdF9vcCkpOworICAgIGZvciAoaT0wOyBpPGFzb2NrLT5hc3luY19jb3VudDsgKytpKSB7CisJc3RydWN0IGFjY2VwdF9vcCAqYSA9ICZhc29jay0+YWNjZXB0X29wW2ldOworCXBqX3N0YXR1c190IHN0YXR1czsKKworCWRvIHsKKwkgICAgYS0+bmV3X3NvY2sgPSBQSl9JTlZBTElEX1NPQ0tFVDsKKwkgICAgYS0+cmVtX2FkZHJfbGVuID0gc2l6ZW9mKGEtPnJlbV9hZGRyKTsKKworCSAgICBzdGF0dXMgPSBwal9pb3F1ZXVlX2FjY2VwdChhc29jay0+a2V5LCAmYS0+b3Bfa2V5LCAmYS0+bmV3X3NvY2ssCisJCQkJICAgICAgIE5VTEwsICZhLT5yZW1fYWRkciwgJmEtPnJlbV9hZGRyX2xlbik7CisJICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCQkvKiBXZSd2ZSBnb3QgaW1tZWRpYXRlIGNvbm5lY3Rpb24uIE5vdCBzdXJlIGlmIGl0J3MgYSBnb29kCisJCSAqIGlkZWEgdG8gY2FsbCB0aGUgY2FsbGJhY2sgbm93IChwcm9iYWJseSBhcHBsaWNhdGlvbiB3aWxsCisJCSAqIG5vdCBiZSBwcmVwYXJlZCB0byBwcm9jZXNzIGl0KSwgc28gbGV0cyBqdXN0IHNpbGVudGx5CisJCSAqIGNsb3NlIHRoZSBzb2NrZXQuCisJCSAqLworCQlwal9zb2NrX2Nsb3NlKGEtPm5ld19zb2NrKTsKKwkgICAgfQorCX0gd2hpbGUgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKTsKKworCWlmIChzdGF0dXMgIT0gUEpfRVBFTkRJTkcpIHsKKwkgICAgcmV0dXJuIHN0YXR1czsKKwl9CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworc3RhdGljIHZvaWQgaW9xdWV1ZV9vbl9hY2NlcHRfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKwkJCQkgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJCSAgICAgICBwal9zb2NrX3QgbmV3X3NvY2ssIAorCQkJCSAgICAgICBwal9zdGF0dXNfdCBzdGF0dXMpCit7CisgICAgcGpfYWN0aXZlc29ja190ICphc29jayA9IChwal9hY3RpdmVzb2NrX3QqKSBwal9pb3F1ZXVlX2dldF91c2VyX2RhdGEoa2V5KTsKKyAgICBzdHJ1Y3QgYWNjZXB0X29wICphY2NlcHRfb3AgPSAoc3RydWN0IGFjY2VwdF9vcCopIG9wX2tleTsKKworICAgIFBKX1VOVVNFRF9BUkcobmV3X3NvY2spOworCisgICAgLyogSWdub3JlIGlmIHdlJ3ZlIGJlZW4gc2h1dGRvd24gKi8KKyAgICBpZiAoYXNvY2stPnNodXRkb3duKQorCXJldHVybjsKKworICAgIGRvIHsKKwlpZiAoc3RhdHVzID09IGFzb2NrLT5sYXN0X2VyciAmJiBzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBhc29jay0+ZXJyX2NvdW50ZXIrKzsKKwkgICAgaWYgKGFzb2NrLT5lcnJfY291bnRlciA+PSBQSl9BQ1RJVkVTT0NLX01BWF9DT05TRUNVVElWRV9BQ0NFUFRfRVJST1IpIHsKKwkJUEpfTE9HKDMsICgiIiwgIlJlY2VpdmVkICVkIGNvbnNlY3V0aXZlIGVycm9yczogJWQgZm9yIHRoZSBhY2NlcHQoKSIKKwkJCSAgICAgICAiIG9wZXJhdGlvbiwgc3RvcHBpbmcgZnVydGhlciBpb3F1ZXVlIGFjY2VwdHMuIiwKKwkJCSAgICAgICBhc29jay0+ZXJyX2NvdW50ZXIsIGFzb2NrLT5sYXN0X2VycikpOworCQkKKwkJaWYgKChzdGF0dXMgPT0gUEpfU1RBVFVTX0ZST01fT1MoT1NFUlJfRVdPVUxEQkxPQ0spKSAmJiAKKwkJICAgIChhc29jay0+Y2Iub25fYWNjZXB0X2NvbXBsZXRlMikpIAorCQl7CisJCSAgICAoKmFzb2NrLT5jYi5vbl9hY2NlcHRfY29tcGxldGUyKShhc29jaywgCisJCQkJCQkgICAgIGFjY2VwdF9vcC0+bmV3X3NvY2ssCisJCQkJCQkgICAgICZhY2NlcHRfb3AtPnJlbV9hZGRyLAorCQkJCQkJICAgICBhY2NlcHRfb3AtPnJlbV9hZGRyX2xlbiwKKwkJCQkJCSAgICAgUEpfRVNPQ0tFVFNUT1ApOworCQl9CisJCXJldHVybjsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIGFzb2NrLT5lcnJfY291bnRlciA9IDA7CisJICAgIGFzb2NrLT5sYXN0X2VyciA9IHN0YXR1czsKKwl9CisKKwlpZiAoc3RhdHVzPT1QSl9TVUNDRVNTICYmIChhc29jay0+Y2Iub25fYWNjZXB0X2NvbXBsZXRlMiB8fCAKKwkJCQkgICBhc29jay0+Y2Iub25fYWNjZXB0X2NvbXBsZXRlKSkgeworCSAgICBwal9ib29sX3QgcmV0OworCisJICAgIC8qIE5vdGlmeSBjYWxsYmFjayAqLworCSAgICBpZiAoYXNvY2stPmNiLm9uX2FjY2VwdF9jb21wbGV0ZTIpIHsKKwkJcmV0ID0gKCphc29jay0+Y2Iub25fYWNjZXB0X2NvbXBsZXRlMikoYXNvY2ssIAorCQkJCQkJICAgICAgIGFjY2VwdF9vcC0+bmV3X3NvY2ssCisJCQkJCQkgICAgICAgJmFjY2VwdF9vcC0+cmVtX2FkZHIsCisJCQkJCQkgICAgICAgYWNjZXB0X29wLT5yZW1fYWRkcl9sZW4sCisJCQkJCQkgICAgICAgc3RhdHVzKTsKKwkgICAgfSBlbHNlIHsKKwkJcmV0ID0gKCphc29jay0+Y2Iub25fYWNjZXB0X2NvbXBsZXRlKShhc29jaywgCisJCQkJCQkgICAgICBhY2NlcHRfb3AtPm5ld19zb2NrLAorCQkJCQkJICAgICAgJmFjY2VwdF9vcC0+cmVtX2FkZHIsCisJCQkJCQkgICAgICBhY2NlcHRfb3AtPnJlbV9hZGRyX2xlbik7CSAgICAKKwkgICAgfQorCisJICAgIC8qIElmIGNhbGxiYWNrIHJldHVybnMgZmFsc2UsIHdlIGhhdmUgYmVlbiBkZXN0cm95ZWQhICovCisJICAgIGlmICghcmV0KQorCQlyZXR1cm47CisKKyNpZiBkZWZpbmVkKFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQpICYmIFwKKyAgICBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIT0wCisJICAgIGFjdGl2ZXNvY2tfY3JlYXRlX2lwaG9uZV9vc19zdHJlYW0oYXNvY2spOworI2VuZGlmCisJfSBlbHNlIGlmIChzdGF0dXM9PVBKX1NVQ0NFU1MpIHsKKwkgICAgLyogQXBwbGljYXRpb24gZG9lc24ndCBoYW5kbGUgdGhlIG5ldyBzb2NrZXQsIHdlIG5lZWQgdG8gCisJICAgICAqIGNsb3NlIGl0IHRvIGF2b2lkIHJlc291cmNlIGxlYWsuCisJICAgICAqLworCSAgICBwal9zb2NrX2Nsb3NlKGFjY2VwdF9vcC0+bmV3X3NvY2spOworCX0KKworCS8qIERvbid0IHN0YXJ0IGFub3RoZXIgYWNjZXB0KCkgaWYgd2UndmUgYmVlbiBzaHV0ZG93biAqLworCWlmIChhc29jay0+c2h1dGRvd24pCisJICAgIHJldHVybjsKKworCS8qIFByZXBhcmUgbmV4dCBhY2NlcHQoKSAqLworCWFjY2VwdF9vcC0+bmV3X3NvY2sgPSBQSl9JTlZBTElEX1NPQ0tFVDsKKwlhY2NlcHRfb3AtPnJlbV9hZGRyX2xlbiA9IHNpemVvZihhY2NlcHRfb3AtPnJlbV9hZGRyKTsKKworCXN0YXR1cyA9IHBqX2lvcXVldWVfYWNjZXB0KGFzb2NrLT5rZXksIG9wX2tleSwgJmFjY2VwdF9vcC0+bmV3X3NvY2ssCisJCQkJICAgTlVMTCwgJmFjY2VwdF9vcC0+cmVtX2FkZHIsIAorCQkJCSAgICZhY2NlcHRfb3AtPnJlbV9hZGRyX2xlbik7CisKKyAgICB9IHdoaWxlIChzdGF0dXMgIT0gUEpfRVBFTkRJTkcgJiYgc3RhdHVzICE9IFBKX0VDQU5DRUxMRUQpOworfQorCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfYWN0aXZlc29ja19zdGFydF9jb25uZWN0KCBwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkJIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJCSBjb25zdCBwal9zb2NrYWRkcl90ICpyZW1hZGRyLAorCQkJCQkJIGludCBhZGRyX2xlbikKK3sKKyAgICBQSl9VTlVTRURfQVJHKHBvb2wpOworCisgICAgaWYgKGFzb2NrLT5zaHV0ZG93bikKKwlyZXR1cm4gUEpfRUlOVkFMSURPUDsKKworICAgIHJldHVybiBwal9pb3F1ZXVlX2Nvbm5lY3QoYXNvY2stPmtleSwgcmVtYWRkciwgYWRkcl9sZW4pOworfQorCitzdGF0aWMgdm9pZCBpb3F1ZXVlX29uX2Nvbm5lY3RfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKwkJCQkJcGpfc3RhdHVzX3Qgc3RhdHVzKQoreworICAgIHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2sgPSAocGpfYWN0aXZlc29ja190KikgcGpfaW9xdWV1ZV9nZXRfdXNlcl9kYXRhKGtleSk7CisKKyAgICAvKiBJZ25vcmUgaWYgd2UndmUgYmVlbiBzaHV0ZG93biAqLworICAgIGlmIChhc29jay0+c2h1dGRvd24pCisJcmV0dXJuOworCisgICAgaWYgKGFzb2NrLT5jYi5vbl9jb25uZWN0X2NvbXBsZXRlKSB7CisJcGpfYm9vbF90IHJldDsKKworCXJldCA9ICgqYXNvY2stPmNiLm9uX2Nvbm5lY3RfY29tcGxldGUpKGFzb2NrLCBzdGF0dXMpOworCisJaWYgKCFyZXQpIHsKKwkgICAgLyogV2UndmUgYmVlbiBkZXN0cm95ZWQgKi8KKwkgICAgcmV0dXJuOworCX0KKwkKKyNpZiBkZWZpbmVkKFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQpICYmIFwKKyAgICBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIT0wCisJYWN0aXZlc29ja19jcmVhdGVfaXBob25lX29zX3N0cmVhbShhc29jayk7CisjZW5kaWYKKwkKKyAgICB9Cit9CisjZW5kaWYJLyogUEpfSEFTX1RDUCAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovYWRkcl9yZXNvbHZfbGludXhfa2VybmVsLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovYWRkcl9yZXNvbHZfbGludXhfa2VybmVsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZkZTY3MAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9hZGRyX3Jlc29sdl9saW51eF9rZXJuZWwuYwpAQCAtMCwwICsxLDI2IEBACisvKiAkSWQ6IGFkZHJfcmVzb2x2X2xpbnV4X2tlcm5lbC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovYWRkcl9yZXNvbHYuaD4KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRob3N0YnluYW1lKGNvbnN0IHBqX3N0cl90ICpob3N0bmFtZSwgcGpfaG9zdGVudCAqcGhlKQoreworICAgIHJldHVybiAtMTsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2FkZHJfcmVzb2x2X3NvY2suYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9hZGRyX3Jlc29sdl9zb2NrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmN2VkOAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9hZGRyX3Jlc29sdl9zb2NrLmMKQEAgLTAsMCArMSwyODIgQEAKKy8qICRJZDogYWRkcl9yZXNvbHZfc29jay5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovYWRkcl9yZXNvbHYuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL2lwX2hlbHBlci5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zb2NrZXQuaD4KKworI2lmIGRlZmluZWQoUEpfR0VUQUREUklORk9fVVNFX0NGSE9TVCkgJiYgUEpfR0VUQUREUklORk9fVVNFX0NGSE9TVCE9MAorIyAgIGluY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+CisjICAgaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2VuZGlmCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0aG9zdGJ5bmFtZShjb25zdCBwal9zdHJfdCAqaG9zdG5hbWUsIHBqX2hvc3RlbnQgKnBoZSkKK3sKKyAgICBzdHJ1Y3QgaG9zdGVudCAqaGU7CisgICAgY2hhciBjb3B5W1BKX01BWF9IT1NUTkFNRV07CisKKyAgICBwal9hc3NlcnQoaG9zdG5hbWUgJiYgaG9zdG5hbWUgLT5zbGVuIDwgUEpfTUFYX0hPU1ROQU1FKTsKKyAgICAKKyAgICBpZiAoaG9zdG5hbWUtPnNsZW4gPj0gUEpfTUFYX0hPU1ROQU1FKQorCXJldHVybiBQSl9FTkFNRVRPT0xPTkc7CisKKyAgICBwal9tZW1jcHkoY29weSwgaG9zdG5hbWUtPnB0ciwgaG9zdG5hbWUtPnNsZW4pOworICAgIGNvcHlbIGhvc3RuYW1lLT5zbGVuIF0gPSAnXDAnOworCisgICAgaGUgPSBnZXRob3N0YnluYW1lKGNvcHkpOworICAgIGlmICghaGUpIHsKKwlyZXR1cm4gUEpfRVJFU09MVkU7CisJLyogRE8gTk9UIHVzZSBwal9nZXRfbmV0b3NfZXJyb3IoKSBzaW5jZSBob3N0IHJlc29sdXRpb24gZXJyb3IKKwkgKiBpcyByZXBvcnRlZCBpbiBoX2Vycm5vIGluc3RlYWQgb2YgZXJybm8hCisJcmV0dXJuIHBqX2dldF9uZXRvc19lcnJvcigpOworCSAqLworICAgIH0KKworICAgIHBoZS0+aF9uYW1lID0gaGUtPmhfbmFtZTsKKyAgICBwaGUtPmhfYWxpYXNlcyA9IGhlLT5oX2FsaWFzZXM7CisgICAgcGhlLT5oX2FkZHJ0eXBlID0gaGUtPmhfYWRkcnR5cGU7CisgICAgcGhlLT5oX2xlbmd0aCA9IGhlLT5oX2xlbmd0aDsKKyAgICBwaGUtPmhfYWRkcl9saXN0ID0gaGUtPmhfYWRkcl9saXN0OworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qIFJlc29sdmUgSVB2NC9JUHY2IGFkZHJlc3MgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0YWRkcmluZm8oaW50IGFmLCBjb25zdCBwal9zdHJfdCAqbm9kZW5hbWUsCisJCQkJICAgdW5zaWduZWQgKmNvdW50LCBwal9hZGRyaW5mbyBhaVtdKQoreworI2lmIGRlZmluZWQoUEpfU09DS19IQVNfR0VUQUREUklORk8pICYmIFBKX1NPQ0tfSEFTX0dFVEFERFJJTkZPIT0wCisgICAgY2hhciBub2RlY29weVtQSl9NQVhfSE9TVE5BTUVdOworICAgIHBqX2Jvb2xfdCBoYXNfYWRkciA9IFBKX0ZBTFNFOworICAgIHVuc2lnbmVkIGk7CisjaWYgZGVmaW5lZChQSl9HRVRBRERSSU5GT19VU0VfQ0ZIT1NUKSAmJiBQSl9HRVRBRERSSU5GT19VU0VfQ0ZIT1NUIT0wCisgICAgQ0ZTdHJpbmdSZWYgaG9zdG5hbWU7CisgICAgQ0ZIb3N0UmVmIGhvc3RSZWY7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzID0gUEpfU1VDQ0VTUzsKKyNlbHNlCisgICAgaW50IHJjOworICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50LCAqcmVzLCAqb3JpZ19yZXM7CisjZW5kaWYKKworICAgIFBKX0FTU0VSVF9SRVRVUk4obm9kZW5hbWUgJiYgY291bnQgJiYgKmNvdW50ICYmIGFpLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4obm9kZW5hbWUtPnB0ciAmJiBub2RlbmFtZS0+c2xlbiwgUEpfRUlOVkFMKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFmPT1QSl9BRl9JTkVUIHx8IGFmPT1QSl9BRl9JTkVUNiB8fAorCQkgICAgIGFmPT1QSl9BRl9VTlNQRUMsIFBKX0VJTlZBTCk7CisKKyAgICAvKiBDaGVjayBpZiBub2RlbmFtZSBpcyBJUCBhZGRyZXNzICovCisgICAgcGpfYnplcm8oJmFpWzBdLCBzaXplb2YoYWlbMF0pKTsKKyAgICBpZiAoKGFmPT1QSl9BRl9JTkVUIHx8IGFmPT1QSl9BRl9VTlNQRUMpICYmCisJcGpfaW5ldF9wdG9uKFBKX0FGX0lORVQsIG5vZGVuYW1lLAorCQkgICAgICZhaVswXS5haV9hZGRyLmlwdjQuc2luX2FkZHIpID09IFBKX1NVQ0NFU1MpCisgICAgeworCWFmID0gUEpfQUZfSU5FVDsKKwloYXNfYWRkciA9IFBKX1RSVUU7CisgICAgfSBlbHNlIGlmICgoYWY9PVBKX0FGX0lORVQ2IHx8IGFmPT1QSl9BRl9VTlNQRUMpICYmCisJICAgICAgIHBqX2luZXRfcHRvbihQSl9BRl9JTkVUNiwgbm9kZW5hbWUsCisJICAgICAgICAgICAgICAgICAgICAmYWlbMF0uYWlfYWRkci5pcHY2LnNpbjZfYWRkcikgPT0gUEpfU1VDQ0VTUykKKyAgICB7CisJYWYgPSBQSl9BRl9JTkVUNjsKKwloYXNfYWRkciA9IFBKX1RSVUU7CisgICAgfQorCisgICAgaWYgKGhhc19hZGRyKSB7CisJcGpfc3RyX3QgdG1wOworCisJdG1wLnB0ciA9IGFpWzBdLmFpX2Nhbm9ubmFtZTsKKwlwal9zdHJuY3B5X3dpdGhfbnVsbCgmdG1wLCBub2RlbmFtZSwgUEpfTUFYX0hPU1ROQU1FKTsKKwlhaVswXS5haV9hZGRyLmFkZHIuc2FfZmFtaWx5ID0gKHBqX3VpbnQxNl90KWFmOworCSpjb3VudCA9IDE7CisKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9CisKKyAgICAvKiBDb3B5IG5vZGUgbmFtZSB0byBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLiAqLworICAgIGlmIChub2RlbmFtZS0+c2xlbiA+PSBQSl9NQVhfSE9TVE5BTUUpCisJcmV0dXJuIFBKX0VOQU1FVE9PTE9ORzsKKyAgICBwal9tZW1jcHkobm9kZWNvcHksIG5vZGVuYW1lLT5wdHIsIG5vZGVuYW1lLT5zbGVuKTsKKyAgICBub2RlY29weVtub2RlbmFtZS0+c2xlbl0gPSAnXDAnOworCisjaWYgZGVmaW5lZChQSl9HRVRBRERSSU5GT19VU0VfQ0ZIT1NUKSAmJiBQSl9HRVRBRERSSU5GT19VU0VfQ0ZIT1NUIT0wCisgICAgaG9zdG5hbWUgPSAgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBub2RlY29weSwKKwkJCQkJCWtDRlN0cmluZ0VuY29kaW5nQVNDSUksCisJCQkJCQlrQ0ZBbGxvY2F0b3JOdWxsKTsKKyAgICBob3N0UmVmID0gQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaG9zdG5hbWUpOworICAgIGlmIChDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGhvc3RSZWYsIGtDRkhvc3RBZGRyZXNzZXMsIG5pbCkpIHsKKwlDRkFycmF5UmVmIGFkZHJSZWYgPSBDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsIG5pbCk7CisJaSA9IDA7CisJaWYgKGFkZHJSZWYgIT0gbmlsKSB7CisJICAgIENGSW5kZXggaWR4LCBuYWRkcjsKKwkgICAgCisJICAgIG5hZGRyID0gQ0ZBcnJheUdldENvdW50KGFkZHJSZWYpOworCSAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IG5hZGRyICYmIGkgPCAqY291bnQ7IGlkeCsrKSB7CisJCXN0cnVjdCBzb2NrYWRkciAqYWRkcjsKKwkJCisJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopCisJCSAgICAgICBDRkRhdGFHZXRCeXRlUHRyKENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYWRkclJlZiwgaWR4KSk7CisJCS8qIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4uICovCisJCXBqX2Fzc2VydChhZGRyKTsKKwkJCisJCS8qIElnbm9yZSB1bndhbnRlZCBhZGRyZXNzIGZhbWlsaWVzICovCisJCWlmIChhZiE9UEpfQUZfVU5TUEVDICYmIGFkZHItPnNhX2ZhbWlseSAhPSBhZikKKwkJICAgIGNvbnRpbnVlOworCisJCS8qIFN0b3JlIGNhbm9uaWNhbCBuYW1lICovCisJCXBqX2Fuc2lfc3RyY3B5KGFpW2ldLmFpX2Nhbm9ubmFtZSwgbm9kZWNvcHkpOworCQkKKwkJLyogU3RvcmUgYWRkcmVzcyAqLworCQlQSl9BU1NFUlRfT05fRkFJTChzaXplb2YoKmFkZHIpIDw9IHNpemVvZihwal9zb2NrYWRkciksCisJCQkJICBjb250aW51ZSk7CisJCXBqX21lbWNweSgmYWlbaV0uYWlfYWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSk7CisJCVBKX1NPQ0tBRERSX1JFU0VUX0xFTigmYWlbaV0uYWlfYWRkcik7CisJCQorCQlpKys7CisJICAgIH0KKwl9CisJCisJKmNvdW50ID0gaTsKKyAgICB9IGVsc2UgeworCXN0YXR1cyA9IFBKX0VSRVNPTFZFOworICAgIH0KKyAgICAKKyAgICBDRlJlbGVhc2UoaG9zdFJlZik7CisgICAgQ0ZSZWxlYXNlKGhvc3RuYW1lKTsKKyAgICAKKyAgICByZXR1cm4gc3RhdHVzOworI2Vsc2UKKyAgICAvKiBDYWxsIGdldGFkZHJpbmZvKCkgKi8KKyAgICBwal9iemVybygmaGludCwgc2l6ZW9mKGhpbnQpKTsKKyAgICBoaW50LmFpX2ZhbWlseSA9IGFmOworCisgICAgcmMgPSBnZXRhZGRyaW5mbyhub2RlY29weSwgTlVMTCwgJmhpbnQsICZyZXMpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiBQSl9FUkVTT0xWRTsKKworICAgIG9yaWdfcmVzID0gcmVzOworCisgICAgLyogRW51bWVyYXRlIGVhY2ggaXRlbSBpbiB0aGUgcmVzdWx0ICovCisgICAgZm9yIChpPTA7IGk8KmNvdW50ICYmIHJlczsgcmVzPXJlcy0+YWlfbmV4dCkgeworCS8qIElnbm9yZSB1bndhbnRlZCBhZGRyZXNzIGZhbWlsaWVzICovCisJaWYgKGFmIT1QSl9BRl9VTlNQRUMgJiYgcmVzLT5haV9mYW1pbHkgIT0gYWYpCisJICAgIGNvbnRpbnVlOworCisJLyogU3RvcmUgY2Fub25pY2FsIG5hbWUgKHBvc3NpYmx5IHRydW5jYXRpbmcgdGhlIG5hbWUpICovCisJaWYgKHJlcy0+YWlfY2Fub25uYW1lKSB7CisJICAgIHBqX2Fuc2lfc3RybmNweShhaVtpXS5haV9jYW5vbm5hbWUsIHJlcy0+YWlfY2Fub25uYW1lLAorCQkJICAgIHNpemVvZihhaVtpXS5haV9jYW5vbm5hbWUpKTsKKwkgICAgYWlbaV0uYWlfY2Fub25uYW1lW3NpemVvZihhaVtpXS5haV9jYW5vbm5hbWUpLTFdID0gJ1wwJzsKKwl9IGVsc2UgeworCSAgICBwal9hbnNpX3N0cmNweShhaVtpXS5haV9jYW5vbm5hbWUsIG5vZGVjb3B5KTsKKwl9CisKKwkvKiBTdG9yZSBhZGRyZXNzICovCisJUEpfQVNTRVJUX09OX0ZBSUwocmVzLT5haV9hZGRybGVuIDw9IHNpemVvZihwal9zb2NrYWRkciksIGNvbnRpbnVlKTsKKwlwal9tZW1jcHkoJmFpW2ldLmFpX2FkZHIsIHJlcy0+YWlfYWRkciwgcmVzLT5haV9hZGRybGVuKTsKKwlQSl9TT0NLQUREUl9SRVNFVF9MRU4oJmFpW2ldLmFpX2FkZHIpOworCisJLyogTmV4dCBzbG90ICovCisJKytpOworICAgIH0KKworICAgICpjb3VudCA9IGk7CisKKyAgICBmcmVlYWRkcmluZm8ob3JpZ19yZXMpOworCisgICAgLyogRG9uZSAqLworICAgIHJldHVybiBQSl9TVUNDRVNTOworI2VuZGlmCisKKyNlbHNlCS8qIFBKX1NPQ0tfSEFTX0dFVEFERFJJTkZPICovCisgICAgcGpfYm9vbF90IGhhc19hZGRyID0gUEpfRkFMU0U7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGNvdW50ICYmICpjb3VudCwgUEpfRUlOVkFMKTsKKworICAgIC8qIENoZWNrIGlmIG5vZGVuYW1lIGlzIElQIGFkZHJlc3MgKi8KKyAgICBwal9iemVybygmYWlbMF0sIHNpemVvZihhaVswXSkpOworICAgIGlmICgoYWY9PVBKX0FGX0lORVQgfHwgYWY9PVBKX0FGX1VOU1BFQykgJiYKKwlwal9pbmV0X3B0b24oUEpfQUZfSU5FVCwgbm9kZW5hbWUsCisJCSAgICAgJmFpWzBdLmFpX2FkZHIuaXB2NC5zaW5fYWRkcikgPT0gUEpfU1VDQ0VTUykKKyAgICB7CisJYWYgPSBQSl9BRl9JTkVUOworCWhhc19hZGRyID0gUEpfVFJVRTsKKyAgICB9CisgICAgZWxzZSBpZiAoKGFmPT1QSl9BRl9JTkVUNiB8fCBhZj09UEpfQUZfVU5TUEVDKSAmJgorCSAgICAgcGpfaW5ldF9wdG9uKFBKX0FGX0lORVQ2LCBub2RlbmFtZSwKKwkJCSAgJmFpWzBdLmFpX2FkZHIuaXB2Ni5zaW42X2FkZHIpID09IFBKX1NVQ0NFU1MpCisgICAgeworCWFmID0gUEpfQUZfSU5FVDY7CisJaGFzX2FkZHIgPSBQSl9UUlVFOworICAgIH0KKworICAgIGlmIChoYXNfYWRkcikgeworCXBqX3N0cl90IHRtcDsKKworCXRtcC5wdHIgPSBhaVswXS5haV9jYW5vbm5hbWU7CisJcGpfc3RybmNweV93aXRoX251bGwoJnRtcCwgbm9kZW5hbWUsIFBKX01BWF9IT1NUTkFNRSk7CisJYWlbMF0uYWlfYWRkci5hZGRyLnNhX2ZhbWlseSA9IChwal91aW50MTZfdClhZjsKKwkqY291bnQgPSAxOworCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfQorCisgICAgaWYgKGFmID09IFBKX0FGX0lORVQgfHwgYWYgPT0gUEpfQUZfVU5TUEVDKSB7CisJcGpfaG9zdGVudCBoZTsKKwl1bnNpZ25lZCBpLCBtYXhfY291bnQ7CisJcGpfc3RhdHVzX3Qgc3RhdHVzOworCQorCS8qIFZDNiBjb21wbGFpbnMgdGhhdCAiaGUiIGlzIHVuaW5pdGlhbGl6ZWQgKi8KKwkjaWZkZWYgX01TQ19WRVIKKwlwal9iemVybygmaGUsIHNpemVvZihoZSkpOworCSNlbmRpZgorCisJc3RhdHVzID0gcGpfZ2V0aG9zdGJ5bmFtZShub2RlbmFtZSwgJmhlKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJICAgIHJldHVybiBzdGF0dXM7CisKKwltYXhfY291bnQgPSAqY291bnQ7CisJKmNvdW50ID0gMDsKKworCXBqX2J6ZXJvKGFpLCBtYXhfY291bnQgKiBzaXplb2YocGpfYWRkcmluZm8pKTsKKworCWZvciAoaT0wOyBoZS5oX2FkZHJfbGlzdFtpXSAmJiAqY291bnQ8bWF4X2NvdW50OyArK2kpIHsKKwkgICAgcGpfYW5zaV9zdHJuY3B5KGFpWypjb3VudF0uYWlfY2Fub25uYW1lLCBoZS5oX25hbWUsCisJCQkgICAgc2l6ZW9mKGFpWypjb3VudF0uYWlfY2Fub25uYW1lKSk7CisJICAgIGFpWypjb3VudF0uYWlfY2Fub25uYW1lW3NpemVvZihhaVsqY291bnRdLmFpX2Nhbm9ubmFtZSktMV0gPSAnXDAnOworCisJICAgIGFpWypjb3VudF0uYWlfYWRkci5pcHY0LnNpbl9mYW1pbHkgPSBQSl9BRl9JTkVUOworCSAgICBwal9tZW1jcHkoJmFpWypjb3VudF0uYWlfYWRkci5pcHY0LnNpbl9hZGRyLAorCQkgICAgICBoZS5oX2FkZHJfbGlzdFtpXSwgaGUuaF9sZW5ndGgpOworCSAgICBQSl9TT0NLQUREUl9SRVNFVF9MRU4oJmFpWypjb3VudF0uYWlfYWRkcik7CisKKwkgICAgKCpjb3VudCkrKzsKKwl9CisKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKworICAgIH0gZWxzZSB7CisJLyogSVB2NiBpcyBub3Qgc3VwcG9ydGVkICovCisJKmNvdW50ID0gMDsKKworCXJldHVybiBQSl9FSVBWNk5PVFNVUDsKKyAgICB9CisjZW5kaWYJLyogUEpfU09DS19IQVNfR0VUQUREUklORk8gKi8KK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2FkZHJfcmVzb2x2X3N5bWJpYW4uY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2FkZHJfcmVzb2x2X3N5bWJpYW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMjkwNTcKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovYWRkcl9yZXNvbHZfc3ltYmlhbi5jcHAKQEAgLTAsMCArMSwyMDEgQEAKKy8qICRJZDogYWRkcl9yZXNvbHZfc3ltYmlhbi5jcHAgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9hZGRyX3Jlc29sdi5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovaXBfaGVscGVyLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovc29jay5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL3VuaWNvZGUuaD4KKworI2luY2x1ZGUgIm9zX3N5bWJpYW4uaCIKKyAKKyNkZWZpbmUgVEhJU19GSUxFIAkiYWRkcl9yZXNvbHZfc3ltYmlhbi5jcHAiCisjZGVmaW5lIFRSQUNFX01FCTAKKworCisvLyBQSkxJQiBBUEk6IHJlc29sdmUgaG9zdG5hbWUKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0aG9zdGJ5bmFtZShjb25zdCBwal9zdHJfdCAqbmFtZSwgcGpfaG9zdGVudCAqaGUpCit7CisgICAgc3RhdGljIHBqX2FkZHJpbmZvIGFpOworICAgIHN0YXRpYyBjaGFyICphbGlhc2VzWzJdOworICAgIHN0YXRpYyBjaGFyICphZGRybGlzdFsyXTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IDE7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworICAgIAorICAgIHN0YXR1cyA9IHBqX2dldGFkZHJpbmZvKFBKX0FGX0lORVQsIG5hbWUsICZjb3VudCwgJmFpKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisgICAgCXJldHVybiBzdGF0dXM7CisgICAgCisgICAgYWxpYXNlc1swXSA9IGFpLmFpX2Nhbm9ubmFtZTsKKyAgICBhbGlhc2VzWzFdID0gTlVMTDsKKyAgICAKKyAgICBhZGRybGlzdFswXSA9IChjaGFyKikgJmFpLmFpX2FkZHIuaXB2NC5zaW5fYWRkcjsKKyAgICBhZGRybGlzdFsxXSA9IE5VTEw7CisgICAgCisgICAgcGpfYnplcm8oaGUsIHNpemVvZigqaGUpKTsKKyAgICBoZS0+aF9uYW1lID0gYWxpYXNlc1swXTsKKyAgICBoZS0+aF9hbGlhc2VzID0gYWxpYXNlczsKKyAgICBoZS0+aF9hZGRydHlwZSA9IFBKX0FGX0lORVQ7CisgICAgaGUtPmhfbGVuZ3RoID0gNDsKKyAgICBoZS0+aF9hZGRyX2xpc3QgPSBhZGRybGlzdDsKKyAgICAKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvLyBSZXNvbHZlIGZvciBzcGVjaWZpYyBhZGRyZXNzIGZhbWlseQorc3RhdGljIHBqX3N0YXR1c190IGdldGFkZHJpbmZvX2J5X2FmKGludCBhZiwgY29uc3QgcGpfc3RyX3QgKm5hbWUsCisJCQkJICAgICB1bnNpZ25lZCAqY291bnQsIHBqX2FkZHJpbmZvIGFpW10pIAoreworICAgIHVuc2lnbmVkIGk7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworICAgIAorICAgIFBKX0FTU0VSVF9SRVRVUk4obmFtZSAmJiBjb3VudCAmJiBhaSwgUEpfRUlOVkFMKTsKKworI2lmICFkZWZpbmVkKFBKX0hBU19JUFY2KSB8fCAhUEpfSEFTX0lQVjYKKyAgICBpZiAoYWYgPT0gUEpfQUZfSU5FVDYpCisgICAgCXJldHVybiBQSl9FSVBWNk5PVFNVUDsKKyNlbmRpZgorCQorICAgIC8vIFJldHVybiBmYWlsdXJlIGlmIGFjY2VzcyBwb2ludCBpcyBtYXJrZWQgYXMgZG93biBieSBhcHAuCisgICAgUEpfU1lNQklBTl9DSEVDS19DT05ORUNUSU9OKCk7CisKKyAgICAvLyBHZXQgcmVzb2x2ZXIgZm9yIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBmYW1pbHkKKyAgICBSSG9zdFJlc29sdmVyICZyZXN2ID0gUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPkdldFJlc29sdmVyKGFmKTsKKworICAgIC8vIENvbnZlcnQgbmFtZSB0byBVbmljb2RlCisgICAgd2NoYXJfdCBuYW1lMTZbUEpfTUFYX0hPU1ROQU1FXTsKKyAgICBwal9hbnNpX3RvX3VuaWNvZGUobmFtZS0+cHRyLCBuYW1lLT5zbGVuLCBuYW1lMTYsIFBKX0FSUkFZX1NJWkUobmFtZTE2KSk7CisgICAgVFB0ckMxNiBkYXRhKChjb25zdCBUVWludDE2KiluYW1lMTYpOworCisgICAgLy8gUmVzb2x2ZSEKKyAgICBUTmFtZUVudHJ5IG5hbWVFbnRyeTsKKyAgICBUUmVxdWVzdFN0YXR1cyByZXFTdGF0dXM7CisgICAgCisgICAgcmVzdi5HZXRCeU5hbWUoZGF0YSwgbmFtZUVudHJ5LCByZXFTdGF0dXMpOworICAgIFVzZXI6OldhaXRGb3JSZXF1ZXN0KHJlcVN0YXR1cyk7CisgICAgCisgICAgLy8gSXRlcmF0ZSBlYWNoIHJlc3VsdAorICAgIGkgPSAwOworICAgIHdoaWxlIChyZXFTdGF0dXMgPT0gS0Vyck5vbmUgJiYgaSA8ICpjb3VudCkgeworICAgIAkKKwkJLy8gR2V0IHRoZSByZXNvbHZlZCBUSW5ldEFkZHIKKwkJVEluZXRBZGRyIGluZXRBZGRyKG5hbWVFbnRyeSgpLmlBZGRyKTsKKwkJaW50IGFkZHJsZW47CisKKyNpZiBUUkFDRV9NRQorCQlpZiAoMSkgeworCQkJcGpfc29ja2FkZHIgYTsKKwkJCWNoYXIgaXBhZGRyW1BKX0lORVQ2X0FERFJTVFJMRU4rMl07CisJCQlpbnQgbmFtZWxlbjsKKwkJCQorCQkJbmFtZWxlbiA9IHNpemVvZihwal9zb2NrYWRkcik7CisJCQlpZiAoUGpTeW1iaWFuT1M6OkFkZHIycGooaW5ldEFkZHIsIGEsICZuYW1lbGVuLCAKKwkJCQkJCQkJCSBQSl9GQUxTRSkgPT0gUEpfU1VDQ0VTUykgCisJCQl7CisJCQkJUEpfTE9HKDUsKFRISVNfRklMRSwgInJlc29sdmUgJS4qczogJXMiLCAKKwkJCQkJCShpbnQpbmFtZS0+c2xlbiwgbmFtZS0+cHRyLAorCQkJCQkJcGpfc29ja2FkZHJfcHJpbnQoJmEsIGlwYWRkciwgc2l6ZW9mKGlwYWRkciksIDIpKSk7CisJCQl9CisJCX0KKyNlbmRpZgorCQkKKwkJLy8gSWdub3JlIGlmIHRoaXMgaXMgbm90IHRoZSBzYW1lIGFkZHJlc3MgZmFtaWx5CisJCS8vIE5vdCBhIGdvb2QgaWRlYSwgYXMgU3ltYmlhbiBtYXBwcyBJUHY0IHRvIElQdjYuCisJCS8vZmFtID0gaW5ldEFkZHIuRmFtaWx5KCk7CisJCS8vaWYgKGZhbSAhPSBhZikgeworCQkvLyAgICByZXN2Lk5leHQobmFtZUVudHJ5LCByZXFTdGF0dXMpOworCQkvLyAgICBVc2VyOjpXYWl0Rm9yUmVxdWVzdChyZXFTdGF0dXMpOworCQkvLyAgICBjb250aW51ZTsKKwkJLy99CisJCQorCQkvLyBDb252ZXJ0IElQIGFkZHJlc3MgZmlyc3QgdG8gZ2V0IElQdjQgbWFwcGVkIGFkZHJlc3MKKwkJYWRkcmxlbiA9IHNpemVvZihhaVtpXS5haV9hZGRyKTsKKwkJc3RhdHVzID0gUGpTeW1iaWFuT1M6OkFkZHIycGooaW5ldEFkZHIsIGFpW2ldLmFpX2FkZHIsIAorCQkJCQkJCQkJICAmYWRkcmxlbiwgUEpfVFJVRSk7CisJCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwkJICAgIHJldHVybiBzdGF0dXM7CisJCQorCQkvLyBJZ25vcmUgaWYgYWRkcmVzcyBmYW1pbHkgZG9lc24ndCBtYXRjaAorCQlpZiAoYWlbaV0uYWlfYWRkci5hZGRyLnNhX2ZhbWlseSAhPSBhZikgeworCQkgICAgcmVzdi5OZXh0KG5hbWVFbnRyeSwgcmVxU3RhdHVzKTsKKwkJICAgIFVzZXI6OldhaXRGb3JSZXF1ZXN0KHJlcVN0YXR1cyk7CisJCSAgICBjb250aW51ZTsKKwkJfQorCisJCS8vIENvbnZlcnQgdGhlIG9mZmljaWFsIGFkZHJlc3MgdG8gQU5TSS4KKwkJcGpfdW5pY29kZV90b19hbnNpKChjb25zdCB3Y2hhcl90KiluYW1lRW50cnkoKS5pTmFtZS5QdHIoKSwgCisJCQkJICAgbmFtZUVudHJ5KCkuaU5hbWUuTGVuZ3RoKCksCisJCQkgICAgICAgCSAgIGFpW2ldLmFpX2Nhbm9ubmFtZSwgc2l6ZW9mKGFpW2ldLmFpX2Nhbm9ubmFtZSkpOworCQorCQkvLyBOZXh0CisJCSsraTsKKwkJcmVzdi5OZXh0KG5hbWVFbnRyeSwgcmVxU3RhdHVzKTsKKwkJVXNlcjo6V2FpdEZvclJlcXVlc3QocmVxU3RhdHVzKTsKKyAgICB9CisKKyAgICAqY291bnQgPSBpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKiBSZXNvbHZlIElQdjQvSVB2NiBhZGRyZXNzICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldGFkZHJpbmZvKGludCBhZiwgY29uc3QgcGpfc3RyX3QgKm5vZGVuYW1lLAorCQkJCSAgIHVuc2lnbmVkICpjb3VudCwgcGpfYWRkcmluZm8gYWlbXSkgCit7CisgICAgdW5zaWduZWQgc3RhcnQ7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzID0gUEpfRUFGTk9UU1VQOworICAgIAorICAgIFBKX0FTU0VSVF9SRVRVUk4oYWY9PVBKX0FGX0lORVQgfHwgYWY9PVBKX0FGX0lORVQ2IHx8IGFmPT1QSl9BRl9VTlNQRUMsCisgICAgCQkgICAgIFBKX0VBRk5PVFNVUCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihub2RlbmFtZSAmJiBjb3VudCAmJiAqY291bnQgJiYgYWksIFBKX0VJTlZBTCk7CisgICAgCisgICAgc3RhcnQgPSAwOworICAgIAorICAgIGlmIChhZj09UEpfQUZfSU5FVDYgfHwgYWY9PVBKX0FGX1VOU1BFQykgeworICAgICAgICB1bnNpZ25lZCBtYXggPSAqY291bnQ7CisgICAgCXN0YXR1cyA9IGdldGFkZHJpbmZvX2J5X2FmKFBKX0FGX0lORVQ2LCBub2RlbmFtZSwgCisgICAgCQkJCSAgICZtYXgsICZhaVtzdGFydF0pOworICAgIAlpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpIHsKKyAgICAJICAgICgqY291bnQpIC09IG1heDsKKyAgICAJICAgIHN0YXJ0ICs9IG1heDsKKyAgICAJfQorICAgIH0KKyAgICAKKyAgICBpZiAoYWY9PVBKX0FGX0lORVQgfHwgYWY9PVBKX0FGX1VOU1BFQykgeworICAgICAgICB1bnNpZ25lZCBtYXggPSAqY291bnQ7CisgICAgCXN0YXR1cyA9IGdldGFkZHJpbmZvX2J5X2FmKFBKX0FGX0lORVQsIG5vZGVuYW1lLCAKKyAgICAJCQkJICAgJm1heCwgJmFpW3N0YXJ0XSk7CisgICAgCWlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworICAgIAkgICAgKCpjb3VudCkgLT0gbWF4OworICAgIAkgICAgc3RhcnQgKz0gbWF4OworICAgIAl9CisgICAgfQorICAgIAorICAgICpjb3VudCA9IHN0YXJ0OworICAgIAorICAgIGlmICgqY291bnQpIHsKKyAgICAJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfSBlbHNlIHsKKyAgICAJcmV0dXJuIHN0YXR1cyE9UEpfU1VDQ0VTUyA/IHN0YXR1cyA6IFBKX0VOT1RGT1VORDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9hcnJheS5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2FycmF5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIzOWQxOQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9hcnJheS5jCkBAIC0wLDAgKzEsNzEgQEAKKy8qICRJZDogYXJyYXkuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2FycmF5Lmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKworUEpfREVGKHZvaWQpIHBqX2FycmF5X2luc2VydCggdm9pZCAqYXJyYXksCisJCQkgICAgICB1bnNpZ25lZCBlbGVtX3NpemUsCisJCQkgICAgICB1bnNpZ25lZCBjb3VudCwKKwkJCSAgICAgIHVuc2lnbmVkIHBvcywKKwkJCSAgICAgIGNvbnN0IHZvaWQgKnZhbHVlKQoreworICAgIGlmIChjb3VudCAmJiBwb3MgPCBjb3VudCkgeworCXBqX21lbW1vdmUoIChjaGFyKilhcnJheSArIChwb3MrMSkqZWxlbV9zaXplLAorCQkgICAgKGNoYXIqKWFycmF5ICsgcG9zKmVsZW1fc2l6ZSwKKwkJICAgIChjb3VudC1wb3MpKmVsZW1fc2l6ZSk7CisgICAgfQorICAgIHBqX21lbW1vdmUoKGNoYXIqKWFycmF5ICsgcG9zKmVsZW1fc2l6ZSwgdmFsdWUsIGVsZW1fc2l6ZSk7Cit9CisKK1BKX0RFRih2b2lkKSBwal9hcnJheV9lcmFzZSggdm9pZCAqYXJyYXksCisJCQkgICAgIHVuc2lnbmVkIGVsZW1fc2l6ZSwKKwkJCSAgICAgdW5zaWduZWQgY291bnQsCisJCQkgICAgIHVuc2lnbmVkIHBvcykKK3sKKyAgICBwal9hc3NlcnQoY291bnQgIT0gMCk7CisgICAgaWYgKHBvcyA8IGNvdW50LTEpIHsKKwlwal9tZW1tb3ZlKCAoY2hhciopYXJyYXkgKyBwb3MqZWxlbV9zaXplLAorCQkgICAgKGNoYXIqKWFycmF5ICsgKHBvcysxKSplbGVtX3NpemUsCisJCSAgICAoY291bnQtcG9zLTEpKmVsZW1fc2l6ZSk7CisgICAgfQorfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2FycmF5X2ZpbmQoIGNvbnN0IHZvaWQgKmFycmF5LCAKKwkJCQkgICB1bnNpZ25lZCBlbGVtX3NpemUsIAorCQkJCSAgIHVuc2lnbmVkIGNvdW50LCAKKwkJCQkgICBwal9zdGF0dXNfdCAoKm1hdGNoaW5nKShjb25zdCB2b2lkICp2YWx1ZSksCisJCQkJICAgdm9pZCAqKnJlc3VsdCkKK3sKKyAgICB1bnNpZ25lZCBpOworICAgIGNvbnN0IGNoYXIgKmNoYXJfYXJyYXkgPSAoY29uc3QgY2hhciopYXJyYXk7CisgICAgZm9yIChpPTA7IGk8Y291bnQ7ICsraSkgeworCWlmICggKCptYXRjaGluZykoY2hhcl9hcnJheSkgPT0gUEpfU1VDQ0VTUykgeworCSAgICBpZiAocmVzdWx0KSB7CisJCSpyZXN1bHQgPSAodm9pZCopY2hhcl9hcnJheTsKKwkgICAgfQorCSAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKwl9CisJY2hhcl9hcnJheSArPSBlbGVtX3NpemU7CisgICAgfQorICAgIHJldHVybiBQSl9FTk9URk9VTkQ7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9jb21wYXQvbG9uZ2ptcF9pMzg2LlMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovY29tcGF0L2xvbmdqbXBfaTM4Ni5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxM2Q3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovY29tcGF0L2xvbmdqbXBfaTM4Ni5TCkBAIC0wLDAgKzEsNDIgQEAKKy8qIGxvbmdqbXAgZm9yIGkzODYuCisgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKKyAgIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsCisgICB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisKKyNkZWZpbmUgX0FTTQorI2RlZmluZSBfU0VUSk1QX0gKKyNkZWZpbmUgUEpfTElOVVhfS0VSTkVMCSAgICAxCisjaW5jbHVkZSA8cGovY29tcGF0L3NldGptcC5oPgorCisuZ2xvYmFsIF9fbG9uZ2ptcAorLnR5cGUgICBfX2xvbmdqbXAsJWZ1bmN0aW9uCisuYWxpZ24gNAorX19sb25nam1wOgorCW1vdmwgNCglZXNwKSwgJWVjeAkvKiBVc2VyJ3Mgam1wX2J1ZiBpbiAlZWN4LiAgKi8KKwltb3ZsIDgoJWVzcCksICVlYXgJLyogU2Vjb25kIGFyZ3VtZW50IGlzIHJldHVybiB2YWx1ZS4gICovCisJLyogU2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3Mgbm93LiAgKi8KKwltb3ZsIChKQl9QQyo0KSglZWN4KSwgJWVkeAorCS8qIFJlc3RvcmUgcmVnaXN0ZXJzLiAgKi8KKwltb3ZsIChKQl9CWCo0KSglZWN4KSwgJWVieAorCW1vdmwgKEpCX1NJKjQpKCVlY3gpLCAlZXNpCisJbW92bCAoSkJfREkqNCkoJWVjeCksICVlZGkKKwltb3ZsIChKQl9CUCo0KSglZWN4KSwgJWVicAorCW1vdmwgKEpCX1NQKjQpKCVlY3gpLCAlZXNwCisJLyogSnVtcCB0byBzYXZlZCBQQy4gICovCisJam1wIColZWR4Cisuc2l6ZSBfX2xvbmdqbXAsLi1fX2xvbmdqbXAKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2NvbXBhdC9zZXRqbXBfaTM4Ni5TIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2NvbXBhdC9zZXRqbXBfaTM4Ni5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZGFhZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovY29tcGF0L3NldGptcF9pMzg2LlMKQEAgLTAsMCArMSw2MSBAQAorLyogc2V0am1wIGZvciBpMzg2LCBFTEYgdmVyc2lvbi4KKyAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NywgMjAwMCwgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKworI2RlZmluZSBfQVNNCisjZGVmaW5lIF9TRVRKTVBfSAorI2RlZmluZSBQSl9MSU5VWF9LRVJORUwJICAgIDEKKyNpbmNsdWRlIDxwai9jb21wYXQvc2V0am1wLmg+CisKKworLmdsb2JhbCBfX3NpZ3NldGptcAorLnR5cGUgICBfX3NpZ3NldGptcCwlZnVuY3Rpb24KKy5hbGlnbiA0CisKK19fc2lnc2V0am1wOgorICAgICAgICBtb3ZsIDQgICAoJWVzcCksICVlYXgKKyAgICAgCS8qIFNhdmUgcmVnaXN0ZXJzLiAgKi8KKyAgICAgICAgbW92bCAlZWJ4LCAoMCAqNCkoJWVheCkKKyAgICAgICAgbW92bCAlZXNpLCAoMSAqNCkoJWVheCkKKyAgICAgICAgbW92bCAlZWRpLCAoMiAqNCkoJWVheCkKKwkvKiBTYXZlIFNQIGFzIGl0IHdpbGwgYmUgYWZ0ZXIgd2UgcmV0dXJuLiAgKi8KKyAgICAgICAgbGVhbCA0KCVlc3ApLCAlZWN4ICAgICAgIAorICAgICAgICBtb3ZsICVlY3gsICg0ICo0KSglZWF4KQorCS8qIFNhdmUgUEMgd2UgYXJlIHJldHVybmluZyB0byBub3cuICAqLworICAgICAgICBtb3ZsIDAoJWVzcCksICVlY3ggICAgICAgCisgICAgICAgIG1vdmwgJWVjeCwgKDUgKjQpKCVlYXgpCisJLyogU2F2ZSBjYWxsZXIncyBmcmFtZSBwb2ludGVyLiAgKi8KKyAgICAgICAgbW92bCAlZWJwLCAoMyAqNCkoJWVheCkgIAorCisJLyogTWFrZSBhIHRhaWwgY2FsbCB0byBfX3NpZ2ptcF9zYXZlOyBpdCB0YWtlcyB0aGUgc2FtZSBhcmdzLiAgKi8KKyNpZmRlZglfX1BJQ19fCisJLyogV2UgY2Fubm90IHVzZSB0aGUgUExULCBiZWNhdXNlIGl0IHJlcXVpcmVzIHRoYXQgJWVieCBiZSBzZXQsIGJ1dAorICAgICAgICAgICB3ZSBjYW4ndCBzYXZlIGFuZCByZXN0b3JlIG91ciBjYWxsZXIncyB2YWx1ZS4gIEluc3RlYWQsIHdlIGRvIGFuCisgICAgICAgICAgIGluZGlyZWN0IGp1bXAgdGhyb3VnaCB0aGUgR09ULCB1c2luZyBmb3IgdGhlIHRlbXBvcmFyeSByZWdpc3RlcgorICAgICAgICAgICAlZWN4LCB3aGljaCBpcyBjYWxsLWNsb2JiZXJlZC4gICovCisJY2FsbCAuTGhlcmUKKy5MaGVyZToKKwlwb3BsICVlY3gKKwlhZGRsICRfR0xPQkFMX09GRlNFVF9UQUJMRV8rWy4tIC5MaGVyZSAgXSwgJWVjeAorCW1vdmwgICAgX19zaWdqbXBfc2F2ZSAgICBAR09UICAoJWVjeCksICVlY3gKKwlqbXAgKiVlY3gKKyNlbHNlCisJam1wICAgX19zaWdqbXBfc2F2ZQorI2VuZGlmCisuc2l6ZSBfX3NpZ3NldGptcCwuLV9fc2lnc2V0am1wCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9jb21wYXQvc2lnam1wLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovY29tcGF0L3NpZ2ptcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMjc2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovY29tcGF0L3NpZ2ptcC5jCkBAIC0wLDAgKzEsNDAgQEAKKy8qICRJZDogc2lnam1wLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9jb25maWcuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvc2V0am1wLmg+CisKK2ludCBfX3NpZ2ptcF9zYXZlKHNpZ2ptcF9idWYgZW52LCBpbnQgc2F2ZW1hc2spCit7CisgICAgcmV0dXJuIDA7Cit9CisKK2V4dGVybiBpbnQgX19zaWdzZXRqbXAocGpfam1wX2J1ZiBlbnYsIGludCBzYXZlbWFzayk7CitleHRlcm4gdm9pZCBfX2xvbmdqbXAocGpfam1wX2J1ZiBlbnYsIGludCB2YWwpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CisKK1BKX0RFRihpbnQpIHBqX3NldGptcChwal9qbXBfYnVmIGVudikKK3sKKyAgICByZXR1cm4gX19zaWdzZXRqbXAoZW52LCAwKTsKK30KKworUEpfREVGKHZvaWQpIHBqX2xvbmdqbXAocGpfam1wX2J1ZiBlbnYsIGludCB2YWwpCit7CisgICAgX19sb25nam1wKGVudiwgdmFsKTsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2NvbXBhdC9zdHJpbmcuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9jb21wYXQvc3RyaW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEyZjc5YgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9jb21wYXQvc3RyaW5nLmMKQEAgLTAsMCArMSw0NSBAQAorLyogJElkOiBzdHJpbmcuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL2N0eXBlLmg+CisKK1BKX0RFRihpbnQpIHN0cmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKQoreworICAgIHdoaWxlICgoKnMxPT0qczIpIHx8IChwal90b2xvd2VyKCpzMSk9PXBqX3RvbG93ZXIoKnMyKSkpIHsKKwlpZiAoISpzMSsrKQorCSAgICByZXR1cm4gMDsKKwkrK3MyOworICAgIH0KKyAgICByZXR1cm4gKHBqX3RvbG93ZXIoKnMxKSA8IHBqX3RvbG93ZXIoKnMyKSkgPyAtMSA6IDE7Cit9CisKK1BKX0RFRihpbnQpIHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMiwgaW50IGxlbikKK3sKKyAgICBpZiAoIWxlbikgcmV0dXJuIDA7CisKKyAgICB3aGlsZSAoKCpzMT09KnMyKSB8fCAocGpfdG9sb3dlcigqczEpPT1wal90b2xvd2VyKCpzMikpKSB7CisJaWYgKCEqczErKyB8fCAtLWxlbiA8PSAwKQorCSAgICByZXR1cm4gMDsKKwkrK3MyOworICAgIH0KKyAgICByZXR1cm4gKHBqX3RvbG93ZXIoKnMxKSA8IHBqX3RvbG93ZXIoKnMyKSkgPyAtMSA6IDE7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9jb21wYXQvc3RyaW5nX2NvbXBhdC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2NvbXBhdC9zdHJpbmdfY29tcGF0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIzNzBhYwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9jb21wYXQvc3RyaW5nX2NvbXBhdC5jCkBAIC0wLDAgKzEsODMgQEAKKy8qICRJZDogc3RyaW5nX2NvbXBhdC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovdHlwZXMuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovY3R5cGUuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKworCisjaWYgZGVmaW5lZChQSl9IQVNfU1RSSU5HX0gpICYmIFBKX0hBU19TVFJJTkdfSCAhPSAwCisvKiBOb3RoaW5nIHRvIGRvICovCisjZWxzZQorUEpfREVGKGludCkgc3RyY2FzZWNtcChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpCit7CisgICAgd2hpbGUgKCgqczE9PSpzMikgfHwgKHBqX3RvbG93ZXIoKnMxKT09cGpfdG9sb3dlcigqczIpKSkgeworCWlmICghKnMxKyspCisJICAgIHJldHVybiAwOworCSsrczI7CisgICAgfQorICAgIHJldHVybiAocGpfdG9sb3dlcigqczEpIDwgcGpfdG9sb3dlcigqczIpKSA/IC0xIDogMTsKK30KKworUEpfREVGKGludCkgc3RybmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBpbnQgbGVuKQoreworICAgIGlmICghbGVuKSByZXR1cm4gMDsKKworICAgIHdoaWxlICgoKnMxPT0qczIpIHx8IChwal90b2xvd2VyKCpzMSk9PXBqX3RvbG93ZXIoKnMyKSkpIHsKKwlpZiAoISpzMSsrIHx8IC0tbGVuIDw9IDApCisJICAgIHJldHVybiAwOworCSsrczI7CisgICAgfQorICAgIHJldHVybiAocGpfdG9sb3dlcigqczEpIDwgcGpfdG9sb3dlcigqczIpKSA/IC0xIDogMTsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChQSl9IQVNfTk9fU05QUklOVEYpICYmIFBKX0hBU19OT19TTlBSSU5URiAhPSAwCisKK1BKX0RFRihpbnQpIHNucHJpbnRmKGNoYXIgKnMxLCBwal9zaXplX3QgbGVuLCBjb25zdCBjaGFyICpzMiwgLi4uKQoreworICAgIGludCByZXQ7CisgICAgdmFfbGlzdCBhcmc7CisKKyAgICBQSl9VTlVTRURfQVJHKGxlbik7CisKKyAgICB2YV9zdGFydChhcmcsIHMyKTsKKyAgICByZXQgPSB2c3ByaW50ZihzMSwgczIsIGFyZyk7CisgICAgdmFfZW5kKGFyZyk7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKworUEpfREVGKGludCkgdnNucHJpbnRmKGNoYXIgKnMxLCBwal9zaXplX3QgbGVuLCBjb25zdCBjaGFyICpzMiwgdmFfbGlzdCBhcmcpCit7CisjZGVmaW5lIE1BUktfQ0hBUiAgICgoY2hhcikyNTUpCisgICAgaW50IHJjOworCisgICAgczFbbGVuLTFdID0gTUFSS19DSEFSOworCisgICAgcmMgPSB2c3ByaW50ZihzMSxzMixhcmcpOworCisgICAgcGpfYXNzZXJ0KHMxW2xlbi0xXSA9PSBNQVJLX0NIQVIgfHwgczFbbGVuLTFdID09ICdcMCcpOworCisgICAgcmV0dXJuIHJjOworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2NvbmZpZy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2NvbmZpZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwOWFmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovY29uZmlnLmMKQEAgLTAsMCArMSw4OSBAQAorLyogJElkOiBjb25maWcuYyA0MTEyIDIwMTItMDQtMjcgMDk6NDc6MjBaIGJlbm55bHAgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9jb25maWcuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9pb3F1ZXVlLmg+CisKK3N0YXRpYyBjb25zdCBjaGFyICppZCA9ICJjb25maWcuYyI7CisKKyNkZWZpbmUgUEpfTUFLRV9WRVJTSU9OM18xKGEsYixkKSAJI2EgIi4iICNiIGQKKyNkZWZpbmUgUEpfTUFLRV9WRVJTSU9OM18yKGEsYixkKQlQSl9NQUtFX1ZFUlNJT04zXzEoYSxiLGQpCisKKyNkZWZpbmUgUEpfTUFLRV9WRVJTSU9ONF8xKGEsYixjLGQpIAkjYSAiLiIgI2IgIi4iICNjIGQKKyNkZWZpbmUgUEpfTUFLRV9WRVJTSU9ONF8yKGEsYixjLGQpCVBKX01BS0VfVkVSU0lPTjRfMShhLGIsYyxkKQorCisjaWYgUEpfVkVSU0lPTl9OVU1fUkVWCitQSl9ERUZfREFUQShjb25zdCBjaGFyKikgUEpfVkVSU0lPTiA9IFBKX01BS0VfVkVSU0lPTjRfMihQSl9WRVJTSU9OX05VTV9NQUpPUiwKKwkJCQkJCSAgICAgICAgIFBKX1ZFUlNJT05fTlVNX01JTk9SLAorCQkJCQkJICAgICAgICAgUEpfVkVSU0lPTl9OVU1fUkVWLAorCQkJCQkJICAgICAgICAgUEpfVkVSU0lPTl9OVU1fRVhUUkEpOworI2Vsc2UKK1BKX0RFRl9EQVRBKGNvbnN0IGNoYXIqKSBQSl9WRVJTSU9OID0gUEpfTUFLRV9WRVJTSU9OM18yKFBKX1ZFUlNJT05fTlVNX01BSk9SLAorCQkJCQkJICAgICAgICAgUEpfVkVSU0lPTl9OVU1fTUlOT1IsCisJCQkJCQkgICAgICAgICBQSl9WRVJTSU9OX05VTV9FWFRSQSk7CisjZW5kaWYKKworLyoKKyAqIEdldCBQSkxJQiB2ZXJzaW9uIHN0cmluZy4KKyAqLworUEpfREVGKGNvbnN0IGNoYXIqKSBwal9nZXRfdmVyc2lvbih2b2lkKQoreworICAgIHJldHVybiBQSl9WRVJTSU9OOworfQorCitQSl9ERUYodm9pZCkgcGpfZHVtcF9jb25maWcodm9pZCkKK3sKKyAgICBQSl9MT0coMywgKGlkLCAiUEpMSUIgKGMpMjAwOC0yMDA5IFRlbHV1IEluYy4iKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIkR1bXBpbmcgY29uZmlndXJhdGlvbnM6IikpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfVkVSU0lPTiAgICAgICAgICAgICAgICA6ICVzIiwgUEpfVkVSU0lPTikpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfTV9OQU1FICAgICAgICAgICAgICAgICA6ICVzIiwgUEpfTV9OQU1FKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIiBQSl9IQVNfUEVOVElVTSAgICAgICAgICAgIDogJWQiLCBQSl9IQVNfUEVOVElVTSkpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfT1NfTkFNRSAgICAgICAgICAgICAgICA6ICVzIiwgUEpfT1NfTkFNRSkpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfQ0NfTkFNRS9WRVJfKDEsMiwzKSAgICA6ICVzLSVkLiVkLiVkIiwgUEpfQ0NfTkFNRSwKKwkgICAgICAgUEpfQ0NfVkVSXzEsIFBKX0NDX1ZFUl8yLCBQSl9DQ19WRVJfMykpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfSVNfKEJJRy9MSVRUTEUpX0VORElBTiA6ICVzIiwgCisJICAgICAgIChQSl9JU19CSUdfRU5ESUFOPyJiaWctZW5kaWFuIjoibGl0dGxlLWVuZGlhbiIpKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIiBQSl9IQVNfSU5UNjQgICAgICAgICAgICAgIDogJWQiLCBQSl9IQVNfSU5UNjQpKTsKKyAgICBQSl9MT0coMywgKGlkLCAiIFBKX0hBU19GTE9BVElOR19QT0lOVCAgICAgOiAlZCIsIFBKX0hBU19GTE9BVElOR19QT0lOVCkpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfREVCVUcgICAgICAgICAgICAgICAgICA6ICVkIiwgUEpfREVCVUcpKTsKKyAgICBQSl9MT0coMywgKGlkLCAiIFBKX0ZVTkNUSU9OU19BUkVfSU5MSU5FRCAgOiAlZCIsIFBKX0ZVTkNUSU9OU19BUkVfSU5MSU5FRCkpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfTE9HX01BWF9MRVZFTCAgICAgICAgICA6ICVkIiwgUEpfTE9HX01BWF9MRVZFTCkpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfTE9HX01BWF9TSVpFICAgICAgICAgICA6ICVkIiwgUEpfTE9HX01BWF9TSVpFKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIiBQSl9MT0dfVVNFX1NUQUNLX0JVRkZFUiAgIDogJWQiLCBQSl9MT0dfVVNFX1NUQUNLX0JVRkZFUikpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfUE9PTF9ERUJVRyAgICAgICAgICAgICA6ICVkIiwgUEpfUE9PTF9ERUJVRykpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfSEFTX1BPT0xfQUxUX0FQSSAgICAgICA6ICVkIiwgUEpfSEFTX1BPT0xfQUxUX0FQSSkpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfSEFTX1RDUCAgICAgICAgICAgICAgICA6ICVkIiwgUEpfSEFTX1RDUCkpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfTUFYX0hPU1ROQU1FICAgICAgICAgICA6ICVkIiwgUEpfTUFYX0hPU1ROQU1FKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIiBpb3F1ZXVlIHR5cGUgICAgICAgICAgICAgIDogJXMiLCBwal9pb3F1ZXVlX25hbWUoKSkpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfSU9RVUVVRV9NQVhfSEFORExFUyAgICA6ICVkIiwgUEpfSU9RVUVVRV9NQVhfSEFORExFUykpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRyA6ICVkIiwgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRykpOworICAgIFBKX0xPRygzLCAoaWQsICIgUEpfSEFTX1RIUkVBRFMgICAgICAgICAgICA6ICVkIiwgUEpfSEFTX1RIUkVBRFMpKTsKKyAgICBQSl9MT0coMywgKGlkLCAiIFBKX0xPR19VU0VfU1RBQ0tfQlVGRkVSICAgOiAlZCIsIFBKX0xPR19VU0VfU1RBQ0tfQlVGRkVSKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIiBQSl9IQVNfU0VNQVBIT1JFICAgICAgICAgIDogJWQiLCBQSl9IQVNfU0VNQVBIT1JFKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIiBQSl9IQVNfRVZFTlRfT0JKICAgICAgICAgIDogJWQiLCBQSl9IQVNfRVZFTlRfT0JKKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIiBQSl9FTkFCTEVfRVhUUkFfQ0hFQ0sgICAgIDogJWQiLCBQSl9FTkFCTEVfRVhUUkFfQ0hFQ0spKTsKKyAgICBQSl9MT0coMywgKGlkLCAiIFBKX0hBU19FWENFUFRJT05fTkFNRVMgICAgOiAlZCIsIFBKX0hBU19FWENFUFRJT05fTkFNRVMpKTsKKyAgICBQSl9MT0coMywgKGlkLCAiIFBKX01BWF9FWENFUFRJT05fSUQgICAgICAgOiAlZCIsIFBKX01BWF9FWENFUFRJT05fSUQpKTsKKyAgICBQSl9MT0coMywgKGlkLCAiIFBKX0VYQ0VQVElPTl9VU0VfV0lOMzJfU0VIOiAlZCIsIFBKX0VYQ0VQVElPTl9VU0VfV0lOMzJfU0VIKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIiBQSl9USU1FU1RBTVBfVVNFX1JEVFNDOiAgIDogJWQiLCBQSl9USU1FU1RBTVBfVVNFX1JEVFNDKSk7CisgICAgUEpfTE9HKDMsIChpZCwgIiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sgICAgIDogJWQiLCBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0spKTsKKyAgICBQSl9MT0coMywgKGlkLCAiIFBKX0hBU19ISUdIX1JFU19USU1FUiAgICAgOiAlZCIsIFBKX0hBU19ISUdIX1JFU19USU1FUikpOworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovY3R5cGUuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9jdHlwZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMDQzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovY3R5cGUuYwpAQCAtMCwwICsxLDI4IEBACisvKiAkSWQ6IGN0eXBlLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9jdHlwZS5oPgorCisvKgorY2hhciBwal9oZXhfZGlnaXRzW10gPSB7JzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsCisJCQknOCcsICc5JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJyB9OworKi8KKworaW50IHBqbGliX2N0eXBlX2NfZHVtbXlfc3ltYm9sOworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZXJybm8uYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9lcnJuby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYzlhZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZXJybm8uYwpAQCAtMCwwICsxLDMyNyBAQAorLyogJElkOiBlcnJuby5jIDQ2MTMgMjAxMy0xMC0wOCAwOTowODoxM1ogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zdGRhcmcuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKworLyogUHJvdG90eXBlIGZvciBwbGF0Zm9ybSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlLCB3aGljaCB3aWxsIGJlIGRlZmluZWQgCisgKiBpbiBzZXBhcmF0ZSBmaWxlLgorICovCitQSl9CRUdJTl9ERUNMCisKKyAgICBQSl9ERUNMKGludCkgcGxhdGZvcm1fc3RyZXJyb3IocGpfb3NfZXJyX3R5cGUgY29kZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgY2hhciAqYnVmLCBwal9zaXplX3QgYnVmc2l6ZSApOworUEpfRU5EX0RFQ0wKKworI2lmbmRlZiBQSkxJQl9NQVhfRVJSX01TR19IQU5ETEVSCisjCWRlZmluZSBQSkxJQl9NQVhfRVJSX01TR19IQU5ETEVSICAgMTAKKyNlbmRpZgorCisvKiBFcnJvciBtZXNzYWdlIGhhbmRsZXIuICovCitzdGF0aWMgdW5zaWduZWQgZXJyX21zZ19obmRfY250Oworc3RhdGljIHN0cnVjdCBlcnJfbXNnX2huZAoreworICAgIHBqX3N0YXR1c190CSAgICBiZWdpbjsKKyAgICBwal9zdGF0dXNfdAkgICAgZW5kOworICAgIHBqX3N0cl90CSAgKCpzdHJlcnJvcikocGpfc3RhdHVzX3QsIGNoYXIqLCBwal9zaXplX3QpOworCit9IGVycl9tc2dfaG5kW1BKTElCX01BWF9FUlJfTVNHX0hBTkRMRVJdOworCisvKiBQSkxJQidzIG93biBlcnJvciBjb2Rlcy9tZXNzYWdlcyAqLworI2lmIGRlZmluZWQoUEpfSEFTX0VSUk9SX1NUUklORykgJiYgUEpfSEFTX0VSUk9SX1NUUklORyE9MAorCitzdGF0aWMgY29uc3Qgc3RydWN0IAoreworICAgIGludCBjb2RlOworICAgIGNvbnN0IGNoYXIgKm1zZzsKK30gZXJyX3N0cltdID0gCit7CisgICAgUEpfQlVJTERfRVJSKFBKX0VVTktOT1dOLCAgICAgICJVbmtub3duIEVycm9yIiApLAorICAgIFBKX0JVSUxEX0VSUihQSl9FUEVORElORywgICAgICAiUGVuZGluZyBvcGVyYXRpb24iICksCisgICAgUEpfQlVJTERfRVJSKFBKX0VUT09NQU5ZQ09OTiwgICJUb28gbWFueSBjb25uZWN0aW5nIHNvY2tldHMiICksCisgICAgUEpfQlVJTERfRVJSKFBKX0VJTlZBTCwgICAgICAgICJJbnZhbGlkIHZhbHVlIG9yIGFyZ3VtZW50IiApLAorICAgIFBKX0JVSUxEX0VSUihQSl9FTkFNRVRPT0xPTkcsICAiTmFtZSB0b28gbG9uZyIgKSwKKyAgICBQSl9CVUlMRF9FUlIoUEpfRU5PVEZPVU5ELCAgICAgIk5vdCBmb3VuZCIgKSwKKyAgICBQSl9CVUlMRF9FUlIoUEpfRU5PTUVNLCAgICAgICAgIk5vdCBlbm91Z2ggbWVtb3J5IiApLAorICAgIFBKX0JVSUxEX0VSUihQSl9FQlVHLCAgICAgICAgICAiQlVHIERFVEVDVEVEISIgKSwKKyAgICBQSl9CVUlMRF9FUlIoUEpfRVRJTUVET1VULCAgICAgIk9wZXJhdGlvbiB0aW1lZCBvdXQiICksCisgICAgUEpfQlVJTERfRVJSKFBKX0VUT09NQU5ZLCAgICAgICJUb28gbWFueSBvYmplY3RzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZSIpLAorICAgIFBKX0JVSUxEX0VSUihQSl9FQlVTWSwgICAgICAgICAiT2JqZWN0IGlzIGJ1c3kiKSwKKyAgICBQSl9CVUlMRF9FUlIoUEpfRU5PVFNVUCwJICAgIk9wdGlvbi9vcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCIpLAorICAgIFBKX0JVSUxEX0VSUihQSl9FSU5WQUxJRE9QLAkgICAiSW52YWxpZCBvcGVyYXRpb24iKSwKKyAgICBQSl9CVUlMRF9FUlIoUEpfRUNBTkNFTExFRCwgICAgIk9wZXJhdGlvbiBjYW5jZWxsZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoUEpfRUVYSVNUUywgICAgICAgIk9iamVjdCBhbHJlYWR5IGV4aXN0cyIgKSwKKyAgICBQSl9CVUlMRF9FUlIoUEpfRUVPRiwJICAgIkVuZCBvZiBmaWxlIiApLAorICAgIFBKX0JVSUxEX0VSUihQSl9FVE9PQklHLAkgICAiU2l6ZSBpcyB0b28gYmlnIiksCisgICAgUEpfQlVJTERfRVJSKFBKX0VSRVNPTFZFLAkgICAiZ2V0aG9zdGJ5bmFtZSgpIGhhcyByZXR1cm5lZCBlcnJvciIpLAorICAgIFBKX0JVSUxEX0VSUihQSl9FVE9PU01BTEwsCSAgICJTaXplIGlzIHRvbyBzaG9ydCIpLAorICAgIFBKX0JVSUxEX0VSUihQSl9FSUdOT1JFRCwJICAgIklnbm9yZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoUEpfRUlQVjZOT1RTVVAsICAgIklQdjYgaXMgbm90IHN1cHBvcnRlZCIpLAorICAgIFBKX0JVSUxEX0VSUihQSl9FQUZOT1RTVVAsCSAgICJVbnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpLAorICAgIFBKX0JVSUxEX0VSUihQSl9FR09ORSwJICAgIk9iamVjdCBubyBsb25nZXIgZXhpc3RzIiksCisgICAgUEpfQlVJTERfRVJSKFBKX0VTT0NLRVRTVE9QLCAgICJTb2NrZXQgaXMgaW4gYmFkIHN0YXRlIikKK307CisjZW5kaWYJLyogUEpfSEFTX0VSUk9SX1NUUklORyAqLworCisKKy8qCisgKiBwamxpYl9lcnJvcigpCisgKgorICogUmV0cmlldmUgbWVzc2FnZSBzdHJpbmcgZm9yIFBKTElCJ3Mgb3duIGVycm9yIGNvZGUuCisgKi8KK3N0YXRpYyBpbnQgcGpsaWJfZXJyb3IocGpfc3RhdHVzX3QgY29kZSwgY2hhciAqYnVmLCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICBpbnQgbGVuOworCisjaWYgZGVmaW5lZChQSl9IQVNfRVJST1JfU1RSSU5HKSAmJiBQSl9IQVNfRVJST1JfU1RSSU5HIT0wCisgICAgdW5zaWduZWQgaTsKKworICAgIGZvciAoaT0wOyBpPHNpemVvZihlcnJfc3RyKS9zaXplb2YoZXJyX3N0clswXSk7ICsraSkgeworICAgICAgICBpZiAoZXJyX3N0cltpXS5jb2RlID09IGNvZGUpIHsKKyAgICAgICAgICAgIHBqX3NpemVfdCBsZW4gPSBzdHJsZW4oZXJyX3N0cltpXS5tc2cpOworICAgICAgICAgICAgaWYgKGxlbiA+PSBzaXplKSBsZW4gPSBzaXplLTE7CisgICAgICAgICAgICBwal9tZW1jcHkoYnVmLCBlcnJfc3RyW2ldLm1zZywgbGVuKTsKKyAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKKyAgICAgICAgICAgIHJldHVybiAoaW50KWxlbjsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgbGVuID0gcGpfYW5zaV9zbnByaW50ZiggYnVmLCBzaXplLCAiVW5rbm93biBwamxpYiBlcnJvciAlZCIsIGNvZGUpOworICAgIGlmIChsZW4gPCAxIHx8IGxlbiA+PSAoaW50KXNpemUpCisJbGVuID0gc2l6ZSAtIDE7CisgICAgcmV0dXJuIGxlbjsKK30KKworI2RlZmluZSBJTl9SQU5HRSh2YWwsc3RhcnQsZW5kKQkgICAgKCh2YWwpPj0oc3RhcnQpICYmICh2YWwpPChlbmQpKQorCisvKiBSZWdpc3RlciBzdHJlcnJvciBoYW5kbGUuICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3JlZ2lzdGVyX3N0cmVycm9yKCBwal9zdGF0dXNfdCBzdGFydCwKKwkJCQkJICBwal9zdGF0dXNfdCBzcGFjZSwKKwkJCQkJICBwal9lcnJvcl9jYWxsYmFjayBmKQoreworICAgIHVuc2lnbmVkIGk7CisKKyAgICAvKiBDaGVjayBhcmd1bWVudHMuICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihzdGFydCAmJiBzcGFjZSAmJiBmLCBQSl9FSU5WQUwpOworCisgICAgLyogQ2hlY2sgaWYgdGhlcmUgYXJlbid0IHRvbyBtYW55IGhhbmRsZXJzIHJlZ2lzdGVyZWQuICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihlcnJfbXNnX2huZF9jbnQgPCBQSl9BUlJBWV9TSVpFKGVycl9tc2dfaG5kKSwKKwkJICAgICBQSl9FVE9PTUFOWSk7CisKKyAgICAvKiBTdGFydCBlcnJvciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBQSl9FUlJOT19TVEFSVF9VU0VSICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihzdGFydCA+PSBQSl9FUlJOT19TVEFSVF9VU0VSLCBQSl9FRVhJU1RTKTsKKworICAgIC8qIENoZWNrIHRoYXQgbm8gZXhpc3RpbmcgaGFuZGxlciBoYXMgY292ZXJlZCB0aGUgc3BlY2lmaWVkIHJhbmdlLiAqLworICAgIGZvciAoaT0wOyBpPGVycl9tc2dfaG5kX2NudDsgKytpKSB7CisJaWYgKElOX1JBTkdFKHN0YXJ0LCBlcnJfbXNnX2huZFtpXS5iZWdpbiwgZXJyX21zZ19obmRbaV0uZW5kKSB8fAorCSAgICBJTl9SQU5HRShzdGFydCtzcGFjZS0xLCBlcnJfbXNnX2huZFtpXS5iZWdpbiwgZXJyX21zZ19obmRbaV0uZW5kKSkKKwl7CisJICAgIGlmIChlcnJfbXNnX2huZFtpXS5iZWdpbiA9PSBzdGFydCAmJiAKKwkJZXJyX21zZ19obmRbaV0uZW5kID09IChzdGFydCtzcGFjZSkgJiYKKwkJZXJyX21zZ19obmRbaV0uc3RyZXJyb3IgPT0gZikKKwkgICAgeworCQkvKiBUaGUgc2FtZSByYW5nZSBhbmQgaGFuZGxlciBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgKi8KKwkJcmV0dXJuIFBKX1NVQ0NFU1M7CisJICAgIH0KKworCSAgICByZXR1cm4gUEpfRUVYSVNUUzsKKwl9CisgICAgfQorCisgICAgLyogUmVnaXN0ZXIgdGhlIGhhbmRsZXIuICovCisgICAgZXJyX21zZ19obmRbZXJyX21zZ19obmRfY250XS5iZWdpbiA9IHN0YXJ0OworICAgIGVycl9tc2dfaG5kW2Vycl9tc2dfaG5kX2NudF0uZW5kID0gc3RhcnQgKyBzcGFjZTsKKyAgICBlcnJfbXNnX2huZFtlcnJfbXNnX2huZF9jbnRdLnN0cmVycm9yID0gZjsKKworICAgICsrZXJyX21zZ19obmRfY250OworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qIEludGVybmFsIFBKTElCIGZ1bmN0aW9uIGNhbGxlZCBieSBwal9zaHV0ZG93bigpIHRvIGNsZWFyIGVycm9yIGhhbmRsZXJzICovCit2b2lkIHBqX2Vycm5vX2NsZWFyX2hhbmRsZXJzKHZvaWQpCit7CisgICAgZXJyX21zZ19obmRfY250ID0gMDsKKyAgICBwal9iemVybyhlcnJfbXNnX2huZCwgc2l6ZW9mKGVycl9tc2dfaG5kKSk7Cit9CisKKworLyoKKyAqIHBqX3N0cmVycm9yKCkKKyAqLworUEpfREVGKHBqX3N0cl90KSBwal9zdHJlcnJvciggcGpfc3RhdHVzX3Qgc3RhdGNvZGUsIAorCQkJICAgICAgY2hhciAqYnVmLCBwal9zaXplX3QgYnVmc2l6ZSApCit7CisgICAgaW50IGxlbiA9IC0xOworICAgIHBqX3N0cl90IGVycnN0cjsKKworICAgIHBqX2Fzc2VydChidWYgJiYgYnVmc2l6ZSk7CisKKyAgICBpZiAoc3RhdGNvZGUgPT0gUEpfU1VDQ0VTUykgeworCWxlbiA9IHBqX2Fuc2lfc25wcmludGYoIGJ1ZiwgYnVmc2l6ZSwgIlN1Y2Nlc3MiKTsKKworICAgIH0gZWxzZSBpZiAoc3RhdGNvZGUgPCBQSl9FUlJOT19TVEFSVCArIFBKX0VSUk5PX1NQQUNFX1NJWkUpIHsKKyAgICAgICAgbGVuID0gcGpfYW5zaV9zbnByaW50ZiggYnVmLCBidWZzaXplLCAiVW5rbm93biBlcnJvciAlZCIsIHN0YXRjb2RlKTsKKworICAgIH0gZWxzZSBpZiAoc3RhdGNvZGUgPCBQSl9FUlJOT19TVEFSVF9TVEFUVVMgKyBQSl9FUlJOT19TUEFDRV9TSVpFKSB7CisgICAgICAgIGxlbiA9IHBqbGliX2Vycm9yKHN0YXRjb2RlLCBidWYsIGJ1ZnNpemUpOworCisgICAgfSBlbHNlIGlmIChzdGF0Y29kZSA8IFBKX0VSUk5PX1NUQVJUX1NZUyArIFBKX0VSUk5PX1NQQUNFX1NJWkUpIHsKKyAgICAgICAgbGVuID0gcGxhdGZvcm1fc3RyZXJyb3IoUEpfU1RBVFVTX1RPX09TKHN0YXRjb2RlKSwgYnVmLCBidWZzaXplKTsKKworICAgIH0gZWxzZSB7CisJdW5zaWduZWQgaTsKKworCS8qIEZpbmQgdXNlciBoYW5kbGVyIHRvIGdldCB0aGUgZXJyb3IgbWVzc2FnZS4gKi8KKwlmb3IgKGk9MDsgaTxlcnJfbXNnX2huZF9jbnQ7ICsraSkgeworCSAgICBpZiAoSU5fUkFOR0Uoc3RhdGNvZGUsIGVycl9tc2dfaG5kW2ldLmJlZ2luLCBlcnJfbXNnX2huZFtpXS5lbmQpKSB7CisJCXJldHVybiAoKmVycl9tc2dfaG5kW2ldLnN0cmVycm9yKShzdGF0Y29kZSwgYnVmLCBidWZzaXplKTsKKwkgICAgfQorCX0KKworCS8qIEhhbmRsZXIgbm90IGZvdW5kISAqLworCWxlbiA9IHBqX2Fuc2lfc25wcmludGYoIGJ1ZiwgYnVmc2l6ZSwgIlVua25vd24gZXJyb3IgJWQiLCBzdGF0Y29kZSk7CisgICAgfQorCisgICAgaWYgKGxlbiA8IDEgfHwgbGVuID49IChpbnQpYnVmc2l6ZSkgeworCWxlbiA9IGJ1ZnNpemUgLSAxOworCWJ1ZltsZW5dID0gJ1wwJzsKKyAgICB9CisKKyAgICBlcnJzdHIucHRyID0gYnVmOworICAgIGVycnN0ci5zbGVuID0gbGVuOworCisgICAgcmV0dXJuIGVycnN0cjsKK30KKworI2lmIFBKX0xPR19NQVhfTEVWRUwgPj0gMQorc3RhdGljIHZvaWQgaW52b2tlX2xvZyhjb25zdCBjaGFyICpzZW5kZXIsIGludCBsZXZlbCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmc7CisgICAgdmFfc3RhcnQoYXJnLCBmb3JtYXQpOworICAgIHBqX2xvZyhzZW5kZXIsIGxldmVsLCBmb3JtYXQsIGFyZyk7CisgICAgdmFfZW5kKGFyZyk7Cit9CisKK3N0YXRpYyB2b2lkIHBqX3BlcnJvcl9pbXAoaW50IGxvZ19sZXZlbCwgY29uc3QgY2hhciAqc2VuZGVyLCAKKwkJCSAgcGpfc3RhdHVzX3Qgc3RhdHVzLAorCQkgICAgICAgICAgY29uc3QgY2hhciAqdGl0bGVfZm10LCB2YV9saXN0IG1hcmtlcikKK3sKKyAgICBjaGFyIHRpdGxlYnVmW1BKX1BFUlJPUl9USVRMRV9CVUZfU0laRV07CisgICAgY2hhciBlcnJtc2dbUEpfRVJSX01TR19TSVpFXTsKKyAgICBpbnQgbGVuOworCisgICAgLyogQnVpbGQgdGhlIHRpdGxlICovCisgICAgbGVuID0gcGpfYW5zaV92c25wcmludGYodGl0bGVidWYsIHNpemVvZih0aXRsZWJ1ZiksIHRpdGxlX2ZtdCwgbWFya2VyKTsKKyAgICBpZiAobGVuIDwgMCB8fCBsZW4gPj0gKGludClzaXplb2YodGl0bGVidWYpKQorCXBqX2Fuc2lfc3RyY3B5KHRpdGxlYnVmLCAiRXJyb3IiKTsKKworICAgIC8qIEdldCB0aGUgZXJyb3IgKi8KKyAgICBwal9zdHJlcnJvcihzdGF0dXMsIGVycm1zZywgc2l6ZW9mKGVycm1zZykpOworCisgICAgLyogU2VuZCB0byBsb2cgKi8KKyAgICBpbnZva2VfbG9nKHNlbmRlciwgbG9nX2xldmVsLCAiJXM6ICVzIiwgdGl0bGVidWYsIGVycm1zZyk7Cit9CisKK1BKX0RFRih2b2lkKSBwal9wZXJyb3IoaW50IGxvZ19sZXZlbCwgY29uc3QgY2hhciAqc2VuZGVyLCBwal9zdGF0dXNfdCBzdGF0dXMsCisJCSAgICAgICBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IG1hcmtlcjsKKyAgICB2YV9zdGFydChtYXJrZXIsIHRpdGxlX2ZtdCk7CisgICAgcGpfcGVycm9yX2ltcChsb2dfbGV2ZWwsIHNlbmRlciwgc3RhdHVzLCB0aXRsZV9mbXQsIG1hcmtlcik7CisgICAgdmFfZW5kKG1hcmtlcik7Cit9CisKK1BKX0RFRih2b2lkKSBwal9wZXJyb3JfMShjb25zdCBjaGFyICpzZW5kZXIsIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCSBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IG1hcmtlcjsKKyAgICB2YV9zdGFydChtYXJrZXIsIHRpdGxlX2ZtdCk7CisgICAgcGpfcGVycm9yX2ltcCgxLCBzZW5kZXIsIHN0YXR1cywgdGl0bGVfZm10LCBtYXJrZXIpOworICAgIHZhX2VuZChtYXJrZXIpOworfQorCisjZWxzZSAvKiAjaWYgUEpfTE9HX01BWF9MRVZFTCA+PSAxICovCitQSl9ERUYodm9pZCkgcGpfcGVycm9yKGludCBsb2dfbGV2ZWwsIGNvbnN0IGNoYXIgKnNlbmRlciwgcGpfc3RhdHVzX3Qgc3RhdHVzLAorCQkgICAgICAgY29uc3QgY2hhciAqdGl0bGVfZm10LCAuLi4pCit7Cit9CisjZW5kaWYJLyogI2lmIFBKX0xPR19NQVhfTEVWRUwgPj0gMSAqLworCisKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDIKK1BKX0RFRih2b2lkKSBwal9wZXJyb3JfMihjb25zdCBjaGFyICpzZW5kZXIsIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCSBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IG1hcmtlcjsKKyAgICB2YV9zdGFydChtYXJrZXIsIHRpdGxlX2ZtdCk7CisgICAgcGpfcGVycm9yX2ltcCgyLCBzZW5kZXIsIHN0YXR1cywgdGl0bGVfZm10LCBtYXJrZXIpOworICAgIHZhX2VuZChtYXJrZXIpOworfQorI2VuZGlmCisKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDMKK1BKX0RFRih2b2lkKSBwal9wZXJyb3JfMyhjb25zdCBjaGFyICpzZW5kZXIsIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCSBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IG1hcmtlcjsKKyAgICB2YV9zdGFydChtYXJrZXIsIHRpdGxlX2ZtdCk7CisgICAgcGpfcGVycm9yX2ltcCgzLCBzZW5kZXIsIHN0YXR1cywgdGl0bGVfZm10LCBtYXJrZXIpOworICAgIHZhX2VuZChtYXJrZXIpOworfQorI2VuZGlmCisKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDQKK1BKX0RFRih2b2lkKSBwal9wZXJyb3JfNChjb25zdCBjaGFyICpzZW5kZXIsIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCSBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IG1hcmtlcjsKKyAgICB2YV9zdGFydChtYXJrZXIsIHRpdGxlX2ZtdCk7CisgICAgcGpfcGVycm9yX2ltcCg0LCBzZW5kZXIsIHN0YXR1cywgdGl0bGVfZm10LCBtYXJrZXIpOworICAgIHZhX2VuZChtYXJrZXIpOworfQorI2VuZGlmCisKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDUKK1BKX0RFRih2b2lkKSBwal9wZXJyb3JfNShjb25zdCBjaGFyICpzZW5kZXIsIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCSBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IG1hcmtlcjsKKyAgICB2YV9zdGFydChtYXJrZXIsIHRpdGxlX2ZtdCk7CisgICAgcGpfcGVycm9yX2ltcCg1LCBzZW5kZXIsIHN0YXR1cywgdGl0bGVfZm10LCBtYXJrZXIpOworICAgIHZhX2VuZChtYXJrZXIpOworfQorI2VuZGlmCisKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDYKK1BKX0RFRih2b2lkKSBwal9wZXJyb3JfNihjb25zdCBjaGFyICpzZW5kZXIsIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCSBjb25zdCBjaGFyICp0aXRsZV9mbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IG1hcmtlcjsKKyAgICB2YV9zdGFydChtYXJrZXIsIHRpdGxlX2ZtdCk7CisgICAgcGpfcGVycm9yX2ltcCg2LCBzZW5kZXIsIHN0YXR1cywgdGl0bGVfZm10LCBtYXJrZXIpOworICAgIHZhX2VuZChtYXJrZXIpOworfQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9leGNlcHQuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9leGNlcHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzk4NGRmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2V4Y2VwdC5jCkBAIC0wLDAgKzEsMTg1IEBACisvKiAkSWQ6IGV4Y2VwdC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovZXhjZXB0Lmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorCitzdGF0aWMgbG9uZyB0aHJlYWRfbG9jYWxfaWQgPSAtMTsKKworI2lmIGRlZmluZWQoUEpfSEFTX0VYQ0VQVElPTl9OQU1FUykgJiYgUEpfSEFTX0VYQ0VQVElPTl9OQU1FUyAhPSAwCisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmV4Y2VwdGlvbl9pZF9uYW1lc1tQSl9NQVhfRVhDRVBUSU9OX0lEXTsKKyNlbHNlCisgICAgLyoKKyAgICAgKiBTdGFydCBmcm9tIDEgKG5vdCAwKSEhIQorICAgICAqIEV4Y2VwdGlvbiAwIGlzIHJlc2VydmVkIGZvciBub3JtYWwgcGF0aCBvZiBzZXRqbXAoKSEhIQorICAgICAqLworICAgIHN0YXRpYyBpbnQgbGFzdF9leGNlcHRpb25faWQgPSAxOworI2VuZGlmICAvKiBQSl9IQVNfRVhDRVBUSU9OX05BTUVTICovCisKKworI2lmICFkZWZpbmVkKFBKX0VYQ0VQVElPTl9VU0VfV0lOMzJfU0VIKSB8fCBQSl9FWENFUFRJT05fVVNFX1dJTjMyX1NFSD09MAorUEpfREVGKHZvaWQpIHBqX3Rocm93X2V4Y2VwdGlvbl8oaW50IGV4Y2VwdGlvbl9pZCkKK3sKKyAgICBzdHJ1Y3QgcGpfZXhjZXB0aW9uX3N0YXRlX3QgKmhhbmRsZXI7CisKKyAgICBoYW5kbGVyID0gKHN0cnVjdCBwal9leGNlcHRpb25fc3RhdGVfdCopIAorCSAgICAgIHBqX3RocmVhZF9sb2NhbF9nZXQodGhyZWFkX2xvY2FsX2lkKTsKKyAgICBpZiAoaGFuZGxlciA9PSBOVUxMKSB7CisgICAgICAgIFBKX0xPRygxLCgiZXhjZXB0LmMiLCAiISEhRkFUQUw6IHVuaGFuZGxlZCBleGNlcHRpb24gJXMhXG4iLCAKKwkJICAgcGpfZXhjZXB0aW9uX2lkX25hbWUoZXhjZXB0aW9uX2lkKSkpOworICAgICAgICBwal9hc3NlcnQoaGFuZGxlciAhPSBOVUxMKTsKKyAgICAgICAgLyogVGhpcyB3aWxsIGNyYXNoIHRoZSBzeXN0ZW0hICovCisgICAgfQorICAgIHBqX3BvcF9leGNlcHRpb25faGFuZGxlcl8oaGFuZGxlcik7CisgICAgcGpfbG9uZ2ptcChoYW5kbGVyLT5zdGF0ZSwgZXhjZXB0aW9uX2lkKTsKK30KKworc3RhdGljIHZvaWQgZXhjZXB0aW9uX2NsZWFudXAodm9pZCkKK3sKKyAgICBpZiAodGhyZWFkX2xvY2FsX2lkICE9IC0xKSB7CisJcGpfdGhyZWFkX2xvY2FsX2ZyZWUodGhyZWFkX2xvY2FsX2lkKTsKKwl0aHJlYWRfbG9jYWxfaWQgPSAtMTsKKyAgICB9CisKKyNpZiBkZWZpbmVkKFBKX0hBU19FWENFUFRJT05fTkFNRVMpICYmIFBKX0hBU19FWENFUFRJT05fTkFNRVMgIT0gMAorICAgIHsKKwl1bnNpZ25lZCBpOworCWZvciAoaT0wOyBpPFBKX01BWF9FWENFUFRJT05fSUQ7ICsraSkKKwkgICAgZXhjZXB0aW9uX2lkX25hbWVzW2ldID0gTlVMTDsKKyAgICB9CisjZWxzZQorICAgIGxhc3RfZXhjZXB0aW9uX2lkID0gMTsKKyNlbmRpZgorfQorCitQSl9ERUYodm9pZCkgcGpfcHVzaF9leGNlcHRpb25faGFuZGxlcl8oc3RydWN0IHBqX2V4Y2VwdGlvbl9zdGF0ZV90ICpyZWMpCit7CisgICAgc3RydWN0IHBqX2V4Y2VwdGlvbl9zdGF0ZV90ICpwYXJlbnRfaGFuZGxlciA9IE5VTEw7CisKKyAgICBpZiAodGhyZWFkX2xvY2FsX2lkID09IC0xKSB7CisJcGpfdGhyZWFkX2xvY2FsX2FsbG9jKCZ0aHJlYWRfbG9jYWxfaWQpOworCXBqX2Fzc2VydCh0aHJlYWRfbG9jYWxfaWQgIT0gLTEpOworCXBqX2F0ZXhpdCgmZXhjZXB0aW9uX2NsZWFudXApOworICAgIH0KKyAgICBwYXJlbnRfaGFuZGxlciA9IChzdHJ1Y3QgcGpfZXhjZXB0aW9uX3N0YXRlX3QgKikKKwkJICAgICAgcGpfdGhyZWFkX2xvY2FsX2dldCh0aHJlYWRfbG9jYWxfaWQpOworICAgIHJlYy0+cHJldiA9IHBhcmVudF9oYW5kbGVyOworICAgIHBqX3RocmVhZF9sb2NhbF9zZXQodGhyZWFkX2xvY2FsX2lkLCByZWMpOworfQorCitQSl9ERUYodm9pZCkgcGpfcG9wX2V4Y2VwdGlvbl9oYW5kbGVyXyhzdHJ1Y3QgcGpfZXhjZXB0aW9uX3N0YXRlX3QgKnJlYykKK3sKKyAgICBzdHJ1Y3QgcGpfZXhjZXB0aW9uX3N0YXRlX3QgKmhhbmRsZXI7CisKKyAgICBoYW5kbGVyID0gKHN0cnVjdCBwal9leGNlcHRpb25fc3RhdGVfdCAqKQorCSAgICAgIHBqX3RocmVhZF9sb2NhbF9nZXQodGhyZWFkX2xvY2FsX2lkKTsKKyAgICBpZiAoaGFuZGxlciAmJiBoYW5kbGVyPT1yZWMpIHsKKwlwal90aHJlYWRfbG9jYWxfc2V0KHRocmVhZF9sb2NhbF9pZCwgaGFuZGxlci0+cHJldik7CisgICAgfQorfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19FWENFUFRJT05fTkFNRVMpICYmIFBKX0hBU19FWENFUFRJT05fTkFNRVMgIT0gMAorUEpfREVGKHBqX3N0YXR1c190KSBwal9leGNlcHRpb25faWRfYWxsb2MoIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfZXhjZXB0aW9uX2lkX3QgKmlkKQoreworICAgIHVuc2lnbmVkIGk7CisKKyAgICBwal9lbnRlcl9jcml0aWNhbF9zZWN0aW9uKCk7CisKKyAgICAvKgorICAgICAqIFN0YXJ0IGZyb20gMSAobm90IDApISEhCisgICAgICogRXhjZXB0aW9uIDAgaXMgcmVzZXJ2ZWQgZm9yIG5vcm1hbCBwYXRoIG9mIHNldGptcCgpISEhCisgICAgICovCisgICAgZm9yIChpPTE7IGk8UEpfTUFYX0VYQ0VQVElPTl9JRDsgKytpKSB7CisgICAgICAgIGlmIChleGNlcHRpb25faWRfbmFtZXNbaV0gPT0gTlVMTCkgeworICAgICAgICAgICAgZXhjZXB0aW9uX2lkX25hbWVzW2ldID0gbmFtZTsKKyAgICAgICAgICAgICppZCA9IGk7CisgICAgICAgICAgICBwal9sZWF2ZV9jcml0aWNhbF9zZWN0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHBqX2xlYXZlX2NyaXRpY2FsX3NlY3Rpb24oKTsKKyAgICByZXR1cm4gUEpfRVRPT01BTlk7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZXhjZXB0aW9uX2lkX2ZyZWUoIHBqX2V4Y2VwdGlvbl9pZF90IGlkICkKK3sKKyAgICAvKgorICAgICAqIFN0YXJ0IGZyb20gMSAobm90IDApISEhCisgICAgICogRXhjZXB0aW9uIDAgaXMgcmVzZXJ2ZWQgZm9yIG5vcm1hbCBwYXRoIG9mIHNldGptcCgpISEhCisgICAgICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihpZD4wICYmIGlkPFBKX01BWF9FWENFUFRJT05fSUQsIFBKX0VJTlZBTCk7CisgICAgCisgICAgcGpfZW50ZXJfY3JpdGljYWxfc2VjdGlvbigpOworICAgIGV4Y2VwdGlvbl9pZF9uYW1lc1tpZF0gPSBOVUxMOworICAgIHBqX2xlYXZlX2NyaXRpY2FsX3NlY3Rpb24oKTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworCit9CisKK1BKX0RFRihjb25zdCBjaGFyKikgcGpfZXhjZXB0aW9uX2lkX25hbWUocGpfZXhjZXB0aW9uX2lkX3QgaWQpCit7CisgICAgc3RhdGljIGNoYXIgdW5rbm93bl9uYW1lWzMyXTsKKworICAgIC8qCisgICAgICogU3RhcnQgZnJvbSAxIChub3QgMCkhISEKKyAgICAgKiBFeGNlcHRpb24gMCBpcyByZXNlcnZlZCBmb3Igbm9ybWFsIHBhdGggb2Ygc2V0am1wKCkhISEKKyAgICAgKi8KKyAgICBQSl9BU1NFUlRfUkVUVVJOKGlkPjAgJiYgaWQ8UEpfTUFYX0VYQ0VQVElPTl9JRCwgIjxJbnZhbGlkIElEPiIpOworCisgICAgaWYgKGV4Y2VwdGlvbl9pZF9uYW1lc1tpZF0gPT0gTlVMTCkgeworICAgICAgICBwal9hbnNpX3NucHJpbnRmKHVua25vd25fbmFtZSwgc2l6ZW9mKHVua25vd25fbmFtZSksIAorCQkJICJleGNlcHRpb24gJWQiLCBpZCk7CisJcmV0dXJuIHVua25vd25fbmFtZTsKKyAgICB9CisKKyAgICByZXR1cm4gZXhjZXB0aW9uX2lkX25hbWVzW2lkXTsKK30KKworI2Vsc2UgICAvKiBQSl9IQVNfRVhDRVBUSU9OX05BTUVTICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2V4Y2VwdGlvbl9pZF9hbGxvYyggY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9leGNlcHRpb25faWRfdCAqaWQpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihsYXN0X2V4Y2VwdGlvbl9pZCA8IFBKX01BWF9FWENFUFRJT05fSUQtMSwgUEpfRVRPT01BTlkpOworCisgICAgKmlkID0gbGFzdF9leGNlcHRpb25faWQrKzsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9leGNlcHRpb25faWRfZnJlZSggcGpfZXhjZXB0aW9uX2lkX3QgaWQgKQoreworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYoY29uc3QgY2hhciopIHBqX2V4Y2VwdGlvbl9pZF9uYW1lKHBqX2V4Y2VwdGlvbl9pZF90IGlkKQoreworICAgIHJldHVybiAiIjsKK30KKworI2VuZGlmICAvKiBQSl9IQVNfRVhDRVBUSU9OX05BTUVTICovCisKKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZXhjZXB0aW9uX3N5bWJpYW4uY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2V4Y2VwdGlvbl9zeW1iaWFuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmRhZTRjCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2V4Y2VwdGlvbl9zeW1iaWFuLmNwcApAQCAtMCwwICsxLDExNiBAQAorLyogJElkOiBleGNlcHRpb25fc3ltYmlhbi5jcHAgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9leGNlcHQuaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisKKworI2lmIGRlZmluZWQoUEpfSEFTX0VYQ0VQVElPTl9OQU1FUykgJiYgUEpfSEFTX0VYQ0VQVElPTl9OQU1FUyAhPSAwCisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmV4Y2VwdGlvbl9pZF9uYW1lc1tQSl9NQVhfRVhDRVBUSU9OX0lEXTsKKyNlbHNlCisgICAgLyoKKyAgICAgKiBTdGFydCBmcm9tIDEgKG5vdCAwKSEhIQorICAgICAqIEV4Y2VwdGlvbiAwIGlzIHJlc2VydmVkIGZvciBub3JtYWwgcGF0aCBvZiBzZXRqbXAoKSEhIQorICAgICAqLworICAgIHN0YXRpYyBpbnQgbGFzdF9leGNlcHRpb25faWQgPSAxOworI2VuZGlmICAvKiBQSl9IQVNfRVhDRVBUSU9OX05BTUVTICovCisKKworI2lmIGRlZmluZWQoUEpfSEFTX0VYQ0VQVElPTl9OQU1FUykgJiYgUEpfSEFTX0VYQ0VQVElPTl9OQU1FUyAhPSAwCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2V4Y2VwdGlvbl9pZF9hbGxvYyggY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9leGNlcHRpb25faWRfdCAqaWQpCit7CisgICAgdW5zaWduZWQgaTsKKworICAgIHBqX2VudGVyX2NyaXRpY2FsX3NlY3Rpb24oKTsKKworICAgIC8qCisgICAgICogU3RhcnQgZnJvbSAxIChub3QgMCkhISEKKyAgICAgKiBFeGNlcHRpb24gMCBpcyByZXNlcnZlZCBmb3Igbm9ybWFsIHBhdGggb2Ygc2V0am1wKCkhISEKKyAgICAgKi8KKyAgICBmb3IgKGk9MTsgaTxQSl9NQVhfRVhDRVBUSU9OX0lEOyArK2kpIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbl9pZF9uYW1lc1tpXSA9PSBOVUxMKSB7CisgICAgICAgICAgICBleGNlcHRpb25faWRfbmFtZXNbaV0gPSBuYW1lOworICAgICAgICAgICAgKmlkID0gaTsKKyAgICAgICAgICAgIHBqX2xlYXZlX2NyaXRpY2FsX3NlY3Rpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBQSl9TVUNDRVNTOworICAgICAgICB9CisgICAgfQorCisgICAgcGpfbGVhdmVfY3JpdGljYWxfc2VjdGlvbigpOworICAgIHJldHVybiBQSl9FVE9PTUFOWTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9leGNlcHRpb25faWRfZnJlZSggcGpfZXhjZXB0aW9uX2lkX3QgaWQgKQoreworICAgIC8qCisgICAgICogU3RhcnQgZnJvbSAxIChub3QgMCkhISEKKyAgICAgKiBFeGNlcHRpb24gMCBpcyByZXNlcnZlZCBmb3Igbm9ybWFsIHBhdGggb2Ygc2V0am1wKCkhISEKKyAgICAgKi8KKyAgICBQSl9BU1NFUlRfUkVUVVJOKGlkPjAgJiYgaWQ8UEpfTUFYX0VYQ0VQVElPTl9JRCwgUEpfRUlOVkFMKTsKKyAgICAKKyAgICBwal9lbnRlcl9jcml0aWNhbF9zZWN0aW9uKCk7CisgICAgZXhjZXB0aW9uX2lkX25hbWVzW2lkXSA9IE5VTEw7CisgICAgcGpfbGVhdmVfY3JpdGljYWxfc2VjdGlvbigpOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisKK30KKworUEpfREVGKGNvbnN0IGNoYXIqKSBwal9leGNlcHRpb25faWRfbmFtZShwal9leGNlcHRpb25faWRfdCBpZCkKK3sKKyAgICAvKgorICAgICAqIFN0YXJ0IGZyb20gMSAobm90IDApISEhCisgICAgICogRXhjZXB0aW9uIDAgaXMgcmVzZXJ2ZWQgZm9yIG5vcm1hbCBwYXRoIG9mIHNldGptcCgpISEhCisgICAgICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihpZD4wICYmIGlkPFBKX01BWF9FWENFUFRJT05fSUQsICI8SW52YWxpZCBJRD4iKTsKKworICAgIGlmIChleGNlcHRpb25faWRfbmFtZXNbaWRdID09IE5VTEwpCisgICAgICAgIHJldHVybiAiPFVuYWxsb2NhdGVkIElEPiI7CisKKyAgICByZXR1cm4gZXhjZXB0aW9uX2lkX25hbWVzW2lkXTsKK30KKworI2Vsc2UgICAvKiBQSl9IQVNfRVhDRVBUSU9OX05BTUVTICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2V4Y2VwdGlvbl9pZF9hbGxvYyggY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9leGNlcHRpb25faWRfdCAqaWQpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihsYXN0X2V4Y2VwdGlvbl9pZCA8IFBKX01BWF9FWENFUFRJT05fSUQtMSwgUEpfRVRPT01BTlkpOworCisgICAgKmlkID0gbGFzdF9leGNlcHRpb25faWQrKzsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9leGNlcHRpb25faWRfZnJlZSggcGpfZXhjZXB0aW9uX2lkX3QgaWQgKQoreworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYoY29uc3QgY2hhciopIHBqX2V4Y2VwdGlvbl9pZF9uYW1lKHBqX2V4Y2VwdGlvbl9pZF90IGlkKQoreworICAgIHJldHVybiAiIjsKK30KKworI2VuZGlmICAvKiBQSl9IQVNfRVhDRVBUSU9OX05BTUVTICovCisKKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZXh0cmEtZXhwb3J0cy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2V4dHJhLWV4cG9ydHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2Q1ZTVlCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2V4dHJhLWV4cG9ydHMuYwpAQCAtMCwwICsxLDQxIEBACisvKiAkSWQ6IGV4dHJhLWV4cG9ydHMuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3N5c2NhbGxzLmg+CisKK0VYUE9SVF9TWU1CT0woc3lzX3NlbGVjdCk7CisKK0VYUE9SVF9TWU1CT0woc3lzX2Vwb2xsX2NyZWF0ZSk7CitFWFBPUlRfU1lNQk9MKHN5c19lcG9sbF9jdGwpOworRVhQT1JUX1NZTUJPTChzeXNfZXBvbGxfd2FpdCk7CisKK0VYUE9SVF9TWU1CT0woc3lzX3NvY2tldCk7CitFWFBPUlRfU1lNQk9MKHN5c19iaW5kKTsKK0VYUE9SVF9TWU1CT0woc3lzX2dldHBlZXJuYW1lKTsKK0VYUE9SVF9TWU1CT0woc3lzX2dldHNvY2tuYW1lKTsKK0VYUE9SVF9TWU1CT0woc3lzX3NlbmR0byk7CitFWFBPUlRfU1lNQk9MKHN5c19yZWN2ZnJvbSk7CitFWFBPUlRfU1lNQk9MKHN5c19nZXRzb2Nrb3B0KTsKK0VYUE9SVF9TWU1CT0woc3lzX3NldHNvY2tvcHQpOworRVhQT1JUX1NZTUJPTChzeXNfbGlzdGVuKTsKK0VYUE9SVF9TWU1CT0woc3lzX3NodXRkb3duKTsKK0VYUE9SVF9TWU1CT0woc3lzX2Nvbm5lY3QpOworRVhQT1JUX1NZTUJPTChzeXNfYWNjZXB0KTsKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2ZpZm9idWYuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9maWZvYnVmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJmNjZjYwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9maWZvYnVmLmMKQEAgLTAsMCArMSwxODkgQEAKKy8qICRJZDogZmlmb2J1Zi5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2ZpZm9idWYuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorCisjZGVmaW5lIFRISVNfRklMRSAgICJmaWZvYnVmIgorCisjZGVmaW5lIFNaICBzaXplb2YodW5zaWduZWQpCisKK1BKX0RFRih2b2lkKSBwal9maWZvYnVmX2luaXQgKHBqX2ZpZm9idWZfdCAqZmlmb2J1Ziwgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBzaXplKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBQSl9MT0coNiwgKFRISVNfRklMRSwgCisJICAgICAgICJmaWZvYnVmX2luaXQgZmlmb2J1Zj0lcCBidWZmZXI9JXAsIHNpemU9JWQiLCAKKwkgICAgICAgZmlmb2J1ZiwgYnVmZmVyLCBzaXplKSk7CisKKyAgICBmaWZvYnVmLT5maXJzdCA9IChjaGFyKilidWZmZXI7CisgICAgZmlmb2J1Zi0+bGFzdCA9IGZpZm9idWYtPmZpcnN0ICsgc2l6ZTsKKyAgICBmaWZvYnVmLT51YmVnaW4gPSBmaWZvYnVmLT51ZW5kID0gZmlmb2J1Zi0+Zmlyc3Q7CisgICAgZmlmb2J1Zi0+ZnVsbCA9IDA7Cit9CisKK1BKX0RFRih1bnNpZ25lZCkgcGpfZmlmb2J1Zl9tYXhfc2l6ZSAocGpfZmlmb2J1Zl90ICpmaWZvYnVmKQoreworICAgIHVuc2lnbmVkIHMxLCBzMjsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBpZiAoZmlmb2J1Zi0+dWVuZCA+PSBmaWZvYnVmLT51YmVnaW4pIHsKKwlzMSA9ICh1bnNpZ25lZCkoZmlmb2J1Zi0+bGFzdCAtIGZpZm9idWYtPnVlbmQpOworCXMyID0gKHVuc2lnbmVkKShmaWZvYnVmLT51YmVnaW4gLSBmaWZvYnVmLT5maXJzdCk7CisgICAgfSBlbHNlIHsKKwlzMSA9IHMyID0gKHVuc2lnbmVkKShmaWZvYnVmLT51YmVnaW4gLSBmaWZvYnVmLT51ZW5kKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHMxPHMyID8gczIgOiBzMTsKK30KKworUEpfREVGKHZvaWQqKSBwal9maWZvYnVmX2FsbG9jIChwal9maWZvYnVmX3QgKmZpZm9idWYsIHVuc2lnbmVkIHNpemUpCit7CisgICAgdW5zaWduZWQgYXZhaWxhYmxlOworICAgIGNoYXIgKnN0YXJ0OworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGlmIChmaWZvYnVmLT5mdWxsKSB7CisJUEpfTE9HKDYsIChUSElTX0ZJTEUsIAorCQkgICAiZmlmb2J1Zl9hbGxvYyBmaWZvYnVmPSVwLCBzaXplPSVkOiBmdWxsISIsIAorCQkgICBmaWZvYnVmLCBzaXplKSk7CisJcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogdHJ5IHRvIGFsbG9jYXRlIGZyb20gdGhlIGVuZCBwYXJ0IG9mIHRoZSBmaWZvICovCisgICAgaWYgKGZpZm9idWYtPnVlbmQgPj0gZmlmb2J1Zi0+dWJlZ2luKSB7CisJYXZhaWxhYmxlID0gKHVuc2lnbmVkKShmaWZvYnVmLT5sYXN0IC0gZmlmb2J1Zi0+dWVuZCk7CisJaWYgKGF2YWlsYWJsZSA+PSBzaXplK1NaKSB7CisJICAgIGNoYXIgKnB0ciA9IGZpZm9idWYtPnVlbmQ7CisJICAgIGZpZm9idWYtPnVlbmQgKz0gKHNpemUrU1opOworCSAgICBpZiAoZmlmb2J1Zi0+dWVuZCA9PSBmaWZvYnVmLT5sYXN0KQorCQlmaWZvYnVmLT51ZW5kID0gZmlmb2J1Zi0+Zmlyc3Q7CisJICAgIGlmIChmaWZvYnVmLT51ZW5kID09IGZpZm9idWYtPnViZWdpbikKKwkJZmlmb2J1Zi0+ZnVsbCA9IDE7CisJICAgICoodW5zaWduZWQqKXB0ciA9IHNpemUrU1o7CisJICAgIHB0ciArPSBTWjsKKworCSAgICBQSl9MT0coNiwgKFRISVNfRklMRSwgCisJCSAgICAgICAiZmlmb2J1Zl9hbGxvYyBmaWZvYnVmPSVwLCBzaXplPSVkOiByZXR1cm5pbmcgJXAsIHAxPSVwLCBwMj0lcCIsIAorCQkgICAgICAgZmlmb2J1Ziwgc2l6ZSwgcHRyLCBmaWZvYnVmLT51YmVnaW4sIGZpZm9idWYtPnVlbmQpKTsKKwkgICAgcmV0dXJuIHB0cjsKKwl9CisgICAgfQorCisgICAgLyogdHJ5IHRvIGFsbG9jYXRlIGZyb20gdGhlIHN0YXJ0IHBhcnQgb2YgdGhlIGZpZm8gKi8KKyAgICBzdGFydCA9IChmaWZvYnVmLT51ZW5kIDw9IGZpZm9idWYtPnViZWdpbikgPyBmaWZvYnVmLT51ZW5kIDogZmlmb2J1Zi0+Zmlyc3Q7CisgICAgYXZhaWxhYmxlID0gKHVuc2lnbmVkKShmaWZvYnVmLT51YmVnaW4gLSBzdGFydCk7CisgICAgaWYgKGF2YWlsYWJsZSA+PSBzaXplK1NaKSB7CisJY2hhciAqcHRyID0gc3RhcnQ7CisJZmlmb2J1Zi0+dWVuZCA9IHN0YXJ0ICsgc2l6ZSArIFNaOworCWlmIChmaWZvYnVmLT51ZW5kID09IGZpZm9idWYtPnViZWdpbikKKwkgICAgZmlmb2J1Zi0+ZnVsbCA9IDE7CisJKih1bnNpZ25lZCopcHRyID0gc2l6ZStTWjsKKwlwdHIgKz0gU1o7CisKKwlQSl9MT0coNiwgKFRISVNfRklMRSwgCisJCSAgICJmaWZvYnVmX2FsbG9jIGZpZm9idWY9JXAsIHNpemU9JWQ6IHJldHVybmluZyAlcCwgcDE9JXAsIHAyPSVwIiwgCisJCSAgIGZpZm9idWYsIHNpemUsIHB0ciwgZmlmb2J1Zi0+dWJlZ2luLCBmaWZvYnVmLT51ZW5kKSk7CisJcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBQSl9MT0coNiwgKFRISVNfRklMRSwgCisJICAgICAgICJmaWZvYnVmX2FsbG9jIGZpZm9idWY9JXAsIHNpemU9JWQ6IG5vIHNwYWNlIGxlZnQhIHAxPSVwLCBwMj0lcCIsIAorCSAgICAgICBmaWZvYnVmLCBzaXplLCBmaWZvYnVmLT51YmVnaW4sIGZpZm9idWYtPnVlbmQpKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9maWZvYnVmX3VuYWxsb2MgKHBqX2ZpZm9idWZfdCAqZmlmb2J1Ziwgdm9pZCAqYnVmKQoreworICAgIGNoYXIgKnB0ciA9IChjaGFyKilidWY7CisgICAgY2hhciAqZW5kcHRyOworICAgIHVuc2lnbmVkIHN6OworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIHB0ciAtPSBTWjsKKyAgICBzeiA9ICoodW5zaWduZWQqKXB0cjsKKworICAgIGVuZHB0ciA9IGZpZm9idWYtPnVlbmQ7CisgICAgaWYgKGVuZHB0ciA9PSBmaWZvYnVmLT5maXJzdCkKKwllbmRwdHIgPSBmaWZvYnVmLT5sYXN0OworCisgICAgaWYgKHB0citzeiAhPSBlbmRwdHIpIHsKKwlwal9hc3NlcnQoISJJbnZhbGlkIHBvaW50ZXIgdG8gdW5kbyBhbGxvYyIpOworCXJldHVybiAtMTsKKyAgICB9CisKKyAgICBmaWZvYnVmLT51ZW5kID0gcHRyOworICAgIGZpZm9idWYtPmZ1bGwgPSAwOworCisgICAgUEpfTE9HKDYsIChUSElTX0ZJTEUsIAorCSAgICAgICAiZmlmb2J1Zl91bmFsbG9jIGZpZm9idWY9JXAsIHB0cj0lcCwgc2l6ZT0lZCwgcDE9JXAsIHAyPSVwIiwgCisJICAgICAgIGZpZm9idWYsIGJ1Ziwgc3osIGZpZm9idWYtPnViZWdpbiwgZmlmb2J1Zi0+dWVuZCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZmlmb2J1Zl9mcmVlIChwal9maWZvYnVmX3QgKmZpZm9idWYsIHZvaWQgKmJ1ZikKK3sKKyAgICBjaGFyICpwdHIgPSAoY2hhciopYnVmOworICAgIGNoYXIgKmVuZDsKKyAgICB1bnNpZ25lZCBzejsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBwdHIgLT0gU1o7CisgICAgaWYgKHB0ciA8IGZpZm9idWYtPmZpcnN0IHx8IHB0ciA+PSBmaWZvYnVmLT5sYXN0KSB7CisJcGpfYXNzZXJ0KCEiSW52YWxpZCBwb2ludGVyIHRvIGZyZWUiKTsKKwlyZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHB0ciAhPSBmaWZvYnVmLT51YmVnaW4gJiYgcHRyICE9IGZpZm9idWYtPmZpcnN0KSB7CisJcGpfYXNzZXJ0KCEiSW52YWxpZCBmcmVlKCkgc2VxdWVuY2UhIik7CisJcmV0dXJuIC0xOworICAgIH0KKworICAgIGVuZCA9IChmaWZvYnVmLT51ZW5kID4gZmlmb2J1Zi0+dWJlZ2luKSA/IGZpZm9idWYtPnVlbmQgOiBmaWZvYnVmLT5sYXN0OworICAgIHN6ID0gKih1bnNpZ25lZCopcHRyOworICAgIGlmIChwdHIrc3ogPiBlbmQpIHsKKwlwal9hc3NlcnQoISJJbnZhbGlkIHNpemUhIik7CisJcmV0dXJuIC0xOworICAgIH0KKworICAgIGZpZm9idWYtPnViZWdpbiA9IHB0ciArIHN6OworCisgICAgLyogUm9sbG92ZXIgKi8KKyAgICBpZiAoZmlmb2J1Zi0+dWJlZ2luID09IGZpZm9idWYtPmxhc3QpCisJZmlmb2J1Zi0+dWJlZ2luID0gZmlmb2J1Zi0+Zmlyc3Q7CisKKyAgICAvKiBSZXNldCBpZiBmaWZvYnVmIGlzIGVtcHR5ICovCisgICAgaWYgKGZpZm9idWYtPnViZWdpbiA9PSBmaWZvYnVmLT51ZW5kKQorCWZpZm9idWYtPnViZWdpbiA9IGZpZm9idWYtPnVlbmQgPSBmaWZvYnVmLT5maXJzdDsKKworICAgIGZpZm9idWYtPmZ1bGwgPSAwOworCisgICAgUEpfTE9HKDYsIChUSElTX0ZJTEUsIAorCSAgICAgICAiZmlmb2J1Zl9mcmVlIGZpZm9idWY9JXAsIHB0cj0lcCwgc2l6ZT0lZCwgcDE9JXAsIHAyPSVwIiwgCisJICAgICAgIGZpZm9idWYsIGJ1Ziwgc3osIGZpZm9idWYtPnViZWdpbiwgZmlmb2J1Zi0+dWVuZCkpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZmlsZV9hY2Nlc3NfdW5pc3RkLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZmlsZV9hY2Nlc3NfdW5pc3RkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4YTNiYwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9maWxlX2FjY2Vzc191bmlzdGQuYwpAQCAtMCwwICsxLDExNCBAQAorLyogJElkOiBmaWxlX2FjY2Vzc191bmlzdGQuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2ZpbGVfYWNjZXNzLmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4JLyogcmVuYW1lKCkgKi8KKyNpbmNsdWRlIDxlcnJuby5oPgorCisvKgorICogcGpfZmlsZV9leGlzdHMoKQorICovCitQSl9ERUYocGpfYm9vbF90KSBwal9maWxlX2V4aXN0cyhjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKyAgICBzdHJ1Y3Qgc3RhdCBidWY7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGZpbGVuYW1lLCAwKTsKKworICAgIGlmIChzdGF0KGZpbGVuYW1lLCAmYnVmKSAhPSAwKQorCXJldHVybiAwOworCisgICAgcmV0dXJuIFBKX1RSVUU7Cit9CisKKworLyoKKyAqIHBqX2ZpbGVfc2l6ZSgpCisgKi8KK1BKX0RFRihwal9vZmZfdCkgcGpfZmlsZV9zaXplKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQoreworICAgIHN0cnVjdCBzdGF0IGJ1ZjsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oZmlsZW5hbWUsIC0xKTsKKworICAgIGlmIChzdGF0KGZpbGVuYW1lLCAmYnVmKSAhPSAwKQorCXJldHVybiAtMTsKKworICAgIHJldHVybiBidWYuc3Rfc2l6ZTsKK30KKworCisvKgorICogcGpfZmlsZV9kZWxldGUoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2ZpbGVfZGVsZXRlKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4oZmlsZW5hbWUsIFBKX0VJTlZBTCk7CisKKyAgICBpZiAodW5saW5rKGZpbGVuYW1lKSE9MCkgeworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoZXJybm8pOworICAgIH0KKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogcGpfZmlsZV9tb3ZlKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9maWxlX21vdmUoIGNvbnN0IGNoYXIgKm9sZG5hbWUsIGNvbnN0IGNoYXIgKm5ld25hbWUpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihvbGRuYW1lICYmIG5ld25hbWUsIFBKX0VJTlZBTCk7CisKKyAgICBpZiAocmVuYW1lKG9sZG5hbWUsIG5ld25hbWUpICE9IDApIHsKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKGVycm5vKTsKKyAgICB9CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworLyoKKyAqIHBqX2ZpbGVfZ2V0c3RhdCgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZmlsZV9nZXRzdGF0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCAKKwkJCQkgICAgcGpfZmlsZV9zdGF0ICpzdGF0YnVmKQoreworICAgIHN0cnVjdCBzdGF0IGJ1ZjsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oZmlsZW5hbWUgJiYgc3RhdGJ1ZiwgUEpfRUlOVkFMKTsKKworICAgIGlmIChzdGF0KGZpbGVuYW1lLCAmYnVmKSAhPSAwKSB7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihlcnJubyk7CisgICAgfQorCisgICAgc3RhdGJ1Zi0+c2l6ZSA9IGJ1Zi5zdF9zaXplOworICAgIHN0YXRidWYtPmN0aW1lLnNlYyA9IGJ1Zi5zdF9jdGltZTsKKyAgICBzdGF0YnVmLT5jdGltZS5tc2VjID0gMDsKKyAgICBzdGF0YnVmLT5tdGltZS5zZWMgPSBidWYuc3RfbXRpbWU7CisgICAgc3RhdGJ1Zi0+bXRpbWUubXNlYyA9IDA7CisgICAgc3RhdGJ1Zi0+YXRpbWUuc2VjID0gYnVmLnN0X2F0aW1lOworICAgIHN0YXRidWYtPmF0aW1lLm1zZWMgPSAwOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9maWxlX2FjY2Vzc193aW4zMi5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2ZpbGVfYWNjZXNzX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTczN2ZmZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9maWxlX2FjY2Vzc193aW4zMi5jCkBAIC0wLDAgKzEsMjE1IEBACisvKiAkSWQ6IGZpbGVfYWNjZXNzX3dpbjMyLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9maWxlX2FjY2Vzcy5oPgorI2luY2x1ZGUgPHBqL3VuaWNvZGUuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworI2lmIGRlZmluZWQoUEpfV0lOMzJfV0lOQ0UpICYmIFBKX1dJTjMyX1dJTkNFIT0wCisgICAgLyogV2luQ0UgbGFja3MgUkVBRF9DT05UUk9MIHNvIHdlIG11c3QgdXNlIEdFTkVSSUNfUkVBRCAqLworIyAgIGRlZmluZSBDT05UUk9MX0FDQ0VTUyAgIEdFTkVSSUNfUkVBRAorI2Vsc2UKKyMgICBkZWZpbmUgQ09OVFJPTF9BQ0NFU1MgICBSRUFEX0NPTlRST0wKKyNlbmRpZgorCisKKy8qCisgKiBwal9maWxlX2V4aXN0cygpCisgKi8KK1BKX0RFRihwal9ib29sX3QpIHBqX2ZpbGVfZXhpc3RzKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQoreworICAgIFBKX0RFQ0xfVU5JQ09ERV9URU1QX0JVRih3ZmlsZW5hbWUsMjU2KQorICAgIEhBTkRMRSBoRmlsZTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oZmlsZW5hbWUgIT0gTlVMTCwgMCk7CisKKyAgICBoRmlsZSA9IENyZWF0ZUZpbGUoUEpfU1RSSU5HX1RPX05BVElWRShmaWxlbmFtZSx3ZmlsZW5hbWUsc2l6ZW9mKHdmaWxlbmFtZSkpLCAKKwkJICAgICAgIENPTlRST0xfQUNDRVNTLCAKKwkJICAgICAgIEZJTEVfU0hBUkVfUkVBRCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgT1BFTl9FWElTVElORywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCBOVUxMKTsKKyAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiAwOworCisgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOworICAgIHJldHVybiBQSl9UUlVFOworfQorCisKKy8qCisgKiBwal9maWxlX3NpemUoKQorICovCitQSl9ERUYocGpfb2ZmX3QpIHBqX2ZpbGVfc2l6ZShjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKyAgICBQSl9ERUNMX1VOSUNPREVfVEVNUF9CVUYod2ZpbGVuYW1lLDI1NikKKyAgICBIQU5ETEUgaEZpbGU7CisgICAgRFdPUkQgc2l6ZUxvLCBzaXplSGk7CisgICAgcGpfb2ZmX3Qgc2l6ZTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oZmlsZW5hbWUgIT0gTlVMTCwgLTEpOworCisgICAgaEZpbGUgPSBDcmVhdGVGaWxlKFBKX1NUUklOR19UT19OQVRJVkUoZmlsZW5hbWUsIHdmaWxlbmFtZSxzaXplb2Yod2ZpbGVuYW1lKSksIAorCQkgICAgICAgQ09OVFJPTF9BQ0NFU1MsIAorICAgICAgICAgICAgICAgICAgICAgICBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NIQVJFX1dSSVRFLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIE5VTEwpOworICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgc2l6ZUxvID0gR2V0RmlsZVNpemUoaEZpbGUsICZzaXplSGkpOworICAgIGlmIChzaXplTG8gPT0gSU5WQUxJRF9GSUxFX1NJWkUpIHsKKyAgICAgICAgRFdPUkQgZHdTdGF0dXMgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGR3U3RhdHVzICE9IE5PX0VSUk9SKSB7CisgICAgICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzaXplID0gc2l6ZUhpOworICAgIHNpemUgPSAoc2l6ZSA8PCAzMikgKyBzaXplTG87CisKKyAgICBDbG9zZUhhbmRsZShoRmlsZSk7CisgICAgcmV0dXJuIHNpemU7Cit9CisKKworLyoKKyAqIHBqX2ZpbGVfZGVsZXRlKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9maWxlX2RlbGV0ZShjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKyAgICBQSl9ERUNMX1VOSUNPREVfVEVNUF9CVUYod2ZpbGVuYW1lLDI1NikKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oZmlsZW5hbWUgIT0gTlVMTCwgUEpfRUlOVkFMKTsKKworICAgIGlmIChEZWxldGVGaWxlKFBKX1NUUklOR19UT19OQVRJVkUoZmlsZW5hbWUsd2ZpbGVuYW1lLHNpemVvZih3ZmlsZW5hbWUpKSkgPT0gRkFMU0UpCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworLyoKKyAqIHBqX2ZpbGVfbW92ZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZmlsZV9tb3ZlKCBjb25zdCBjaGFyICpvbGRuYW1lLCBjb25zdCBjaGFyICpuZXduYW1lKQoreworICAgIFBKX0RFQ0xfVU5JQ09ERV9URU1QX0JVRih3b2xkbmFtZSwyNTYpCisgICAgUEpfREVDTF9VTklDT0RFX1RFTVBfQlVGKHduZXduYW1lLDI1NikKKyAgICBCT09MIHJjOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihvbGRuYW1lIT1OVUxMICYmIG5ld25hbWUhPU5VTEwsIFBKX0VJTlZBTCk7CisKKyNpZiBQSl9XSU4zMl9XSU5OVCA+PSAweDA0MDAKKyAgICByYyA9IE1vdmVGaWxlRXgoUEpfU1RSSU5HX1RPX05BVElWRShvbGRuYW1lLHdvbGRuYW1lLHNpemVvZih3b2xkbmFtZSkpLCAKKwkJICAgIFBKX1NUUklOR19UT19OQVRJVkUobmV3bmFtZSx3bmV3bmFtZSxzaXplb2Yod25ld25hbWUpKSwgCisgICAgICAgICAgICAgICAgICAgIE1PVkVGSUxFX0NPUFlfQUxMT1dFRHxNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKKyNlbHNlCisgICAgcmMgPSBNb3ZlRmlsZShQSl9TVFJJTkdfVE9fTkFUSVZFKG9sZG5hbWUsd29sZG5hbWUsc2l6ZW9mKHdvbGRuYW1lKSksIAorCQkgIFBKX1NUUklOR19UT19OQVRJVkUobmV3bmFtZSx3bmV3bmFtZSxzaXplb2Yod25ld25hbWUpKSk7CisjZW5kaWYKKworICAgIGlmICghcmMpCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworc3RhdGljIHBqX3N0YXR1c190IGZpbGVfdGltZV90b190aW1lX3ZhbChjb25zdCBGSUxFVElNRSAqZmlsZV90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aW1lX3ZhbCAqdGltZV92YWwpCit7CisgICAgRklMRVRJTUUgbG9jYWxfZmlsZV90aW1lOworICAgIFNZU1RFTVRJTUUgbG9jYWxUaW1lOworICAgIHBqX3BhcnNlZF90aW1lIHB0OworCisgICAgaWYgKCFGaWxlVGltZVRvTG9jYWxGaWxlVGltZShmaWxlX3RpbWUsICZsb2NhbF9maWxlX3RpbWUpKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgaWYgKCFGaWxlVGltZVRvU3lzdGVtVGltZShmaWxlX3RpbWUsICZsb2NhbFRpbWUpKQorICAgICAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKEdldExhc3RFcnJvcigpKTsKKworICAgIC8vaWYgKCFTeXN0ZW1UaW1lVG9UelNwZWNpZmljTG9jYWxUaW1lKE5VTEwsICZzeXN0ZW1UaW1lLCAmbG9jYWxUaW1lKSkKKyAgICAvLyAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKEdldExhc3RFcnJvcigpKTsKKworICAgIHBqX2J6ZXJvKCZwdCwgc2l6ZW9mKHB0KSk7CisgICAgcHQueWVhciA9IGxvY2FsVGltZS53WWVhcjsKKyAgICBwdC5tb24gPSBsb2NhbFRpbWUud01vbnRoLTE7CisgICAgcHQuZGF5ID0gbG9jYWxUaW1lLndEYXk7CisgICAgcHQud2RheSA9IGxvY2FsVGltZS53RGF5T2ZXZWVrOworCisgICAgcHQuaG91ciA9IGxvY2FsVGltZS53SG91cjsKKyAgICBwdC5taW4gPSBsb2NhbFRpbWUud01pbnV0ZTsKKyAgICBwdC5zZWMgPSBsb2NhbFRpbWUud1NlY29uZDsKKyAgICBwdC5tc2VjID0gbG9jYWxUaW1lLndNaWxsaXNlY29uZHM7CisKKyAgICByZXR1cm4gcGpfdGltZV9lbmNvZGUoJnB0LCB0aW1lX3ZhbCk7Cit9CisKKy8qCisgKiBwal9maWxlX2dldHN0YXQoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2ZpbGVfZ2V0c3RhdChjb25zdCBjaGFyICpmaWxlbmFtZSwgcGpfZmlsZV9zdGF0ICpzdGF0KQoreworICAgIFBKX0RFQ0xfVU5JQ09ERV9URU1QX0JVRih3ZmlsZW5hbWUsMjU2KQorICAgIEhBTkRMRSBoRmlsZTsKKyAgICBEV09SRCBzaXplTG8sIHNpemVIaTsKKyAgICBGSUxFVElNRSBjcmVhdGlvblRpbWUsIGFjY2Vzc1RpbWUsIHdyaXRlVGltZTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oZmlsZW5hbWUhPU5VTEwgJiYgc3RhdCE9TlVMTCwgUEpfRUlOVkFMKTsKKworICAgIGhGaWxlID0gQ3JlYXRlRmlsZShQSl9TVFJJTkdfVE9fTkFUSVZFKGZpbGVuYW1lLHdmaWxlbmFtZSxzaXplb2Yod2ZpbGVuYW1lKSksIAorCQkgICAgICAgQ09OVFJPTF9BQ0NFU1MsIAorCQkgICAgICAgRklMRV9TSEFSRV9SRUFELCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIE5VTEwpOworICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICBzaXplTG8gPSBHZXRGaWxlU2l6ZShoRmlsZSwgJnNpemVIaSk7CisgICAgaWYgKHNpemVMbyA9PSBJTlZBTElEX0ZJTEVfU0laRSkgeworICAgICAgICBEV09SRCBkd1N0YXR1cyA9IEdldExhc3RFcnJvcigpOworICAgICAgICBpZiAoZHdTdGF0dXMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKKyAgICAgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoZHdTdGF0dXMpOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdC0+c2l6ZSA9IHNpemVIaTsKKyAgICBzdGF0LT5zaXplID0gKHN0YXQtPnNpemUgPDwgMzIpICsgc2l6ZUxvOworCisgICAgaWYgKEdldEZpbGVUaW1lKGhGaWxlLCAmY3JlYXRpb25UaW1lLCAmYWNjZXNzVGltZSwgJndyaXRlVGltZSk9PUZBTFNFKSB7CisgICAgICAgIERXT1JEIGR3U3RhdHVzID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihkd1N0YXR1cyk7CisgICAgfQorCisgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOworCisgICAgaWYgKGZpbGVfdGltZV90b190aW1lX3ZhbCgmY3JlYXRpb25UaW1lLCAmc3RhdC0+Y3RpbWUpICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgZmlsZV90aW1lX3RvX3RpbWVfdmFsKCZhY2Nlc3NUaW1lLCAmc3RhdC0+YXRpbWUpOworICAgIGZpbGVfdGltZV90b190aW1lX3ZhbCgmd3JpdGVUaW1lLCAmc3RhdC0+bXRpbWUpOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9maWxlX2lvX2Fuc2kuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9maWxlX2lvX2Fuc2kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODdkNDk2Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2ZpbGVfaW9fYW5zaS5jCkBAIC0wLDAgKzEsMTcwIEBACisvKiAkSWQ6IGZpbGVfaW9fYW5zaS5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovZmlsZV9pby5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2ZpbGVfb3BlbiggcGpfcG9vbF90ICpwb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9vc2hhbmRsZV90ICpmZCkKK3sKKyAgICBjaGFyIG1vZGVbOF07CisgICAgY2hhciAqcCA9IG1vZGU7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBhdGhuYW1lICYmIGZkLCBQSl9FSU5WQUwpOworICAgIFBKX1VOVVNFRF9BUkcocG9vbCk7CisKKyAgICBpZiAoKGZsYWdzICYgUEpfT19BUFBFTkQpID09IFBKX09fQVBQRU5EKSB7CisgICAgICAgIGlmICgoZmxhZ3MgJiBQSl9PX1dST05MWSkgPT0gUEpfT19XUk9OTFkpIHsKKyAgICAgICAgICAgICpwKysgPSAnYSc7CisgICAgICAgICAgICBpZiAoKGZsYWdzICYgUEpfT19SRE9OTFkpID09IFBKX09fUkRPTkxZKQorICAgICAgICAgICAgICAgICpwKysgPSAnKyc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBUaGlzIGlzIGludmFsaWQuCisgICAgICAgICAgICAgKiBDYW4gbm90IHNwZWNpZnkgUEpfT19SRE9OTFkgd2l0aCBQSl9PX0FQUEVORCEgCisgICAgICAgICAgICAgKi8KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgoZmxhZ3MgJiBQSl9PX1JET05MWSkgPT0gUEpfT19SRE9OTFkpIHsKKyAgICAgICAgICAgICpwKysgPSAncic7CisgICAgICAgICAgICBpZiAoKGZsYWdzICYgUEpfT19XUk9OTFkpID09IFBKX09fV1JPTkxZKQorICAgICAgICAgICAgICAgICpwKysgPSAnKyc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gJ3cnOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHA9PW1vZGUpCisgICAgICAgIHJldHVybiBQSl9FSU5WQUw7CisKKyAgICAqcCsrID0gJ2InOworICAgICpwKysgPSAnXDAnOworCisgICAgKmZkID0gZm9wZW4ocGF0aG5hbWUsIG1vZGUpOworICAgIGlmICgqZmQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihlcnJubyk7CisgICAgCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZmlsZV9jbG9zZShwal9vc2hhbmRsZV90IGZkKQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4oZmQsIFBKX0VJTlZBTCk7CisgICAgaWYgKGZjbG9zZSgoRklMRSopZmQpICE9IDApCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoZXJybm8pOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZmlsZV93cml0ZSggcGpfb3NoYW5kbGVfdCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCAqc2l6ZSkKK3sKKyAgICBzaXplX3Qgd3JpdHRlbjsKKworICAgIGNsZWFyZXJyKChGSUxFKilmZCk7CisgICAgd3JpdHRlbiA9IGZ3cml0ZShkYXRhLCAxLCAqc2l6ZSwgKEZJTEUqKWZkKTsKKyAgICBpZiAoZmVycm9yKChGSUxFKilmZCkpIHsKKyAgICAgICAgKnNpemUgPSAtMTsKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihlcnJubyk7CisgICAgfQorCisgICAgKnNpemUgPSB3cml0dGVuOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2ZpbGVfcmVhZCggcGpfb3NoYW5kbGVfdCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NzaXplX3QgKnNpemUpCit7CisgICAgc2l6ZV90IGJ5dGVzOworCisgICAgY2xlYXJlcnIoKEZJTEUqKWZkKTsKKyAgICBieXRlcyA9IGZyZWFkKGRhdGEsIDEsICpzaXplLCAoRklMRSopZmQpOworICAgIGlmIChmZXJyb3IoKEZJTEUqKWZkKSkgeworICAgICAgICAqc2l6ZSA9IC0xOworICAgICAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKGVycm5vKTsKKyAgICB9CisKKyAgICAqc2l6ZSA9IGJ5dGVzOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorUEpfREVGKHBqX2Jvb2xfdCkgcGpfZmlsZV9lb2YocGpfb3NoYW5kbGVfdCBmZCwgZW51bSBwal9maWxlX2FjY2VzcyBhY2Nlc3MpCit7CisgICAgUEpfVU5VU0VEX0FSRyhhY2Nlc3MpOworICAgIHJldHVybiBmZW9mKChGSUxFKilmZCkgPyBQSl9UUlVFIDogMDsKK30KKyovCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZmlsZV9zZXRwb3MoIHBqX29zaGFuZGxlX3QgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9vZmZfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBqX2ZpbGVfc2Vla190eXBlIHdoZW5jZSkKK3sKKyAgICBpbnQgbW9kZTsKKworICAgIHN3aXRjaCAod2hlbmNlKSB7CisgICAgY2FzZSBQSl9TRUVLX1NFVDoKKyAgICAgICAgbW9kZSA9IFNFRUtfU0VUOyBicmVhazsKKyAgICBjYXNlIFBKX1NFRUtfQ1VSOgorICAgICAgICBtb2RlID0gU0VFS19DVVI7IGJyZWFrOworICAgIGNhc2UgUEpfU0VFS19FTkQ6CisgICAgICAgIG1vZGUgPSBTRUVLX0VORDsgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcGpfYXNzZXJ0KCEiSW52YWxpZCB3aGVuY2UgaW4gZmlsZV9zZXRwb3MiKTsKKyAgICAgICAgcmV0dXJuIFBKX0VJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoZnNlZWsoKEZJTEUqKWZkLCAobG9uZylvZmZzZXQsIG1vZGUpICE9IDApCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoZXJybm8pOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZmlsZV9nZXRwb3MoIHBqX29zaGFuZGxlX3QgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9vZmZfdCAqcG9zKQoreworICAgIGxvbmcgb2Zmc2V0OworCisgICAgb2Zmc2V0ID0gZnRlbGwoKEZJTEUqKWZkKTsKKyAgICBpZiAob2Zmc2V0ID09IC0xKSB7CisgICAgICAgICpwb3MgPSAtMTsKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihlcnJubyk7CisgICAgfQorCisgICAgKnBvcyA9IG9mZnNldDsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9maWxlX2ZsdXNoKHBqX29zaGFuZGxlX3QgZmQpCit7CisgICAgaW50IHJjOworCisgICAgcmMgPSBmZmx1c2goKEZJTEUqKWZkKTsKKyAgICBpZiAocmMgPT0gRU9GKSB7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihlcnJubyk7CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZmlsZV9pb193aW4zMi5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2ZpbGVfaW9fd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjcyZTRkCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2ZpbGVfaW9fd2luMzIuYwpAQCAtMCwwICsxLDI0MCBAQAorLyogJElkOiBmaWxlX2lvX3dpbjMyLmMgNDUzNyAyMDEzLTA2LTE5IDA2OjQ3OjQzWiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovZmlsZV9pby5oPgorI2luY2x1ZGUgPHBqL3VuaWNvZGUuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorCisjaWZuZGVmIElOVkFMSURfU0VUX0ZJTEVfUE9JTlRFUgorIyAgIGRlZmluZSBJTlZBTElEX1NFVF9GSUxFX1BPSU5URVIgICAgICgoRFdPUkQpLTEpCisjZW5kaWYKKworLyoqCisgKiBDaGVjayBmb3IgZW5kLW9mLWZpbGUgY29uZGl0aW9uIG9uIHRoZSBzcGVjaWZpZWQgZGVzY3JpcHRvci4KKyAqCisgKiBAcGFyYW0gZmQgICAgICAgICAgICBUaGUgZmlsZSBkZXNjcmlwdG9yLgorICogQHBhcmFtIGFjY2VzcyAgICAgICAgVGhlIGRlc2lyZWQgYWNjZXNzLgorICoKKyAqIEByZXR1cm4gICAgICAgICAgICAgIE5vbi16ZXJvIGlmIGZpbGUgaXMgRU9GLgorICovCitQSl9ERUNMKHBqX2Jvb2xfdCkgcGpfZmlsZV9lb2YocGpfb3NoYW5kbGVfdCBmZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwal9maWxlX2FjY2VzcyBhY2Nlc3MpOworCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZmlsZV9vcGVuKCBwal9wb29sX3QgKnBvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX29zaGFuZGxlX3QgKmZkKQoreworICAgIFBKX0RFQ0xfVU5JQ09ERV9URU1QX0JVRih3cGF0aG5hbWUsMjU2KQorICAgIEhBTkRMRSBoRmlsZTsKKyAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3MgPSAwOworICAgIERXT1JEIGR3U2hhcmVNb2RlID0gMDsKKyAgICBEV09SRCBkd0NyZWF0aW9uRGlzcG9zaXRpb24gPSAwOworICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzID0gMDsKKworICAgIFBKX1VOVVNFRF9BUkcocG9vbCk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBhdGhuYW1lIT1OVUxMLCBQSl9FSU5WQUwpOworCisgICAgaWYgKChmbGFncyAmIFBKX09fV1JPTkxZKSA9PSBQSl9PX1dST05MWSkgeworICAgICAgICBkd0Rlc2lyZWRBY2Nlc3MgfD0gR0VORVJJQ19XUklURTsKKyAgICAgICAgaWYgKChmbGFncyAmIFBKX09fQVBQRU5EKSA9PSBQSl9PX0FQUEVORCkgeworI2lmICFkZWZpbmVkKFBKX1dJTjMyX1dJTkNFKSB8fCAhUEpfV0lOMzJfV0lOQ0UKKwkgICAgLyogRklMRV9BUFBFTkRfREFUQSBpcyBpbnZhbGlkIG9uIFdNMjAwMyBhbmQgV001LCBidXQgaXQgc2VlbXMKKwkgICAgICogdG8gYmUgd29ya2luZyBvbiBXTTYuIEFsbCBhcmUgdGVzdGVkIG9uIGVtdWxhdG9yIHRob3VnaC4KKwkgICAgICogUmVtb3ZpbmcgdGhpcyBhbHNvIHNlZW0gdG8gd29yayAoaS5lLiBkYXRhIGlzIGFwcGVuZGVkKSwgc28KKwkgICAgICogSSBndWVzcyB0aGlzIGZsYWcgaXMgIm9wdGlvbmFsIi4KKwkgICAgICogU2VlIGh0dHA6Ly90cmFjLnBqc2lwLm9yZy9yZXBvcy90aWNrZXQvODI1CisJICAgICAqLworICAgICAgICAgICAgZHdEZXNpcmVkQWNjZXNzIHw9IEZJTEVfQVBQRU5EX0RBVEE7CisjZW5kaWYKKwkgICAgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uIHw9IE9QRU5fQUxXQVlTOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZHdEZXNpcmVkQWNjZXNzICY9IH4oRklMRV9BUFBFTkRfREFUQSk7CisgICAgICAgICAgICBkd0NyZWF0aW9uRGlzcG9zaXRpb24gfD0gQ1JFQVRFX0FMV0FZUzsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoKGZsYWdzICYgUEpfT19SRE9OTFkpID09IFBKX09fUkRPTkxZKSB7CisgICAgICAgIGR3RGVzaXJlZEFjY2VzcyB8PSBHRU5FUklDX1JFQUQ7CisgICAgICAgIGlmIChmbGFncyA9PSBQSl9PX1JET05MWSkKKyAgICAgICAgICAgIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiB8PSBPUEVOX0VYSVNUSU5HOworICAgIH0KKworICAgIGlmIChkd0Rlc2lyZWRBY2Nlc3MgPT0gMCkgeworICAgICAgICBwal9hc3NlcnQoISJJbnZhbGlkIGZpbGUgb3BlbiBmbGFncyIpOworICAgICAgICByZXR1cm4gUEpfRUlOVkFMOworICAgIH0KKworICAgIGR3U2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEIHwgRklMRV9TSEFSRV9XUklURTsKKyAgICBkd0ZsYWdzQW5kQXR0cmlidXRlcyA9IEZJTEVfQVRUUklCVVRFX05PUk1BTDsKKworICAgIGhGaWxlID0gQ3JlYXRlRmlsZShQSl9TVFJJTkdfVE9fTkFUSVZFKHBhdGhuYW1lLHdwYXRobmFtZSxzaXplb2Yod3BhdGhuYW1lKSksIAorCQkgICAgICAgZHdEZXNpcmVkQWNjZXNzLCBkd1NoYXJlTW9kZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLCBkd0ZsYWdzQW5kQXR0cmlidXRlcywgTlVMTCk7CisgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgICpmZCA9IDA7CisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworICAgIH0KKworICAgIGlmICgoZmxhZ3MgJiBQSl9PX0FQUEVORCkgPT0gUEpfT19BUFBFTkQpIHsKKwlwal9zdGF0dXNfdCBzdGF0dXM7CisKKwlzdGF0dXMgPSBwal9maWxlX3NldHBvcyhoRmlsZSwgMCwgUEpfU0VFS19FTkQpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBwal9maWxlX2Nsb3NlKGhGaWxlKTsKKwkgICAgcmV0dXJuIHN0YXR1czsKKwl9CisgICAgfQorCisgICAgKmZkID0gaEZpbGU7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZmlsZV9jbG9zZShwal9vc2hhbmRsZV90IGZkKQoreworICAgIGlmIChDbG9zZUhhbmRsZShmZCk9PTApCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2ZpbGVfd3JpdGUoIHBqX29zaGFuZGxlX3QgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NzaXplX3QgKnNpemUpCit7CisgICAgQk9PTCByYzsKKyAgICBEV09SRCBieXRlc1dyaXR0ZW47CisKKyAgICByYyA9IFdyaXRlRmlsZShmZCwgZGF0YSwgKERXT1JEKSpzaXplLCAmYnl0ZXNXcml0dGVuLCBOVUxMKTsKKyAgICBpZiAoIXJjKSB7CisgICAgICAgICpzaXplID0gLTE7CisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworICAgIH0KKworICAgICpzaXplID0gYnl0ZXNXcml0dGVuOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2ZpbGVfcmVhZCggcGpfb3NoYW5kbGVfdCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NzaXplX3QgKnNpemUpCit7CisgICAgQk9PTCByYzsKKyAgICBEV09SRCBieXRlc1JlYWQ7CisKKyAgICByYyA9IFJlYWRGaWxlKGZkLCBkYXRhLCAoRFdPUkQpKnNpemUsICZieXRlc1JlYWQsIE5VTEwpOworICAgIGlmICghcmMpIHsKKyAgICAgICAgKnNpemUgPSAtMTsKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7CisgICAgfQorCisgICAgKnNpemUgPSBieXRlc1JlYWQ7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCitQSl9ERUYocGpfYm9vbF90KSBwal9maWxlX2VvZihwal9vc2hhbmRsZV90IGZkLCBlbnVtIHBqX2ZpbGVfYWNjZXNzIGFjY2VzcykKK3sKKyAgICBCT09MIHJjOworICAgIERXT1JEIGR1bW15ID0gMCwgYnl0ZXM7CisgICAgRFdPUkQgZHdTdGF0dXM7CisKKyAgICBpZiAoKGFjY2VzcyAmIFBKX09fUkRPTkxZKSA9PSBQSl9PX1JET05MWSkgeworICAgICAgICByYyA9IFJlYWRGaWxlKGZkLCAmZHVtbXksIDAsICZieXRlcywgTlVMTCk7CisgICAgfSBlbHNlIGlmICgoYWNjZXNzICYgUEpfT19XUk9OTFkpID09IFBKX09fV1JPTkxZKSB7CisgICAgICAgIHJjID0gV3JpdGVGaWxlKGZkLCAmZHVtbXksIDAsICZieXRlcywgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGpfYXNzZXJ0KCEiSW52YWxpZCBhY2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuIFBKX1RSVUU7CisgICAgfQorCisgICAgZHdTdGF0dXMgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICBpZiAoZHdTdGF0dXM9PUVSUk9SX0hBTkRMRV9FT0YpCisgICAgICAgIHJldHVybiBQSl9UUlVFOworCisgICAgcmV0dXJuIDA7Cit9CisqLworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2ZpbGVfc2V0cG9zKCBwal9vc2hhbmRsZV90IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfb2ZmX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwal9maWxlX3NlZWtfdHlwZSB3aGVuY2UpCit7CisgICAgRFdPUkQgZHdNb3ZlTWV0aG9kOworICAgIERXT1JEIGR3TmV3UG9zOworICAgIExPTkcgIGhpMzI7CisKKyAgICBpZiAod2hlbmNlID09IFBKX1NFRUtfU0VUKQorICAgICAgICBkd01vdmVNZXRob2QgPSBGSUxFX0JFR0lOOworICAgIGVsc2UgaWYgKHdoZW5jZSA9PSBQSl9TRUVLX0NVUikKKyAgICAgICAgZHdNb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5UOworICAgIGVsc2UgaWYgKHdoZW5jZSA9PSBQSl9TRUVLX0VORCkKKyAgICAgICAgZHdNb3ZlTWV0aG9kID0gRklMRV9FTkQ7CisgICAgZWxzZSB7CisgICAgICAgIHBqX2Fzc2VydCghIkludmFsaWQgd2hlbmNlIGluIGZpbGVfc2V0cG9zIik7CisgICAgICAgIHJldHVybiBQSl9FSU5WQUw7CisgICAgfQorCisgICAgaGkzMiA9IChMT05HKShvZmZzZXQgPj4gMzIpOworICAgIGR3TmV3UG9zID0gU2V0RmlsZVBvaW50ZXIoZmQsIChsb25nKW9mZnNldCwgJmhpMzIsIGR3TW92ZU1ldGhvZCk7CisgICAgaWYgKGR3TmV3UG9zID09IChEV09SRClJTlZBTElEX1NFVF9GSUxFX1BPSU5URVIpIHsKKyAgICAgICAgRFdPUkQgZHdTdGF0dXMgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGR3U3RhdHVzICE9IDApCisgICAgICAgICAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKGR3U3RhdHVzKTsKKyAgICAgICAgLyogZHdOZXdQb3MgYWN0dWFsbHkgaXMgbm90IGFuIGVycm9yLiAqLworICAgIH0KKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2ZpbGVfZ2V0cG9zKCBwal9vc2hhbmRsZV90IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfb2ZmX3QgKnBvcykKK3sKKyAgICBMT05HIGhpMzIgPSAwOworICAgIERXT1JEIGxvMzI7CisKKyAgICBsbzMyID0gU2V0RmlsZVBvaW50ZXIoZmQsIDAsICZoaTMyLCBGSUxFX0NVUlJFTlQpOworICAgIGlmIChsbzMyID09IChEV09SRClJTlZBTElEX1NFVF9GSUxFX1BPSU5URVIpIHsKKyAgICAgICAgRFdPUkQgZHdTdGF0dXMgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGR3U3RhdHVzICE9IDApCisgICAgICAgICAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKGR3U3RhdHVzKTsKKyAgICB9CisKKyAgICAqcG9zID0gaGkzMjsKKyAgICAqcG9zID0gKCpwb3MgPDwgMzIpICsgbG8zMjsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9maWxlX2ZsdXNoKHBqX29zaGFuZGxlX3QgZmQpCit7CisgICAgQk9PTCByYzsKKworICAgIHJjID0gRmx1c2hGaWxlQnVmZmVycyhmZCk7CisKKyAgICBpZiAoIXJjKSB7CisJRFdPUkQgZHdTdGF0dXMgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGR3U3RhdHVzICE9IDApCisgICAgICAgICAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKGR3U3RhdHVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9ndWlkLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZ3VpZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YjZjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZ3VpZC5jCkBAIC0wLDAgKzEsNDggQEAKKy8qICRJZDogZ3VpZC5jIDQyMDggMjAxMi0wNy0xOCAwNzo1MjozM1ogbWluZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2N0eXBlLmg+CisjaW5jbHVkZSA8cGovZ3VpZC5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKworUEpfREVGKHBqX3N0cl90KikgcGpfZ2VuZXJhdGVfdW5pcXVlX3N0cmluZ19sb3dlcihwal9zdHJfdCAqc3RyKQoreworICAgIGludCBpOworCisgICAgcGpfZ2VuZXJhdGVfdW5pcXVlX3N0cmluZyhzdHIpOworICAgIGZvciAoaSA9IDA7IGkgPCBzdHItPnNsZW47IGkrKykKKwlzdHItPnB0cltpXSA9IChjaGFyKXBqX3RvbG93ZXIoc3RyLT5wdHJbaV0pOworCisgICAgcmV0dXJuIHN0cjsKK30KKworUEpfREVGKHZvaWQpIHBqX2NyZWF0ZV91bmlxdWVfc3RyaW5nKHBqX3Bvb2xfdCAqcG9vbCwgcGpfc3RyX3QgKnN0cikKK3sKKyAgICBzdHItPnB0ciA9IChjaGFyKilwal9wb29sX2FsbG9jKHBvb2wsIFBKX0dVSURfU1RSSU5HX0xFTkdUSCk7CisgICAgcGpfZ2VuZXJhdGVfdW5pcXVlX3N0cmluZyhzdHIpOworfQorCitQSl9ERUYodm9pZCkgcGpfY3JlYXRlX3VuaXF1ZV9zdHJpbmdfbG93ZXIocGpfcG9vbF90ICpwb29sLCBwal9zdHJfdCAqc3RyKQoreworICAgIGludCBpOworCisgICAgcGpfY3JlYXRlX3VuaXF1ZV9zdHJpbmcocG9vbCwgc3RyKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc3RyLT5zbGVuOyBpKyspCisJc3RyLT5wdHJbaV0gPSAoY2hhcilwal90b2xvd2VyKHN0ci0+cHRyW2ldKTsKK30KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9ndWlkX3NpbXBsZS5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2d1aWRfc2ltcGxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJmOGFlOQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9ndWlkX3NpbXBsZS5jCkBAIC0wLDAgKzEsODEgQEAKKy8qICRJZDogZ3VpZF9zaW1wbGUuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2d1aWQuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9yYW5kLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKworUEpfREVGX0RBVEEoY29uc3QgdW5zaWduZWQpIFBKX0dVSURfU1RSSU5HX0xFTkdUSD0zMjsKKworc3RhdGljIGNoYXIgZ3VpZF9jaGFyc1s2NF07CisKK1BKX0RFRih1bnNpZ25lZCkgcGpfR1VJRF9TVFJJTkdfTEVOR1RIKCkKK3sKKyAgICByZXR1cm4gUEpfR1VJRF9TVFJJTkdfTEVOR1RIOworfQorCitzdGF0aWMgdm9pZCBpbml0X2d1aWRfY2hhcnModm9pZCkKK3sKKyAgICBjaGFyICpwID0gZ3VpZF9jaGFyczsKKyAgICB1bnNpZ25lZCBpOworCisgICAgZm9yIChpPTA7IGk8MTA7ICsraSkKKwkqcCsrID0gJzAnK2k7CisKKyAgICBmb3IgKGk9MDsgaTwyNjsgKytpKSB7CisJKnArKyA9ICdhJytpOworCSpwKysgPSAnQScraTsKKyAgICB9CisKKyAgICAqcCsrID0gJy0nOworICAgICpwKysgPSAnLic7Cit9CisKK1BKX0RFRihwal9zdHJfdCopIHBqX2dlbmVyYXRlX3VuaXF1ZV9zdHJpbmcocGpfc3RyX3QgKnN0cikKK3sKKyAgICBjaGFyICpwLCAqZW5kOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGlmIChndWlkX2NoYXJzWzBdID09ICdcMCcpIHsKKwlwal9lbnRlcl9jcml0aWNhbF9zZWN0aW9uKCk7CisJaWYgKGd1aWRfY2hhcnNbMF0gPT0gJ1wwJykgeworCSAgICBpbml0X2d1aWRfY2hhcnMoKTsKKwl9CisJcGpfbGVhdmVfY3JpdGljYWxfc2VjdGlvbigpOworICAgIH0KKworICAgIC8qIFRoaXMgd291bGQgb25seSB3b3JrIGlmIFBKX0dVSURfU1RSSU5HX0xFTkdUSCBpcyBtdWx0aXBsZSBvZiAyIGJ5dGVzICovCisgICAgcGpfYXNzZXJ0KFBKX0dVSURfU1RSSU5HX0xFTkdUSCAlIDIgPT0gMCk7CisKKyAgICBmb3IgKHA9c3RyLT5wdHIsIGVuZD1wK1BKX0dVSURfU1RSSU5HX0xFTkdUSDsgcDxlbmQ7ICkgeworCXBqX3VpbnQzMl90IHJhbmRfdmFsID0gcGpfcmFuZCgpOworCXBqX3VpbnQzMl90IHJhbmRfaWR4ID0gUkFORF9NQVg7CisKKwlmb3IgKCA7IHJhbmRfaWR4PjAgJiYgcDxlbmQ7IHJhbmRfaWR4Pj49OCwgcmFuZF92YWw+Pj04LCBwKyspIHsKKwkgICAgKnAgPSBndWlkX2NoYXJzWyhyYW5kX3ZhbCAmIDB4RkYpICYgNjNdOworCX0KKyAgICB9CisKKyAgICBzdHItPnNsZW4gPSBQSl9HVUlEX1NUUklOR19MRU5HVEg7CisgICAgcmV0dXJuIHN0cjsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2d1aWRfdXVpZC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2d1aWRfdXVpZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NTBiZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovZ3VpZF91dWlkLmMKQEAgLTAsMCArMSw1MyBAQAorLyogJElkOiBndWlkX3V1aWQuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2d1aWQuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisKKyNpbmNsdWRlIDx1dWlkL3V1aWQuaD4KKworUEpfREVGX0RBVEEoY29uc3QgdW5zaWduZWQpIFBKX0dVSURfU1RSSU5HX0xFTkdUSD0zNjsKKworUEpfREVGKHVuc2lnbmVkKSBwal9HVUlEX1NUUklOR19MRU5HVEgoKQoreworICAgIHJldHVybiBQSl9HVUlEX1NUUklOR19MRU5HVEg7Cit9CisKK1BKX0RFRihwal9zdHJfdCopIHBqX2dlbmVyYXRlX3VuaXF1ZV9zdHJpbmcocGpfc3RyX3QgKnN0cikKK3sKKyAgICBlbnVtIHtHVUlEX0xFTiA9IDM2fTsKKyAgICBjaGFyIHNndWlkW0dVSURfTEVOICsgMV07CisgICAgdXVpZF90IHV1aWQgPSB7MH07CisgICAgCisgICAgUEpfQVNTRVJUX1JFVFVSTihHVUlEX0xFTiA8PSBQSl9HVUlEX1NUUklOR19MRU5HVEgsIE5VTEwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc3RyLT5wdHIgIT0gTlVMTCwgTlVMTCk7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICAKKyAgICB1dWlkX2dlbmVyYXRlKHV1aWQpOworICAgIHV1aWRfdW5wYXJzZSh1dWlkLCBzZ3VpZCk7CisgICAgCisgICAgcGpfbWVtY3B5KHN0ci0+cHRyLCBzZ3VpZCwgR1VJRF9MRU4pOworICAgIHN0ci0+c2xlbiA9IEdVSURfTEVOOworCisgICAgcmV0dXJuIHN0cjsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2d1aWRfd2luMzIuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9ndWlkX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQwZmNhZAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9ndWlkX3dpbjMyLmMKQEAgLTAsMCArMSw3MiBAQAorLyogJElkOiBndWlkX3dpbjMyLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9ndWlkLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovc29jay5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxvYmpiYXNlLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKworCitQSl9ERUZfREFUQShjb25zdCB1bnNpZ25lZCkgUEpfR1VJRF9TVFJJTkdfTEVOR1RIPTMyOworCitQSl9ERUYodW5zaWduZWQpIHBqX0dVSURfU1RSSU5HX0xFTkdUSCgpCit7CisgICAgcmV0dXJuIFBKX0dVSURfU1RSSU5HX0xFTkdUSDsKK30KKworUEpfSU5MSU5FKHZvaWQpIGhleDJkaWdpdCh1bnNpZ25lZCB2YWx1ZSwgY2hhciAqcCkKK3sKKyAgICBzdGF0aWMgY2hhciBoZXhbXSA9IHsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywKKwkJCSAnOCcsICc5JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJyB9OworICAgICpwKysgPSBoZXhbICh2YWx1ZSAmIDB4RjApID4+IDQgXTsKKyAgICAqcCsrID0gaGV4WyAodmFsdWUgJiAweDBGKSBdOworfQorCitzdGF0aWMgdm9pZCBndWlkX3RvX3N0ciggR1VJRCAqZ3VpZCwgcGpfc3RyX3QgKnN0ciApCit7CisgICAgdW5zaWduZWQgaTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzcmMgPSAoY29uc3QgdW5zaWduZWQgY2hhciopZ3VpZDsKKyAgICBjaGFyICpkc3QgPSBzdHItPnB0cjsKKworICAgIGd1aWQtPkRhdGExID0gcGpfbnRvaGwoZ3VpZC0+RGF0YTEpOworICAgIGd1aWQtPkRhdGEyID0gcGpfbnRvaHMoZ3VpZC0+RGF0YTIpOworICAgIGd1aWQtPkRhdGEzID0gcGpfbnRvaHMoZ3VpZC0+RGF0YTMpOworCisgICAgZm9yIChpPTA7IGk8MTY7ICsraSkgeworCWhleDJkaWdpdCggKnNyYywgZHN0ICk7CisJZHN0ICs9IDI7CisJKytzcmM7CisgICAgfQorICAgIHN0ci0+c2xlbiA9IDMyOworfQorCisKK1BKX0RFRihwal9zdHJfdCopIHBqX2dlbmVyYXRlX3VuaXF1ZV9zdHJpbmcocGpfc3RyX3QgKnN0cikKK3sKKyAgICBHVUlEIGd1aWQ7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgQ29DcmVhdGVHdWlkKCZndWlkKTsKKyAgICBndWlkX3RvX3N0ciggJmd1aWQsIHN0ciApOworICAgIHJldHVybiBzdHI7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9oYXNoLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovaGFzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNThmYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovaGFzaC5jCkBAIC0wLDAgKzEsMzc4IEBACisvKiAkSWQ6IGhhc2guYyA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9oYXNoLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovcG9vbC5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovY3R5cGUuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKworLyoqCisgKiBUaGUgaGFzaCBtdWx0aXBsaWVyIHVzZWQgdG8gY2FsY3VsYXRlIGhhc2ggdmFsdWUuCisgKi8KKyNkZWZpbmUgUEpfSEFTSF9NVUxUSVBMSUVSCTMzCisKKworc3RydWN0IHBqX2hhc2hfZW50cnkKK3sKKyAgICBzdHJ1Y3QgcGpfaGFzaF9lbnRyeSAqbmV4dDsKKyAgICB2b2lkICprZXk7CisgICAgcGpfdWludDMyX3QgaGFzaDsKKyAgICBwal91aW50MzJfdCBrZXlsZW47CisgICAgdm9pZCAqdmFsdWU7Cit9OworCisKK3N0cnVjdCBwal9oYXNoX3RhYmxlX3QKK3sKKyAgICBwal9oYXNoX2VudHJ5ICAgICAqKnRhYmxlOworICAgIHVuc2lnbmVkCQljb3VudCwgcm93czsKKyAgICBwal9oYXNoX2l0ZXJhdG9yX3QJaXRlcmF0b3I7Cit9OworCisKKworUEpfREVGKHBqX3VpbnQzMl90KSBwal9oYXNoX2NhbGMocGpfdWludDMyX3QgaGFzaCwgY29uc3Qgdm9pZCAqa2V5LCAKKwkJCQkgdW5zaWduZWQga2V5bGVuKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBpZiAoa2V5bGVuPT1QSl9IQVNIX0tFWV9TVFJJTkcpIHsKKwljb25zdCBwal91aW50OF90ICpwID0gKGNvbnN0IHBqX3VpbnQ4X3QqKWtleTsKKwlmb3IgKCA7ICpwOyArK3AgKSB7CisJICAgIGhhc2ggPSAoaGFzaCAqIFBKX0hBU0hfTVVMVElQTElFUikgKyAqcDsKKwl9CisgICAgfSBlbHNlIHsKKwljb25zdCBwal91aW50OF90ICpwID0gKGNvbnN0IHBqX3VpbnQ4X3QqKWtleSwKKwkJCSAgICAgICplbmQgPSBwICsga2V5bGVuOworCWZvciAoIDsgcCE9ZW5kOyArK3ApIHsKKwkgICAgaGFzaCA9IChoYXNoICogUEpfSEFTSF9NVUxUSVBMSUVSKSArICpwOworCX0KKyAgICB9CisgICAgcmV0dXJuIGhhc2g7Cit9CisKK1BKX0RFRihwal91aW50MzJfdCkgcGpfaGFzaF9jYWxjX3RvbG93ZXIoIHBqX3VpbnQzMl90IGh2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwal9zdHJfdCAqa2V5KQoreworICAgIGxvbmcgaTsKKworI2lmIGRlZmluZWQoUEpfSEFTSF9VU0VfT1dOX1RPTE9XRVIpICYmIFBKX0hBU0hfVVNFX09XTl9UT0xPV0VSICE9IDAKKyAgICBmb3IgKGk9MDsgaTxrZXktPnNsZW47ICsraSkgeworCXBqX3VpbnQ4X3QgYyA9IGtleS0+cHRyW2ldOworICAgICAgICBjaGFyIGxvd2VyOworCWlmIChjICYgNjQpCisJICAgIGxvd2VyID0gKGNoYXIpKGMgfCAzMik7CisJZWxzZQorCSAgICBsb3dlciA9IChjaGFyKWM7CisJaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJlc3VsdFtpXSA9IGxvd2VyOworCWh2YWwgPSBodmFsICogUEpfSEFTSF9NVUxUSVBMSUVSICsgbG93ZXI7CisgICAgfQorI2Vsc2UKKyAgICBmb3IgKGk9MDsgaTxrZXktPnNsZW47ICsraSkgeworICAgICAgICBjaGFyIGxvd2VyID0gKGNoYXIpcGpfdG9sb3dlcihrZXktPnB0cltpXSk7CisJaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJlc3VsdFtpXSA9IGxvd2VyOworCWh2YWwgPSBodmFsICogUEpfSEFTSF9NVUxUSVBMSUVSICsgbG93ZXI7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gaHZhbDsKK30KKworCitQSl9ERUYocGpfaGFzaF90YWJsZV90KikgcGpfaGFzaF9jcmVhdGUocGpfcG9vbF90ICpwb29sLCB1bnNpZ25lZCBzaXplKQoreworICAgIHBqX2hhc2hfdGFibGVfdCAqaDsKKyAgICB1bnNpZ25lZCB0YWJsZV9zaXplOworICAgIAorICAgIC8qIENoZWNrIHRoYXQgUEpfSEFTSF9FTlRSWV9CVUZfU0laRSBpcyBjb3JyZWN0LiAqLworICAgIFBKX0FTU0VSVF9SRVRVUk4oc2l6ZW9mKHBqX2hhc2hfZW50cnkpPD1QSl9IQVNIX0VOVFJZX0JVRl9TSVpFLCBOVUxMKTsKKworICAgIGggPSBQSl9QT09MX0FMTE9DX1QocG9vbCwgcGpfaGFzaF90YWJsZV90KTsKKyAgICBoLT5jb3VudCA9IDA7CisKKyAgICBQSl9MT0coIDYsICgiaGFzaHRibCIsICJoYXNoIHRhYmxlICVwIGNyZWF0ZWQgZnJvbSBwb29sICVzIiwgaCwgcGpfcG9vbF9nZXRvYmpuYW1lKHBvb2wpKSk7CisKKyAgICAvKiBzaXplIG11c3QgYmUgMl5uIC0gMS4KKyAgICAgICByb3VuZC11cCB0aGUgc2l6ZSB0byB0aGlzIHJ1bGUsIGV4Y2VwdCB3aGVuIHNpemUgaXMgMl5uLCB0aGVuIHNpemUKKyAgICAgICB3aWxsIGJlIHJvdW5kLWRvd24gdG8gMl5uLTEuCisgICAgICovCisgICAgdGFibGVfc2l6ZSA9IDg7CisgICAgZG8geworCXRhYmxlX3NpemUgPDw9IDE7ICAgIAorICAgIH0gd2hpbGUgKHRhYmxlX3NpemUgPCBzaXplKTsKKyAgICB0YWJsZV9zaXplIC09IDE7CisgICAgCisgICAgaC0+cm93cyA9IHRhYmxlX3NpemU7CisgICAgaC0+dGFibGUgPSAocGpfaGFzaF9lbnRyeSoqKQorICAgIAkgICAgICAgcGpfcG9vbF9jYWxsb2MocG9vbCwgdGFibGVfc2l6ZSsxLCBzaXplb2YocGpfaGFzaF9lbnRyeSopKTsKKyAgICByZXR1cm4gaDsKK30KKworc3RhdGljIHBqX2hhc2hfZW50cnkgKipmaW5kX2VudHJ5KCBwal9wb29sX3QgKnBvb2wsIHBqX2hhc2hfdGFibGVfdCAqaHQsIAorCQkJCSAgIGNvbnN0IHZvaWQgKmtleSwgdW5zaWduZWQga2V5bGVuLAorCQkJCSAgIHZvaWQgKnZhbCwgcGpfdWludDMyX3QgKmh2YWwsCisJCQkJICAgdm9pZCAqZW50cnlfYnVmLCBwal9ib29sX3QgbG93ZXIpCit7CisgICAgcGpfdWludDMyX3QgaGFzaDsKKyAgICBwal9oYXNoX2VudHJ5ICoqcF9lbnRyeSwgKmVudHJ5OworCisgICAgaWYgKGh2YWwgJiYgKmh2YWwgIT0gMCkgeworCWhhc2ggPSAqaHZhbDsKKwlpZiAoa2V5bGVuPT1QSl9IQVNIX0tFWV9TVFJJTkcpIHsKKwkgICAga2V5bGVuID0gKHVuc2lnbmVkKXBqX2Fuc2lfc3RybGVuKChjb25zdCBjaGFyKilrZXkpOworCX0KKyAgICB9IGVsc2UgeworCS8qIFRoaXMgc2xpZ2h0bHkgZGlmZmVycyB3aXRoIHBqX2hhc2hfY2FsYygpIGJlY2F1c2Ugd2UgbmVlZCAKKwkgKiB0byBnZXQgdGhlIGtleWxlbiB3aGVuIGtleWxlbiBpcyBQSl9IQVNIX0tFWV9TVFJJTkcuCisJICovCisJaGFzaD0wOworCWlmIChrZXlsZW49PVBKX0hBU0hfS0VZX1NUUklORykgeworCSAgICBjb25zdCBwal91aW50OF90ICpwID0gKGNvbnN0IHBqX3VpbnQ4X3QqKWtleTsKKwkgICAgZm9yICggOyAqcDsgKytwICkgeworICAgICAgICAgICAgICAgIGlmIChsb3dlcikKKyAgICAgICAgICAgICAgICAgICAgaGFzaCA9IGhhc2ggKiBQSl9IQVNIX01VTFRJUExJRVIgKyBwal90b2xvd2VyKCpwKTsKKyAgICAgICAgICAgICAgICBlbHNlIAorCQkgICAgaGFzaCA9IGhhc2ggKiBQSl9IQVNIX01VTFRJUExJRVIgKyAqcDsKKwkgICAgfQorCSAgICBrZXlsZW4gPSAodW5zaWduZWQpKHAgLSAoY29uc3QgdW5zaWduZWQgY2hhciopa2V5KTsKKwl9IGVsc2UgeworCSAgICBjb25zdCBwal91aW50OF90ICpwID0gKGNvbnN0IHBqX3VpbnQ4X3QqKWtleSwKKwkJCQkgICplbmQgPSBwICsga2V5bGVuOworCSAgICBmb3IgKCA7IHAhPWVuZDsgKytwKSB7CisJCWlmIChsb3dlcikKKyAgICAgICAgICAgICAgICAgICAgaGFzaCA9IGhhc2ggKiBQSl9IQVNIX01VTFRJUExJRVIgKyBwal90b2xvd2VyKCpwKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGhhc2ggPSBoYXNoICogUEpfSEFTSF9NVUxUSVBMSUVSICsgKnA7CisJICAgIH0KKwl9CisKKwkvKiBSZXBvcnQgYmFjayB0aGUgY29tcHV0ZWQgaGFzaC4gKi8KKwlpZiAoaHZhbCkKKwkgICAgKmh2YWwgPSBoYXNoOworICAgIH0KKworICAgIC8qIHNjYW4gdGhlIGxpbmtlZCBsaXN0ICovCisgICAgZm9yIChwX2VudHJ5ID0gJmh0LT50YWJsZVtoYXNoICYgaHQtPnJvd3NdLCBlbnRyeT0qcF9lbnRyeTsgCisJIGVudHJ5OyAKKwkgcF9lbnRyeSA9ICZlbnRyeS0+bmV4dCwgZW50cnkgPSAqcF9lbnRyeSkKKyAgICB7CisJaWYgKGVudHJ5LT5oYXNoPT1oYXNoICYmIGVudHJ5LT5rZXlsZW49PWtleWxlbiAmJgorICAgICAgICAgICAgKChsb3dlciAmJiBwal9hbnNpX3N0cm5pY21wKChjb25zdCBjaGFyKillbnRyeS0+a2V5LAorICAgICAgICAJCQkgICAgICAgIChjb25zdCBjaGFyKilrZXksIGtleWxlbik9PTApIHx8CisJICAgICAoIWxvd2VyICYmIHBqX21lbWNtcChlbnRyeS0+a2V5LCBrZXksIGtleWxlbik9PTApKSkKKwl7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisKKyAgICBpZiAoZW50cnkgfHwgdmFsPT1OVUxMKQorCXJldHVybiBwX2VudHJ5OworCisgICAgLyogRW50cnkgbm90IGZvdW5kLCBjcmVhdGUgYSBuZXcgb25lLiAKKyAgICAgKiBJZiBlbnRyeV9idWYgaXMgc3BlY2lmaWVkLCB1c2UgaXQuIE90aGVyd2lzZSBhbGxvY2F0ZSBmcm9tIHBvb2wuCisgICAgICovCisgICAgaWYgKGVudHJ5X2J1ZikgeworCWVudHJ5ID0gKHBqX2hhc2hfZW50cnkqKWVudHJ5X2J1ZjsKKyAgICB9IGVsc2UgeworCS8qIFBvb2wgbXVzdCBiZSBzcGVjaWZpZWQhICovCisJUEpfQVNTRVJUX1JFVFVSTihwb29sICE9IE5VTEwsIE5VTEwpOworCisJZW50cnkgPSBQSl9QT09MX0FMTE9DX1QocG9vbCwgcGpfaGFzaF9lbnRyeSk7CisJUEpfTE9HKDYsICgiaGFzaHRibCIsIAorCQkgICAiJXA6IE5ldyBwX2VudHJ5ICVwIGNyZWF0ZWQsIHBvb2wgdXNlZD0ldSwgY2FwPSV1IiwgCisJCSAgIGh0LCBlbnRyeSwgIHBqX3Bvb2xfZ2V0X3VzZWRfc2l6ZShwb29sKSwgCisJCSAgIHBqX3Bvb2xfZ2V0X2NhcGFjaXR5KHBvb2wpKSk7CisgICAgfQorICAgIGVudHJ5LT5uZXh0ID0gTlVMTDsKKyAgICBlbnRyeS0+aGFzaCA9IGhhc2g7CisgICAgaWYgKHBvb2wpIHsKKwllbnRyeS0+a2V5ID0gcGpfcG9vbF9hbGxvYyhwb29sLCBrZXlsZW4pOworCXBqX21lbWNweShlbnRyeS0+a2V5LCBrZXksIGtleWxlbik7CisgICAgfSBlbHNlIHsKKwllbnRyeS0+a2V5ID0gKHZvaWQqKWtleTsKKyAgICB9CisgICAgZW50cnktPmtleWxlbiA9IGtleWxlbjsKKyAgICBlbnRyeS0+dmFsdWUgPSB2YWw7CisgICAgKnBfZW50cnkgPSBlbnRyeTsKKyAgICAKKyAgICArK2h0LT5jb3VudDsKKyAgICAKKyAgICByZXR1cm4gcF9lbnRyeTsKK30KKworUEpfREVGKHZvaWQgKikgcGpfaGFzaF9nZXQoIHBqX2hhc2hfdGFibGVfdCAqaHQsCisJCQkgICAgY29uc3Qgdm9pZCAqa2V5LCB1bnNpZ25lZCBrZXlsZW4sCisJCQkgICAgcGpfdWludDMyX3QgKmh2YWwpCit7CisgICAgcGpfaGFzaF9lbnRyeSAqZW50cnk7CisgICAgZW50cnkgPSAqZmluZF9lbnRyeSggTlVMTCwgaHQsIGtleSwga2V5bGVuLCBOVUxMLCBodmFsLCBOVUxMLCBQSl9GQUxTRSk7CisgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPnZhbHVlIDogTlVMTDsKK30KKworUEpfREVGKHZvaWQgKikgcGpfaGFzaF9nZXRfbG93ZXIoIHBqX2hhc2hfdGFibGVfdCAqaHQsCisJCQkgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5LCB1bnNpZ25lZCBrZXlsZW4sCisJCQkgICAgICAgICAgcGpfdWludDMyX3QgKmh2YWwpCit7CisgICAgcGpfaGFzaF9lbnRyeSAqZW50cnk7CisgICAgZW50cnkgPSAqZmluZF9lbnRyeSggTlVMTCwgaHQsIGtleSwga2V5bGVuLCBOVUxMLCBodmFsLCBOVUxMLCBQSl9UUlVFKTsKKyAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+dmFsdWUgOiBOVUxMOworfQorCitzdGF0aWMgdm9pZCBoYXNoX3NldCggcGpfcG9vbF90ICpwb29sLCBwal9oYXNoX3RhYmxlX3QgKmh0LAorCSAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5LCB1bnNpZ25lZCBrZXlsZW4sIHBqX3VpbnQzMl90IGh2YWwsCisJCSAgICAgIHZvaWQgKnZhbHVlLCB2b2lkICplbnRyeV9idWYsIHBqX2Jvb2xfdCBsb3dlciApCit7CisgICAgcGpfaGFzaF9lbnRyeSAqKnBfZW50cnk7CisKKyAgICBwX2VudHJ5ID0gZmluZF9lbnRyeSggcG9vbCwgaHQsIGtleSwga2V5bGVuLCB2YWx1ZSwgJmh2YWwsIGVudHJ5X2J1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXIpOworICAgIGlmICgqcF9lbnRyeSkgeworCWlmICh2YWx1ZSA9PSBOVUxMKSB7CisJICAgIC8qIGRlbGV0ZSBlbnRyeSAqLworCSAgICBQSl9MT0coNiwgKCJoYXNodGJsIiwgIiVwOiBwX2VudHJ5ICVwIGRlbGV0ZWQiLCBodCwgKnBfZW50cnkpKTsKKwkgICAgKnBfZW50cnkgPSAoKnBfZW50cnkpLT5uZXh0OworCSAgICAtLWh0LT5jb3VudDsKKwkgICAgCisJfSBlbHNlIHsKKwkgICAgLyogb3ZlcndyaXRlICovCisJICAgICgqcF9lbnRyeSktPnZhbHVlID0gdmFsdWU7CisJICAgIFBKX0xPRyg2LCAoImhhc2h0YmwiLCAiJXA6IHBfZW50cnkgJXAgdmFsdWUgc2V0IHRvICVwIiwgaHQsIAorCQkgICAgICAgKnBfZW50cnksIHZhbHVlKSk7CisJfQorICAgIH0KK30KKworUEpfREVGKHZvaWQpIHBqX2hhc2hfc2V0KCBwal9wb29sX3QgKnBvb2wsIHBqX2hhc2hfdGFibGVfdCAqaHQsCisJCQkgIGNvbnN0IHZvaWQgKmtleSwgdW5zaWduZWQga2V5bGVuLCBwal91aW50MzJfdCBodmFsLAorCQkJICB2b2lkICp2YWx1ZSApCit7CisgICAgaGFzaF9zZXQocG9vbCwgaHQsIGtleSwga2V5bGVuLCBodmFsLCB2YWx1ZSwgTlVMTCwgUEpfRkFMU0UpOworfQorCitQSl9ERUYodm9pZCkgcGpfaGFzaF9zZXRfbG93ZXIoIHBqX3Bvb2xfdCAqcG9vbCwgcGpfaGFzaF90YWJsZV90ICpodCwKKwkJCSAgICAgICAgY29uc3Qgdm9pZCAqa2V5LCB1bnNpZ25lZCBrZXlsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3VpbnQzMl90IGh2YWwsIHZvaWQgKnZhbHVlICkKK3sKKyAgICBoYXNoX3NldChwb29sLCBodCwga2V5LCBrZXlsZW4sIGh2YWwsIHZhbHVlLCBOVUxMLCBQSl9UUlVFKTsKK30KKworUEpfREVGKHZvaWQpIHBqX2hhc2hfc2V0X25wKCBwal9oYXNoX3RhYmxlX3QgKmh0LAorCQkJICAgICBjb25zdCB2b2lkICprZXksIHVuc2lnbmVkIGtleWxlbiwgCisJCQkgICAgIHBqX3VpbnQzMl90IGh2YWwsIHBqX2hhc2hfZW50cnlfYnVmIGVudHJ5X2J1ZiwgCisJCQkgICAgIHZvaWQgKnZhbHVlKQoreworICAgIGhhc2hfc2V0KE5VTEwsIGh0LCBrZXksIGtleWxlbiwgaHZhbCwgdmFsdWUsICh2b2lkICopZW50cnlfYnVmLCBQSl9GQUxTRSk7Cit9CisKK1BKX0RFRih2b2lkKSBwal9oYXNoX3NldF9ucF9sb3dlciggcGpfaGFzaF90YWJsZV90ICpodCwKKwkJCSAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5LCB1bnNpZ25lZCBrZXlsZW4sCisJCQkgICAgICAgICAgIHBqX3VpbnQzMl90IGh2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2hhc2hfZW50cnlfYnVmIGVudHJ5X2J1ZiwKKwkJCSAgICAgICAgICAgdm9pZCAqdmFsdWUpCit7CisgICAgaGFzaF9zZXQoTlVMTCwgaHQsIGtleSwga2V5bGVuLCBodmFsLCB2YWx1ZSwgKHZvaWQgKillbnRyeV9idWYsIFBKX1RSVUUpOworfQorCitQSl9ERUYodW5zaWduZWQpIHBqX2hhc2hfY291bnQoIHBqX2hhc2hfdGFibGVfdCAqaHQgKQoreworICAgIHJldHVybiBodC0+Y291bnQ7Cit9CisKK1BKX0RFRihwal9oYXNoX2l0ZXJhdG9yX3QqKSBwal9oYXNoX2ZpcnN0KCBwal9oYXNoX3RhYmxlX3QgKmh0LAorCQkJCQkgICBwal9oYXNoX2l0ZXJhdG9yX3QgKml0ICkKK3sKKyAgICBpdC0+aW5kZXggPSAwOworICAgIGl0LT5lbnRyeSA9IE5VTEw7CisKKyAgICBmb3IgKDsgaXQtPmluZGV4IDw9IGh0LT5yb3dzOyArK2l0LT5pbmRleCkgeworCWl0LT5lbnRyeSA9IGh0LT50YWJsZVtpdC0+aW5kZXhdOworCWlmIChpdC0+ZW50cnkpIHsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKworICAgIHJldHVybiBpdC0+ZW50cnkgPyBpdCA6IE5VTEw7Cit9CisKK1BKX0RFRihwal9oYXNoX2l0ZXJhdG9yX3QqKSBwal9oYXNoX25leHQoIHBqX2hhc2hfdGFibGVfdCAqaHQsIAorCQkJCQkgIHBqX2hhc2hfaXRlcmF0b3JfdCAqaXQgKQoreworICAgIGl0LT5lbnRyeSA9IGl0LT5lbnRyeS0+bmV4dDsKKyAgICBpZiAoaXQtPmVudHJ5KSB7CisJcmV0dXJuIGl0OworICAgIH0KKworICAgIGZvciAoKytpdC0+aW5kZXg7IGl0LT5pbmRleCA8PSBodC0+cm93czsgKytpdC0+aW5kZXgpIHsKKwlpdC0+ZW50cnkgPSBodC0+dGFibGVbaXQtPmluZGV4XTsKKwlpZiAoaXQtPmVudHJ5KSB7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gaXQtPmVudHJ5ID8gaXQgOiBOVUxMOworfQorCitQSl9ERUYodm9pZCopIHBqX2hhc2hfdGhpcyggcGpfaGFzaF90YWJsZV90ICpodCwgcGpfaGFzaF9pdGVyYXRvcl90ICppdCApCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9VTlVTRURfQVJHKGh0KTsKKyAgICByZXR1cm4gaXQtPmVudHJ5LT52YWx1ZTsKK30KKworI2lmIDAKK3ZvaWQgcGpfaGFzaF9kdW1wX2NvbGxpc2lvbiggcGpfaGFzaF90YWJsZV90ICpodCApCit7CisgICAgdW5zaWduZWQgbWluPTB4RkZGRkZGRkYsIG1heD0wOworICAgIHVuc2lnbmVkIGk7CisgICAgY2hhciBsaW5lWzEyMF07CisgICAgaW50IGxlbiwgdG90bGVuID0gMDsKKworICAgIGZvciAoaT0wOyBpPD1odC0+cm93czsgKytpKSB7CisJdW5zaWduZWQgY291bnQgPSAwOyAgICAKKwlwal9oYXNoX2VudHJ5ICplbnRyeSA9IGh0LT50YWJsZVtpXTsKKwl3aGlsZSAoZW50cnkpIHsKKwkgICAgKytjb3VudDsKKwkgICAgZW50cnkgPSBlbnRyeS0+bmV4dDsKKwl9CisJaWYgKGNvdW50IDwgbWluKQorCSAgICBtaW4gPSBjb3VudDsKKwlpZiAoY291bnQgPiBtYXgpCisJICAgIG1heCA9IGNvdW50OworCWxlbiA9IHBqX3NucHJpbnRmKCBsaW5lK3RvdGxlbiwgc2l6ZW9mKGxpbmUpLXRvdGxlbiwgIiUzZDolM2QgIiwgaSwgY291bnQpOworCWlmIChsZW4gPCAxKQorCSAgICBicmVhazsKKwl0b3RsZW4gKz0gbGVuOworCisJaWYgKChpKzEpICUgMTAgPT0gMCkgeworCSAgICBsaW5lW3RvdGxlbl0gPSAnXDAnOworCSAgICBQSl9MT0coNCwoX19GSUxFX18sIGxpbmUpKTsKKwl9CisgICAgfQorCisgICAgUEpfTE9HKDQsKF9fRklMRV9fLCJDb3VudDogJWQsIG1pbjogJWQsIG1heDogJWRcbiIsIGh0LT5jb3VudCwgbWluLCBtYXgpKTsKK30KKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX2NvbW1vbl9hYnMuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX2NvbW1vbl9hYnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODBmNDQyCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lvcXVldWVfY29tbW9uX2Ficy5jCkBAIC0wLDAgKzEsMTMzNSBAQAorLyogJElkOiBpb3F1ZXVlX2NvbW1vbl9hYnMuYyA0NjAxIDIwMTMtMDktMjUgMDQ6MjA6MDFaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworCisvKgorICogaW9xdWV1ZV9jb21tb25fYWJzLmMKKyAqCisgKiBUaGlzIGNvbnRhaW5zIGNvbW1vbiBmdW5jdGlvbmFsaXRpZXMgdG8gZW11bGF0ZSBwcm9hY3RvciBwYXR0ZXJuIHdpdGgKKyAqIHZhcmlvdXMgZXZlbnQgZGlzcGF0Y2hpbmcgbWVjaGFuaXNtcyAoZS5nLiBzZWxlY3QsIGVwb2xsKS4KKyAqCisgKiBUaGlzIGZpbGUgd2lsbCBiZSBpbmNsdWRlZCBieSB0aGUgYXBwcm9wcmlhdGUgaW9xdWV1ZSBpbXBsZW1lbnRhdGlvbi4KKyAqIFRoaXMgZmlsZSBpcyBOT1Qgc3VwcG9zZWQgdG8gYmUgY29tcGlsZWQgYXMgc3RhbmQtYWxvbmUgc291cmNlLgorICovCisKKyNkZWZpbmUgUEVORElOR19SRVRSWQkyCisKK3N0YXRpYyB2b2lkIGlvcXVldWVfaW5pdCggcGpfaW9xdWV1ZV90ICppb3F1ZXVlICkKK3sKKyAgICBpb3F1ZXVlLT5sb2NrID0gTlVMTDsKKyAgICBpb3F1ZXVlLT5hdXRvX2RlbGV0ZV9sb2NrID0gMDsKKyAgICBpb3F1ZXVlLT5kZWZhdWx0X2NvbmN1cnJlbmN5ID0gUEpfSU9RVUVVRV9ERUZBVUxUX0FMTE9XX0NPTkNVUlJFTkNZOworfQorCitzdGF0aWMgcGpfc3RhdHVzX3QgaW9xdWV1ZV9kZXN0cm95KHBqX2lvcXVldWVfdCAqaW9xdWV1ZSkKK3sKKyAgICBpZiAoaW9xdWV1ZS0+YXV0b19kZWxldGVfbG9jayAmJiBpb3F1ZXVlLT5sb2NrICkgeworCXBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKKyAgICAgICAgcmV0dXJuIHBqX2xvY2tfZGVzdHJveShpb3F1ZXVlLT5sb2NrKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBwal9pb3F1ZXVlX3NldF9sb2NrKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3NldF9sb2NrKCBwal9pb3F1ZXVlX3QgKmlvcXVldWUsIAorCQkJCQkgcGpfbG9ja190ICpsb2NrLAorCQkJCQkgcGpfYm9vbF90IGF1dG9fZGVsZXRlICkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGlvcXVldWUgJiYgbG9jaywgUEpfRUlOVkFMKTsKKworICAgIGlmIChpb3F1ZXVlLT5hdXRvX2RlbGV0ZV9sb2NrICYmIGlvcXVldWUtPmxvY2spIHsKKyAgICAgICAgcGpfbG9ja19kZXN0cm95KGlvcXVldWUtPmxvY2spOworICAgIH0KKworICAgIGlvcXVldWUtPmxvY2sgPSBsb2NrOworICAgIGlvcXVldWUtPmF1dG9fZGVsZXRlX2xvY2sgPSBhdXRvX2RlbGV0ZTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitzdGF0aWMgcGpfc3RhdHVzX3QgaW9xdWV1ZV9pbml0X2tleSggcGpfcG9vbF90ICpwb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc29ja190IHNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX2lvcXVldWVfY2FsbGJhY2sgKmNiKQoreworICAgIHBqX3N0YXR1c190IHJjOworICAgIGludCBvcHRsZW47CisKKyAgICBQSl9VTlVTRURfQVJHKHBvb2wpOworCisgICAga2V5LT5pb3F1ZXVlID0gaW9xdWV1ZTsKKyAgICBrZXktPmZkID0gc29jazsKKyAgICBrZXktPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKKyAgICBwal9saXN0X2luaXQoJmtleS0+cmVhZF9saXN0KTsKKyAgICBwal9saXN0X2luaXQoJmtleS0+d3JpdGVfbGlzdCk7CisjaWYgUEpfSEFTX1RDUAorICAgIHBqX2xpc3RfaW5pdCgma2V5LT5hY2NlcHRfbGlzdCk7CisgICAga2V5LT5jb25uZWN0aW5nID0gMDsKKyNlbmRpZgorCisgICAgLyogU2F2ZSBjYWxsYmFjay4gKi8KKyAgICBwal9tZW1jcHkoJmtleS0+Y2IsIGNiLCBzaXplb2YocGpfaW9xdWV1ZV9jYWxsYmFjaykpOworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIC8qIFNldCBpbml0aWFsIHJlZmVyZW5jZSBjb3VudCB0byAxICovCisgICAgcGpfYXNzZXJ0KGtleS0+cmVmX2NvdW50ID09IDApOworICAgICsra2V5LT5yZWZfY291bnQ7CisKKyAgICBrZXktPmNsb3NpbmcgPSAwOworI2VuZGlmCisKKyAgICByYyA9IHBqX2lvcXVldWVfc2V0X2NvbmN1cnJlbmN5KGtleSwgaW9xdWV1ZS0+ZGVmYXVsdF9jb25jdXJyZW5jeSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHJjOworCisgICAgLyogR2V0IHNvY2tldCB0eXBlLiBXaGVuIHNvY2tldCB0eXBlIGlzIGRhdGFncmFtLCBzb21lIG9wdGltaXphdGlvbgorICAgICAqIHdpbGwgYmUgcGVyZm9ybWVkIGR1cmluZyBzZW5kIHRvIGFsbG93IHBhcmFsbGVsIHNlbmQgb3BlcmF0aW9ucy4KKyAgICAgKi8KKyAgICBvcHRsZW4gPSBzaXplb2Yoa2V5LT5mZF90eXBlKTsKKyAgICByYyA9IHBqX3NvY2tfZ2V0c29ja29wdChzb2NrLCBwal9TT0xfU09DS0VUKCksIHBqX1NPX1RZUEUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LT5mZF90eXBlLCAmb3B0bGVuKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykKKyAgICAgICAga2V5LT5mZF90eXBlID0gcGpfU09DS19TVFJFQU0oKTsKKworICAgIC8qIENyZWF0ZSBtdXRleCBmb3IgdGhlIGtleS4gKi8KKyNpZiAhUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIHJjID0gcGpfbG9ja19jcmVhdGVfc2ltcGxlX211dGV4KHBvbGwsIE5VTEwsICZrZXktPmxvY2spOworI2VuZGlmCisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHJjOworCisgICAgLyogR3JvdXAgbG9jayAqLworICAgIGtleS0+Z3JwX2xvY2sgPSBncnBfbG9jazsKKyAgICBpZiAoa2V5LT5ncnBfbG9jaykgeworCXBqX2dycF9sb2NrX2FkZF9yZWZfZGJnKGtleS0+Z3JwX2xvY2ssICJpb3F1ZXVlIiwgMCk7CisgICAgfQorICAgIAorICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfaW9xdWV1ZV9nZXRfdXNlcl9kYXRhKCkKKyAqCisgKiBPYnRhaW4gdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEga2V5LgorICovCitQSl9ERUYodm9pZCopIHBqX2lvcXVldWVfZ2V0X3VzZXJfZGF0YSggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5ICkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGtleSAhPSBOVUxMLCBOVUxMKTsKKyAgICByZXR1cm4ga2V5LT51c2VyX2RhdGE7Cit9CisKKy8qCisgKiBwal9pb3F1ZXVlX3NldF91c2VyX2RhdGEoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2V0X3VzZXJfZGF0YSggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqb2xkX2RhdGEpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXksIFBKX0VJTlZBTCk7CisKKyAgICBpZiAob2xkX2RhdGEpCisgICAgICAgICpvbGRfZGF0YSA9IGtleS0+dXNlcl9kYXRhOworICAgIGtleS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0lOTElORShpbnQpIGtleV9oYXNfcGVuZGluZ193cml0ZShwal9pb3F1ZXVlX2tleV90ICprZXkpCit7CisgICAgcmV0dXJuICFwal9saXN0X2VtcHR5KCZrZXktPndyaXRlX2xpc3QpOworfQorCitQSl9JTkxJTkUoaW50KSBrZXlfaGFzX3BlbmRpbmdfcmVhZChwal9pb3F1ZXVlX2tleV90ICprZXkpCit7CisgICAgcmV0dXJuICFwal9saXN0X2VtcHR5KCZrZXktPnJlYWRfbGlzdCk7Cit9CisKK1BKX0lOTElORShpbnQpIGtleV9oYXNfcGVuZGluZ19hY2NlcHQocGpfaW9xdWV1ZV9rZXlfdCAqa2V5KQoreworI2lmIFBKX0hBU19UQ1AKKyAgICByZXR1cm4gIXBqX2xpc3RfZW1wdHkoJmtleS0+YWNjZXB0X2xpc3QpOworI2Vsc2UKKyAgICBQSl9VTlVTRURfQVJHKGtleSk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworUEpfSU5MSU5FKGludCkga2V5X2hhc19wZW5kaW5nX2Nvbm5lY3QocGpfaW9xdWV1ZV9rZXlfdCAqa2V5KQoreworICAgIHJldHVybiBrZXktPmNvbm5lY3Rpbmc7Cit9CisKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyMgICBkZWZpbmUgSVNfQ0xPU0lORyhrZXkpICAoa2V5LT5jbG9zaW5nKQorI2Vsc2UKKyMgICBkZWZpbmUgSVNfQ0xPU0lORyhrZXkpICAoMCkKKyNlbmRpZgorCisKKy8qCisgKiBpb3F1ZXVlX2Rpc3BhdGNoX2V2ZW50KCkKKyAqCisgKiBSZXBvcnQgb2NjdXJlbmNlIG9mIGFuIGV2ZW50IGluIHRoZSBrZXkgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZQorICogZnJhbWV3b3JrLgorICovCit2b2lkIGlvcXVldWVfZGlzcGF0Y2hfd3JpdGVfZXZlbnQocGpfaW9xdWV1ZV90ICppb3F1ZXVlLCBwal9pb3F1ZXVlX2tleV90ICpoKQoreworICAgIC8qIExvY2sgdGhlIGtleS4gKi8KKyAgICBwal9pb3F1ZXVlX2xvY2tfa2V5KGgpOworCisgICAgaWYgKElTX0NMT1NJTkcoaCkpIHsKKwlwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisJcmV0dXJuOworICAgIH0KKworI2lmIGRlZmluZWQoUEpfSEFTX1RDUCkgJiYgUEpfSEFTX1RDUCE9MAorICAgIGlmIChoLT5jb25uZWN0aW5nKSB7CisJLyogQ29tcGxldGlvbiBvZiBjb25uZWN0KCkgb3BlcmF0aW9uICovCisJcGpfc3RhdHVzX3Qgc3RhdHVzOworCXBqX2Jvb2xfdCBoYXNfbG9jazsKKworCS8qIENsZWFyIG9wZXJhdGlvbi4gKi8KKwloLT5jb25uZWN0aW5nID0gMDsKKworICAgICAgICBpb3F1ZXVlX3JlbW92ZV9mcm9tX3NldChpb3F1ZXVlLCBoLCBXUklURUFCTEVfRVZFTlQpOworICAgICAgICBpb3F1ZXVlX3JlbW92ZV9mcm9tX3NldChpb3F1ZXVlLCBoLCBFWENFUFRJT05fRVZFTlQpOworCisKKyNpZiAoZGVmaW5lZChQSl9IQVNfU09fRVJST1IpICYmIFBKX0hBU19TT19FUlJPUiE9MCkKKwkvKiBmcm9tIGNvbm5lY3QoMik6IAorCSAqIE9uIExpbnV4LCB1c2UgZ2V0c29ja29wdCB0byByZWFkIHRoZSBTT19FUlJPUiBvcHRpb24gYXQKKwkgKiBsZXZlbCBTT0xfU09DS0VUIHRvIGRldGVybWluZSB3aGV0aGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQKKwkgKiBzdWNjZXNzZnVsbHkgKGlmIFNPX0VSUk9SIGlzIHplcm8pLgorCSAqLworCXsKKwkgIGludCB2YWx1ZTsKKwkgIGludCB2YWxsZW4gPSBzaXplb2YodmFsdWUpOworCSAgaW50IGdzX3JjID0gcGpfc29ja19nZXRzb2Nrb3B0KGgtPmZkLCBTT0xfU09DS0VULCBTT19FUlJPUiwgCisJCQkJCSAmdmFsdWUsICZ2YWxsZW4pOworCSAgaWYgKGdzX3JjICE9IDApIHsKKwkgICAgLyogQXJnaCEhIFdoYXQgdG8gZG8gbm93Pz8/IAorCSAgICAgKiBKdXN0IGluZGljYXRlIHRoYXQgdGhlIHNvY2tldCBpcyBjb25uZWN0ZWQuIFRoZQorCSAgICAgKiBhcHBsaWNhdGlvbiB3aWxsIGdldCBlcnJvciBhcyBzb29uIGFzIGl0IHRyaWVzIHRvIHVzZQorCSAgICAgKiB0aGUgc29ja2V0IHRvIHNlbmQvcmVjZWl2ZS4KKwkgICAgICovCisJICAgICAgc3RhdHVzID0gUEpfU1VDQ0VTUzsKKwkgIH0gZWxzZSB7CisJICAgICAgc3RhdHVzID0gUEpfU1RBVFVTX0ZST01fT1ModmFsdWUpOworCSAgfQorIAl9CisjZWxpZiAoZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIhPTApIHx8IChkZWZpbmVkKFBKX1dJTjY0KSAmJiBQSl9XSU42NCE9MCkgCisJc3RhdHVzID0gUEpfU1VDQ0VTUzsgLyogc3VjY2VzcyAqLworI2Vsc2UKKwkvKiBFeGNlbGxlbnQgaW5mb3JtYXRpb24gaW4gRC5KLiBCZXJuc3RlaW4gcGFnZToKKwkgKiBodHRwOi8vY3IueXAudG8vZG9jcy9jb25uZWN0Lmh0bWwKKwkgKgorCSAqIFNlZW1zIGxpa2UgdGhlIG1vc3QgcG9ydGFibGUgd2F5IG9mIGRldGVjdGluZyBjb25uZWN0KCkKKwkgKiBmYWlsdXJlIGlzIHRvIGNhbGwgZ2V0cGVlcm5hbWUoKS4gSWYgc29ja2V0IGlzIGNvbm5lY3RlZCwKKwkgKiBnZXRwZWVybmFtZSgpIHdpbGwgcmV0dXJuIDAuIElmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwKKwkgKiBpdCB3aWxsIHJldHVybiBFTk9UQ09OTiwgYW5kIHJlYWQoZmQsICZjaCwgMSkgd2lsbCBwcm9kdWNlCisJICogdGhlIHJpZ2h0IGVycm5vIHRocm91Z2ggZXJyb3Igc2xpcHBhZ2UuIFRoaXMgaXMgYSBjb21iaW5hdGlvbgorCSAqIG9mIHN1Z2dlc3Rpb25zIGZyb20gRG91Z2xhcyBDLiBTY2htaWR0IGFuZCBLZW4gS2V5cy4KKwkgKi8KKwl7CisJICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworCSAgICBpbnQgYWRkcmxlbiA9IHNpemVvZihhZGRyKTsKKworCSAgICBzdGF0dXMgPSBwal9zb2NrX2dldHBlZXJuYW1lKGgtPmZkLCAoc3RydWN0IHNvY2thZGRyKikmYWRkciwKKwkJCQkgICAgICAgICAmYWRkcmxlbik7CisJfQorI2VuZGlmCisKKyAgICAgICAgLyogVW5sb2NrOyBmcm9tIHRoaXMgcG9pbnQgd2UgZG9uJ3QgbmVlZCB0byBob2xkIGtleSdzIG11dGV4CisJICogKHVubGVzcyBjb25jdXJyZW5jeSBpcyBkaXNhYmxlZCwgd2hpY2ggaW4gdGhpcyBjYXNlIHdlIHNob3VsZAorCSAqIGhvbGQgdGhlIG11dGV4IHdoaWxlIGNhbGxpbmcgdGhlIGNhbGxiYWNrKSAqLworCWlmIChoLT5hbGxvd19jb25jdXJyZW50KSB7CisJICAgIC8qIGNvbmN1cnJlbmN5IG1heSBiZSBjaGFuZ2VkIHdoaWxlIHdlJ3JlIGluIHRoZSBjYWxsYmFjaywgc28KKwkgICAgICogc2F2ZSBpdCB0byBhIGZsYWcuCisJICAgICAqLworCSAgICBoYXNfbG9jayA9IFBKX0ZBTFNFOworCSAgICBwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisJfSBlbHNlIHsKKwkgICAgaGFzX2xvY2sgPSBQSl9UUlVFOworCX0KKworCS8qIENhbGwgY2FsbGJhY2suICovCisgICAgICAgIGlmIChoLT5jYi5vbl9jb25uZWN0X2NvbXBsZXRlICYmICFJU19DTE9TSU5HKGgpKQorCSAgICAoKmgtPmNiLm9uX2Nvbm5lY3RfY29tcGxldGUpKGgsIHN0YXR1cyk7CisKKwkvKiBVbmxvY2sgaWYgd2Ugc3RpbGwgaG9sZCB0aGUgbG9jayAqLworCWlmIChoYXNfbG9jaykgeworCSAgICBwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisJfQorCisgICAgICAgIC8qIERvbmUuICovCisKKyAgICB9IGVsc2UgCisjZW5kaWYgLyogUEpfSEFTX1RDUCAqLworICAgIGlmIChrZXlfaGFzX3BlbmRpbmdfd3JpdGUoaCkpIHsKKwkvKiBTb2NrZXQgaXMgd3JpdGFibGUuICovCisgICAgICAgIHN0cnVjdCB3cml0ZV9vcGVyYXRpb24gKndyaXRlX29wOworICAgICAgICBwal9zc2l6ZV90IHNlbnQ7CisgICAgICAgIHBqX3N0YXR1c190IHNlbmRfcmMgPSBQSl9TVUNDRVNTOworCisgICAgICAgIC8qIEdldCB0aGUgZmlyc3QgaW4gdGhlIHF1ZXVlLiAqLworICAgICAgICB3cml0ZV9vcCA9IGgtPndyaXRlX2xpc3QubmV4dDsKKworICAgICAgICAvKiBGb3IgZGF0YWdyYW1zLCB3ZSBjYW4gcmVtb3ZlIHRoZSB3cml0ZV9vcCBmcm9tIHRoZSBsaXN0CisgICAgICAgICAqIHNvIHRoYXQgc2VuZCgpIGNhbiB3b3JrIGluIHBhcmFsbGVsLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGgtPmZkX3R5cGUgPT0gcGpfU09DS19ER1JBTSgpKSB7CisgICAgICAgICAgICBwal9saXN0X2VyYXNlKHdyaXRlX29wKTsKKworICAgICAgICAgICAgaWYgKHBqX2xpc3RfZW1wdHkoJmgtPndyaXRlX2xpc3QpKQorICAgICAgICAgICAgICAgIGlvcXVldWVfcmVtb3ZlX2Zyb21fc2V0KGlvcXVldWUsIGgsIFdSSVRFQUJMRV9FVkVOVCk7CisKKyAgICAgICAgfQorCisgICAgICAgIC8qIFNlbmQgdGhlIGRhdGEuIAorICAgICAgICAgKiBVbmZvcnR1bmF0ZWx5IHdlIG11c3QgZG8gdGhpcyB3aGlsZSBob2xkaW5nIGtleSdzIG11dGV4LCB0aHVzCisgICAgICAgICAqIHByZXZlbnRpbmcgcGFyYWxsZWwgd3JpdGUgb24gYSBzaW5nbGUga2V5Li4gOi0oKAorICAgICAgICAgKi8KKyAgICAgICAgc2VudCA9IHdyaXRlX29wLT5zaXplIC0gd3JpdGVfb3AtPndyaXR0ZW47CisgICAgICAgIGlmICh3cml0ZV9vcC0+b3AgPT0gUEpfSU9RVUVVRV9PUF9TRU5EKSB7CisgICAgICAgICAgICBzZW5kX3JjID0gcGpfc29ja19zZW5kKGgtPmZkLCB3cml0ZV9vcC0+YnVmK3dyaXRlX29wLT53cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2VudCwgd3JpdGVfb3AtPmZsYWdzKTsKKwkgICAgLyogQ2FuJ3QgZG8gdGhpcy4gV2Ugb25seSBjbGVhciAib3AiIGFmdGVyIHdlJ3JlIGZpbmlzaGVkIHNlbmRpbmcKKwkgICAgICogdGhlIHdob2xlIGJ1ZmZlci4KKwkgICAgICovCisJICAgIC8vd3JpdGVfb3AtPm9wID0gMDsKKyAgICAgICAgfSBlbHNlIGlmICh3cml0ZV9vcC0+b3AgPT0gUEpfSU9RVUVVRV9PUF9TRU5EX1RPKSB7CisJICAgIGludCByZXRyeSA9IDI7CisJICAgIHdoaWxlICgtLXJldHJ5ID49IDApIHsKKwkJc2VuZF9yYyA9IHBqX3NvY2tfc2VuZHRvKGgtPmZkLCAKKwkJCQkJIHdyaXRlX29wLT5idWYrd3JpdGVfb3AtPndyaXR0ZW4sCisJCQkJCSAmc2VudCwgd3JpdGVfb3AtPmZsYWdzLAorCQkJCQkgJndyaXRlX29wLT5ybXRfYWRkciwgCisJCQkJCSB3cml0ZV9vcC0+cm10X2FkZHJsZW4pOworI2lmIGRlZmluZWQoUEpfSVBIT05FX09TX0hBU19NVUxUSVRBU0tJTkdfU1VQUE9SVCkgJiYgXAorCSAgICBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIT0wCisJCS8qIFNwZWNpYWwgdHJlYXRtZW50IGZvciBkZWFkIFVEUCBzb2NrZXRzIGhlcmUsIHNlZSB0aWNrZXQgIzExMDcgKi8KKwkJaWYgKHNlbmRfcmM9PVBKX1NUQVRVU19GUk9NX09TKEVQSVBFKSAmJiAhSVNfQ0xPU0lORyhoKSAmJgorCQkgICAgaC0+ZmRfdHlwZT09cGpfU09DS19ER1JBTSgpKQorCQl7CisJCSAgICBQSl9QRVJST1IoNCwoVEhJU19GSUxFLCBzZW5kX3JjLAorCQkJCSAiU2VuZCBlcnJvciBmb3Igc29ja2V0ICVkLCByZXRyeWluZyIsCisJCQkJIGgtPmZkKSk7CisJCSAgICByZXBsYWNlX3VkcF9zb2NrKGgpOworCQkgICAgY29udGludWU7CisJCX0KKyNlbmRpZgorCQlicmVhazsKKwkgICAgfQorCisJICAgIC8qIENhbid0IGRvIHRoaXMuIFdlIG9ubHkgY2xlYXIgIm9wIiBhZnRlciB3ZSdyZSBmaW5pc2hlZCBzZW5kaW5nCisJICAgICAqIHRoZSB3aG9sZSBidWZmZXIuCisJICAgICAqLworCSAgICAvL3dyaXRlX29wLT5vcCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwal9hc3NlcnQoISJJbnZhbGlkIG9wZXJhdGlvbiB0eXBlISIpOworCSAgICB3cml0ZV9vcC0+b3AgPSBQSl9JT1FVRVVFX09QX05PTkU7CisgICAgICAgICAgICBzZW5kX3JjID0gUEpfRUJVRzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZW5kX3JjID09IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIHdyaXRlX29wLT53cml0dGVuICs9IHNlbnQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwal9hc3NlcnQoc2VuZF9yYyA+IDApOworICAgICAgICAgICAgd3JpdGVfb3AtPndyaXR0ZW4gPSAtc2VuZF9yYzsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEFyZSB3ZSBmaW5pc2hlZCB3aXRoIHRoaXMgYnVmZmVyPyAqLworICAgICAgICBpZiAoc2VuZF9yYyE9UEpfU1VDQ0VTUyB8fCAKKyAgICAgICAgICAgIHdyaXRlX29wLT53cml0dGVuID09IChwal9zc2l6ZV90KXdyaXRlX29wLT5zaXplIHx8CisgICAgICAgICAgICBoLT5mZF90eXBlID09IHBqX1NPQ0tfREdSQU0oKSkgCisgICAgICAgIHsKKwkgICAgcGpfYm9vbF90IGhhc19sb2NrOworCisJICAgIHdyaXRlX29wLT5vcCA9IFBKX0lPUVVFVUVfT1BfTk9ORTsKKworICAgICAgICAgICAgaWYgKGgtPmZkX3R5cGUgIT0gcGpfU09DS19ER1JBTSgpKSB7CisgICAgICAgICAgICAgICAgLyogV3JpdGUgY29tcGxldGlvbiBvZiB0aGUgd2hvbGUgc3RyZWFtLiAqLworICAgICAgICAgICAgICAgIHBqX2xpc3RfZXJhc2Uod3JpdGVfb3ApOworCisgICAgICAgICAgICAgICAgLyogQ2xlYXIgb3BlcmF0aW9uIGlmIHRoZXJlJ3Mgbm8gbW9yZSBkYXRhIHRvIHNlbmQuICovCisgICAgICAgICAgICAgICAgaWYgKHBqX2xpc3RfZW1wdHkoJmgtPndyaXRlX2xpc3QpKQorICAgICAgICAgICAgICAgICAgICBpb3F1ZXVlX3JlbW92ZV9mcm9tX3NldChpb3F1ZXVlLCBoLCBXUklURUFCTEVfRVZFTlQpOworCisgICAgICAgICAgICB9CisKKwkgICAgLyogVW5sb2NrOyBmcm9tIHRoaXMgcG9pbnQgd2UgZG9uJ3QgbmVlZCB0byBob2xkIGtleSdzIG11dGV4CisJICAgICAqICh1bmxlc3MgY29uY3VycmVuY3kgaXMgZGlzYWJsZWQsIHdoaWNoIGluIHRoaXMgY2FzZSB3ZSBzaG91bGQKKwkgICAgICogaG9sZCB0aGUgbXV0ZXggd2hpbGUgY2FsbGluZyB0aGUgY2FsbGJhY2spICovCisJICAgIGlmIChoLT5hbGxvd19jb25jdXJyZW50KSB7CisJCS8qIGNvbmN1cnJlbmN5IG1heSBiZSBjaGFuZ2VkIHdoaWxlIHdlJ3JlIGluIHRoZSBjYWxsYmFjaywgc28KKwkJICogc2F2ZSBpdCB0byBhIGZsYWcuCisJCSAqLworCQloYXNfbG9jayA9IFBKX0ZBTFNFOworCQlwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisJCVBKX1JBQ0VfTUUoNSk7CisJICAgIH0gZWxzZSB7CisJCWhhc19sb2NrID0gUEpfVFJVRTsKKwkgICAgfQorCisJICAgIC8qIENhbGwgY2FsbGJhY2suICovCisgICAgICAgICAgICBpZiAoaC0+Y2Iub25fd3JpdGVfY29tcGxldGUgJiYgIUlTX0NMT1NJTkcoaCkpIHsKKwkgICAgICAgICgqaC0+Y2Iub25fd3JpdGVfY29tcGxldGUpKGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwal9pb3F1ZXVlX29wX2tleV90Kil3cml0ZV9vcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9vcC0+d3JpdHRlbik7CisgICAgICAgICAgICB9CisKKwkgICAgaWYgKGhhc19sb2NrKSB7CisJCXBqX2lvcXVldWVfdW5sb2NrX2tleShoKTsKKwkgICAgfQorCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisgICAgICAgIH0KKworICAgICAgICAvKiBEb25lLiAqLworICAgIH0gZWxzZSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXMgaXMgbm9ybWFsOyBleGVjdXRpb24gbWF5IGZhbGwgaGVyZSB3aGVuIG11bHRpcGxlIHRocmVhZHMKKyAgICAgICAgICogYXJlIHNpZ25hbGxlZCBmb3IgdGhlIHNhbWUgZXZlbnQsIGJ1dCBvbmx5IG9uZSB0aHJlYWQgZXZlbnR1YWxseQorICAgICAgICAgKiBhYmxlIHRvIHByb2Nlc3MgdGhlIGV2ZW50LgorICAgICAgICAgKi8KKwlwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisgICAgfQorfQorCit2b2lkIGlvcXVldWVfZGlzcGF0Y2hfcmVhZF9ldmVudCggcGpfaW9xdWV1ZV90ICppb3F1ZXVlLCBwal9pb3F1ZXVlX2tleV90ICpoICkKK3sKKyAgICBwal9zdGF0dXNfdCByYzsKKworICAgIC8qIExvY2sgdGhlIGtleS4gKi8KKyAgICBwal9pb3F1ZXVlX2xvY2tfa2V5KGgpOworCisgICAgaWYgKElTX0NMT1NJTkcoaCkpIHsKKwlwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisJcmV0dXJuOworICAgIH0KKworIyAgIGlmIFBKX0hBU19UQ1AKKyAgICBpZiAoIXBqX2xpc3RfZW1wdHkoJmgtPmFjY2VwdF9saXN0KSkgeworCisgICAgICAgIHN0cnVjdCBhY2NlcHRfb3BlcmF0aW9uICphY2NlcHRfb3A7CisJcGpfYm9vbF90IGhhc19sb2NrOworCQorICAgICAgICAvKiBHZXQgb25lIGFjY2VwdCBvcGVyYXRpb24gZnJvbSB0aGUgbGlzdC4gKi8KKwlhY2NlcHRfb3AgPSBoLT5hY2NlcHRfbGlzdC5uZXh0OworICAgICAgICBwal9saXN0X2VyYXNlKGFjY2VwdF9vcCk7CisgICAgICAgIGFjY2VwdF9vcC0+b3AgPSBQSl9JT1FVRVVFX09QX05PTkU7CisKKwkvKiBDbGVhciBiaXQgaW4gZmRzZXQgaWYgdGhlcmUgaXMgbm8gbW9yZSBwZW5kaW5nIGFjY2VwdCAqLworICAgICAgICBpZiAocGpfbGlzdF9lbXB0eSgmaC0+YWNjZXB0X2xpc3QpKQorICAgICAgICAgICAgaW9xdWV1ZV9yZW1vdmVfZnJvbV9zZXQoaW9xdWV1ZSwgaCwgUkVBREFCTEVfRVZFTlQpOworCisJcmM9cGpfc29ja19hY2NlcHQoaC0+ZmQsIGFjY2VwdF9vcC0+YWNjZXB0X2ZkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0X29wLT5ybXRfYWRkciwgYWNjZXB0X29wLT5hZGRybGVuKTsKKwlpZiAocmM9PVBKX1NVQ0NFU1MgJiYgYWNjZXB0X29wLT5sb2NhbF9hZGRyKSB7CisJICAgIHJjID0gcGpfc29ja19nZXRzb2NrbmFtZSgqYWNjZXB0X29wLT5hY2NlcHRfZmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdF9vcC0+bG9jYWxfYWRkciwKKwkJCQkgICAgIGFjY2VwdF9vcC0+YWRkcmxlbik7CisJfQorCisJLyogVW5sb2NrOyBmcm9tIHRoaXMgcG9pbnQgd2UgZG9uJ3QgbmVlZCB0byBob2xkIGtleSdzIG11dGV4CisJICogKHVubGVzcyBjb25jdXJyZW5jeSBpcyBkaXNhYmxlZCwgd2hpY2ggaW4gdGhpcyBjYXNlIHdlIHNob3VsZAorCSAqIGhvbGQgdGhlIG11dGV4IHdoaWxlIGNhbGxpbmcgdGhlIGNhbGxiYWNrKSAqLworCWlmIChoLT5hbGxvd19jb25jdXJyZW50KSB7CisJICAgIC8qIGNvbmN1cnJlbmN5IG1heSBiZSBjaGFuZ2VkIHdoaWxlIHdlJ3JlIGluIHRoZSBjYWxsYmFjaywgc28KKwkgICAgICogc2F2ZSBpdCB0byBhIGZsYWcuCisJICAgICAqLworCSAgICBoYXNfbG9jayA9IFBKX0ZBTFNFOworCSAgICBwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisJICAgIFBKX1JBQ0VfTUUoNSk7CisJfSBlbHNlIHsKKwkgICAgaGFzX2xvY2sgPSBQSl9UUlVFOworCX0KKworCS8qIENhbGwgY2FsbGJhY2suICovCisgICAgICAgIGlmIChoLT5jYi5vbl9hY2NlcHRfY29tcGxldGUgJiYgIUlTX0NMT1NJTkcoaCkpIHsKKwkgICAgKCpoLT5jYi5vbl9hY2NlcHRfY29tcGxldGUpKGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwal9pb3F1ZXVlX29wX2tleV90KilhY2NlcHRfb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFjY2VwdF9vcC0+YWNjZXB0X2ZkLCByYyk7CisJfQorCisJaWYgKGhhc19sb2NrKSB7CisJICAgIHBqX2lvcXVldWVfdW5sb2NrX2tleShoKTsKKwl9CisgICAgfQorICAgIGVsc2UKKyMgICBlbmRpZgorICAgIGlmIChrZXlfaGFzX3BlbmRpbmdfcmVhZChoKSkgeworICAgICAgICBzdHJ1Y3QgcmVhZF9vcGVyYXRpb24gKnJlYWRfb3A7CisgICAgICAgIHBqX3NzaXplX3QgYnl0ZXNfcmVhZDsKKwlwal9ib29sX3QgaGFzX2xvY2s7CisKKyAgICAgICAgLyogR2V0IG9uZSBwZW5kaW5nIHJlYWQgb3BlcmF0aW9uIGZyb20gdGhlIGxpc3QuICovCisgICAgICAgIHJlYWRfb3AgPSBoLT5yZWFkX2xpc3QubmV4dDsKKyAgICAgICAgcGpfbGlzdF9lcmFzZShyZWFkX29wKTsKKworICAgICAgICAvKiBDbGVhciBmZHNldCBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIHJlYWQuICovCisgICAgICAgIGlmIChwal9saXN0X2VtcHR5KCZoLT5yZWFkX2xpc3QpKQorICAgICAgICAgICAgaW9xdWV1ZV9yZW1vdmVfZnJvbV9zZXQoaW9xdWV1ZSwgaCwgUkVBREFCTEVfRVZFTlQpOworCisgICAgICAgIGJ5dGVzX3JlYWQgPSByZWFkX29wLT5zaXplOworCisJaWYgKChyZWFkX29wLT5vcCA9PSBQSl9JT1FVRVVFX09QX1JFQ1ZfRlJPTSkpIHsKKwkgICAgcmVhZF9vcC0+b3AgPSBQSl9JT1FVRVVFX09QX05PTkU7CisJICAgIHJjID0gcGpfc29ja19yZWN2ZnJvbShoLT5mZCwgcmVhZF9vcC0+YnVmLCAmYnl0ZXNfcmVhZCwgCisJCQkJICByZWFkX29wLT5mbGFncywKKwkJCQkgIHJlYWRfb3AtPnJtdF9hZGRyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX29wLT5ybXRfYWRkcmxlbik7CisJfSBlbHNlIGlmICgocmVhZF9vcC0+b3AgPT0gUEpfSU9RVUVVRV9PUF9SRUNWKSkgeworCSAgICByZWFkX29wLT5vcCA9IFBKX0lPUVVFVUVfT1BfTk9ORTsKKwkgICAgcmMgPSBwal9zb2NrX3JlY3YoaC0+ZmQsIHJlYWRfb3AtPmJ1ZiwgJmJ5dGVzX3JlYWQsIAorCQkJICAgICAgcmVhZF9vcC0+ZmxhZ3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGpfYXNzZXJ0KHJlYWRfb3AtPm9wID09IFBKX0lPUVVFVUVfT1BfUkVBRCk7CisJICAgIHJlYWRfb3AtPm9wID0gUEpfSU9RVUVVRV9PUF9OT05FOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFVzZXIgaGFzIHNwZWNpZmllZCBwal9pb3F1ZXVlX3JlYWQoKS4KKyAgICAgICAgICAgICAqIE9uIFdpbjMyLCB3ZSBzaG91bGQgZG8gUmVhZEZpbGUoKS4gQnV0IGJlY2F1c2Ugd2UgZ290CisgICAgICAgICAgICAgKiBoZXJlIGJlY2F1c2Ugb2Ygc2VsZWN0KCkgYW55d2F5LCB1c2VyIG11c3QgaGF2ZSBwdXQgYQorICAgICAgICAgICAgICogc29ja2V0IGRlc2NyaXB0b3Igb24gaC0+ZmQsIHdoaWNoIGluIHRoaXMgY2FzZSB3ZSBjYW4KKyAgICAgICAgICAgICAqIGp1c3QgY2FsbCBwal9zb2NrX3JlY3YoKSBpbnN0ZWFkIG9mIFJlYWRGaWxlKCkuCisgICAgICAgICAgICAgKiBPbiBVbml4LCB1c2VyIG1heSBwdXQgYSBmaWxlIGluIGgtPmZkLCBzbyB3ZSdsbCBoYXZlCisgICAgICAgICAgICAgKiB0byBjYWxsIHJlYWQoKSBoZXJlLgorICAgICAgICAgICAgICogVGhpcyBtYXkgbm90IGNvbXBpbGUgb24gc3lzdGVtcyB3aGljaCBkb2Vzbid0IGhhdmUgCisgICAgICAgICAgICAgKiByZWFkKCkuIFRoYXQncyB3aHkgd2Ugb25seSBzcGVjaWZ5IFBKX0xJTlVYIGhlcmUgc28KKyAgICAgICAgICAgICAqIHRoYXQgZXJyb3IgaXMgZWFzaWVyIHRvIGNhdGNoLgorICAgICAgICAgICAgICovCisjCSAgICBpZiBkZWZpbmVkKFBKX1dJTjMyKSAmJiBQSl9XSU4zMiAhPSAwIHx8IFwKKwkgICAgICAgZGVmaW5lZChQSl9XSU42NCkgJiYgUEpfV0lONjQgIT0gMCB8fCBcCisJICAgICAgIGRlZmluZWQoUEpfV0lOMzJfV0lOQ0UpICYmIFBKX1dJTjMyX1dJTkNFICE9IDAKKyAgICAgICAgICAgICAgICByYyA9IHBqX3NvY2tfcmVjdihoLT5mZCwgcmVhZF9vcC0+YnVmLCAmYnl0ZXNfcmVhZCwgCisJCQkJICByZWFkX29wLT5mbGFncyk7CisgICAgICAgICAgICAgICAgLy9yYyA9IFJlYWRGaWxlKChIQU5ETEUpaC0+ZmQsIHJlYWRfb3AtPmJ1ZiwgcmVhZF9vcC0+c2l6ZSwKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgJmJ5dGVzX3JlYWQsIE5VTEwpOworIyAgICAgICAgICAgZWxpZiAoZGVmaW5lZChQSl9IQVNfVU5JU1REX0gpICYmIFBKX0hBU19VTklTVERfSCAhPSAwKQorICAgICAgICAgICAgICAgIGJ5dGVzX3JlYWQgPSByZWFkKGgtPmZkLCByZWFkX29wLT5idWYsIGJ5dGVzX3JlYWQpOworICAgICAgICAgICAgICAgIHJjID0gKGJ5dGVzX3JlYWQgPj0gMCkgPyBQSl9TVUNDRVNTIDogcGpfZ2V0X29zX2Vycm9yKCk7CisjCSAgICBlbGlmIGRlZmluZWQoUEpfTElOVVhfS0VSTkVMKSAmJiBQSl9MSU5VWF9LRVJORUwgIT0gMAorICAgICAgICAgICAgICAgIGJ5dGVzX3JlYWQgPSBzeXNfcmVhZChoLT5mZCwgcmVhZF9vcC0+YnVmLCBieXRlc19yZWFkKTsKKyAgICAgICAgICAgICAgICByYyA9IChieXRlc19yZWFkID49IDApID8gUEpfU1VDQ0VTUyA6IC1ieXRlc19yZWFkOworIyAgICAgICAgICAgZWxzZQorIyAgICAgICAgICAgICAgIGVycm9yICJJbXBsZW1lbnQgcmVhZCgpIGZvciB0aGlzIHBsYXRmb3JtISIKKyMgICAgICAgICAgIGVuZGlmCisgICAgICAgIH0KKwkKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworIwkgICAgaWYgKGRlZmluZWQoUEpfV0lOMzIpICYmIFBKX1dJTjMyICE9IDApIHx8IFwKKwkgICAgICAgKGRlZmluZWQoUEpfV0lONjQpICYmIFBKX1dJTjY0ICE9IDApIAorCSAgICAvKiBPbiBXaW4zMiwgZm9yIFVEUCwgV1NBRUNPTk5SRVNFVCBvbiB0aGUgcmVjZWl2ZSBzaWRlIAorCSAgICAgKiBpbmRpY2F0ZXMgdGhhdCBwcmV2aW91cyBzZW5kaW5nIGhhcyB0cmlnZ2VyZWQgSUNNUCBQb3J0IAorCSAgICAgKiBVbnJlYWNoYWJsZSBtZXNzYWdlLgorCSAgICAgKiBCdXQgd2Ugd291bGRuJ3Qga25vdyBhdCB0aGlzIHBvaW50IHdoaWNoIG9uZSBvZiBwcmV2aW91cyAKKwkgICAgICoga2V5IHRoYXQgaGFzIHRyaWdnZXJlZCB0aGUgZXJyb3IsIHNpbmNlIFVEUCBzb2NrZXQgY2FuCisJICAgICAqIGJlIHNoYXJlZCEKKwkgICAgICogU28gd2UnbGwganVzdCBpZ25vcmUgaXQhCisJICAgICAqLworCisJICAgIGlmIChyYyA9PSBQSl9TVEFUVVNfRlJPTV9PUyhXU0FFQ09OTlJFU0VUKSkgeworCQkvL1BKX0xPRyg0LChUSElTX0ZJTEUsIAorICAgICAgICAgICAgICAgIC8vICAgICAgICAgICJJZ25vcmVkIElDTVAgcG9ydCB1bnJlYWNoLiBvbiBrZXk9JXAiLCBoKSk7CisJICAgIH0KKyMJICAgIGVuZGlmCisKKyAgICAgICAgICAgIC8qIEluIGFueSBjYXNlIHdlIHdvdWxkIHJlcG9ydCB0aGlzIHRvIGNhbGxlci4gKi8KKyAgICAgICAgICAgIGJ5dGVzX3JlYWQgPSAtcmM7CisKKyNpZiBkZWZpbmVkKFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQpICYmIFwKKyAgICBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIT0wCisJICAgIC8qIFNwZWNpYWwgdHJlYXRtZW50IGZvciBkZWFkIFVEUCBzb2NrZXRzIGhlcmUsIHNlZSB0aWNrZXQgIzExMDcgKi8KKwkgICAgaWYgKHJjID09IFBKX1NUQVRVU19GUk9NX09TKEVOT1RDT05OKSAmJiAhSVNfQ0xPU0lORyhoKSAmJgorCQloLT5mZF90eXBlPT1wal9TT0NLX0RHUkFNKCkpCisJICAgIHsKKwkJcmVwbGFjZV91ZHBfc29jayhoKTsKKwkgICAgfQorI2VuZGlmCisJfQorCisJLyogVW5sb2NrOyBmcm9tIHRoaXMgcG9pbnQgd2UgZG9uJ3QgbmVlZCB0byBob2xkIGtleSdzIG11dGV4CisJICogKHVubGVzcyBjb25jdXJyZW5jeSBpcyBkaXNhYmxlZCwgd2hpY2ggaW4gdGhpcyBjYXNlIHdlIHNob3VsZAorCSAqIGhvbGQgdGhlIG11dGV4IHdoaWxlIGNhbGxpbmcgdGhlIGNhbGxiYWNrKSAqLworCWlmIChoLT5hbGxvd19jb25jdXJyZW50KSB7CisJICAgIC8qIGNvbmN1cnJlbmN5IG1heSBiZSBjaGFuZ2VkIHdoaWxlIHdlJ3JlIGluIHRoZSBjYWxsYmFjaywgc28KKwkgICAgICogc2F2ZSBpdCB0byBhIGZsYWcuCisJICAgICAqLworCSAgICBoYXNfbG9jayA9IFBKX0ZBTFNFOworCSAgICBwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisJICAgIFBKX1JBQ0VfTUUoNSk7CisJfSBlbHNlIHsKKwkgICAgaGFzX2xvY2sgPSBQSl9UUlVFOworCX0KKworCS8qIENhbGwgY2FsbGJhY2suICovCisgICAgICAgIGlmIChoLT5jYi5vbl9yZWFkX2NvbXBsZXRlICYmICFJU19DTE9TSU5HKGgpKSB7CisJICAgICgqaC0+Y2Iub25fcmVhZF9jb21wbGV0ZSkoaCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwal9pb3F1ZXVlX29wX2tleV90KilyZWFkX29wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc19yZWFkKTsKKyAgICAgICAgfQorCisJaWYgKGhhc19sb2NrKSB7CisJICAgIHBqX2lvcXVldWVfdW5sb2NrX2tleShoKTsKKwl9CisKKyAgICB9IGVsc2UgeworICAgICAgICAvKgorICAgICAgICAgKiBUaGlzIGlzIG5vcm1hbDsgZXhlY3V0aW9uIG1heSBmYWxsIGhlcmUgd2hlbiBtdWx0aXBsZSB0aHJlYWRzCisgICAgICAgICAqIGFyZSBzaWduYWxsZWQgZm9yIHRoZSBzYW1lIGV2ZW50LCBidXQgb25seSBvbmUgdGhyZWFkIGV2ZW50dWFsbHkKKyAgICAgICAgICogYWJsZSB0byBwcm9jZXNzIHRoZSBldmVudC4KKyAgICAgICAgICovCisJcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGgpOworICAgIH0KK30KKworCit2b2lkIGlvcXVldWVfZGlzcGF0Y2hfZXhjZXB0aW9uX2V2ZW50KCBwal9pb3F1ZXVlX3QgKmlvcXVldWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqaCApCit7CisgICAgcGpfYm9vbF90IGhhc19sb2NrOworCisgICAgcGpfaW9xdWV1ZV9sb2NrX2tleShoKTsKKworICAgIGlmICghaC0+Y29ubmVjdGluZykgeworICAgICAgICAvKiBJdCBpcyBwb3NzaWJsZSB0aGF0IG1vcmUgdGhhbiBvbmUgdGhyZWFkIHdhcyB3b2tlbiB1cCwgdGh1cworICAgICAgICAgKiB0aGUgcmVtYWluaW5nIHRocmVhZCB3aWxsIHNlZSBoLT5jb25uZWN0aW5nIGFzIHplcm8gYmVjYXVzZQorICAgICAgICAgKiBpdCBoYXMgYmVlbiBwcm9jZXNzZWQgYnkgb3RoZXIgdGhyZWFkLgorICAgICAgICAgKi8KKwlwal9pb3F1ZXVlX3VubG9ja19rZXkoaCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoSVNfQ0xPU0lORyhoKSkgeworCXBqX2lvcXVldWVfdW5sb2NrX2tleShoKTsKKwlyZXR1cm47CisgICAgfQorCisgICAgLyogQ2xlYXIgb3BlcmF0aW9uLiAqLworICAgIGgtPmNvbm5lY3RpbmcgPSAwOworCisgICAgaW9xdWV1ZV9yZW1vdmVfZnJvbV9zZXQoaW9xdWV1ZSwgaCwgV1JJVEVBQkxFX0VWRU5UKTsKKyAgICBpb3F1ZXVlX3JlbW92ZV9mcm9tX3NldChpb3F1ZXVlLCBoLCBFWENFUFRJT05fRVZFTlQpOworCisgICAgLyogVW5sb2NrOyBmcm9tIHRoaXMgcG9pbnQgd2UgZG9uJ3QgbmVlZCB0byBob2xkIGtleSdzIG11dGV4CisgICAgICogKHVubGVzcyBjb25jdXJyZW5jeSBpcyBkaXNhYmxlZCwgd2hpY2ggaW4gdGhpcyBjYXNlIHdlIHNob3VsZAorICAgICAqIGhvbGQgdGhlIG11dGV4IHdoaWxlIGNhbGxpbmcgdGhlIGNhbGxiYWNrKSAqLworICAgIGlmIChoLT5hbGxvd19jb25jdXJyZW50KSB7CisJLyogY29uY3VycmVuY3kgbWF5IGJlIGNoYW5nZWQgd2hpbGUgd2UncmUgaW4gdGhlIGNhbGxiYWNrLCBzbworCSAqIHNhdmUgaXQgdG8gYSBmbGFnLgorCSAqLworCWhhc19sb2NrID0gUEpfRkFMU0U7CisJcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGgpOworCVBKX1JBQ0VfTUUoNSk7CisgICAgfSBlbHNlIHsKKwloYXNfbG9jayA9IFBKX1RSVUU7CisgICAgfQorCisgICAgLyogQ2FsbCBjYWxsYmFjay4gKi8KKyAgICBpZiAoaC0+Y2Iub25fY29ubmVjdF9jb21wbGV0ZSAmJiAhSVNfQ0xPU0lORyhoKSkgeworCXBqX3N0YXR1c190IHN0YXR1cyA9IC0xOworI2lmIChkZWZpbmVkKFBKX0hBU19TT19FUlJPUikgJiYgUEpfSEFTX1NPX0VSUk9SIT0wKQorCWludCB2YWx1ZTsKKwlpbnQgdmFsbGVuID0gc2l6ZW9mKHZhbHVlKTsKKwlpbnQgZ3NfcmMgPSBwal9zb2NrX2dldHNvY2tvcHQoaC0+ZmQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCAKKwkJCQkgICAgICAgJnZhbHVlLCAmdmFsbGVuKTsKKwlpZiAoZ3NfcmMgPT0gMCkgeworCSAgICBzdGF0dXMgPSBQSl9SRVRVUk5fT1NfRVJST1IodmFsdWUpOworCX0KKyNlbmRpZgorCisJKCpoLT5jYi5vbl9jb25uZWN0X2NvbXBsZXRlKShoLCBzdGF0dXMpOworICAgIH0KKworICAgIGlmIChoYXNfbG9jaykgeworCXBqX2lvcXVldWVfdW5sb2NrX2tleShoKTsKKyAgICB9Cit9CisKKy8qCisgKiBwal9pb3F1ZXVlX3JlY3YoKQorICoKKyAqIFN0YXJ0IGFzeW5jaHJvbm91cyByZWN2KCkgZnJvbSB0aGUgc29ja2V0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfcmVjdiggIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJCSAgICAgIHZvaWQgKmJ1ZmZlciwKKwkJCQkgICAgICBwal9zc2l6ZV90ICpsZW5ndGgsCisJCQkJICAgICAgdW5zaWduZWQgZmxhZ3MgKQoreworICAgIHN0cnVjdCByZWFkX29wZXJhdGlvbiAqcmVhZF9vcDsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oa2V5ICYmIG9wX2tleSAmJiBidWZmZXIgJiYgbGVuZ3RoLCBQSl9FSU5WQUwpOworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvKiBDaGVjayBpZiBrZXkgaXMgY2xvc2luZyAobmVlZCB0byBkbyB0aGlzIGZpcnN0IGJlZm9yZSBhY2Nlc3NpbmcKKyAgICAgKiBvdGhlciB2YXJpYWJsZXMsIHNpbmNlIHRoZXkgbWlnaHQgaGF2ZSBiZWVuIGRlc3Ryb3llZC4gU2VlIHRpY2tldAorICAgICAqICM0NjkpLgorICAgICAqLworICAgIGlmIChJU19DTE9TSU5HKGtleSkpCisJcmV0dXJuIFBKX0VDQU5DRUxMRUQ7CisKKyAgICByZWFkX29wID0gKHN0cnVjdCByZWFkX29wZXJhdGlvbiopb3Bfa2V5OworICAgIHJlYWRfb3AtPm9wID0gUEpfSU9RVUVVRV9PUF9OT05FOworCisgICAgLyogVHJ5IHRvIHNlZSBpZiB0aGVyZSdzIGRhdGEgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLiAKKyAgICAgKi8KKyAgICBpZiAoKGZsYWdzICYgUEpfSU9RVUVVRV9BTFdBWVNfQVNZTkMpID09IDApIHsKKwlwal9zdGF0dXNfdCBzdGF0dXM7CisJcGpfc3NpemVfdCBzaXplOworCisJc2l6ZSA9ICpsZW5ndGg7CisJc3RhdHVzID0gcGpfc29ja19yZWN2KGtleS0+ZmQsIGJ1ZmZlciwgJnNpemUsIGZsYWdzKTsKKwlpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpIHsKKwkgICAgLyogWWVzISBEYXRhIGlzIGF2YWlsYWJsZSEgKi8KKwkgICAgKmxlbmd0aCA9IHNpemU7CisJICAgIHJldHVybiBQSl9TVUNDRVNTOworCX0gZWxzZSB7CisJICAgIC8qIElmIGVycm9yIGlzIG5vdCBFV09VTERCTE9DSyAob3IgRUFHQUlOIG9uIExpbnV4KSwgcmVwb3J0CisJICAgICAqIHRoZSBlcnJvciB0byBjYWxsZXIuCisJICAgICAqLworCSAgICBpZiAoc3RhdHVzICE9IFBKX1NUQVRVU19GUk9NX09TKFBKX0JMT0NLSU5HX0VSUk9SX1ZBTCkpCisJCXJldHVybiBzdGF0dXM7CisJfQorICAgIH0KKworICAgIGZsYWdzICY9IH4oUEpfSU9RVUVVRV9BTFdBWVNfQVNZTkMpOworCisgICAgLyoKKyAgICAgKiBObyBkYXRhIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4KKyAgICAgKiBNdXN0IHNjaGVkdWxlIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gdG8gdGhlIGlvcXVldWUuCisgICAgICovCisgICAgcmVhZF9vcC0+b3AgPSBQSl9JT1FVRVVFX09QX1JFQ1Y7CisgICAgcmVhZF9vcC0+YnVmID0gYnVmZmVyOworICAgIHJlYWRfb3AtPnNpemUgPSAqbGVuZ3RoOworICAgIHJlYWRfb3AtPmZsYWdzID0gZmxhZ3M7CisKKyAgICBwal9pb3F1ZXVlX2xvY2tfa2V5KGtleSk7CisgICAgLyogQ2hlY2sgYWdhaW4uIEhhbmRsZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBhZnRlciB0aGUgcHJldmlvdXMgY2hlY2sKKyAgICAgKiBpbiBtdWx0aXRocmVhZGVkIGFwcC4gSWYgd2UgYWRkIGJhZCBoYW5kbGUgdG8gdGhlIHNldCBpdCB3aWxsCisgICAgICogY29ycnVwdCB0aGUgaW9xdWV1ZSBzZXQuIFNlZSAjOTEzCisgICAgICovCisgICAgaWYgKElTX0NMT1NJTkcoa2V5KSkgeworCXBqX2lvcXVldWVfdW5sb2NrX2tleShrZXkpOworCXJldHVybiBQSl9FQ0FOQ0VMTEVEOworICAgIH0KKyAgICBwal9saXN0X2luc2VydF9iZWZvcmUoJmtleS0+cmVhZF9saXN0LCByZWFkX29wKTsKKyAgICBpb3F1ZXVlX2FkZF90b19zZXQoa2V5LT5pb3F1ZXVlLCBrZXksIFJFQURBQkxFX0VWRU5UKTsKKyAgICBwal9pb3F1ZXVlX3VubG9ja19rZXkoa2V5KTsKKworICAgIHJldHVybiBQSl9FUEVORElORzsKK30KKworLyoKKyAqIHBqX2lvcXVldWVfcmVjdmZyb20oKQorICoKKyAqIFN0YXJ0IGFzeW5jaHJvbm91cyByZWN2ZnJvbSgpIGZyb20gdGhlIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlY3Zmcm9tKCBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCQkgICAgICAgICB2b2lkICpidWZmZXIsCisJCQkJICAgICAgICAgcGpfc3NpemVfdCAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmbGFncywKKwkJCQkgICAgICAgICBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCSAgICAgICAgIGludCAqYWRkcmxlbikKK3sKKyAgICBzdHJ1Y3QgcmVhZF9vcGVyYXRpb24gKnJlYWRfb3A7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGtleSAmJiBvcF9rZXkgJiYgYnVmZmVyICYmIGxlbmd0aCwgUEpfRUlOVkFMKTsKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgLyogQ2hlY2sgaWYga2V5IGlzIGNsb3NpbmcuICovCisgICAgaWYgKElTX0NMT1NJTkcoa2V5KSkKKwlyZXR1cm4gUEpfRUNBTkNFTExFRDsKKworICAgIHJlYWRfb3AgPSAoc3RydWN0IHJlYWRfb3BlcmF0aW9uKilvcF9rZXk7CisgICAgcmVhZF9vcC0+b3AgPSBQSl9JT1FVRVVFX09QX05PTkU7CisKKyAgICAvKiBUcnkgdG8gc2VlIGlmIHRoZXJlJ3MgZGF0YSBpbW1lZGlhdGVseSBhdmFpbGFibGUuIAorICAgICAqLworICAgIGlmICgoZmxhZ3MgJiBQSl9JT1FVRVVFX0FMV0FZU19BU1lOQykgPT0gMCkgeworCXBqX3N0YXR1c190IHN0YXR1czsKKwlwal9zc2l6ZV90IHNpemU7CisKKwlzaXplID0gKmxlbmd0aDsKKwlzdGF0dXMgPSBwal9zb2NrX3JlY3Zmcm9tKGtleS0+ZmQsIGJ1ZmZlciwgJnNpemUsIGZsYWdzLAorCQkJCSAgYWRkciwgYWRkcmxlbik7CisJaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKSB7CisJICAgIC8qIFllcyEgRGF0YSBpcyBhdmFpbGFibGUhICovCisJICAgICpsZW5ndGggPSBzaXplOworCSAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKwl9IGVsc2UgeworCSAgICAvKiBJZiBlcnJvciBpcyBub3QgRVdPVUxEQkxPQ0sgKG9yIEVBR0FJTiBvbiBMaW51eCksIHJlcG9ydAorCSAgICAgKiB0aGUgZXJyb3IgdG8gY2FsbGVyLgorCSAgICAgKi8KKwkgICAgaWYgKHN0YXR1cyAhPSBQSl9TVEFUVVNfRlJPTV9PUyhQSl9CTE9DS0lOR19FUlJPUl9WQUwpKQorCQlyZXR1cm4gc3RhdHVzOworCX0KKyAgICB9CisKKyAgICBmbGFncyAmPSB+KFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DKTsKKworICAgIC8qCisgICAgICogTm8gZGF0YSBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUuCisgICAgICogTXVzdCBzY2hlZHVsZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uIHRvIHRoZSBpb3F1ZXVlLgorICAgICAqLworICAgIHJlYWRfb3AtPm9wID0gUEpfSU9RVUVVRV9PUF9SRUNWX0ZST007CisgICAgcmVhZF9vcC0+YnVmID0gYnVmZmVyOworICAgIHJlYWRfb3AtPnNpemUgPSAqbGVuZ3RoOworICAgIHJlYWRfb3AtPmZsYWdzID0gZmxhZ3M7CisgICAgcmVhZF9vcC0+cm10X2FkZHIgPSBhZGRyOworICAgIHJlYWRfb3AtPnJtdF9hZGRybGVuID0gYWRkcmxlbjsKKworICAgIHBqX2lvcXVldWVfbG9ja19rZXkoa2V5KTsKKyAgICAvKiBDaGVjayBhZ2Fpbi4gSGFuZGxlIG1heSBoYXZlIGJlZW4gY2xvc2VkIGFmdGVyIHRoZSBwcmV2aW91cyBjaGVjaworICAgICAqIGluIG11bHRpdGhyZWFkZWQgYXBwLiBJZiB3ZSBhZGQgYmFkIGhhbmRsZSB0byB0aGUgc2V0IGl0IHdpbGwKKyAgICAgKiBjb3JydXB0IHRoZSBpb3F1ZXVlIHNldC4gU2VlICM5MTMKKyAgICAgKi8KKyAgICBpZiAoSVNfQ0xPU0lORyhrZXkpKSB7CisJcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisJcmV0dXJuIFBKX0VDQU5DRUxMRUQ7CisgICAgfQorICAgIHBqX2xpc3RfaW5zZXJ0X2JlZm9yZSgma2V5LT5yZWFkX2xpc3QsIHJlYWRfb3ApOworICAgIGlvcXVldWVfYWRkX3RvX3NldChrZXktPmlvcXVldWUsIGtleSwgUkVBREFCTEVfRVZFTlQpOworICAgIHBqX2lvcXVldWVfdW5sb2NrX2tleShrZXkpOworCisgICAgcmV0dXJuIFBKX0VQRU5ESU5HOworfQorCisvKgorICogcGpfaW9xdWV1ZV9zZW5kKCkKKyAqCisgKiBTdGFydCBhc3luY2hyb25vdXMgc2VuZCgpIHRvIHRoZSBkZXNjcmlwdG9yLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2VuZCggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCSAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorCQkJICAgICAgICAgICAgIHBqX3NzaXplX3QgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBzdHJ1Y3Qgd3JpdGVfb3BlcmF0aW9uICp3cml0ZV9vcDsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisgICAgdW5zaWduZWQgcmV0cnk7CisgICAgcGpfc3NpemVfdCBzZW50OworCisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXkgJiYgb3Bfa2V5ICYmIGRhdGEgJiYgbGVuZ3RoLCBQSl9FSU5WQUwpOworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvKiBDaGVjayBpZiBrZXkgaXMgY2xvc2luZy4gKi8KKyAgICBpZiAoSVNfQ0xPU0lORyhrZXkpKQorCXJldHVybiBQSl9FQ0FOQ0VMTEVEOworCisgICAgLyogV2UgY2FuIG5vdCB1c2UgUEpfSU9RVUVVRV9BTFdBWVNfQVNZTkMgZm9yIHNvY2tldCB3cml0ZS4gKi8KKyAgICBmbGFncyAmPSB+KFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DKTsKKworICAgIC8qIEZhc3QgdHJhY2s6CisgICAgICogICBUcnkgdG8gc2VuZCBkYXRhIGltbWVkaWF0ZWx5LCBvbmx5IGlmIHRoZXJlJ3Mgbm8gcGVuZGluZyB3cml0ZSEKKyAgICAgKiBOb3RlOgorICAgICAqICBXZSBhcmUgc3BlY3VsYXRpbmcgdGhhdCB0aGUgbGlzdCBpcyBlbXB0eSBoZXJlIHdpdGhvdXQgcHJvcGVybHkKKyAgICAgKiAgYWNxdWlyaW5nIGlvcXVldWUncyBtdXRleCBmaXJzdC4gVGhpcyBpcyBpbnRlbnRpb25hbCwgdG8gbWF4aW1pemUKKyAgICAgKiAgcGVyZm9ybWFuY2UgdmlhIHBhcmFsbGVsaXNtLgorICAgICAqCisgICAgICogIFRoaXMgc2hvdWxkIGJlIHNhZmUsIGJlY2F1c2U6CisgICAgICogICAgICAtIGJ5IGNvbnZlbnRpb24sIHdlIHJlcXVpcmUgY2FsbGVyIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQorICAgICAqICAgICAgICBrZXkgaXMgbm90IHVucmVnaXN0ZXJlZCB3aGlsZSBvdGhlciB0aHJlYWRzIGFyZSBpbnZva2luZworICAgICAqICAgICAgICBhbiBvcGVyYXRpb24gb24gdGhlIHNhbWUga2V5LgorICAgICAqICAgICAgLSBwal9saXN0X2VtcHR5KCkgaXMgc2FmZSB0byBiZSBpbnZva2VkIGJ5IG11bHRpcGxlIHRocmVhZHMsCisgICAgICogICAgICAgIGV2ZW4gd2hlbiBvdGhlciB0aHJlYWRzIGFyZSBtb2RpZnlpbmcgdGhlIGxpc3QuCisgICAgICovCisgICAgaWYgKHBqX2xpc3RfZW1wdHkoJmtleS0+d3JpdGVfbGlzdCkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogU2VlIGlmIGRhdGEgY2FuIGJlIHNlbnQgaW1tZWRpYXRlbHkuCisgICAgICAgICAqLworICAgICAgICBzZW50ID0gKmxlbmd0aDsKKyAgICAgICAgc3RhdHVzID0gcGpfc29ja19zZW5kKGtleS0+ZmQsIGRhdGEsICZzZW50LCBmbGFncyk7CisgICAgICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgLyogU3VjY2VzcyEgKi8KKyAgICAgICAgICAgICpsZW5ndGggPSBzZW50OworICAgICAgICAgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBJZiBlcnJvciBpcyBub3QgRVdPVUxEQkxPQ0sgKG9yIEVBR0FJTiBvbiBMaW51eCksIHJlcG9ydAorICAgICAgICAgICAgICogdGhlIGVycm9yIHRvIGNhbGxlci4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBQSl9TVEFUVVNfRlJPTV9PUyhQSl9CTE9DS0lOR19FUlJPUl9WQUwpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogU2NoZWR1bGUgYXN5bmNocm9ub3VzIHNlbmQuCisgICAgICovCisgICAgd3JpdGVfb3AgPSAoc3RydWN0IHdyaXRlX29wZXJhdGlvbiopb3Bfa2V5OworCisgICAgLyogU3BpbiBpZiB3cml0ZV9vcCBoYXMgcGVuZGluZyBvcGVyYXRpb24gKi8KKyAgICBmb3IgKHJldHJ5PTA7IHdyaXRlX29wLT5vcCAhPSAwICYmIHJldHJ5PFBFTkRJTkdfUkVUUlk7ICsrcmV0cnkpCisJcGpfdGhyZWFkX3NsZWVwKDApOworCisgICAgLyogTGFzdCBjaGFuY2UgKi8KKyAgICBpZiAod3JpdGVfb3AtPm9wKSB7CisJLyogVW5hYmxlIHRvIHNlbmQgcGFja2V0IGJlY2F1c2UgdGhlcmUgaXMgYWxyZWFkeSBwZW5kaW5nIHdyaXRlIGluIHRoZQorCSAqIHdyaXRlX29wLiBXZSBjb3VsZCBub3QgcHV0IHRoZSBvcGVyYXRpb24gaW50byB0aGUgd3JpdGVfb3AKKwkgKiBiZWNhdXNlIHdyaXRlX29wIGFscmVhZHkgY29udGFpbnMgYSBwZW5kaW5nIG9wZXJhdGlvbiEgQW5kCisJICogd2UgY291bGQgbm90IHNlbmQgdGhlIHBhY2tldCBkaXJlY3RseSB3aXRoIHNlbmQoKSBlaXRoZXIsCisJICogYmVjYXVzZSB0aGF0IHdpbGwgYnJlYWsgdGhlIG9yZGVyIG9mIHRoZSBwYWNrZXQuIFNvIHdlIGNhbgorCSAqIG9ubHkgcmV0dXJuIGVycm9yIGhlcmUuCisJICoKKwkgKiBUaGlzIGNvdWxkIGhhcHBlbiBmb3IgZXhhbXBsZSBpbiBtdWx0aXRocmVhZHMgcHJvZ3JhbSwKKwkgKiB3aGVyZSBwb2xsaW5nIGlzIGRvbmUgYnkgb25lIHRocmVhZCwgd2hpbGUgb3RoZXIgdGhyZWFkcyBhcmUgZG9pbmcKKwkgKiB0aGUgc2VuZGluZyBvbmx5LiBJZiB0aGUgcG9sbGluZyB0aHJlYWQgcnVucyBvbiBsb3dlciBwcmlvcml0eQorCSAqIHRoYW4gdGhlIHNlbmRpbmcgdGhyZWFkLCB0aGVuIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGVuZGluZworCSAqIHdyaXRlIGZsYWcgaXMgbm90IGNsZWFyZWQgaW4tdGltZSBiZWNhdXNlIGNsZWFyaW5nIGlzIG9ubHkgZG9uZQorCSAqIGR1cmluZyBwb2xsaW5nLiAKKwkgKgorCSAqIEFwbGljYXRpb24gc2hvdWxkIHNwZWNpZnkgbXVsdGlwbGUgd3JpdGUgb3BlcmF0aW9uIGtleXMgb24KKwkgKiBzaXR1YXRpb24gbGlrZSB0aGlzLgorCSAqLworCS8vcGpfYXNzZXJ0KCEiaW9xdWV1ZTogdGhlcmUgaXMgcGVuZGluZyBvcGVyYXRpb24gb24gdGhpcyBrZXkhIik7CisJcmV0dXJuIFBKX0VCVVNZOworICAgIH0KKworICAgIHdyaXRlX29wLT5vcCA9IFBKX0lPUVVFVUVfT1BfU0VORDsKKyAgICB3cml0ZV9vcC0+YnVmID0gKGNoYXIqKWRhdGE7CisgICAgd3JpdGVfb3AtPnNpemUgPSAqbGVuZ3RoOworICAgIHdyaXRlX29wLT53cml0dGVuID0gMDsKKyAgICB3cml0ZV9vcC0+ZmxhZ3MgPSBmbGFnczsKKyAgICAKKyAgICBwal9pb3F1ZXVlX2xvY2tfa2V5KGtleSk7CisgICAgLyogQ2hlY2sgYWdhaW4uIEhhbmRsZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBhZnRlciB0aGUgcHJldmlvdXMgY2hlY2sKKyAgICAgKiBpbiBtdWx0aXRocmVhZGVkIGFwcC4gSWYgd2UgYWRkIGJhZCBoYW5kbGUgdG8gdGhlIHNldCBpdCB3aWxsCisgICAgICogY29ycnVwdCB0aGUgaW9xdWV1ZSBzZXQuIFNlZSAjOTEzCisgICAgICovCisgICAgaWYgKElTX0NMT1NJTkcoa2V5KSkgeworCXBqX2lvcXVldWVfdW5sb2NrX2tleShrZXkpOworCXJldHVybiBQSl9FQ0FOQ0VMTEVEOworICAgIH0KKyAgICBwal9saXN0X2luc2VydF9iZWZvcmUoJmtleS0+d3JpdGVfbGlzdCwgd3JpdGVfb3ApOworICAgIGlvcXVldWVfYWRkX3RvX3NldChrZXktPmlvcXVldWUsIGtleSwgV1JJVEVBQkxFX0VWRU5UKTsKKyAgICBwal9pb3F1ZXVlX3VubG9ja19rZXkoa2V5KTsKKworICAgIHJldHVybiBQSl9FUEVORElORzsKK30KKworCisvKgorICogcGpfaW9xdWV1ZV9zZW5kdG8oKQorICoKKyAqIFN0YXJ0IGFzeW5jaHJvbm91cyB3cml0ZSgpIHRvIHRoZSBkZXNjcmlwdG9yLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2VuZHRvKCBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorCQkJICAgICAgICAgICAgICAgcGpfc3NpemVfdCAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfdWludDMyX3QgZmxhZ3MsCisJCQkgICAgICAgICAgICAgICBjb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJICAgICAgICAgICAgICAgaW50IGFkZHJsZW4pCit7CisgICAgc3RydWN0IHdyaXRlX29wZXJhdGlvbiAqd3JpdGVfb3A7CisgICAgdW5zaWduZWQgcmV0cnk7CisgICAgcGpfYm9vbF90IHJlc3RhcnRfcmV0cnkgPSBQSl9GQUxTRTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisgICAgcGpfc3NpemVfdCBzZW50OworCisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXkgJiYgb3Bfa2V5ICYmIGRhdGEgJiYgbGVuZ3RoLCBQSl9FSU5WQUwpOworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyNpZiBkZWZpbmVkKFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQpICYmIFwKKwkgICAgUEpfSVBIT05FX09TX0hBU19NVUxUSVRBU0tJTkdfU1VQUE9SVCE9MAorcmV0cnlfb25fcmVzdGFydDoKKyNlbHNlCisgICAgUEpfVU5VU0VEX0FSRyhyZXN0YXJ0X3JldHJ5KTsKKyNlbmRpZgorICAgIC8qIENoZWNrIGlmIGtleSBpcyBjbG9zaW5nLiAqLworICAgIGlmIChJU19DTE9TSU5HKGtleSkpCisJcmV0dXJuIFBKX0VDQU5DRUxMRUQ7CisKKyAgICAvKiBXZSBjYW4gbm90IHVzZSBQSl9JT1FVRVVFX0FMV0FZU19BU1lOQyBmb3Igc29ja2V0IHdyaXRlICovCisgICAgZmxhZ3MgJj0gfihQSl9JT1FVRVVFX0FMV0FZU19BU1lOQyk7CisKKyAgICAvKiBGYXN0IHRyYWNrOgorICAgICAqICAgVHJ5IHRvIHNlbmQgZGF0YSBpbW1lZGlhdGVseSwgb25seSBpZiB0aGVyZSdzIG5vIHBlbmRpbmcgd3JpdGUhCisgICAgICogTm90ZToKKyAgICAgKiAgV2UgYXJlIHNwZWN1bGF0aW5nIHRoYXQgdGhlIGxpc3QgaXMgZW1wdHkgaGVyZSB3aXRob3V0IHByb3Blcmx5CisgICAgICogIGFjcXVpcmluZyBpb3F1ZXVlJ3MgbXV0ZXggZmlyc3QuIFRoaXMgaXMgaW50ZW50aW9uYWwsIHRvIG1heGltaXplCisgICAgICogIHBlcmZvcm1hbmNlIHZpYSBwYXJhbGxlbGlzbS4KKyAgICAgKgorICAgICAqICBUaGlzIHNob3VsZCBiZSBzYWZlLCBiZWNhdXNlOgorICAgICAqICAgICAgLSBieSBjb252ZW50aW9uLCB3ZSByZXF1aXJlIGNhbGxlciB0byBtYWtlIHN1cmUgdGhhdCB0aGUKKyAgICAgKiAgICAgICAga2V5IGlzIG5vdCB1bnJlZ2lzdGVyZWQgd2hpbGUgb3RoZXIgdGhyZWFkcyBhcmUgaW52b2tpbmcKKyAgICAgKiAgICAgICAgYW4gb3BlcmF0aW9uIG9uIHRoZSBzYW1lIGtleS4KKyAgICAgKiAgICAgIC0gcGpfbGlzdF9lbXB0eSgpIGlzIHNhZmUgdG8gYmUgaW52b2tlZCBieSBtdWx0aXBsZSB0aHJlYWRzLAorICAgICAqICAgICAgICBldmVuIHdoZW4gb3RoZXIgdGhyZWFkcyBhcmUgbW9kaWZ5aW5nIHRoZSBsaXN0LgorICAgICAqLworICAgIGlmIChwal9saXN0X2VtcHR5KCZrZXktPndyaXRlX2xpc3QpKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFNlZSBpZiBkYXRhIGNhbiBiZSBzZW50IGltbWVkaWF0ZWx5LgorICAgICAgICAgKi8KKyAgICAgICAgc2VudCA9ICpsZW5ndGg7CisgICAgICAgIHN0YXR1cyA9IHBqX3NvY2tfc2VuZHRvKGtleS0+ZmQsIGRhdGEsICZzZW50LCBmbGFncywgYWRkciwgYWRkcmxlbik7CisgICAgICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgLyogU3VjY2VzcyEgKi8KKyAgICAgICAgICAgICpsZW5ndGggPSBzZW50OworICAgICAgICAgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBJZiBlcnJvciBpcyBub3QgRVdPVUxEQkxPQ0sgKG9yIEVBR0FJTiBvbiBMaW51eCksIHJlcG9ydAorICAgICAgICAgICAgICogdGhlIGVycm9yIHRvIGNhbGxlci4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBQSl9TVEFUVVNfRlJPTV9PUyhQSl9CTE9DS0lOR19FUlJPUl9WQUwpKSB7CisjaWYgZGVmaW5lZChQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUKSAmJiBcCisJICAgIFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQhPTAKKwkJLyogU3BlY2lhbCB0cmVhdG1lbnQgZm9yIGRlYWQgVURQIHNvY2tldHMgaGVyZSwgc2VlIHRpY2tldCAjMTEwNyAqLworCQlpZiAoc3RhdHVzPT1QSl9TVEFUVVNfRlJPTV9PUyhFUElQRSkgJiYgIUlTX0NMT1NJTkcoa2V5KSAmJgorCQkgICAga2V5LT5mZF90eXBlPT1wal9TT0NLX0RHUkFNKCkgJiYgIXJlc3RhcnRfcmV0cnkpCisJCXsKKwkJICAgIFBKX1BFUlJPUig0LChUSElTX0ZJTEUsIHN0YXR1cywKKwkJCQkgIlNlbmQgZXJyb3IgZm9yIHNvY2tldCAlZCwgcmV0cnlpbmciLAorCQkJCSBrZXktPmZkKSk7CisJCSAgICByZXBsYWNlX3VkcF9zb2NrKGtleSk7CisJCSAgICByZXN0YXJ0X3JldHJ5ID0gUEpfVFJVRTsKKwkJICAgIGdvdG8gcmV0cnlfb25fcmVzdGFydDsKKwkJfQorI2VuZGlmCisKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBDaGVjayB0aGF0IGFkZHJlc3Mgc3RvcmFnZSBjYW4gaG9sZCB0aGUgYWRkcmVzcyBwYXJhbWV0ZXIuCisgICAgICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZGRybGVuIDw9IChpbnQpc2l6ZW9mKHBqX3NvY2thZGRyX2luKSwgUEpfRUJVRyk7CisKKyAgICAvKgorICAgICAqIFNjaGVkdWxlIGFzeW5jaHJvbm91cyBzZW5kLgorICAgICAqLworICAgIHdyaXRlX29wID0gKHN0cnVjdCB3cml0ZV9vcGVyYXRpb24qKW9wX2tleTsKKyAgICAKKyAgICAvKiBTcGluIGlmIHdyaXRlX29wIGhhcyBwZW5kaW5nIG9wZXJhdGlvbiAqLworICAgIGZvciAocmV0cnk9MDsgd3JpdGVfb3AtPm9wICE9IDAgJiYgcmV0cnk8UEVORElOR19SRVRSWTsgKytyZXRyeSkKKwlwal90aHJlYWRfc2xlZXAoMCk7CisKKyAgICAvKiBMYXN0IGNoYW5jZSAqLworICAgIGlmICh3cml0ZV9vcC0+b3ApIHsKKwkvKiBVbmFibGUgdG8gc2VuZCBwYWNrZXQgYmVjYXVzZSB0aGVyZSBpcyBhbHJlYWR5IHBlbmRpbmcgd3JpdGUgb24gdGhlCisJICogd3JpdGVfb3AuIFdlIGNvdWxkIG5vdCBwdXQgdGhlIG9wZXJhdGlvbiBpbnRvIHRoZSB3cml0ZV9vcAorCSAqIGJlY2F1c2Ugd3JpdGVfb3AgYWxyZWFkeSBjb250YWlucyBhIHBlbmRpbmcgb3BlcmF0aW9uISBBbmQKKwkgKiB3ZSBjb3VsZCBub3Qgc2VuZCB0aGUgcGFja2V0IGRpcmVjdGx5IHdpdGggc2VuZHRvKCkgZWl0aGVyLAorCSAqIGJlY2F1c2UgdGhhdCB3aWxsIGJyZWFrIHRoZSBvcmRlciBvZiB0aGUgcGFja2V0LiBTbyB3ZSBjYW4KKwkgKiBvbmx5IHJldHVybiBlcnJvciBoZXJlLgorCSAqCisJICogVGhpcyBjb3VsZCBoYXBwZW4gZm9yIGV4YW1wbGUgaW4gbXVsdGl0aHJlYWRzIHByb2dyYW0sCisJICogd2hlcmUgcG9sbGluZyBpcyBkb25lIGJ5IG9uZSB0aHJlYWQsIHdoaWxlIG90aGVyIHRocmVhZHMgYXJlIGRvaW5nCisJICogdGhlIHNlbmRpbmcgb25seS4gSWYgdGhlIHBvbGxpbmcgdGhyZWFkIHJ1bnMgb24gbG93ZXIgcHJpb3JpdHkKKwkgKiB0aGFuIHRoZSBzZW5kaW5nIHRocmVhZCwgdGhlbiBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHBlbmRpbmcKKwkgKiB3cml0ZSBmbGFnIGlzIG5vdCBjbGVhcmVkIGluLXRpbWUgYmVjYXVzZSBjbGVhcmluZyBpcyBvbmx5IGRvbmUKKwkgKiBkdXJpbmcgcG9sbGluZy4gCisJICoKKwkgKiBBcGxpY2F0aW9uIHNob3VsZCBzcGVjaWZ5IG11bHRpcGxlIHdyaXRlIG9wZXJhdGlvbiBrZXlzIG9uCisJICogc2l0dWF0aW9uIGxpa2UgdGhpcy4KKwkgKi8KKwkvL3BqX2Fzc2VydCghImlvcXVldWU6IHRoZXJlIGlzIHBlbmRpbmcgb3BlcmF0aW9uIG9uIHRoaXMga2V5ISIpOworCXJldHVybiBQSl9FQlVTWTsKKyAgICB9CisKKyAgICB3cml0ZV9vcC0+b3AgPSBQSl9JT1FVRVVFX09QX1NFTkRfVE87CisgICAgd3JpdGVfb3AtPmJ1ZiA9IChjaGFyKilkYXRhOworICAgIHdyaXRlX29wLT5zaXplID0gKmxlbmd0aDsKKyAgICB3cml0ZV9vcC0+d3JpdHRlbiA9IDA7CisgICAgd3JpdGVfb3AtPmZsYWdzID0gZmxhZ3M7CisgICAgcGpfbWVtY3B5KCZ3cml0ZV9vcC0+cm10X2FkZHIsIGFkZHIsIGFkZHJsZW4pOworICAgIHdyaXRlX29wLT5ybXRfYWRkcmxlbiA9IGFkZHJsZW47CisgICAgCisgICAgcGpfaW9xdWV1ZV9sb2NrX2tleShrZXkpOworICAgIC8qIENoZWNrIGFnYWluLiBIYW5kbGUgbWF5IGhhdmUgYmVlbiBjbG9zZWQgYWZ0ZXIgdGhlIHByZXZpb3VzIGNoZWNrCisgICAgICogaW4gbXVsdGl0aHJlYWRlZCBhcHAuIElmIHdlIGFkZCBiYWQgaGFuZGxlIHRvIHRoZSBzZXQgaXQgd2lsbAorICAgICAqIGNvcnJ1cHQgdGhlIGlvcXVldWUgc2V0LiBTZWUgIzkxMworICAgICAqLworICAgIGlmIChJU19DTE9TSU5HKGtleSkpIHsKKwlwal9pb3F1ZXVlX3VubG9ja19rZXkoa2V5KTsKKwlyZXR1cm4gUEpfRUNBTkNFTExFRDsKKyAgICB9CisgICAgcGpfbGlzdF9pbnNlcnRfYmVmb3JlKCZrZXktPndyaXRlX2xpc3QsIHdyaXRlX29wKTsKKyAgICBpb3F1ZXVlX2FkZF90b19zZXQoa2V5LT5pb3F1ZXVlLCBrZXksIFdSSVRFQUJMRV9FVkVOVCk7CisgICAgcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisKKyAgICByZXR1cm4gUEpfRVBFTkRJTkc7Cit9CisKKyNpZiBQSl9IQVNfVENQCisvKgorICogSW5pdGlhdGUgb3ZlcmxhcHBlZCBhY2NlcHQoKSBvcGVyYXRpb24uCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9hY2NlcHQoIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCSAgICAgICAgICAgICAgIHBqX3NvY2tfdCAqbmV3X3NvY2ssCisJCQkgICAgICAgICAgICAgICBwal9zb2NrYWRkcl90ICpsb2NhbCwKKwkJCSAgICAgICAgICAgICAgIHBqX3NvY2thZGRyX3QgKnJlbW90ZSwKKwkJCSAgICAgICAgICAgICAgIGludCAqYWRkcmxlbikKK3sKKyAgICBzdHJ1Y3QgYWNjZXB0X29wZXJhdGlvbiAqYWNjZXB0X29wOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIC8qIGNoZWNrIHBhcmFtZXRlcnMuIEFsbCBtdXN0IGJlIHNwZWNpZmllZCEgKi8KKyAgICBQSl9BU1NFUlRfUkVUVVJOKGtleSAmJiBvcF9rZXkgJiYgbmV3X3NvY2ssIFBKX0VJTlZBTCk7CisKKyAgICAvKiBDaGVjayBpZiBrZXkgaXMgY2xvc2luZy4gKi8KKyAgICBpZiAoSVNfQ0xPU0lORyhrZXkpKQorCXJldHVybiBQSl9FQ0FOQ0VMTEVEOworCisgICAgYWNjZXB0X29wID0gKHN0cnVjdCBhY2NlcHRfb3BlcmF0aW9uKilvcF9rZXk7CisgICAgYWNjZXB0X29wLT5vcCA9IFBKX0lPUVVFVUVfT1BfTk9ORTsKKworICAgIC8qIEZhc3QgdHJhY2s6CisgICAgICogIFNlZSBpZiB0aGVyZSdzIG5ldyBjb25uZWN0aW9uIGF2YWlsYWJsZSBpbW1lZGlhdGVseS4KKyAgICAgKi8KKyAgICBpZiAocGpfbGlzdF9lbXB0eSgma2V5LT5hY2NlcHRfbGlzdCkpIHsKKyAgICAgICAgc3RhdHVzID0gcGpfc29ja19hY2NlcHQoa2V5LT5mZCwgbmV3X3NvY2ssIHJlbW90ZSwgYWRkcmxlbik7CisgICAgICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgLyogWWVzISBOZXcgY29ubmVjdGlvbiBpcyBhdmFpbGFibGUhICovCisgICAgICAgICAgICBpZiAobG9jYWwgJiYgYWRkcmxlbikgeworICAgICAgICAgICAgICAgIHN0YXR1cyA9IHBqX3NvY2tfZ2V0c29ja25hbWUoKm5ld19zb2NrLCBsb2NhbCwgYWRkcmxlbik7CisgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgICAgIHBqX3NvY2tfY2xvc2UoKm5ld19zb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgKm5ld19zb2NrID0gUEpfSU5WQUxJRF9TT0NLRVQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBJZiBlcnJvciBpcyBub3QgRVdPVUxEQkxPQ0sgKG9yIEVBR0FJTiBvbiBMaW51eCksIHJlcG9ydAorICAgICAgICAgICAgICogdGhlIGVycm9yIHRvIGNhbGxlci4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBQSl9TVEFUVVNfRlJPTV9PUyhQSl9CTE9DS0lOR19FUlJPUl9WQUwpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogTm8gY29ubmVjdGlvbiBpcyBhdmFpbGFibGUgaW1tZWRpYXRlbHkuCisgICAgICogU2NoZWR1bGUgYWNjZXB0KCkgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCB3aGVuIHRoZXJlIGlzIGluY29taW5nCisgICAgICogY29ubmVjdGlvbiBhdmFpbGFibGUuCisgICAgICovCisgICAgYWNjZXB0X29wLT5vcCA9IFBKX0lPUVVFVUVfT1BfQUNDRVBUOworICAgIGFjY2VwdF9vcC0+YWNjZXB0X2ZkID0gbmV3X3NvY2s7CisgICAgYWNjZXB0X29wLT5ybXRfYWRkciA9IHJlbW90ZTsKKyAgICBhY2NlcHRfb3AtPmFkZHJsZW49IGFkZHJsZW47CisgICAgYWNjZXB0X29wLT5sb2NhbF9hZGRyID0gbG9jYWw7CisKKyAgICBwal9pb3F1ZXVlX2xvY2tfa2V5KGtleSk7CisgICAgLyogQ2hlY2sgYWdhaW4uIEhhbmRsZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBhZnRlciB0aGUgcHJldmlvdXMgY2hlY2sKKyAgICAgKiBpbiBtdWx0aXRocmVhZGVkIGFwcC4gSWYgd2UgYWRkIGJhZCBoYW5kbGUgdG8gdGhlIHNldCBpdCB3aWxsCisgICAgICogY29ycnVwdCB0aGUgaW9xdWV1ZSBzZXQuIFNlZSAjOTEzCisgICAgICovCisgICAgaWYgKElTX0NMT1NJTkcoa2V5KSkgeworCXBqX2lvcXVldWVfdW5sb2NrX2tleShrZXkpOworCXJldHVybiBQSl9FQ0FOQ0VMTEVEOworICAgIH0KKyAgICBwal9saXN0X2luc2VydF9iZWZvcmUoJmtleS0+YWNjZXB0X2xpc3QsIGFjY2VwdF9vcCk7CisgICAgaW9xdWV1ZV9hZGRfdG9fc2V0KGtleS0+aW9xdWV1ZSwga2V5LCBSRUFEQUJMRV9FVkVOVCk7CisgICAgcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisKKyAgICByZXR1cm4gUEpfRVBFTkRJTkc7Cit9CisKKy8qCisgKiBJbml0aWF0ZSBvdmVybGFwcGVkIGNvbm5lY3QoKSBvcGVyYXRpb24gKHdlbGwsIGl0J3Mgbm9uLWJsb2NraW5nIGFjdHVhbGx5LAorICogc2luY2UgdGhlcmUncyBubyBvdmVybGFwcGVkIHZlcnNpb24gb2YgY29ubmVjdCgpKS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2Nvbm5lY3QoIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKwkJCQkJY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJaW50IGFkZHJsZW4gKQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAKKyAgICAvKiBjaGVjayBwYXJhbWV0ZXJzLiBBbGwgbXVzdCBiZSBzcGVjaWZpZWQhICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXkgJiYgYWRkciAmJiBhZGRybGVuLCBQSl9FSU5WQUwpOworCisgICAgLyogQ2hlY2sgaWYga2V5IGlzIGNsb3NpbmcuICovCisgICAgaWYgKElTX0NMT1NJTkcoa2V5KSkKKwlyZXR1cm4gUEpfRUNBTkNFTExFRDsKKworICAgIC8qIENoZWNrIGlmIHNvY2tldCBoYXMgbm90IGJlZW4gbWFya2VkIGZvciBjb25uZWN0aW5nICovCisgICAgaWYgKGtleS0+Y29ubmVjdGluZyAhPSAwKQorICAgICAgICByZXR1cm4gUEpfRVBFTkRJTkc7CisgICAgCisgICAgc3RhdHVzID0gcGpfc29ja19jb25uZWN0KGtleS0+ZmQsIGFkZHIsIGFkZHJsZW4pOworICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCS8qIENvbm5lY3RlZCEgKi8KKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9IGVsc2UgeworCWlmIChzdGF0dXMgPT0gUEpfU1RBVFVTX0ZST01fT1MoUEpfQkxPQ0tJTkdfQ09OTkVDVF9FUlJPUl9WQUwpKSB7CisJICAgIC8qIFBlbmRpbmchICovCisJICAgIHBqX2lvcXVldWVfbG9ja19rZXkoa2V5KTsKKwkgICAgLyogQ2hlY2sgYWdhaW4uIEhhbmRsZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBhZnRlciB0aGUgcHJldmlvdXMgCisJICAgICAqIGNoZWNrIGluIG11bHRpdGhyZWFkZWQgYXBwLiBTZWUgIzkxMworCSAgICAgKi8KKwkgICAgaWYgKElTX0NMT1NJTkcoa2V5KSkgeworCQlwal9pb3F1ZXVlX3VubG9ja19rZXkoa2V5KTsKKwkJcmV0dXJuIFBKX0VDQU5DRUxMRUQ7CisJICAgIH0KKwkgICAga2V5LT5jb25uZWN0aW5nID0gUEpfVFJVRTsKKyAgICAgICAgICAgIGlvcXVldWVfYWRkX3RvX3NldChrZXktPmlvcXVldWUsIGtleSwgV1JJVEVBQkxFX0VWRU5UKTsKKyAgICAgICAgICAgIGlvcXVldWVfYWRkX3RvX3NldChrZXktPmlvcXVldWUsIGtleSwgRVhDRVBUSU9OX0VWRU5UKTsKKyAgICAgICAgICAgIHBqX2lvcXVldWVfdW5sb2NrX2tleShrZXkpOworCSAgICByZXR1cm4gUEpfRVBFTkRJTkc7CisJfSBlbHNlIHsKKwkgICAgLyogRXJyb3IhICovCisJICAgIHJldHVybiBzdGF0dXM7CisJfQorICAgIH0KK30KKyNlbmRpZgkvKiBQSl9IQVNfVENQICovCisKKworUEpfREVGKHZvaWQpIHBqX2lvcXVldWVfb3Bfa2V5X2luaXQoIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCQkgICAgIHBqX3NpemVfdCBzaXplICkKK3sKKyAgICBwal9iemVybyhvcF9rZXksIHNpemUpOworfQorCisKKy8qCisgKiBwal9pb3F1ZXVlX2lzX3BlbmRpbmcoKQorICovCitQSl9ERUYocGpfYm9vbF90KSBwal9pb3F1ZXVlX2lzX3BlbmRpbmcoIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5ICkKK3sKKyAgICBzdHJ1Y3QgZ2VuZXJpY19vcGVyYXRpb24gKm9wX3JlYzsKKworICAgIFBKX1VOVVNFRF9BUkcoa2V5KTsKKworICAgIG9wX3JlYyA9IChzdHJ1Y3QgZ2VuZXJpY19vcGVyYXRpb24qKW9wX2tleTsKKyAgICByZXR1cm4gb3BfcmVjLT5vcCAhPSAwOworfQorCisKKy8qCisgKiBwal9pb3F1ZXVlX3Bvc3RfY29tcGxldGlvbigpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9wb3N0X2NvbXBsZXRpb24oIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NzaXplX3QgYnl0ZXNfc3RhdHVzICkKK3sKKyAgICBzdHJ1Y3QgZ2VuZXJpY19vcGVyYXRpb24gKm9wX3JlYzsKKworICAgIC8qCisgICAgICogRmluZCB0aGUgb3BlcmF0aW9uIGtleSBpbiBhbGwgcGVuZGluZyBvcGVyYXRpb24gbGlzdCB0bworICAgICAqIHJlYWxseSBtYWtlIHN1cmUgdGhhdCBpdCdzIHN0aWxsIHRoZXJlOyB0aGVuIGNhbGwgdGhlIGNhbGxiYWNrLgorICAgICAqLworICAgIHBqX2lvcXVldWVfbG9ja19rZXkoa2V5KTsKKworICAgIC8qIEZpbmQgdGhlIG9wZXJhdGlvbiBpbiB0aGUgcGVuZGluZyByZWFkIGxpc3QuICovCisgICAgb3BfcmVjID0gKHN0cnVjdCBnZW5lcmljX29wZXJhdGlvbiopa2V5LT5yZWFkX2xpc3QubmV4dDsKKyAgICB3aGlsZSAob3BfcmVjICE9ICh2b2lkKikma2V5LT5yZWFkX2xpc3QpIHsKKyAgICAgICAgaWYgKG9wX3JlYyA9PSAodm9pZCopb3Bfa2V5KSB7CisgICAgICAgICAgICBwal9saXN0X2VyYXNlKG9wX3JlYyk7CisgICAgICAgICAgICBvcF9yZWMtPm9wID0gUEpfSU9RVUVVRV9PUF9OT05FOworICAgICAgICAgICAgcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisKKyAgICAgICAgICAgICgqa2V5LT5jYi5vbl9yZWFkX2NvbXBsZXRlKShrZXksIG9wX2tleSwgYnl0ZXNfc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBQSl9TVUNDRVNTOworICAgICAgICB9CisgICAgICAgIG9wX3JlYyA9IG9wX3JlYy0+bmV4dDsKKyAgICB9CisKKyAgICAvKiBGaW5kIHRoZSBvcGVyYXRpb24gaW4gdGhlIHBlbmRpbmcgd3JpdGUgbGlzdC4gKi8KKyAgICBvcF9yZWMgPSAoc3RydWN0IGdlbmVyaWNfb3BlcmF0aW9uKilrZXktPndyaXRlX2xpc3QubmV4dDsKKyAgICB3aGlsZSAob3BfcmVjICE9ICh2b2lkKikma2V5LT53cml0ZV9saXN0KSB7CisgICAgICAgIGlmIChvcF9yZWMgPT0gKHZvaWQqKW9wX2tleSkgeworICAgICAgICAgICAgcGpfbGlzdF9lcmFzZShvcF9yZWMpOworICAgICAgICAgICAgb3BfcmVjLT5vcCA9IFBKX0lPUVVFVUVfT1BfTk9ORTsKKyAgICAgICAgICAgIHBqX2lvcXVldWVfdW5sb2NrX2tleShrZXkpOworCisgICAgICAgICAgICAoKmtleS0+Y2Iub25fd3JpdGVfY29tcGxldGUpKGtleSwgb3Bfa2V5LCBieXRlc19zdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgICAgIH0KKyAgICAgICAgb3BfcmVjID0gb3BfcmVjLT5uZXh0OworICAgIH0KKworICAgIC8qIEZpbmQgdGhlIG9wZXJhdGlvbiBpbiB0aGUgcGVuZGluZyBhY2NlcHQgbGlzdC4gKi8KKyAgICBvcF9yZWMgPSAoc3RydWN0IGdlbmVyaWNfb3BlcmF0aW9uKilrZXktPmFjY2VwdF9saXN0Lm5leHQ7CisgICAgd2hpbGUgKG9wX3JlYyAhPSAodm9pZCopJmtleS0+YWNjZXB0X2xpc3QpIHsKKyAgICAgICAgaWYgKG9wX3JlYyA9PSAodm9pZCopb3Bfa2V5KSB7CisgICAgICAgICAgICBwal9saXN0X2VyYXNlKG9wX3JlYyk7CisgICAgICAgICAgICBvcF9yZWMtPm9wID0gUEpfSU9RVUVVRV9PUF9OT05FOworICAgICAgICAgICAgcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisKKyAgICAgICAgICAgICgqa2V5LT5jYi5vbl9hY2NlcHRfY29tcGxldGUpKGtleSwgb3Bfa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBKX0lOVkFMSURfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBqX3N0YXR1c190KWJ5dGVzX3N0YXR1cyk7CisgICAgICAgICAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICAgICAgfQorICAgICAgICBvcF9yZWMgPSBvcF9yZWMtPm5leHQ7CisgICAgfQorCisgICAgcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisgICAgCisgICAgcmV0dXJuIFBKX0VJTlZBTElET1A7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9zZXRfZGVmYXVsdF9jb25jdXJyZW5jeSggcGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorCQkJCQkJCXBqX2Jvb2xfdCBhbGxvdykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGlvcXVldWUgIT0gTlVMTCwgUEpfRUlOVkFMKTsKKyAgICBpb3F1ZXVlLT5kZWZhdWx0X2NvbmN1cnJlbmN5ID0gYWxsb3c7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3NldF9jb25jdXJyZW5jeShwal9pb3F1ZXVlX2tleV90ICprZXksCisJCQkJCSAgICAgICBwal9ib29sX3QgYWxsb3cpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXksIFBKX0VJTlZBTCk7CisKKyAgICAvKiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHIG11c3QgYmUgZW5hYmxlZCBpZiBjb25jdXJyZW5jeSBpcworICAgICAqIGRpc2FibGVkLgorICAgICAqLworICAgIFBKX0FTU0VSVF9SRVRVUk4oYWxsb3cgfHwgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRywgUEpfRUlOVkFMKTsKKworICAgIGtleS0+YWxsb3dfY29uY3VycmVudCA9IGFsbG93OworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfbG9ja19rZXkocGpfaW9xdWV1ZV9rZXlfdCAqa2V5KQoreworICAgIGlmIChrZXktPmdycF9sb2NrKQorCXJldHVybiBwal9ncnBfbG9ja19hY3F1aXJlKGtleS0+Z3JwX2xvY2spOworICAgIGVsc2UKKwlyZXR1cm4gcGpfbG9ja19hY3F1aXJlKGtleS0+bG9jayk7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV91bmxvY2tfa2V5KHBqX2lvcXVldWVfa2V5X3QgKmtleSkKK3sKKyAgICBpZiAoa2V5LT5ncnBfbG9jaykKKwlyZXR1cm4gcGpfZ3JwX2xvY2tfcmVsZWFzZShrZXktPmdycF9sb2NrKTsKKyAgICBlbHNlCisJcmV0dXJuIHBqX2xvY2tfcmVsZWFzZShrZXktPmxvY2spOworfQorCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX2NvbW1vbl9hYnMuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX2NvbW1vbl9hYnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmRiYjUyCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lvcXVldWVfY29tbW9uX2Ficy5oCkBAIC0wLDAgKzEsMTQwIEBACisvKiAkSWQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisKKy8qIGlvcXVldWVfY29tbW9uX2Ficy5oCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHByaXZhdGUgZGVjbGFyYXRpb25zIGZvciBhYnN0cmFjdGluZyB2YXJpb3VzIAorICogZXZlbnQgcG9sbGluZy9kaXNwYXRjaGluZyBtZWNoYW5pc21zIChlLmcuIHNlbGVjdCwgcG9sbCwgZXBvbGwpIAorICogdG8gdGhlIGlvcXVldWUuIAorICovCisKKyNpbmNsdWRlIDxwai9saXN0Lmg+CisKKy8qCisgKiBUaGUgc2VsZWN0IGlvcXVldWUgcmVsaWVzIG9uIHNvY2tldCBmdW5jdGlvbnMgKHBqX3NvY2tfeHh4KCkpIHRvIHJldHVybgorICogdGhlIGNvcnJlY3QgZXJyb3IgY29kZS4KKyAqLworI2lmIFBKX1JFVFVSTl9PU19FUlJPUigxMDApICE9IFBKX1NUQVRVU19GUk9NX09TKDEwMCkKKyMgICBlcnJvciAiUHJvcGVyIGVycm9yIHJlcG9ydGluZyBtdXN0IGJlIGVuYWJsZWQgZm9yIGlvcXVldWUgdG8gd29yayEiCisjZW5kaWYKKworCitzdHJ1Y3QgZ2VuZXJpY19vcGVyYXRpb24KK3sKKyAgICBQSl9ERUNMX0xJU1RfTUVNQkVSKHN0cnVjdCBnZW5lcmljX29wZXJhdGlvbik7CisgICAgcGpfaW9xdWV1ZV9vcGVyYXRpb25fZSAgb3A7Cit9OworCitzdHJ1Y3QgcmVhZF9vcGVyYXRpb24KK3sKKyAgICBQSl9ERUNMX0xJU1RfTUVNQkVSKHN0cnVjdCByZWFkX29wZXJhdGlvbik7CisgICAgcGpfaW9xdWV1ZV9vcGVyYXRpb25fZSAgb3A7CisKKyAgICB2b2lkCQkgICAqYnVmOworICAgIHBqX3NpemVfdAkJICAgIHNpemU7CisgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgZmxhZ3M7CisgICAgcGpfc29ja2FkZHJfdAkgICAqcm10X2FkZHI7CisgICAgaW50CQkJICAgKnJtdF9hZGRybGVuOworfTsKKworc3RydWN0IHdyaXRlX29wZXJhdGlvbgoreworICAgIFBKX0RFQ0xfTElTVF9NRU1CRVIoc3RydWN0IHdyaXRlX29wZXJhdGlvbik7CisgICAgcGpfaW9xdWV1ZV9vcGVyYXRpb25fZSAgb3A7CisKKyAgICBjaGFyCQkgICAqYnVmOworICAgIHBqX3NpemVfdAkJICAgIHNpemU7CisgICAgcGpfc3NpemVfdCAgICAgICAgICAgICAgd3JpdHRlbjsKKyAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICBmbGFnczsKKyAgICBwal9zb2NrYWRkcl9pbgkgICAgcm10X2FkZHI7CisgICAgaW50CQkJICAgIHJtdF9hZGRybGVuOworfTsKKworc3RydWN0IGFjY2VwdF9vcGVyYXRpb24KK3sKKyAgICBQSl9ERUNMX0xJU1RfTUVNQkVSKHN0cnVjdCBhY2NlcHRfb3BlcmF0aW9uKTsKKyAgICBwal9pb3F1ZXVlX29wZXJhdGlvbl9lICBvcDsKKworICAgIHBqX3NvY2tfdCAgICAgICAgICAgICAgKmFjY2VwdF9mZDsKKyAgICBwal9zb2NrYWRkcl90CSAgICpsb2NhbF9hZGRyOworICAgIHBqX3NvY2thZGRyX3QJICAgKnJtdF9hZGRyOworICAgIGludAkJCSAgICphZGRybGVuOworfTsKKwordW5pb24gb3BlcmF0aW9uX2tleQoreworICAgIHN0cnVjdCBnZW5lcmljX29wZXJhdGlvbiBnZW5lcmljOworICAgIHN0cnVjdCByZWFkX29wZXJhdGlvbiAgICByZWFkOworICAgIHN0cnVjdCB3cml0ZV9vcGVyYXRpb24gICB3cml0ZTsKKyNpZiBQSl9IQVNfVENQCisgICAgc3RydWN0IGFjY2VwdF9vcGVyYXRpb24gIGFjY2VwdDsKKyNlbmRpZgorfTsKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyMgICBkZWZpbmUgVU5SRUdfRklFTERTCQkJXAorCXVuc2lnbmVkCSAgICByZWZfY291bnQ7CVwKKwlwal9ib29sX3QJICAgIGNsb3Npbmc7CVwKKwlwal90aW1lX3ZhbAkgICAgZnJlZV90aW1lOwlcCisJCisjZWxzZQorIyAgIGRlZmluZSBVTlJFR19GSUVMRFMKKyNlbmRpZgorCisjZGVmaW5lIERFQ0xBUkVfQ09NTU9OX0tFWSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFBKX0RFQ0xfTElTVF9NRU1CRVIoc3RydWN0IHBqX2lvcXVldWVfa2V5X3QpOyAgIFwKKyAgICBwal9pb3F1ZXVlX3QgICAgICAgICAgICppb3F1ZXVlOyAgICAgICAgICAgICAgICBcCisgICAgcGpfZ3JwX2xvY2tfdCAJICAgKmdycF9sb2NrOwkJICAgIFwKKyAgICBwal9sb2NrX3QgICAgICAgICAgICAgICpsb2NrOyAgICAgICAgICAgICAgICAgICBcCisgICAgcGpfYm9vbF90CQkgICAgaW5zaWRlX2NhbGxiYWNrOwkgICAgXAorICAgIHBqX2Jvb2xfdAkJICAgIGRlc3Ryb3lfcmVxdWVzdGVkOwkgICAgXAorICAgIHBqX2Jvb2xfdAkJICAgIGFsbG93X2NvbmN1cnJlbnQ7CSAgICBcCisgICAgcGpfc29ja190CQkgICAgZmQ7ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGludCAgICAgICAgICAgICAgICAgICAgIGZkX3R5cGU7ICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkCQkgICAqdXNlcl9kYXRhOyAgICAgICAgICAgICAgXAorICAgIHBqX2lvcXVldWVfY2FsbGJhY2sJICAgIGNiOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW5nOyAgICAgICAgICAgICBcCisgICAgc3RydWN0IHJlYWRfb3BlcmF0aW9uICAgcmVhZF9saXN0OyAgICAgICAgICAgICAgXAorICAgIHN0cnVjdCB3cml0ZV9vcGVyYXRpb24gIHdyaXRlX2xpc3Q7ICAgICAgICAgICAgIFwKKyAgICBzdHJ1Y3QgYWNjZXB0X29wZXJhdGlvbiBhY2NlcHRfbGlzdDsJICAgIFwKKyAgICBVTlJFR19GSUVMRFMKKworCisjZGVmaW5lIERFQ0xBUkVfQ09NTU9OX0lPUVVFVUUgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHBqX2xvY2tfdCAgICAgICAgICAqbG9jazsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwal9ib29sX3QgICAgICAgICAgIGF1dG9fZGVsZXRlX2xvY2s7CSAgICBcCisgICAgcGpfYm9vbF90CQlkZWZhdWx0X2NvbmN1cnJlbmN5OworCisKK2VudW0gaW9xdWV1ZV9ldmVudF90eXBlCit7CisgICAgTk9fRVZFTlQsCisgICAgUkVBREFCTEVfRVZFTlQsCisgICAgV1JJVEVBQkxFX0VWRU5ULAorICAgIEVYQ0VQVElPTl9FVkVOVCwKK307CisKK3N0YXRpYyB2b2lkIGlvcXVldWVfYWRkX3RvX3NldCggcGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW9xdWV1ZV9ldmVudF90eXBlIGV2ZW50X3R5cGUgKTsKK3N0YXRpYyB2b2lkIGlvcXVldWVfcmVtb3ZlX2Zyb21fc2V0KCBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGlvcXVldWVfZXZlbnRfdHlwZSBldmVudF90eXBlKTsKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lvcXVldWVfZHVtbXkuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX2R1bW15LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVhNWJiNwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX2R1bW15LmMKQEAgLTAsMCArMSwxOTQgQEAKKy8qICRJZDogaW9xdWV1ZV9kdW1teS5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovaW9xdWV1ZS5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovbGlzdC5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKworI2RlZmluZSBUSElTX0ZJTEUgICAiaW9xdWV1ZSIKKworI2RlZmluZSBQSl9JT1FVRVVFX0lTX1JFQURfT1Aob3ApICAgXAorCSgob3AgJiBQSl9JT1FVRVVFX09QX1JFQUQpICB8fCAob3AgJiBQSl9JT1FVRVVFX09QX1JFQ1ZfRlJPTSkpCisjZGVmaW5lIFBKX0lPUVVFVUVfSVNfV1JJVEVfT1Aob3ApICBcCisJKChvcCAmIFBKX0lPUVVFVUVfT1BfV1JJVEUpIHx8IChvcCAmIFBKX0lPUVVFVUVfT1BfU0VORF9UTykpCisKKworI2lmIFBKX0hBU19UQ1AKKyMgIGRlZmluZSBQSl9JT1FVRVVFX0lTX0FDQ0VQVF9PUChvcCkJKG9wICYgUEpfSU9RVUVVRV9PUF9BQ0NFUFQpCisjICBkZWZpbmUgUEpfSU9RVUVVRV9JU19DT05ORUNUX09QKG9wKQkob3AgJiBQSl9JT1FVRVVFX09QX0NPTk5FQ1QpCisjZWxzZQorIyAgZGVmaW5lIFBKX0lPUVVFVUVfSVNfQUNDRVBUX09QKG9wKQkwCisjICBkZWZpbmUgUEpfSU9RVUVVRV9JU19DT05ORUNUX09QKG9wKQkwCisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfREVCVUcpICYmIFBKX0RFQlVHICE9IDAKKyMgIGRlZmluZSBWQUxJREFURV9GRF9TRVQJCTEKKyNlbHNlCisjICBkZWZpbmUgVkFMSURBVEVfRkRfU0VUCQkwCisjZW5kaWYKKworc3RydWN0IHBqX2lvcXVldWVfa2V5X3QKK3sKKyAgICBQSl9ERUNMX0xJU1RfTUVNQkVSKHN0cnVjdCBwal9pb3F1ZXVlX2tleV90KQorICAgIHBqX3NvY2tfdAkJICAgIGZkOworICAgIHBqX2lvcXVldWVfb3BlcmF0aW9uX2UgIG9wOworICAgIHZvaWQJCSAgICp1c2VyX2RhdGE7CisgICAgcGpfaW9xdWV1ZV9jYWxsYmFjawkgICAgY2I7Cit9OworCitzdHJ1Y3QgcGpfaW9xdWV1ZV90Cit7Cit9OworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorCQkJCSAgICAgICBwal9zaXplX3QgbWF4X2ZkLAorCQkJCSAgICAgICBpbnQgbWF4X3RocmVhZHMsCisJCQkJICAgICAgIHBqX2lvcXVldWVfdCAqKnB0cl9pb3F1ZXVlKQoreworICAgIHJldHVybiBQSl9FTk9UU1VQOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfZGVzdHJveShwal9pb3F1ZXVlX3QgKmlvcXVlKQoreworICAgIHJldHVybiBQSl9FTk9UU1VQOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2V0X2xvY2soIHBqX2lvcXVldWVfdCAqaW9xdWUsIAorCQkJCQkgcGpfbG9ja190ICpsb2NrLAorCQkJCQkgcGpfYm9vbF90IGF1dG9fZGVsZXRlICkKK3sKKyAgICByZXR1cm4gUEpfRU5PVFNVUDsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2soIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICAgcGpfaW9xdWV1ZV90ICppb3F1ZSwKKwkJCQkJICAgICAgcGpfc29ja190IHNvY2ssCisJCQkJCSAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKwkJCQkJICAgICAgY29uc3QgcGpfaW9xdWV1ZV9jYWxsYmFjayAqY2IsCisJCQkJCSAgICAgIHBqX2lvcXVldWVfa2V5X3QgKipwdHJfa2V5KQoreworICAgIHJldHVybiBQSl9FTk9UU1VQOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfdW5yZWdpc3RlciggcGpfaW9xdWV1ZV90ICppb3F1ZSwKKwkJCQkJICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5KQoreworICAgIHJldHVybiBQSl9FTk9UU1VQOworfQorCitQSl9ERUYodm9pZCopIHBqX2lvcXVldWVfZ2V0X3VzZXJfZGF0YSggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5ICkKK3sKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitQSl9ERUYoaW50KSBwal9pb3F1ZXVlX3BvbGwoIHBqX2lvcXVldWVfdCAqaW9xdWUsIGNvbnN0IHBqX3RpbWVfdmFsICp0aW1lb3V0KQoreworICAgIHJldHVybiAtMTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlYWQoIHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkJICAgICBwal9pb3F1ZXVlX2tleV90ICprZXksCisJCQkJICAgICB2b2lkICpidWZmZXIsCisJCQkJICAgICBwal9zaXplX3QgYnVmbGVuKQoreworICAgIHJldHVybiAtMTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlY3YoIHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkJICAgICBwal9pb3F1ZXVlX2tleV90ICprZXksCisJCQkJICAgICB2b2lkICpidWZmZXIsCisJCQkJICAgICBwal9zaXplX3QgYnVmbGVuLAorCQkJCSAgICAgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgcmV0dXJuIC0xOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfcmVjdmZyb20oIHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkJCSBwal9pb3F1ZXVlX2tleV90ICprZXksCisJCQkJCSB2b2lkICpidWZmZXIsCisJCQkJCSBwal9zaXplX3QgYnVmbGVuLAorCQkJCQkgdW5zaWduZWQgZmxhZ3MsCisJCQkJCSBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCQkgaW50ICphZGRybGVuKQoreworICAgIHJldHVybiAtMTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3dyaXRlKCBwal9pb3F1ZXVlX3QgKmlvcXVlLAorCQkJCSAgICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKwkJCQkgICAgICBjb25zdCB2b2lkICpkYXRhLAorCQkJCSAgICAgIHBqX3NpemVfdCBkYXRhbGVuKQoreworICAgIHJldHVybiAtMTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3NlbmQoIHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkJICAgICBwal9pb3F1ZXVlX2tleV90ICprZXksCisJCQkJICAgICBjb25zdCB2b2lkICpkYXRhLAorCQkJCSAgICAgcGpfc2l6ZV90IGRhdGFsZW4sCisJCQkJICAgICB1bnNpZ25lZCBmbGFncykKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9zZW5kdG8oIHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkJICAgICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKwkJCQkgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKwkJCQkgICAgICAgcGpfc2l6ZV90IGRhdGFsZW4sCisJCQkJICAgICAgIHVuc2lnbmVkIGZsYWdzLAorCQkJCSAgICAgICBjb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCSAgICAgICBpbnQgYWRkcmxlbikKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKKyNpZiBQSl9IQVNfVENQCisvKgorICogSW5pdGlhdGUgb3ZlcmxhcHBlZCBhY2NlcHQoKSBvcGVyYXRpb24uCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9hY2NlcHQoIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCQkgICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJCSAgICAgICBwal9zb2NrX3QgKm5ld19zb2NrLAorCQkJCSAgICAgICBwal9zb2NrYWRkcl90ICpsb2NhbCwKKwkJCQkgICAgICAgcGpfc29ja2FkZHJfdCAqcmVtb3RlLAorCQkJCSAgICAgIGludCAqYWRkcmxlbikKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qCisgKiBJbml0aWF0ZSBvdmVybGFwcGVkIGNvbm5lY3QoKSBvcGVyYXRpb24gKHdlbGwsIGl0J3Mgbm9uLWJsb2NraW5nIGFjdHVhbGx5LAorICogc2luY2UgdGhlcmUncyBubyBvdmVybGFwcGVkIHZlcnNpb24gb2YgY29ubmVjdCgpKS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2Nvbm5lY3QoIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCQkJcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJCQljb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCQlpbnQgYWRkcmxlbiApCit7CisgICAgcmV0dXJuIC0xOworfQorI2VuZGlmCS8qIFBKX0hBU19UQ1AgKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lvcXVldWVfZXBvbGwuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX2Vwb2xsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUxODZkZAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX2Vwb2xsLmMKQEAgLTAsMCArMSw4MjUgQEAKKy8qICRJZDogaW9xdWV1ZV9lcG9sbC5jIDQ3MDQgMjAxNC0wMS0xNiAwNTozMDo0NlogbWluZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworLyoKKyAqIGlvcXVldWVfZXBvbGwuYworICoKKyAqIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIElPUXVldWUgZnJhbWV3b3JrIHVzaW5nIC9kZXYvZXBvbGwKKyAqIEFQSSBpbiBfYm90aF8gTGludXggdXNlci1tb2RlIGFuZCBrZXJuZWwtbW9kZS4KKyAqLworCisjaW5jbHVkZSA8cGovaW9xdWV1ZS5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovbG9jay5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL2xpc3QuaD4KKyNpbmNsdWRlIDxwai9wb29sLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3NvY2tldC5oPgorI2luY2x1ZGUgPHBqL3JhbmQuaD4KKworI2lmICFkZWZpbmVkKFBKX0xJTlVYX0tFUk5FTCkgfHwgUEpfTElOVVhfS0VSTkVMPT0wCisgICAgLyoKKyAgICAgKiBMaW51eCB1c2VyIG1vZGUKKyAgICAgKi8KKyMgICBpbmNsdWRlIDxzeXMvZXBvbGwuaD4KKyMgICBpbmNsdWRlIDxlcnJuby5oPgorIyAgIGluY2x1ZGUgPHVuaXN0ZC5oPgorCisjICAgZGVmaW5lIGVwb2xsX2RhdGEJCWRhdGEucHRyCisjICAgZGVmaW5lIGVwb2xsX2RhdGFfdHlwZQl2b2lkKgorIyAgIGRlZmluZSBpb2N0bF92YWxfdHlwZQl1bnNpZ25lZCBsb25nCisjICAgZGVmaW5lIGdldHNvY2tvcHRfdmFsX3B0cglpbnQqCisjICAgZGVmaW5lIG9zX2dldHNvY2tvcHQJZ2V0c29ja29wdAorIyAgIGRlZmluZSBvc19pb2N0bAkJaW9jdGwKKyMgICBkZWZpbmUgb3NfcmVhZAkJcmVhZAorIyAgIGRlZmluZSBvc19jbG9zZQkJY2xvc2UKKyMgICBkZWZpbmUgb3NfZXBvbGxfY3JlYXRlCWVwb2xsX2NyZWF0ZQorIyAgIGRlZmluZSBvc19lcG9sbF9jdGwJCWVwb2xsX2N0bAorIyAgIGRlZmluZSBvc19lcG9sbF93YWl0CWVwb2xsX3dhaXQKKyNlbHNlCisgICAgLyoKKyAgICAgKiBMaW51eCBrZXJuZWwgbW9kZS4KKyAgICAgKi8KKyMgICBpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyMgICBpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisjICAgaWYgZGVmaW5lZChNT0RWRVJTSU9OUykKKyMJaW5jbHVkZSA8bGludXgvbW9kdmVyc2lvbnMuaD4KKyMgICBlbmRpZgorIyAgIGluY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorIyAgIGluY2x1ZGUgPGxpbnV4L3BvbGwuaD4KKyMgICBpbmNsdWRlIDxsaW51eC9ldmVudHBvbGwuaD4KKyMgICBpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPgorIyAgIGluY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjICAgaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+CisjICAgaW5jbHVkZSA8YXNtL2lvY3Rscy5oPgorICAgIGVudW0gRVBPTExfRVZFTlRTCisgICAgeworCUVQT0xMSU4gPSAweDAwMSwKKwlFUE9MTE9VVCA9IDB4MDA0LAorCUVQT0xMRVJSID0gMHgwMDgsCisgICAgfTsKKyMgICBkZWZpbmUgb3NfZXBvbGxfY3JlYXRlCQlzeXNfZXBvbGxfY3JlYXRlCisgICAgc3RhdGljIGludCBvc19lcG9sbF9jdGwoaW50IGVwZmQsIGludCBvcCwgaW50IGZkLCBzdHJ1Y3QgZXBvbGxfZXZlbnQgKmV2ZW50KQorICAgIHsKKwlsb25nIHJjOworCW1tX3NlZ21lbnRfdCBvbGRmcyA9IGdldF9mcygpOworCXNldF9mcyhLRVJORUxfRFMpOworCXJjID0gc3lzX2Vwb2xsX2N0bChlcGZkLCBvcCwgZmQsIGV2ZW50KTsKKwlzZXRfZnMob2xkZnMpOworCWlmIChyYykgeworCSAgICBlcnJubyA9IC1yYzsKKwkgICAgcmV0dXJuIC0xOworCX0gZWxzZSB7CisJICAgIHJldHVybiAwOworCX0KKyAgICB9CisgICAgc3RhdGljIGludCBvc19lcG9sbF93YWl0KGludCBlcGZkLCBzdHJ1Y3QgZXBvbGxfZXZlbnQgKmV2ZW50cywKKwkJCSAgaW50IG1heGV2ZW50cywgaW50IHRpbWVvdXQpCisgICAgeworCWludCBjb3VudDsKKwltbV9zZWdtZW50X3Qgb2xkZnMgPSBnZXRfZnMoKTsKKwlzZXRfZnMoS0VSTkVMX0RTKTsKKwljb3VudCA9IHN5c19lcG9sbF93YWl0KGVwZmQsIGV2ZW50cywgbWF4ZXZlbnRzLCB0aW1lb3V0KTsKKwlzZXRfZnMob2xkZnMpOworCXJldHVybiBjb3VudDsKKyAgICB9CisjICAgZGVmaW5lIG9zX2Nsb3NlCQlzeXNfY2xvc2UKKyMgICBkZWZpbmUgb3NfZ2V0c29ja29wdAlwal9zb2NrX2dldHNvY2tvcHQKKyAgICBzdGF0aWMgaW50IG9zX3JlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBsZW4pCisgICAgeworCWxvbmcgcmM7CisJbW1fc2VnbWVudF90IG9sZGZzID0gZ2V0X2ZzKCk7CisJc2V0X2ZzKEtFUk5FTF9EUyk7CisJcmMgPSBzeXNfcmVhZChmZCwgYnVmLCBsZW4pOworCXNldF9mcyhvbGRmcyk7CisJaWYgKHJjKSB7CisJICAgIGVycm5vID0gLXJjOworCSAgICByZXR1cm4gLTE7CisJfSBlbHNlIHsKKwkgICAgcmV0dXJuIDA7CisJfQorICAgIH0KKyMgICBkZWZpbmUgc29ja2xlbl90CQl1bnNpZ25lZAorIyAgIGRlZmluZSBpb2N0bF92YWxfdHlwZQl1bnNpZ25lZCBsb25nCisgICAgaW50IGlvY3RsKGludCBmZCwgaW50IG9wdCwgaW9jdGxfdmFsX3R5cGUgdmFsdWUpOworICAgIHN0YXRpYyBpbnQgb3NfaW9jdGwoaW50IGZkLCBpbnQgb3B0LCBpb2N0bF92YWxfdHlwZSB2YWx1ZSkKKyAgICB7CisJaW50IHJjOworICAgICAgICBtbV9zZWdtZW50X3Qgb2xkZnMgPSBnZXRfZnMoKTsKKwlzZXRfZnMoS0VSTkVMX0RTKTsKKwlyYyA9IGlvY3RsKGZkLCBvcHQsIHZhbHVlKTsKKwlzZXRfZnMob2xkZnMpOworCWlmIChyYyA8IDApIHsKKwkgICAgZXJybm8gPSAtcmM7CisJICAgIHJldHVybiByYzsKKwl9IGVsc2UKKwkgICAgcmV0dXJuIHJjOworICAgIH0KKyMgICBkZWZpbmUgZ2V0c29ja29wdF92YWxfcHRyCWNoYXIqCisKKyMgICBkZWZpbmUgZXBvbGxfZGF0YQkJZGF0YQorIyAgIGRlZmluZSBlcG9sbF9kYXRhX3R5cGUJX191MzIKKyNlbmRpZgorCisjZGVmaW5lIFRISVNfRklMRSAgICJpb3FfZXBvbGwiCisKKy8vI2RlZmluZSBUUkFDRV8oZXhwcikgUEpfTE9HKDMsZXhwcikKKyNkZWZpbmUgVFJBQ0VfKGV4cHIpCisKKy8qCisgKiBJbmNsdWRlIGNvbW1vbiBpb3F1ZXVlIGFic3RyYWN0aW9uLgorICovCisjaW5jbHVkZSAiaW9xdWV1ZV9jb21tb25fYWJzLmgiCisKKy8qCisgKiBUaGlzIGRlc2NyaWJlcyBlYWNoIGtleS4KKyAqLworc3RydWN0IHBqX2lvcXVldWVfa2V5X3QKK3sKKyAgICBERUNMQVJFX0NPTU1PTl9LRVkKK307CisKK3N0cnVjdCBxdWV1ZQoreworICAgIHBqX2lvcXVldWVfa2V5X3QJICAgICprZXk7CisgICAgZW51bSBpb3F1ZXVlX2V2ZW50X3R5cGUgIGV2ZW50X3R5cGU7Cit9OworCisvKgorICogVGhpcyBkZXNjcmliZXMgdGhlIEkvTyBxdWV1ZS4KKyAqLworc3RydWN0IHBqX2lvcXVldWVfdAoreworICAgIERFQ0xBUkVfQ09NTU9OX0lPUVVFVUUKKworICAgIHVuc2lnbmVkCQltYXgsIGNvdW50OworICAgIC8vcGpfaW9xdWV1ZV9rZXlfdAlobGlzdDsKKyAgICBwal9pb3F1ZXVlX2tleV90CWFjdGl2ZV9saXN0OyAgICAKKyAgICBpbnQJCQllcGZkOworICAgIC8vc3RydWN0IGVwb2xsX2V2ZW50ICpldmVudHM7CisgICAgLy9zdHJ1Y3QgcXVldWUgICAgICAgKnF1ZXVlOworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIHBqX211dGV4X3QJICAgICAgICpyZWZfY250X211dGV4OworICAgIHBqX2lvcXVldWVfa2V5X3QJY2xvc2luZ19saXN0OworICAgIHBqX2lvcXVldWVfa2V5X3QJZnJlZV9saXN0OworI2VuZGlmCit9OworCisvKiBJbmNsdWRlIGltcGxlbWVudGF0aW9uIGZvciBjb21tb24gYWJzdHJhY3Rpb24gYWZ0ZXIgd2UgZGVjbGFyZQorICogcGpfaW9xdWV1ZV9rZXlfdCBhbmQgcGpfaW9xdWV1ZV90LgorICovCisjaW5jbHVkZSAiaW9xdWV1ZV9jb21tb25fYWJzLmMiCisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisvKiBTY2FuIGNsb3Npbmcga2V5cyB0byBiZSBwdXQgdG8gZnJlZSBsaXN0IGFnYWluICovCitzdGF0aWMgdm9pZCBzY2FuX2Nsb3Npbmdfa2V5cyhwal9pb3F1ZXVlX3QgKmlvcXVldWUpOworI2VuZGlmCisKKy8qCisgKiBwal9pb3F1ZXVlX25hbWUoKQorICovCitQSl9ERUYoY29uc3QgY2hhciopIHBqX2lvcXVldWVfbmFtZSh2b2lkKQoreworI2lmIGRlZmluZWQoUEpfTElOVVhfS0VSTkVMKSAmJiBQSl9MSU5VWF9LRVJORUwhPTAKKwlyZXR1cm4gImVwb2xsLWtlcm5lbCI7CisjZWxzZQorCXJldHVybiAiZXBvbGwiOworI2VuZGlmCit9CisKKy8qCisgKiBwal9pb3F1ZXVlX2NyZWF0ZSgpCisgKgorICogQ3JlYXRlIHNlbGVjdCBpb3F1ZXVlLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc2l6ZV90IG1heF9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfdCAqKnBfaW9xdWV1ZSkKK3sKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWU7CisgICAgcGpfc3RhdHVzX3QgcmM7CisgICAgcGpfbG9ja190ICpsb2NrOworICAgIGludCBpOworCisgICAgLyogQ2hlY2sgdGhhdCBhcmd1bWVudHMgYXJlIHZhbGlkLiAqLworICAgIFBKX0FTU0VSVF9SRVRVUk4ocG9vbCAhPSBOVUxMICYmIHBfaW9xdWV1ZSAhPSBOVUxMICYmIAorICAgICAgICAgICAgICAgICAgICAgbWF4X2ZkID4gMCwgUEpfRUlOVkFMKTsKKworICAgIC8qIENoZWNrIHRoYXQgc2l6ZSBvZiBwal9pb3F1ZXVlX29wX2tleV90IGlzIHN1ZmZpY2llbnQgKi8KKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNpemVvZihwal9pb3F1ZXVlX29wX2tleV90KS1zaXplb2Yodm9pZCopID49CisgICAgICAgICAgICAgICAgICAgICBzaXplb2YodW5pb24gb3BlcmF0aW9uX2tleSksIFBKX0VCVUcpOworCisgICAgaW9xdWV1ZSA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgc2l6ZW9mKHBqX2lvcXVldWVfdCkpOworCisgICAgaW9xdWV1ZV9pbml0KGlvcXVldWUpOworCisgICAgaW9xdWV1ZS0+bWF4ID0gbWF4X2ZkOworICAgIGlvcXVldWUtPmNvdW50ID0gMDsKKyAgICBwal9saXN0X2luaXQoJmlvcXVldWUtPmFjdGl2ZV9saXN0KTsKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyAgICAvKiBXaGVuIHNhZmUgdW5yZWdpc3RyYXRpb24gaXMgdXNlZCAodGhlIGRlZmF1bHQpLCB3ZSBwcmUtY3JlYXRlCisgICAgICogYWxsIGtleXMgYW5kIHB1dCB0aGVtIGluIHRoZSBmcmVlIGxpc3QuCisgICAgICovCisKKyAgICAvKiBNdXRleCB0byBwcm90ZWN0IGtleSdzIHJlZmVyZW5jZSBjb3VudGVyIAorICAgICAqIFdlIGRvbid0IHdhbnQgdG8gdXNlIGtleSdzIG11dGV4IG9yIGlvcXVldWUncyBtdXRleCBiZWNhdXNlCisgICAgICogdGhhdCB3b3VsZCBjcmVhdGUgZGVhZGxvY2sgc2l0dWF0aW9uIGluIHNvbWUgY2FzZXMuCisgICAgICovCisgICAgcmMgPSBwal9tdXRleF9jcmVhdGVfc2ltcGxlKHBvb2wsIE5VTEwsICZpb3F1ZXVlLT5yZWZfY250X211dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gcmM7CisKKworICAgIC8qIEluaXQga2V5IGxpc3QgKi8KKyAgICBwal9saXN0X2luaXQoJmlvcXVldWUtPmZyZWVfbGlzdCk7CisgICAgcGpfbGlzdF9pbml0KCZpb3F1ZXVlLT5jbG9zaW5nX2xpc3QpOworCisKKyAgICAvKiBQcmUtY3JlYXRlIGFsbCBrZXlzIGFjY29yZGluZyB0byBtYXhfZmQgKi8KKyAgICBmb3IgKCBpPTA7IGk8bWF4X2ZkOyArK2kpIHsKKwlwal9pb3F1ZXVlX2tleV90ICprZXk7CisKKwlrZXkgPSBQSl9QT09MX0FMTE9DX1QocG9vbCwgcGpfaW9xdWV1ZV9rZXlfdCk7CisJa2V5LT5yZWZfY291bnQgPSAwOworCXJjID0gcGpfbG9ja19jcmVhdGVfcmVjdXJzaXZlX211dGV4KHBvb2wsIE5VTEwsICZrZXktPmxvY2spOworCWlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIGtleSA9IGlvcXVldWUtPmZyZWVfbGlzdC5uZXh0OworCSAgICB3aGlsZSAoa2V5ICE9ICZpb3F1ZXVlLT5mcmVlX2xpc3QpIHsKKwkJcGpfbG9ja19kZXN0cm95KGtleS0+bG9jayk7CisJCWtleSA9IGtleS0+bmV4dDsKKwkgICAgfQorCSAgICBwal9tdXRleF9kZXN0cm95KGlvcXVldWUtPnJlZl9jbnRfbXV0ZXgpOworCSAgICByZXR1cm4gcmM7CisJfQorCisJcGpfbGlzdF9wdXNoX2JhY2soJmlvcXVldWUtPmZyZWVfbGlzdCwga2V5KTsKKyAgICB9CisjZW5kaWYKKworICAgIHJjID0gcGpfbG9ja19jcmVhdGVfc2ltcGxlX211dGV4KHBvb2wsICJpb3ElcCIsICZsb2NrKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gcmM7CisKKyAgICByYyA9IHBqX2lvcXVldWVfc2V0X2xvY2soaW9xdWV1ZSwgbG9jaywgUEpfVFJVRSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiByYzsKKworICAgIGlvcXVldWUtPmVwZmQgPSBvc19lcG9sbF9jcmVhdGUobWF4X2ZkKTsKKyAgICBpZiAoaW9xdWV1ZS0+ZXBmZCA8IDApIHsKKwlpb3F1ZXVlX2Rlc3Ryb3koaW9xdWV1ZSk7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX29zX2Vycm9yKCkpOworICAgIH0KKyAgICAKKyAgICAvKmlvcXVldWUtPmV2ZW50cyA9IHBqX3Bvb2xfY2FsbG9jKHBvb2wsIG1heF9mZCwgc2l6ZW9mKHN0cnVjdCBlcG9sbF9ldmVudCkpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oaW9xdWV1ZS0+ZXZlbnRzICE9IE5VTEwsIFBKX0VOT01FTSk7CisKKyAgICBpb3F1ZXVlLT5xdWV1ZSA9IHBqX3Bvb2xfY2FsbG9jKHBvb2wsIG1heF9mZCwgc2l6ZW9mKHN0cnVjdCBxdWV1ZSkpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oaW9xdWV1ZS0+cXVldWUgIT0gTlVMTCwgUEpfRU5PTUVNKTsKKyAgICovCisgICAgUEpfTE9HKDQsICgicGpsaWIiLCAiZXBvbGwgSS9PIFF1ZXVlIGNyZWF0ZWQgKCVwKSIsIGlvcXVldWUpKTsKKworICAgICpwX2lvcXVldWUgPSBpb3F1ZXVlOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfaW9xdWV1ZV9kZXN0cm95KCkKKyAqCisgKiBEZXN0cm95IGlvcXVldWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9kZXN0cm95KHBqX2lvcXVldWVfdCAqaW9xdWV1ZSkKK3sKKyAgICBwal9pb3F1ZXVlX2tleV90ICprZXk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGlvcXVldWUsIFBKX0VJTlZBTCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihpb3F1ZXVlLT5lcGZkID4gMCwgUEpfRUlOVkFMSURPUCk7CisKKyAgICBwal9sb2NrX2FjcXVpcmUoaW9xdWV1ZS0+bG9jayk7CisgICAgb3NfY2xvc2UoaW9xdWV1ZS0+ZXBmZCk7CisgICAgaW9xdWV1ZS0+ZXBmZCA9IDA7CisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisgICAgLyogRGVzdHJveSByZWZlcmVuY2UgY291bnRlcnMgKi8KKyAgICBrZXkgPSBpb3F1ZXVlLT5hY3RpdmVfbGlzdC5uZXh0OworICAgIHdoaWxlIChrZXkgIT0gJmlvcXVldWUtPmFjdGl2ZV9saXN0KSB7CisJcGpfbG9ja19kZXN0cm95KGtleS0+bG9jayk7CisJa2V5ID0ga2V5LT5uZXh0OworICAgIH0KKworICAgIGtleSA9IGlvcXVldWUtPmNsb3NpbmdfbGlzdC5uZXh0OworICAgIHdoaWxlIChrZXkgIT0gJmlvcXVldWUtPmNsb3NpbmdfbGlzdCkgeworCXBqX2xvY2tfZGVzdHJveShrZXktPmxvY2spOworCWtleSA9IGtleS0+bmV4dDsKKyAgICB9CisKKyAgICBrZXkgPSBpb3F1ZXVlLT5mcmVlX2xpc3QubmV4dDsKKyAgICB3aGlsZSAoa2V5ICE9ICZpb3F1ZXVlLT5mcmVlX2xpc3QpIHsKKwlwal9sb2NrX2Rlc3Ryb3koa2V5LT5sb2NrKTsKKwlrZXkgPSBrZXktPm5leHQ7CisgICAgfQorCisgICAgcGpfbXV0ZXhfZGVzdHJveShpb3F1ZXVlLT5yZWZfY250X211dGV4KTsKKyNlbmRpZgorICAgIHJldHVybiBpb3F1ZXVlX2Rlc3Ryb3koaW9xdWV1ZSk7Cit9CisKKy8qCisgKiBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2soKQorICoKKyAqIFJlZ2lzdGVyIGEgc29ja2V0IHRvIGlvcXVldWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrMihwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCQkJICAgICAgcGpfc29ja190IHNvY2ssCisJCQkJCSAgICAgIHBqX2dycF9sb2NrX3QgKmdycF9sb2NrLAorCQkJCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCisJCQkJCSAgICAgIGNvbnN0IHBqX2lvcXVldWVfY2FsbGJhY2sgKmNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfa2V5X3QgKipwX2tleSkKK3sKKyAgICBwal9pb3F1ZXVlX2tleV90ICprZXkgPSBOVUxMOworICAgIHBqX3VpbnQzMl90IHZhbHVlOworICAgIHN0cnVjdCBlcG9sbF9ldmVudCBldjsKKyAgICBpbnQgc3RhdHVzOworICAgIHBqX3N0YXR1c190IHJjID0gUEpfU1VDQ0VTUzsKKyAgICAKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBvb2wgJiYgaW9xdWV1ZSAmJiBzb2NrICE9IFBKX0lOVkFMSURfU09DS0VUICYmCisgICAgICAgICAgICAgICAgICAgICBjYiAmJiBwX2tleSwgUEpfRUlOVkFMKTsKKworICAgIHBqX2xvY2tfYWNxdWlyZShpb3F1ZXVlLT5sb2NrKTsKKworICAgIGlmIChpb3F1ZXVlLT5jb3VudCA+PSBpb3F1ZXVlLT5tYXgpIHsKKyAgICAgICAgcmMgPSBQSl9FVE9PTUFOWTsKKwlUUkFDRV8oKFRISVNfRklMRSwgInBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayBlcnJvcjogdG9vIG1hbnkgZmlsZXMiKSk7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogU2V0IHNvY2tldCB0byBub25ibG9ja2luZy4gKi8KKyAgICB2YWx1ZSA9IDE7CisgICAgaWYgKChyYz1vc19pb2N0bChzb2NrLCBGSU9OQklPLCAoaW9jdGxfdmFsX3R5cGUpJnZhbHVlKSkpIHsKKwlUUkFDRV8oKFRISVNfRklMRSwgInBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayBlcnJvcjogaW9jdGwgcmM9JWQiLCAKKyAgICAgICAgICAgICAgICByYykpOworICAgICAgICByYyA9IHBqX2dldF9uZXRvc19lcnJvcigpOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIElmIHNhZmUgdW5yZWdpc3RyYXRpb24gKFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcpIGlzIHVzZWQsIGdldAorICAgICAqIHRoZSBrZXkgZnJvbSB0aGUgZnJlZSBsaXN0LiBPdGhlcndpc2UgYWxsb2NhdGUgYSBuZXcgb25lLiAKKyAgICAgKi8KKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisKKyAgICAvKiBTY2FuIGNsb3Npbmdfa2V5cyBmaXJzdCB0byBsZXQgdGhlbSBjb21lIGJhY2sgdG8gZnJlZV9saXN0ICovCisgICAgc2Nhbl9jbG9zaW5nX2tleXMoaW9xdWV1ZSk7CisKKyAgICBwal9hc3NlcnQoIXBqX2xpc3RfZW1wdHkoJmlvcXVldWUtPmZyZWVfbGlzdCkpOworICAgIGlmIChwal9saXN0X2VtcHR5KCZpb3F1ZXVlLT5mcmVlX2xpc3QpKSB7CisJcmMgPSBQSl9FVE9PTUFOWTsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBrZXkgPSBpb3F1ZXVlLT5mcmVlX2xpc3QubmV4dDsKKyAgICBwal9saXN0X2VyYXNlKGtleSk7CisjZWxzZQorICAgIC8qIENyZWF0ZSBrZXkuICovCisgICAga2V5ID0gKHBqX2lvcXVldWVfa2V5X3QqKXBqX3Bvb2xfemFsbG9jKHBvb2wsIHNpemVvZihwal9pb3F1ZXVlX2tleV90KSk7CisjZW5kaWYKKworICAgIHJjID0gaW9xdWV1ZV9pbml0X2tleShwb29sLCBpb3F1ZXVlLCBrZXksIHNvY2ssIGdycF9sb2NrLCB1c2VyX2RhdGEsIGNiKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWtleSA9IE5VTEw7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogQ3JlYXRlIGtleSdzIG11dGV4ICovCisgLyogICByYyA9IHBqX211dGV4X2NyZWF0ZV9yZWN1cnNpdmUocG9vbCwgTlVMTCwgJmtleS0+bXV0ZXgpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJa2V5ID0gTlVMTDsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisqLworICAgIC8qIG9zX2Vwb2xsX2N0bC4gKi8KKyAgICBldi5ldmVudHMgPSBFUE9MTElOIHwgRVBPTExFUlI7CisgICAgZXYuZXBvbGxfZGF0YSA9IChlcG9sbF9kYXRhX3R5cGUpa2V5OworICAgIHN0YXR1cyA9IG9zX2Vwb2xsX2N0bChpb3F1ZXVlLT5lcGZkLCBFUE9MTF9DVExfQURELCBzb2NrLCAmZXYpOworICAgIGlmIChzdGF0dXMgPCAwKSB7CisJcmMgPSBwal9nZXRfb3NfZXJyb3IoKTsKKwlwal9sb2NrX2Rlc3Ryb3koa2V5LT5sb2NrKTsKKwlrZXkgPSBOVUxMOworCVRSQUNFXygoVEhJU19GSUxFLCAKKyAgICAgICAgICAgICAgICAicGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrIGVycm9yOiBvc19lcG9sbF9jdGwgcmM9JWQiLCAKKyAgICAgICAgICAgICAgICBzdGF0dXMpKTsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisgICAgCisgICAgLyogUmVnaXN0ZXIgKi8KKyAgICBwal9saXN0X2luc2VydF9iZWZvcmUoJmlvcXVldWUtPmFjdGl2ZV9saXN0LCBrZXkpOworICAgICsraW9xdWV1ZS0+Y291bnQ7CisKKyAgICAvL1RSQUNFXygoVEhJU19GSUxFLCAic29ja2V0IHJlZ2lzdGVyZWQsIGNvdW50PSVkIiwgaW9xdWV1ZS0+Y291bnQpKTsKKworb25fcmV0dXJuOgorICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJaWYgKGtleSAmJiBrZXktPmdycF9sb2NrKQorCSAgICBwal9ncnBfbG9ja19kZWNfcmVmX2RiZyhrZXktPmdycF9sb2NrLCAiaW9xdWV1ZSIsIDApOworICAgIH0KKyAgICAqcF9rZXkgPSBrZXk7CisgICAgcGpfbG9ja19yZWxlYXNlKGlvcXVldWUtPmxvY2spOworICAgIAorICAgIHJldHVybiByYzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2soIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICAgcGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorCQkJCQkgICAgICBwal9zb2NrX3Qgc29jaywKKwkJCQkJICAgICAgdm9pZCAqdXNlcl9kYXRhLAorCQkJCQkgICAgICBjb25zdCBwal9pb3F1ZXVlX2NhbGxiYWNrICpjYiwKKwkJCQkJICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqKnBfa2V5KQoreworICAgIHJldHVybiBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2syKHBvb2wsIGlvcXVldWUsIHNvY2ssIE5VTEwsIHVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYiwgcF9rZXkpOworfQorCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworLyogSW5jcmVtZW50IGtleSdzIHJlZmVyZW5jZSBjb3VudGVyICovCitzdGF0aWMgdm9pZCBpbmNyZW1lbnRfY291bnRlcihwal9pb3F1ZXVlX2tleV90ICprZXkpCit7CisgICAgcGpfbXV0ZXhfbG9jayhrZXktPmlvcXVldWUtPnJlZl9jbnRfbXV0ZXgpOworICAgICsra2V5LT5yZWZfY291bnQ7CisgICAgcGpfbXV0ZXhfdW5sb2NrKGtleS0+aW9xdWV1ZS0+cmVmX2NudF9tdXRleCk7Cit9CisKKy8qIERlY3JlbWVudCB0aGUga2V5J3MgcmVmZXJlbmNlIGNvdW50ZXIsIGFuZCB3aGVuIHRoZSBjb3VudGVyIHJlYWNoIHplcm8sCisgKiBkZXN0cm95IHRoZSBrZXkuCisgKgorICogTm90ZTogTVVTVCBOT1QgQ0FMTCBUSElTIEZVTkNUSU9OIFdISUxFIEhPTERJTkcgaW9xdWV1ZSdzIExPQ0suCisgKi8KK3N0YXRpYyB2b2lkIGRlY3JlbWVudF9jb3VudGVyKHBqX2lvcXVldWVfa2V5X3QgKmtleSkKK3sKKyAgICBwal9sb2NrX2FjcXVpcmUoa2V5LT5pb3F1ZXVlLT5sb2NrKTsKKyAgICBwal9tdXRleF9sb2NrKGtleS0+aW9xdWV1ZS0+cmVmX2NudF9tdXRleCk7CisgICAgLS1rZXktPnJlZl9jb3VudDsKKyAgICBpZiAoa2V5LT5yZWZfY291bnQgPT0gMCkgeworCisJcGpfYXNzZXJ0KGtleS0+Y2xvc2luZyA9PSAxKTsKKwlwal9nZXR0aWNrY291bnQoJmtleS0+ZnJlZV90aW1lKTsKKwlrZXktPmZyZWVfdGltZS5tc2VjICs9IFBKX0lPUVVFVUVfS0VZX0ZSRUVfREVMQVk7CisJcGpfdGltZV92YWxfbm9ybWFsaXplKCZrZXktPmZyZWVfdGltZSk7CisKKwlwal9saXN0X2VyYXNlKGtleSk7CisJcGpfbGlzdF9wdXNoX2JhY2soJmtleS0+aW9xdWV1ZS0+Y2xvc2luZ19saXN0LCBrZXkpOworCisgICAgfQorICAgIHBqX211dGV4X3VubG9jayhrZXktPmlvcXVldWUtPnJlZl9jbnRfbXV0ZXgpOworICAgIHBqX2xvY2tfcmVsZWFzZShrZXktPmlvcXVldWUtPmxvY2spOworfQorI2VuZGlmCisKKy8qCisgKiBwal9pb3F1ZXVlX3VucmVnaXN0ZXIoKQorICoKKyAqIFVucmVnaXN0ZXIgaGFuZGxlIGZyb20gaW9xdWV1ZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3VucmVnaXN0ZXIoIHBqX2lvcXVldWVfa2V5X3QgKmtleSkKK3sKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWU7CisgICAgc3RydWN0IGVwb2xsX2V2ZW50IGV2OworICAgIGludCBzdGF0dXM7CisgICAgCisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXkgIT0gTlVMTCwgUEpfRUlOVkFMKTsKKworICAgIGlvcXVldWUgPSBrZXktPmlvcXVldWU7CisKKyAgICAvKiBMb2NrIHRoZSBrZXkgdG8gbWFrZSBzdXJlIG5vIGNhbGxiYWNrIGlzIHNpbXVsdGFuZW91c2x5IG1vZGlmeWluZworICAgICAqIHRoZSBrZXkuIFdlIG5lZWQgdG8gbG9jayB0aGUga2V5IGJlZm9yZSBpb3F1ZXVlIGhlcmUgdG8gcHJldmVudAorICAgICAqIGRlYWRsb2NrLgorICAgICAqLworICAgIHBqX2lvcXVldWVfbG9ja19rZXkoa2V5KTsKKworICAgIC8qIEFsc28gbG9jayBpb3F1ZXVlICovCisgICAgcGpfbG9ja19hY3F1aXJlKGlvcXVldWUtPmxvY2spOworCisgICAgcGpfYXNzZXJ0KGlvcXVldWUtPmNvdW50ID4gMCk7CisgICAgLS1pb3F1ZXVlLT5jb3VudDsKKyNpZiAhUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIHBqX2xpc3RfZXJhc2Uoa2V5KTsKKyNlbmRpZgorCisgICAgZXYuZXZlbnRzID0gMDsKKyAgICBldi5lcG9sbF9kYXRhID0gKGVwb2xsX2RhdGFfdHlwZSlrZXk7CisgICAgc3RhdHVzID0gb3NfZXBvbGxfY3RsKCBpb3F1ZXVlLT5lcGZkLCBFUE9MTF9DVExfREVMLCBrZXktPmZkLCAmZXYpOworICAgIGlmIChzdGF0dXMgIT0gMCkgeworCXBqX3N0YXR1c190IHJjID0gcGpfZ2V0X29zX2Vycm9yKCk7CisJcGpfbG9ja19yZWxlYXNlKGlvcXVldWUtPmxvY2spOworCXJldHVybiByYzsKKyAgICB9CisKKyAgICAvKiBEZXN0cm95IHRoZSBrZXkuICovCisgICAgcGpfc29ja19jbG9zZShrZXktPmZkKTsKKworICAgIHBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKKworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIC8qIE1hcmsga2V5IGlzIGNsb3NpbmcuICovCisgICAga2V5LT5jbG9zaW5nID0gMTsKKworICAgIC8qIERlY3JlbWVudCBjb3VudGVyLiAqLworICAgIGRlY3JlbWVudF9jb3VudGVyKGtleSk7CisKKyAgICAvKiBEb25lLiAqLworICAgIGlmIChrZXktPmdycF9sb2NrKSB7CisJLyoganVzdCBkZWNfcmVmIGFuZCB1bmxvY2suIHdlIHdpbGwgc2V0IGdycF9sb2NrIHRvIE5VTEwKKwkgKiBlbHNld2hlcmUgKi8KKwlwal9ncnBfbG9ja190ICpncnBfbG9jayA9IGtleS0+Z3JwX2xvY2s7CisJLy8gRG9uJ3Qgc2V0IGdycF9sb2NrIHRvIE5VTEwgb3RoZXJ3aXNlIHRoZSBvdGhlciB0aHJlYWQKKwkvLyB3aWxsIGNyYXNoLiBKdXN0IGxlYXZlIGl0IGFzIGRhbmdsaW5nIHBvaW50ZXIsIGJ1dCB0aGlzCisJLy8gc2hvdWxkIGJlIHNhZmUKKwkvL2tleS0+Z3JwX2xvY2sgPSBOVUxMOworCXBqX2dycF9sb2NrX2RlY19yZWZfZGJnKGdycF9sb2NrLCAiaW9xdWV1ZSIsIDApOworCXBqX2dycF9sb2NrX3JlbGVhc2UoZ3JwX2xvY2spOworICAgIH0gZWxzZSB7CisJcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisgICAgfQorI2Vsc2UKKyAgICBpZiAoa2V5LT5ncnBfbG9jaykgeworCS8qIHNldCBncnBfbG9jayB0byBOVUxMIGFuZCB1bmxvY2sgKi8KKwlwal9ncnBfbG9ja190ICpncnBfbG9jayA9IGtleS0+Z3JwX2xvY2s7CisJLy8gRG9uJ3Qgc2V0IGdycF9sb2NrIHRvIE5VTEwgb3RoZXJ3aXNlIHRoZSBvdGhlciB0aHJlYWQKKwkvLyB3aWxsIGNyYXNoLiBKdXN0IGxlYXZlIGl0IGFzIGRhbmdsaW5nIHBvaW50ZXIsIGJ1dCB0aGlzCisJLy8gc2hvdWxkIGJlIHNhZmUKKwkvL2tleS0+Z3JwX2xvY2sgPSBOVUxMOworCXBqX2dycF9sb2NrX2RlY19yZWZfZGJnKGdycF9sb2NrLCAiaW9xdWV1ZSIsIDApOworCXBqX2dycF9sb2NrX3JlbGVhc2UoZ3JwX2xvY2spOworICAgIH0gZWxzZSB7CisJcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisgICAgfQorCisgICAgcGpfbG9ja19kZXN0cm95KGtleS0+bG9jayk7CisjZW5kaWYKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKiBpb3F1ZXVlX3JlbW92ZV9mcm9tX3NldCgpCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGlvcXVldWVfZGlzcGF0Y2hfZXZlbnQoKSB0byBpbnN0cnVjdAorICogdGhlIGlvcXVldWUgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgZGVzY3JpcHRvciBmcm9tIGlvcXVldWUncyBkZXNjcmlwdG9yCisgKiBzZXQgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuCisgKi8KK3N0YXRpYyB2b2lkIGlvcXVldWVfcmVtb3ZlX2Zyb21fc2V0KCBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGlvcXVldWVfZXZlbnRfdHlwZSBldmVudF90eXBlKQoreworICAgIGlmIChldmVudF90eXBlID09IFdSSVRFQUJMRV9FVkVOVCkgeworCXN0cnVjdCBlcG9sbF9ldmVudCBldjsKKworCWV2LmV2ZW50cyA9IEVQT0xMSU4gfCBFUE9MTEVSUjsKKwlldi5lcG9sbF9kYXRhID0gKGVwb2xsX2RhdGFfdHlwZSlrZXk7CisJb3NfZXBvbGxfY3RsKCBpb3F1ZXVlLT5lcGZkLCBFUE9MTF9DVExfTU9ELCBrZXktPmZkLCAmZXYpOworICAgIH0JCit9CisKKy8qCisgKiBpb3F1ZXVlX2FkZF90b19zZXQoKQorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBwal9pb3F1ZXVlX3JlY3YoKSwgcGpfaW9xdWV1ZV9zZW5kKCkgZXRjCisgKiB0byBpbnN0cnVjdCB0aGUgaW9xdWV1ZSB0byBhZGQgdGhlIHNwZWNpZmllZCBoYW5kbGUgdG8gaW9xdWV1ZSdzIGRlc2NyaXB0b3IKKyAqIHNldCBmb3IgdGhlIHNwZWNpZmllZCBldmVudC4KKyAqLworc3RhdGljIHZvaWQgaW9xdWV1ZV9hZGRfdG9fc2V0KCBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpb3F1ZXVlX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSApCit7CisgICAgaWYgKGV2ZW50X3R5cGUgPT0gV1JJVEVBQkxFX0VWRU5UKSB7CisJc3RydWN0IGVwb2xsX2V2ZW50IGV2OworCisJZXYuZXZlbnRzID0gRVBPTExJTiB8IEVQT0xMT1VUIHwgRVBPTExFUlI7CisJZXYuZXBvbGxfZGF0YSA9IChlcG9sbF9kYXRhX3R5cGUpa2V5OworCW9zX2Vwb2xsX2N0bCggaW9xdWV1ZS0+ZXBmZCwgRVBPTExfQ1RMX01PRCwga2V5LT5mZCwgJmV2KTsKKyAgICB9CQorfQorCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworLyogU2NhbiBjbG9zaW5nIGtleXMgdG8gYmUgcHV0IHRvIGZyZWUgbGlzdCBhZ2FpbiAqLworc3RhdGljIHZvaWQgc2Nhbl9jbG9zaW5nX2tleXMocGpfaW9xdWV1ZV90ICppb3F1ZXVlKQoreworICAgIHBqX3RpbWVfdmFsIG5vdzsKKyAgICBwal9pb3F1ZXVlX2tleV90ICpoOworCisgICAgcGpfZ2V0dGlja2NvdW50KCZub3cpOworICAgIGggPSBpb3F1ZXVlLT5jbG9zaW5nX2xpc3QubmV4dDsKKyAgICB3aGlsZSAoaCAhPSAmaW9xdWV1ZS0+Y2xvc2luZ19saXN0KSB7CisJcGpfaW9xdWV1ZV9rZXlfdCAqbmV4dCA9IGgtPm5leHQ7CisKKwlwal9hc3NlcnQoaC0+Y2xvc2luZyAhPSAwKTsKKworCWlmIChQSl9USU1FX1ZBTF9HVEUobm93LCBoLT5mcmVlX3RpbWUpKSB7CisJICAgIHBqX2xpc3RfZXJhc2UoaCk7CisJICAgIC8vIERvbid0IHNldCBncnBfbG9jayB0byBOVUxMIG90aGVyd2lzZSB0aGUgb3RoZXIgdGhyZWFkCisJICAgIC8vIHdpbGwgY3Jhc2guIEp1c3QgbGVhdmUgaXQgYXMgZGFuZ2xpbmcgcG9pbnRlciwgYnV0IHRoaXMKKwkgICAgLy8gc2hvdWxkIGJlIHNhZmUKKwkgICAgLy9oLT5ncnBfbG9jayA9IE5VTEw7CisJICAgIHBqX2xpc3RfcHVzaF9iYWNrKCZpb3F1ZXVlLT5mcmVlX2xpc3QsIGgpOworCX0KKwloID0gbmV4dDsKKyAgICB9Cit9CisjZW5kaWYKKworLyoKKyAqIHBqX2lvcXVldWVfcG9sbCgpCisgKgorICovCitQSl9ERUYoaW50KSBwal9pb3F1ZXVlX3BvbGwoIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwgY29uc3QgcGpfdGltZV92YWwgKnRpbWVvdXQpCit7CisgICAgaW50IGksIGNvdW50LCBwcm9jZXNzZWQ7CisgICAgaW50IG1zZWM7CisgICAgLy9zdHJ1Y3QgZXBvbGxfZXZlbnQgKmV2ZW50cyA9IGlvcXVldWUtPmV2ZW50czsKKyAgICAvL3N0cnVjdCBxdWV1ZSAqcXVldWUgPSBpb3F1ZXVlLT5xdWV1ZTsKKyAgICBzdHJ1Y3QgZXBvbGxfZXZlbnQgZXZlbnRzW1BKX0lPUVVFVUVfTUFYX0VWRU5UU19JTl9TSU5HTEVfUE9MTF07CisgICAgc3RydWN0IHF1ZXVlIHF1ZXVlW1BKX0lPUVVFVUVfTUFYX0VWRU5UU19JTl9TSU5HTEVfUE9MTF07CisgICAgcGpfdGltZXN0YW1wIHQxLCB0MjsKKyAgICAKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgbXNlYyA9IHRpbWVvdXQgPyBQSl9USU1FX1ZBTF9NU0VDKCp0aW1lb3V0KSA6IDkwMDA7CisKKyAgICBUUkFDRV8oKFRISVNfRklMRSwgInN0YXJ0IG9zX2Vwb2xsX3dhaXQsIG1zZWM9JWQiLCBtc2VjKSk7CisgICAgcGpfZ2V0X3RpbWVzdGFtcCgmdDEpOworIAorICAgIC8vY291bnQgPSBvc19lcG9sbF93YWl0KCBpb3F1ZXVlLT5lcGZkLCBldmVudHMsIGlvcXVldWUtPm1heCwgbXNlYyk7CisgICAgY291bnQgPSBvc19lcG9sbF93YWl0KCBpb3F1ZXVlLT5lcGZkLCBldmVudHMsIFBKX0lPUVVFVUVfTUFYX0VWRU5UU19JTl9TSU5HTEVfUE9MTCwgbXNlYyk7CisgICAgaWYgKGNvdW50ID09IDApIHsKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisgICAgLyogQ2hlY2sgdGhlIGNsb3Npbmcga2V5cyBvbmx5IHdoZW4gdGhlcmUncyBubyBhY3Rpdml0eSBhbmQgd2hlbiB0aGVyZSBhcmUKKyAgICAgKiBwZW5kaW5nIGNsb3Npbmcga2V5cy4KKyAgICAgKi8KKyAgICBpZiAoY291bnQgPT0gMCAmJiAhcGpfbGlzdF9lbXB0eSgmaW9xdWV1ZS0+Y2xvc2luZ19saXN0KSkgeworCXBqX2xvY2tfYWNxdWlyZShpb3F1ZXVlLT5sb2NrKTsKKwlzY2FuX2Nsb3Npbmdfa2V5cyhpb3F1ZXVlKTsKKwlwal9sb2NrX3JlbGVhc2UoaW9xdWV1ZS0+bG9jayk7CisgICAgfQorI2VuZGlmCisJVFJBQ0VfKChUSElTX0ZJTEUsICJvc19lcG9sbF93YWl0IHRpbWVkIG91dCIpKTsKKwlyZXR1cm4gY291bnQ7CisgICAgfQorICAgIGVsc2UgaWYgKGNvdW50IDwgMCkgeworCVRSQUNFXygoVEhJU19GSUxFLCAib3NfZXBvbGxfd2FpdCBlcnJvciIpKTsKKwlyZXR1cm4gLXBqX2dldF9uZXRvc19lcnJvcigpOworICAgIH0KKworICAgIHBqX2dldF90aW1lc3RhbXAoJnQyKTsKKyAgICBUUkFDRV8oKFRISVNfRklMRSwgIm9zX2Vwb2xsX3dhaXQgcmV0dXJucyAlZCwgdGltZT0lZCB1c2VjIiwKKwkJICAgICAgIGNvdW50LCBwal9lbGFwc2VkX3VzZWMoJnQxLCAmdDIpKSk7CisKKyAgICAvKiBMb2NrIGlvcXVldWUuICovCisgICAgcGpfbG9ja19hY3F1aXJlKGlvcXVldWUtPmxvY2spOworCisgICAgZm9yIChwcm9jZXNzZWQ9MCwgaT0wOyBpPGNvdW50OyArK2kpIHsKKwlwal9pb3F1ZXVlX2tleV90ICpoID0gKHBqX2lvcXVldWVfa2V5X3QqKShlcG9sbF9kYXRhX3R5cGUpCisJCQkJZXZlbnRzW2ldLmVwb2xsX2RhdGE7CisKKwlUUkFDRV8oKFRISVNfRklMRSwgImV2ZW50ICVkOiBldmVudHM9JWQiLCBpLCBldmVudHNbaV0uZXZlbnRzKSk7CisKKwkvKgorCSAqIENoZWNrIHJlYWRhYmlsaXR5LgorCSAqLworCWlmICgoZXZlbnRzW2ldLmV2ZW50cyAmIEVQT0xMSU4pICYmIAorCSAgICAoa2V5X2hhc19wZW5kaW5nX3JlYWQoaCkgfHwga2V5X2hhc19wZW5kaW5nX2FjY2VwdChoKSkgJiYgIUlTX0NMT1NJTkcoaCkgKSB7CisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisJICAgIGluY3JlbWVudF9jb3VudGVyKGgpOworI2VuZGlmCisJICAgIHF1ZXVlW3Byb2Nlc3NlZF0ua2V5ID0gaDsKKwkgICAgcXVldWVbcHJvY2Vzc2VkXS5ldmVudF90eXBlID0gUkVBREFCTEVfRVZFTlQ7CisJICAgICsrcHJvY2Vzc2VkOworCSAgICBjb250aW51ZTsKKwl9CisKKwkvKgorCSAqIENoZWNrIGZvciB3cml0ZWFiaWxpdHkuCisJICovCisJaWYgKChldmVudHNbaV0uZXZlbnRzICYgRVBPTExPVVQpICYmIGtleV9oYXNfcGVuZGluZ193cml0ZShoKSAmJiAhSVNfQ0xPU0lORyhoKSkgeworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworCSAgICBpbmNyZW1lbnRfY291bnRlcihoKTsKKyNlbmRpZgorCSAgICBxdWV1ZVtwcm9jZXNzZWRdLmtleSA9IGg7CisJICAgIHF1ZXVlW3Byb2Nlc3NlZF0uZXZlbnRfdHlwZSA9IFdSSVRFQUJMRV9FVkVOVDsKKwkgICAgKytwcm9jZXNzZWQ7CisJICAgIGNvbnRpbnVlOworCX0KKworI2lmIFBKX0hBU19UQ1AKKwkvKgorCSAqIENoZWNrIGZvciBjb21wbGV0aW9uIG9mIGNvbm5lY3QoKSBvcGVyYXRpb24uCisJICovCisJaWYgKChldmVudHNbaV0uZXZlbnRzICYgRVBPTExPVVQpICYmIChoLT5jb25uZWN0aW5nKSAmJiAhSVNfQ0xPU0lORyhoKSkgeworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworCSAgICBpbmNyZW1lbnRfY291bnRlcihoKTsKKyNlbmRpZgorCSAgICBxdWV1ZVtwcm9jZXNzZWRdLmtleSA9IGg7CisJICAgIHF1ZXVlW3Byb2Nlc3NlZF0uZXZlbnRfdHlwZSA9IFdSSVRFQUJMRV9FVkVOVDsKKwkgICAgKytwcm9jZXNzZWQ7CisJICAgIGNvbnRpbnVlOworCX0KKyNlbmRpZiAvKiBQSl9IQVNfVENQICovCisKKwkvKgorCSAqIENoZWNrIGZvciBlcnJvciBjb25kaXRpb24uCisJICovCisJaWYgKChldmVudHNbaV0uZXZlbnRzICYgRVBPTExFUlIpICYmICFJU19DTE9TSU5HKGgpKSB7CisJICAgIC8qCisJICAgICAqIFdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgZXhjZXB0aW9uIGV2ZW50LiAgSWYgaXQncyByZWxhdGVkIHRvIHVzCisJICAgICAqIGNvbm5lY3RpbmcsIHJlcG9ydCBpdCBhcyBzdWNoLiAgSWYgbm90LCBqdXN0IHJlcG9ydCBpdCBhcyBhCisJICAgICAqIHJlYWQgZXZlbnQgYW5kIHRoZSBoaWdoZXIgbGF5ZXJzIHdpbGwgaGFuZGxlIGl0LgorCSAgICAgKi8KKwkgICAgaWYgKGgtPmNvbm5lY3RpbmcpIHsKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisJCWluY3JlbWVudF9jb3VudGVyKGgpOworI2VuZGlmCisJCXF1ZXVlW3Byb2Nlc3NlZF0ua2V5ID0gaDsKKwkJcXVldWVbcHJvY2Vzc2VkXS5ldmVudF90eXBlID0gRVhDRVBUSU9OX0VWRU5UOworCQkrK3Byb2Nlc3NlZDsKKwkgICAgfSBlbHNlIGlmIChrZXlfaGFzX3BlbmRpbmdfcmVhZChoKSB8fCBrZXlfaGFzX3BlbmRpbmdfYWNjZXB0KGgpKSB7CisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworCQlpbmNyZW1lbnRfY291bnRlcihoKTsKKyNlbmRpZgorCQlxdWV1ZVtwcm9jZXNzZWRdLmtleSA9IGg7CisJCXF1ZXVlW3Byb2Nlc3NlZF0uZXZlbnRfdHlwZSA9IFJFQURBQkxFX0VWRU5UOworCQkrK3Byb2Nlc3NlZDsKKwkgICAgfQorCSAgICBjb250aW51ZTsKKwl9CisgICAgfQorICAgIGZvciAoaT0wOyBpPHByb2Nlc3NlZDsgKytpKSB7CisJaWYgKHF1ZXVlW2ldLmtleS0+Z3JwX2xvY2spCisJICAgIHBqX2dycF9sb2NrX2FkZF9yZWZfZGJnKHF1ZXVlW2ldLmtleS0+Z3JwX2xvY2ssICJpb3F1ZXVlIiwgMCk7CisgICAgfQorCisgICAgUEpfUkFDRV9NRSg1KTsKKworICAgIHBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKKworICAgIFBKX1JBQ0VfTUUoNSk7CisKKyAgICAvKiBOb3cgcHJvY2VzcyB0aGUgZXZlbnRzLiAqLworICAgIGZvciAoaT0wOyBpPHByb2Nlc3NlZDsgKytpKSB7CisJc3dpdGNoIChxdWV1ZVtpXS5ldmVudF90eXBlKSB7CisgICAgICAgIGNhc2UgUkVBREFCTEVfRVZFTlQ6CisgICAgICAgICAgICBpb3F1ZXVlX2Rpc3BhdGNoX3JlYWRfZXZlbnQoaW9xdWV1ZSwgcXVldWVbaV0ua2V5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdSSVRFQUJMRV9FVkVOVDoKKyAgICAgICAgICAgIGlvcXVldWVfZGlzcGF0Y2hfd3JpdGVfZXZlbnQoaW9xdWV1ZSwgcXVldWVbaV0ua2V5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVYQ0VQVElPTl9FVkVOVDoKKyAgICAgICAgICAgIGlvcXVldWVfZGlzcGF0Y2hfZXhjZXB0aW9uX2V2ZW50KGlvcXVldWUsIHF1ZXVlW2ldLmtleSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOT19FVkVOVDoKKyAgICAgICAgICAgIHBqX2Fzc2VydCghIkludmFsaWQgZXZlbnQhIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworCWRlY3JlbWVudF9jb3VudGVyKHF1ZXVlW2ldLmtleSk7CisjZW5kaWYKKworCWlmIChxdWV1ZVtpXS5rZXktPmdycF9sb2NrKQorCSAgICBwal9ncnBfbG9ja19kZWNfcmVmX2RiZyhxdWV1ZVtpXS5rZXktPmdycF9sb2NrLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW9xdWV1ZSIsIDApOworICAgIH0KKworICAgIC8qIFNwZWNpYWwgY2FzZToKKyAgICAgKiBXaGVuIGVwb2xsIHJldHVybnMgPiAwIGJ1dCBubyBkZXNjcmlwdG9ycyBhcmUgYWN0dWFsbHkgc2V0IQorICAgICAqLworICAgIGlmIChjb3VudCA+IDAgJiYgIXByb2Nlc3NlZCAmJiBtc2VjID4gMCkgeworCXBqX3RocmVhZF9zbGVlcChtc2VjKTsKKyAgICB9CisKKyAgICBwal9nZXRfdGltZXN0YW1wKCZ0MSk7CisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICJpb3F1ZXVlX3BvbGwoKSByZXR1cm5zICVkLCB0aW1lPSVkIHVzZWMiLAorCQkgICAgICAgcHJvY2Vzc2VkLCBwal9lbGFwc2VkX3VzZWMoJnQyLCAmdDEpKSk7CisKKyAgICByZXR1cm4gcHJvY2Vzc2VkOworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovaW9xdWV1ZV9saW51eF9rZXJuZWwuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX2xpbnV4X2tlcm5lbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNmRhMDYKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovaW9xdWV1ZV9saW51eF9rZXJuZWwuYwpAQCAtMCwwICsxLDE2MiBAQAorLyogJElkOiBpb3F1ZXVlX2xpbnV4X2tlcm5lbC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovaW9xdWV1ZS5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovbGlzdC5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisKKyNkZWZpbmUgVEhJU19GSUxFICAgImlvcXVldWUiCisKKyNkZWZpbmUgUEpfSU9RVUVVRV9JU19SRUFEX09QKG9wKSAgIFwKKwkoKG9wICYgUEpfSU9RVUVVRV9PUF9SRUFEKSAgfHwgKG9wICYgUEpfSU9RVUVVRV9PUF9SRUNWX0ZST00pKQorI2RlZmluZSBQSl9JT1FVRVVFX0lTX1dSSVRFX09QKG9wKSAgXAorCSgob3AgJiBQSl9JT1FVRVVFX09QX1dSSVRFKSB8fCAob3AgJiBQSl9JT1FVRVVFX09QX1NFTkRfVE8pKQorCisKKyNpZiBQSl9IQVNfVENQCisjICBkZWZpbmUgUEpfSU9RVUVVRV9JU19BQ0NFUFRfT1Aob3ApCShvcCAmIFBKX0lPUVVFVUVfT1BfQUNDRVBUKQorIyAgZGVmaW5lIFBKX0lPUVVFVUVfSVNfQ09OTkVDVF9PUChvcCkJKG9wICYgUEpfSU9RVUVVRV9PUF9DT05ORUNUKQorI2Vsc2UKKyMgIGRlZmluZSBQSl9JT1FVRVVFX0lTX0FDQ0VQVF9PUChvcCkJMAorIyAgZGVmaW5lIFBKX0lPUVVFVUVfSVNfQ09OTkVDVF9PUChvcCkJMAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0RFQlVHKSAmJiBQSl9ERUJVRyAhPSAwCisjICBkZWZpbmUgVkFMSURBVEVfRkRfU0VUCQkxCisjZWxzZQorIyAgZGVmaW5lIFZBTElEQVRFX0ZEX1NFVAkJMAorI2VuZGlmCisKK3N0cnVjdCBwal9pb3F1ZXVlX2tleV90Cit7CisgICAgUEpfREVDTF9MSVNUX01FTUJFUihzdHJ1Y3QgcGpfaW9xdWV1ZV9rZXlfdCkKKyAgICBwal9zb2NrX3QJCSAgICBmZDsKKyAgICBwal9pb3F1ZXVlX29wZXJhdGlvbl9lICBvcDsKKyAgICB2b2lkCQkgICAqdXNlcl9kYXRhOworICAgIHBqX2lvcXVldWVfY2FsbGJhY2sJICAgIGNiOworfTsKKworc3RydWN0IHBqX2lvcXVldWVfdAoreworfTsKKworUEpfREVGKHBqX2lvcXVldWVfdCopIHBqX2lvcXVldWVfY3JlYXRlKHBqX3Bvb2xfdCAqcG9vbCwgcGpfc2l6ZV90IG1heF9mZCkKK3sKKyAgICByZXR1cm4gTlVMTDsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2Rlc3Ryb3kocGpfaW9xdWV1ZV90ICppb3F1ZSkKK3sKKyAgICByZXR1cm4gMDsKK30KKworUEpfREVGKHBqX2lvcXVldWVfa2V5X3QqKSBwal9pb3F1ZXVlX3JlZ2lzdGVyKCBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgICBwal9pb3F1ZXVlX3QgKmlvcXVlLAorCQkJCQkgICAgICAgcGpfb3NoYW5kbGVfdCBzb2NrLAorCQkJCQkgICAgICAgdm9pZCAqdXNlcl9kYXRhLAorCQkJCQkgICAgICAgY29uc3QgcGpfaW9xdWV1ZV9jYWxsYmFjayAqY2IpCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKCBwal9pb3F1ZXVlX3QgKmlvcXVlLAorCQkJCQkgICBwal9pb3F1ZXVlX2tleV90ICprZXkpCit7CisgICAgcmV0dXJuIC0xOworfQorCitQSl9ERUYodm9pZCopIHBqX2lvcXVldWVfZ2V0X3VzZXJfZGF0YSggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5ICkKK3sKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitQSl9ERUYoaW50KSBwal9pb3F1ZXVlX3BvbGwoIHBqX2lvcXVldWVfdCAqaW9xdWUsIGNvbnN0IHBqX3RpbWVfdmFsICp0aW1lb3V0KQoreworICAgIHJldHVybiAtMTsKK30KKworUEpfREVGKGludCkgcGpfaW9xdWV1ZV9yZWFkKCBwal9pb3F1ZXVlX3QgKmlvcXVlLAorCQkJICAgICBwal9pb3F1ZXVlX2tleV90ICprZXksCisJCQkgICAgIHZvaWQgKmJ1ZmZlciwKKwkJCSAgICAgcGpfc2l6ZV90IGJ1ZmxlbikKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKK1BKX0RFRihpbnQpIHBqX2lvcXVldWVfcmVjdmZyb20oIHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkJIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKwkJCQkgdm9pZCAqYnVmZmVyLAorCQkJCSBwal9zaXplX3QgYnVmbGVuLAorCQkJCSBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCSBpbnQgKmFkZHJsZW4pCit7CisgICAgcmV0dXJuIC0xOworfQorCitQSl9ERUYoaW50KSBwal9pb3F1ZXVlX3dyaXRlKCBwal9pb3F1ZXVlX3QgKmlvcXVlLAorCQkJICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKwkJCSAgICAgIHBqX3NpemVfdCBkYXRhbGVuKQoreworICAgIHJldHVybiAtMTsKK30KKworUEpfREVGKGludCkgcGpfaW9xdWV1ZV9zZW5kdG8oIHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkgICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisJCQkgICAgICAgcGpfc2l6ZV90IGRhdGFsZW4sCisJCQkgICAgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCSAgICAgICBpbnQgYWRkcmxlbikKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKKyNpZiBQSl9IQVNfVENQCisvKgorICogSW5pdGlhdGUgb3ZlcmxhcHBlZCBhY2NlcHQoKSBvcGVyYXRpb24uCisgKi8KK1BKX0RFRihpbnQpIHBqX2lvcXVldWVfYWNjZXB0KCBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisJCQkgICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJICAgICAgIHBqX3NvY2tfdCAqbmV3X3NvY2ssCisJCQkgICAgICAgcGpfc29ja2FkZHJfdCAqbG9jYWwsCisJCQkgICAgICAgcGpfc29ja2FkZHJfdCAqcmVtb3RlLAorCQkJICAgICAgIGludCAqYWRkcmxlbikKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qCisgKiBJbml0aWF0ZSBvdmVybGFwcGVkIGNvbm5lY3QoKSBvcGVyYXRpb24gKHdlbGwsIGl0J3Mgbm9uLWJsb2NraW5nIGFjdHVhbGx5LAorICogc2luY2UgdGhlcmUncyBubyBvdmVybGFwcGVkIHZlcnNpb24gb2YgY29ubmVjdCgpKS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2Nvbm5lY3QoIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCQkJcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJCQljb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCQlpbnQgYWRkcmxlbiApCit7CisgICAgcmV0dXJuIC0xOworfQorI2VuZGlmCS8qIFBKX0hBU19UQ1AgKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lvcXVldWVfc2VsZWN0LmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovaW9xdWV1ZV9zZWxlY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmU0NDkxCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lvcXVldWVfc2VsZWN0LmMKQEAgLTAsMCArMSw5ODggQEAKKy8qICRJZDogaW9xdWV1ZV9zZWxlY3QuYyA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKworLyoKKyAqIHNvY2tfc2VsZWN0LmMKKyAqCisgKiBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBJT1F1ZXVlIHVzaW5nIHBqX3NvY2tfc2VsZWN0KCkuCisgKiBJdCBydW5zIGFueXdoZXJlIHdoZXJlIHBqX3NvY2tfc2VsZWN0KCkgaXMgYXZhaWxhYmxlIChjdXJyZW50bHkKKyAqIFdpbjMyLCBMaW51eCwgTGludXgga2VybmVsLCBldGMuKS4KKyAqLworCisjaW5jbHVkZSA8cGovaW9xdWV1ZS5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovbG9jay5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL2xpc3QuaD4KKyNpbmNsdWRlIDxwai9wb29sLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovc29jay5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zb2NrZXQuaD4KKyNpbmNsdWRlIDxwai9zb2NrX3NlbGVjdC5oPgorI2luY2x1ZGUgPHBqL3NvY2tfcW9zLmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai9yYW5kLmg+CisKKy8qIE5vdyB0aGF0IHdlIGhhdmUgYWNjZXNzIHRvIE9TJ2VzIDxzeXMvc2VsZWN0PiwgbGV0cyBjaGVjayBhZ2FpbiB0aGF0CisgKiBQSl9JT1FVRVVFX01BWF9IQU5ETEVTIGlzIG5vdCBncmVhdGVyIHRoYW4gRkRfU0VUU0laRQorICovCisjaWYgUEpfSU9RVUVVRV9NQVhfSEFORExFUyA+IEZEX1NFVFNJWkUKKyMgICBlcnJvciAiUEpfSU9RVUVVRV9NQVhfSEFORExFUyBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIEZEX1NFVFNJWkUiCisjZW5kaWYKKworCisvKgorICogSW5jbHVkZSBkZWNsYXJhdGlvbiBmcm9tIGNvbW1vbiBhYnN0cmFjdGlvbi4KKyAqLworI2luY2x1ZGUgImlvcXVldWVfY29tbW9uX2Ficy5oIgorCisvKgorICogSVNTVUVTIHdpdGggaW9xdWV1ZV9zZWxlY3QoKQorICoKKyAqIEVBR0FJTi9FV09VTERCTE9DSyBlcnJvciBpbiByZWN2KCk6CisgKiAgLSB3aGVuIG11bHRpcGxlIHRocmVhZHMgYXJlIHdvcmtpbmcgd2l0aCB0aGUgaW9xdWV1ZSwgYXBwbGljYXRpb24KKyAqICAgIG1heSByZWNlaXZlIEVBR0FJTiBvciBFV09VTERCTE9DSyBpbiB0aGUgcmVjZWl2ZSBjYWxsYmFjay4KKyAqICAgIFRoaXMgZXJyb3IgaGFwcGVucyBiZWNhdXNlIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGlzIHdhdGNoaW5nIGZvcgorICogICAgdGhlIHNhbWUgZGVzY3JpcHRvciBzZXQsIHNvIHdoZW4gYWxsIG9mIHRoZW0gY2FsbCByZWN2KCkgb3IgcmVjdmZyb20oKQorICogICAgc2ltdWx0YW5lb3VzbHksIG9ubHkgb25lIHdpbGwgc3VjY2VlZCBhbmQgdGhlIHJlc3Qgd2lsbCBnZXQgdGhlIGVycm9yLgorICoKKyAqLworI2RlZmluZSBUSElTX0ZJTEUgICAiaW9xX3NlbGVjdCIKKworLyoKKyAqIFRoZSBzZWxlY3QgaW9xdWV1ZSByZWxpZXMgb24gc29ja2V0IGZ1bmN0aW9ucyAocGpfc29ja194eHgoKSkgdG8gcmV0dXJuCisgKiB0aGUgY29ycmVjdCBlcnJvciBjb2RlLgorICovCisjaWYgUEpfUkVUVVJOX09TX0VSUk9SKDEwMCkgIT0gUEpfU1RBVFVTX0ZST01fT1MoMTAwKQorIyAgIGVycm9yICJFcnJvciByZXBvcnRpbmcgbXVzdCBiZSBlbmFibGVkIGZvciB0aGlzIGZ1bmN0aW9uIHRvIHdvcmshIgorI2VuZGlmCisKKy8qCisgKiBEdXJpbmcgZGVidWdnaW5nIGJ1aWxkLCBWQUxJREFURV9GRF9TRVQgaXMgc2V0LgorICogVGhpcyB3aWxsIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgZmRfc2V0cy4KKyAqLworLyoKKyNpZiBkZWZpbmVkKFBKX0RFQlVHKSAmJiBQSl9ERUJVRyAhPSAwCisjICBkZWZpbmUgVkFMSURBVEVfRkRfU0VUCQkxCisjZWxzZQorIyAgZGVmaW5lIFZBTElEQVRFX0ZEX1NFVAkJMAorI2VuZGlmCisqLworI2RlZmluZSBWQUxJREFURV9GRF9TRVQgICAgIDAKKworI2lmIDAKKyMgIGRlZmluZSBUUkFDRV9fKGFyZ3MpCVBKX0xPRygzLGFyZ3MpCisjZWxzZQorIyAgZGVmaW5lIFRSQUNFX18oYXJncykKKyNlbmRpZgorCisvKgorICogVGhpcyBkZXNjcmliZXMgZWFjaCBrZXkuCisgKi8KK3N0cnVjdCBwal9pb3F1ZXVlX2tleV90Cit7CisgICAgREVDTEFSRV9DT01NT05fS0VZCit9OworCisvKgorICogVGhpcyBkZXNjcmliZXMgdGhlIEkvTyBxdWV1ZSBpdHNlbGYuCisgKi8KK3N0cnVjdCBwal9pb3F1ZXVlX3QKK3sKKyAgICBERUNMQVJFX0NPTU1PTl9JT1FVRVVFCisKKyAgICB1bnNpZ25lZAkJbWF4LCBjb3VudDsJLyogTWF4IGFuZCBjdXJyZW50IGtleSBjb3VudAkgICAgKi8KKyAgICBpbnQJCQluZmRzOwkJLyogVGhlIGxhcmdlc3QgZmQgdmFsdWUgKGZvciBzZWxlY3QpKi8KKyAgICBwal9pb3F1ZXVlX2tleV90CWFjdGl2ZV9saXN0OwkvKiBMaXN0IG9mIGFjdGl2ZSBrZXlzLgkJICAgICovCisgICAgcGpfZmRfc2V0X3QJCXJmZHNldDsKKyAgICBwal9mZF9zZXRfdAkJd2Zkc2V0OworI2lmIFBKX0hBU19UQ1AKKyAgICBwal9mZF9zZXRfdAkJeGZkc2V0OworI2VuZGlmCisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisgICAgcGpfbXV0ZXhfdAkgICAgICAgKnJlZl9jbnRfbXV0ZXg7CisgICAgcGpfaW9xdWV1ZV9rZXlfdAljbG9zaW5nX2xpc3Q7CisgICAgcGpfaW9xdWV1ZV9rZXlfdAlmcmVlX2xpc3Q7CisjZW5kaWYKK307CisKKy8qIFByb3RvICovCisjaWYgZGVmaW5lZChQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUKSAmJiBcCisJICAgIFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQhPTAKK3N0YXRpYyBwal9zdGF0dXNfdCByZXBsYWNlX3VkcF9zb2NrKHBqX2lvcXVldWVfa2V5X3QgKmgpOworI2VuZGlmCisKKy8qIEluY2x1ZGUgaW1wbGVtZW50YXRpb24gZm9yIGNvbW1vbiBhYnN0cmFjdGlvbiBhZnRlciB3ZSBkZWNsYXJlCisgKiBwal9pb3F1ZXVlX2tleV90IGFuZCBwal9pb3F1ZXVlX3QuCisgKi8KKyNpbmNsdWRlICJpb3F1ZXVlX2NvbW1vbl9hYnMuYyIKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKy8qIFNjYW4gY2xvc2luZyBrZXlzIHRvIGJlIHB1dCB0byBmcmVlIGxpc3QgYWdhaW4gKi8KK3N0YXRpYyB2b2lkIHNjYW5fY2xvc2luZ19rZXlzKHBqX2lvcXVldWVfdCAqaW9xdWV1ZSk7CisjZW5kaWYKKworLyoKKyAqIHBqX2lvcXVldWVfbmFtZSgpCisgKi8KK1BKX0RFRihjb25zdCBjaGFyKikgcGpfaW9xdWV1ZV9uYW1lKHZvaWQpCit7CisgICAgcmV0dXJuICJzZWxlY3QiOworfQorCisvKiAKKyAqIFNjYW4gdGhlIHNvY2tldCBkZXNjcmlwdG9yIHNldHMgZm9yIHRoZSBsYXJnZXN0IGRlc2NyaXB0b3IuCisgKiBUaGlzIHZhbHVlIGlzIG5lZWRlZCBieSBzZWxlY3QoKS4KKyAqLworI2lmIGRlZmluZWQoUEpfU0VMRUNUX05FRURTX05GRFMpICYmIFBKX1NFTEVDVF9ORUVEU19ORkRTIT0wCitzdGF0aWMgdm9pZCByZXNjYW5fZmRzZXQocGpfaW9xdWV1ZV90ICppb3F1ZXVlKQoreworICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleSA9IGlvcXVldWUtPmFjdGl2ZV9saXN0Lm5leHQ7CisgICAgaW50IG1heCA9IDA7CisKKyAgICB3aGlsZSAoa2V5ICE9ICZpb3F1ZXVlLT5hY3RpdmVfbGlzdCkgeworCWlmIChrZXktPmZkID4gbWF4KQorCSAgICBtYXggPSBrZXktPmZkOworCWtleSA9IGtleS0+bmV4dDsKKyAgICB9CisKKyAgICBpb3F1ZXVlLT5uZmRzID0gbWF4OworfQorI2Vsc2UKK3N0YXRpYyB2b2lkIHJlc2Nhbl9mZHNldChwal9pb3F1ZXVlX3QgKmlvcXVldWUpCit7CisgICAgaW9xdWV1ZS0+bmZkcyA9IEZEX1NFVFNJWkUtMTsKK30KKyNlbmRpZgorCisKKy8qCisgKiBwal9pb3F1ZXVlX2NyZWF0ZSgpCisgKgorICogQ3JlYXRlIHNlbGVjdCBpb3F1ZXVlLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc2l6ZV90IG1heF9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfdCAqKnBfaW9xdWV1ZSkKK3sKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWU7CisgICAgcGpfbG9ja190ICpsb2NrOworICAgIHVuc2lnbmVkIGk7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICAvKiBDaGVjayB0aGF0IGFyZ3VtZW50cyBhcmUgdmFsaWQuICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICE9IE5VTEwgJiYgcF9pb3F1ZXVlICE9IE5VTEwgJiYgCisgICAgICAgICAgICAgICAgICAgICBtYXhfZmQgPiAwICYmIG1heF9mZCA8PSBQSl9JT1FVRVVFX01BWF9IQU5ETEVTLCAKKyAgICAgICAgICAgICAgICAgICAgIFBKX0VJTlZBTCk7CisKKyAgICAvKiBDaGVjayB0aGF0IHNpemUgb2YgcGpfaW9xdWV1ZV9vcF9rZXlfdCBpcyBzdWZmaWNpZW50ICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihzaXplb2YocGpfaW9xdWV1ZV9vcF9rZXlfdCktc2l6ZW9mKHZvaWQqKSA+PQorICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuaW9uIG9wZXJhdGlvbl9rZXkpLCBQSl9FQlVHKTsKKworICAgIC8qIENyZWF0ZSBhbmQgaW5pdCBjb21tb24gaW9xdWV1ZSBzdHVmZnMgKi8KKyAgICBpb3F1ZXVlID0gUEpfUE9PTF9BTExPQ19UKHBvb2wsIHBqX2lvcXVldWVfdCk7CisgICAgaW9xdWV1ZV9pbml0KGlvcXVldWUpOworCisgICAgaW9xdWV1ZS0+bWF4ID0gKHVuc2lnbmVkKW1heF9mZDsKKyAgICBpb3F1ZXVlLT5jb3VudCA9IDA7CisgICAgUEpfRkRfWkVSTygmaW9xdWV1ZS0+cmZkc2V0KTsKKyAgICBQSl9GRF9aRVJPKCZpb3F1ZXVlLT53ZmRzZXQpOworI2lmIFBKX0hBU19UQ1AKKyAgICBQSl9GRF9aRVJPKCZpb3F1ZXVlLT54ZmRzZXQpOworI2VuZGlmCisgICAgcGpfbGlzdF9pbml0KCZpb3F1ZXVlLT5hY3RpdmVfbGlzdCk7CisKKyAgICByZXNjYW5fZmRzZXQoaW9xdWV1ZSk7CisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisgICAgLyogV2hlbiBzYWZlIHVucmVnaXN0cmF0aW9uIGlzIHVzZWQgKHRoZSBkZWZhdWx0KSwgd2UgcHJlLWNyZWF0ZQorICAgICAqIGFsbCBrZXlzIGFuZCBwdXQgdGhlbSBpbiB0aGUgZnJlZSBsaXN0LgorICAgICAqLworCisgICAgLyogTXV0ZXggdG8gcHJvdGVjdCBrZXkncyByZWZlcmVuY2UgY291bnRlciAKKyAgICAgKiBXZSBkb24ndCB3YW50IHRvIHVzZSBrZXkncyBtdXRleCBvciBpb3F1ZXVlJ3MgbXV0ZXggYmVjYXVzZQorICAgICAqIHRoYXQgd291bGQgY3JlYXRlIGRlYWRsb2NrIHNpdHVhdGlvbiBpbiBzb21lIGNhc2VzLgorICAgICAqLworICAgIHJjID0gcGpfbXV0ZXhfY3JlYXRlX3NpbXBsZShwb29sLCBOVUxMLCAmaW9xdWV1ZS0+cmVmX2NudF9tdXRleCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHJjOworCisKKyAgICAvKiBJbml0IGtleSBsaXN0ICovCisgICAgcGpfbGlzdF9pbml0KCZpb3F1ZXVlLT5mcmVlX2xpc3QpOworICAgIHBqX2xpc3RfaW5pdCgmaW9xdWV1ZS0+Y2xvc2luZ19saXN0KTsKKworCisgICAgLyogUHJlLWNyZWF0ZSBhbGwga2V5cyBhY2NvcmRpbmcgdG8gbWF4X2ZkICovCisgICAgZm9yIChpPTA7IGk8bWF4X2ZkOyArK2kpIHsKKwlwal9pb3F1ZXVlX2tleV90ICprZXk7CisKKwlrZXkgPSBQSl9QT09MX0FMTE9DX1QocG9vbCwgcGpfaW9xdWV1ZV9rZXlfdCk7CisJa2V5LT5yZWZfY291bnQgPSAwOworCXJjID0gcGpfbG9ja19jcmVhdGVfcmVjdXJzaXZlX211dGV4KHBvb2wsIE5VTEwsICZrZXktPmxvY2spOworCWlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIGtleSA9IGlvcXVldWUtPmZyZWVfbGlzdC5uZXh0OworCSAgICB3aGlsZSAoa2V5ICE9ICZpb3F1ZXVlLT5mcmVlX2xpc3QpIHsKKwkJcGpfbG9ja19kZXN0cm95KGtleS0+bG9jayk7CisJCWtleSA9IGtleS0+bmV4dDsKKwkgICAgfQorCSAgICBwal9tdXRleF9kZXN0cm95KGlvcXVldWUtPnJlZl9jbnRfbXV0ZXgpOworCSAgICByZXR1cm4gcmM7CisJfQorCisJcGpfbGlzdF9wdXNoX2JhY2soJmlvcXVldWUtPmZyZWVfbGlzdCwga2V5KTsKKyAgICB9CisjZW5kaWYKKworICAgIC8qIENyZWF0ZSBhbmQgaW5pdCBpb3F1ZXVlIG11dGV4ICovCisgICAgcmMgPSBwal9sb2NrX2NyZWF0ZV9zaW1wbGVfbXV0ZXgocG9vbCwgImlvcSVwIiwgJmxvY2spOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiByYzsKKworICAgIHJjID0gcGpfaW9xdWV1ZV9zZXRfbG9jayhpb3F1ZXVlLCBsb2NrLCBQSl9UUlVFKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgUEpfTE9HKDQsICgicGpsaWIiLCAic2VsZWN0KCkgSS9PIFF1ZXVlIGNyZWF0ZWQgKCVwKSIsIGlvcXVldWUpKTsKKworICAgICpwX2lvcXVldWUgPSBpb3F1ZXVlOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfaW9xdWV1ZV9kZXN0cm95KCkKKyAqCisgKiBEZXN0cm95IGlvcXVldWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9kZXN0cm95KHBqX2lvcXVldWVfdCAqaW9xdWV1ZSkKK3sKKyAgICBwal9pb3F1ZXVlX2tleV90ICprZXk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGlvcXVldWUsIFBKX0VJTlZBTCk7CisKKyAgICBwal9sb2NrX2FjcXVpcmUoaW9xdWV1ZS0+bG9jayk7CisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisgICAgLyogRGVzdHJveSByZWZlcmVuY2UgY291bnRlcnMgKi8KKyAgICBrZXkgPSBpb3F1ZXVlLT5hY3RpdmVfbGlzdC5uZXh0OworICAgIHdoaWxlIChrZXkgIT0gJmlvcXVldWUtPmFjdGl2ZV9saXN0KSB7CisJcGpfbG9ja19kZXN0cm95KGtleS0+bG9jayk7CisJa2V5ID0ga2V5LT5uZXh0OworICAgIH0KKworICAgIGtleSA9IGlvcXVldWUtPmNsb3NpbmdfbGlzdC5uZXh0OworICAgIHdoaWxlIChrZXkgIT0gJmlvcXVldWUtPmNsb3NpbmdfbGlzdCkgeworCXBqX2xvY2tfZGVzdHJveShrZXktPmxvY2spOworCWtleSA9IGtleS0+bmV4dDsKKyAgICB9CisKKyAgICBrZXkgPSBpb3F1ZXVlLT5mcmVlX2xpc3QubmV4dDsKKyAgICB3aGlsZSAoa2V5ICE9ICZpb3F1ZXVlLT5mcmVlX2xpc3QpIHsKKwlwal9sb2NrX2Rlc3Ryb3koa2V5LT5sb2NrKTsKKwlrZXkgPSBrZXktPm5leHQ7CisgICAgfQorCisgICAgcGpfbXV0ZXhfZGVzdHJveShpb3F1ZXVlLT5yZWZfY250X211dGV4KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGlvcXVldWVfZGVzdHJveShpb3F1ZXVlKTsKK30KKworCisvKgorICogcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrKCkKKyAqCisgKiBSZWdpc3RlciBzb2NrZXQgaGFuZGxlIHRvIGlvcXVldWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrMihwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCQkJICAgICAgcGpfc29ja190IHNvY2ssCisJCQkJCSAgICAgIHBqX2dycF9sb2NrX3QgKmdycF9sb2NrLAorCQkJCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCisJCQkJCSAgICAgIGNvbnN0IHBqX2lvcXVldWVfY2FsbGJhY2sgKmNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfa2V5X3QgKipwX2tleSkKK3sKKyAgICBwal9pb3F1ZXVlX2tleV90ICprZXkgPSBOVUxMOworI2lmIGRlZmluZWQoUEpfV0lOMzIpICYmIFBKX1dJTjMyIT0wIHx8IFwKKyAgICBkZWZpbmVkKFBKX1dJTjY0KSAmJiBQSl9XSU42NCAhPSAwIHx8IFwKKyAgICBkZWZpbmVkKFBKX1dJTjMyX1dJTkNFKSAmJiBQSl9XSU4zMl9XSU5DRSE9MAorICAgIHVfbG9uZyB2YWx1ZTsKKyNlbHNlCisgICAgcGpfdWludDMyX3QgdmFsdWU7CisjZW5kaWYKKyAgICBwal9zdGF0dXNfdCByYyA9IFBKX1NVQ0NFU1M7CisgICAgCisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIGlvcXVldWUgJiYgc29jayAhPSBQSl9JTlZBTElEX1NPQ0tFVCAmJgorICAgICAgICAgICAgICAgICAgICAgY2IgJiYgcF9rZXksIFBKX0VJTlZBTCk7CisKKyAgICBwal9sb2NrX2FjcXVpcmUoaW9xdWV1ZS0+bG9jayk7CisKKyAgICBpZiAoaW9xdWV1ZS0+Y291bnQgPj0gaW9xdWV1ZS0+bWF4KSB7CisgICAgICAgIHJjID0gUEpfRVRPT01BTlk7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogSWYgc2FmZSB1bnJlZ2lzdHJhdGlvbiAoUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRykgaXMgdXNlZCwgZ2V0CisgICAgICogdGhlIGtleSBmcm9tIHRoZSBmcmVlIGxpc3QuIE90aGVyd2lzZSBhbGxvY2F0ZSBhIG5ldyBvbmUuIAorICAgICAqLworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKworICAgIC8qIFNjYW4gY2xvc2luZ19rZXlzIGZpcnN0IHRvIGxldCB0aGVtIGNvbWUgYmFjayB0byBmcmVlX2xpc3QgKi8KKyAgICBzY2FuX2Nsb3Npbmdfa2V5cyhpb3F1ZXVlKTsKKworICAgIHBqX2Fzc2VydCghcGpfbGlzdF9lbXB0eSgmaW9xdWV1ZS0+ZnJlZV9saXN0KSk7CisgICAgaWYgKHBqX2xpc3RfZW1wdHkoJmlvcXVldWUtPmZyZWVfbGlzdCkpIHsKKwlyYyA9IFBKX0VUT09NQU5ZOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIGtleSA9IGlvcXVldWUtPmZyZWVfbGlzdC5uZXh0OworICAgIHBqX2xpc3RfZXJhc2Uoa2V5KTsKKyNlbHNlCisgICAga2V5ID0gKHBqX2lvcXVldWVfa2V5X3QqKXBqX3Bvb2xfemFsbG9jKHBvb2wsIHNpemVvZihwal9pb3F1ZXVlX2tleV90KSk7CisjZW5kaWYKKworICAgIHJjID0gaW9xdWV1ZV9pbml0X2tleShwb29sLCBpb3F1ZXVlLCBrZXksIHNvY2ssIGdycF9sb2NrLCB1c2VyX2RhdGEsIGNiKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWtleSA9IE5VTEw7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogU2V0IHNvY2tldCB0byBub25ibG9ja2luZy4gKi8KKyAgICB2YWx1ZSA9IDE7CisjaWYgZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIhPTAgfHwgXAorICAgIGRlZmluZWQoUEpfV0lONjQpICYmIFBKX1dJTjY0ICE9IDAgfHwgXAorICAgIGRlZmluZWQoUEpfV0lOMzJfV0lOQ0UpICYmIFBKX1dJTjMyX1dJTkNFIT0wCisgICAgaWYgKGlvY3Rsc29ja2V0KHNvY2ssIEZJT05CSU8sICZ2YWx1ZSkpIHsKKyNlbHNlCisgICAgaWYgKGlvY3RsKHNvY2ssIEZJT05CSU8sICZ2YWx1ZSkpIHsKKyNlbmRpZgorICAgICAgICByYyA9IHBqX2dldF9uZXRvc19lcnJvcigpOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworCisgICAgLyogUHV0IGluIGFjdGl2ZSBsaXN0LiAqLworICAgIHBqX2xpc3RfaW5zZXJ0X2JlZm9yZSgmaW9xdWV1ZS0+YWN0aXZlX2xpc3QsIGtleSk7CisgICAgKytpb3F1ZXVlLT5jb3VudDsKKworICAgIC8qIFJlc2NhbiBmZHNldCB0byBnZXQgbWF4IGRlc2NyaXB0b3IgKi8KKyAgICByZXNjYW5fZmRzZXQoaW9xdWV1ZSk7CisKK29uX3JldHVybjoKKyAgICAvKiBPbiBlcnJvciwgc29ja2V0IG1heSBiZSBsZWZ0IGluIG5vbi1ibG9ja2luZyBtb2RlLiAqLworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJaWYgKGtleSAmJiBrZXktPmdycF9sb2NrKQorCSAgICBwal9ncnBfbG9ja19kZWNfcmVmX2RiZyhrZXktPmdycF9sb2NrLCAiaW9xdWV1ZSIsIDApOworICAgIH0KKyAgICAqcF9rZXkgPSBrZXk7CisgICAgcGpfbG9ja19yZWxlYXNlKGlvcXVldWUtPmxvY2spOworICAgIAorICAgIHJldHVybiByYzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2soIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICAgcGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorCQkJCQkgICAgICBwal9zb2NrX3Qgc29jaywKKwkJCQkJICAgICAgdm9pZCAqdXNlcl9kYXRhLAorCQkJCQkgICAgICBjb25zdCBwal9pb3F1ZXVlX2NhbGxiYWNrICpjYiwKKwkJCQkJICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqKnBfa2V5KQoreworICAgIHJldHVybiBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2syKHBvb2wsIGlvcXVldWUsIHNvY2ssIE5VTEwsIHVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYiwgcF9rZXkpOworfQorCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworLyogSW5jcmVtZW50IGtleSdzIHJlZmVyZW5jZSBjb3VudGVyICovCitzdGF0aWMgdm9pZCBpbmNyZW1lbnRfY291bnRlcihwal9pb3F1ZXVlX2tleV90ICprZXkpCit7CisgICAgcGpfbXV0ZXhfbG9jayhrZXktPmlvcXVldWUtPnJlZl9jbnRfbXV0ZXgpOworICAgICsra2V5LT5yZWZfY291bnQ7CisgICAgcGpfbXV0ZXhfdW5sb2NrKGtleS0+aW9xdWV1ZS0+cmVmX2NudF9tdXRleCk7Cit9CisKKy8qIERlY3JlbWVudCB0aGUga2V5J3MgcmVmZXJlbmNlIGNvdW50ZXIsIGFuZCB3aGVuIHRoZSBjb3VudGVyIHJlYWNoIHplcm8sCisgKiBkZXN0cm95IHRoZSBrZXkuCisgKgorICogTm90ZTogTVVTVCBOT1QgQ0FMTCBUSElTIEZVTkNUSU9OIFdISUxFIEhPTERJTkcgaW9xdWV1ZSdzIExPQ0suCisgKi8KK3N0YXRpYyB2b2lkIGRlY3JlbWVudF9jb3VudGVyKHBqX2lvcXVldWVfa2V5X3QgKmtleSkKK3sKKyAgICBwal9sb2NrX2FjcXVpcmUoa2V5LT5pb3F1ZXVlLT5sb2NrKTsKKyAgICBwal9tdXRleF9sb2NrKGtleS0+aW9xdWV1ZS0+cmVmX2NudF9tdXRleCk7CisgICAgLS1rZXktPnJlZl9jb3VudDsKKyAgICBpZiAoa2V5LT5yZWZfY291bnQgPT0gMCkgeworCisJcGpfYXNzZXJ0KGtleS0+Y2xvc2luZyA9PSAxKTsKKwlwal9nZXR0aWNrY291bnQoJmtleS0+ZnJlZV90aW1lKTsKKwlrZXktPmZyZWVfdGltZS5tc2VjICs9IFBKX0lPUVVFVUVfS0VZX0ZSRUVfREVMQVk7CisJcGpfdGltZV92YWxfbm9ybWFsaXplKCZrZXktPmZyZWVfdGltZSk7CisKKwlwal9saXN0X2VyYXNlKGtleSk7CisJcGpfbGlzdF9wdXNoX2JhY2soJmtleS0+aW9xdWV1ZS0+Y2xvc2luZ19saXN0LCBrZXkpOworCS8qIFJlc2NhbiBmZHNldCB0byBnZXQgbWF4IGRlc2NyaXB0b3IgKi8KKwlyZXNjYW5fZmRzZXQoa2V5LT5pb3F1ZXVlKTsKKyAgICB9CisgICAgcGpfbXV0ZXhfdW5sb2NrKGtleS0+aW9xdWV1ZS0+cmVmX2NudF9tdXRleCk7CisgICAgcGpfbG9ja19yZWxlYXNlKGtleS0+aW9xdWV1ZS0+bG9jayk7Cit9CisjZW5kaWYKKworCisvKgorICogcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKCkKKyAqCisgKiBVbnJlZ2lzdGVyIGhhbmRsZSBmcm9tIGlvcXVldWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKCBwal9pb3F1ZXVlX2tleV90ICprZXkpCit7CisgICAgcGpfaW9xdWV1ZV90ICppb3F1ZXVlOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXksIFBKX0VJTlZBTCk7CisKKyAgICBpb3F1ZXVlID0ga2V5LT5pb3F1ZXVlOworCisgICAgLyogTG9jayB0aGUga2V5IHRvIG1ha2Ugc3VyZSBubyBjYWxsYmFjayBpcyBzaW11bHRhbmVvdXNseSBtb2RpZnlpbmcKKyAgICAgKiB0aGUga2V5LiBXZSBuZWVkIHRvIGxvY2sgdGhlIGtleSBiZWZvcmUgaW9xdWV1ZSBoZXJlIHRvIHByZXZlbnQKKyAgICAgKiBkZWFkbG9jay4KKyAgICAgKi8KKyAgICBwal9pb3F1ZXVlX2xvY2tfa2V5KGtleSk7CisKKyAgICAvKiBBbHNvIGxvY2sgaW9xdWV1ZSAqLworICAgIHBqX2xvY2tfYWNxdWlyZShpb3F1ZXVlLT5sb2NrKTsKKworICAgIHBqX2Fzc2VydChpb3F1ZXVlLT5jb3VudCA+IDApOworICAgIC0taW9xdWV1ZS0+Y291bnQ7CisjaWYgIVBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyAgICAvKiBUaWNrZXQgIzUyMCwga2V5IHdpbGwgYmUgZXJhc2VkIG1vcmUgdGhhbiBvbmNlICovCisgICAgcGpfbGlzdF9lcmFzZShrZXkpOworI2VuZGlmCisgICAgUEpfRkRfQ0xSKGtleS0+ZmQsICZpb3F1ZXVlLT5yZmRzZXQpOworICAgIFBKX0ZEX0NMUihrZXktPmZkLCAmaW9xdWV1ZS0+d2Zkc2V0KTsKKyNpZiBQSl9IQVNfVENQCisgICAgUEpfRkRfQ0xSKGtleS0+ZmQsICZpb3F1ZXVlLT54ZmRzZXQpOworI2VuZGlmCisKKyAgICAvKiBDbG9zZSBzb2NrZXQuICovCisgICAgcGpfc29ja19jbG9zZShrZXktPmZkKTsKKworICAgIC8qIENsZWFyIGNhbGxiYWNrICovCisgICAga2V5LT5jYi5vbl9hY2NlcHRfY29tcGxldGUgPSBOVUxMOworICAgIGtleS0+Y2Iub25fY29ubmVjdF9jb21wbGV0ZSA9IE5VTEw7CisgICAga2V5LT5jYi5vbl9yZWFkX2NvbXBsZXRlID0gTlVMTDsKKyAgICBrZXktPmNiLm9uX3dyaXRlX2NvbXBsZXRlID0gTlVMTDsKKworICAgIC8qIE11c3QgcmVsZWFzZSBpb3F1ZXVlIGxvY2sgZmlyc3QgYmVmb3JlIGRlY3JlbWVudGluZyBjb3VudGVyLCB0bworICAgICAqIHByZXZlbnQgZGVhZGxvY2suCisgICAgICovCisgICAgcGpfbG9ja19yZWxlYXNlKGlvcXVldWUtPmxvY2spOworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIC8qIE1hcmsga2V5IGlzIGNsb3NpbmcuICovCisgICAga2V5LT5jbG9zaW5nID0gMTsKKworICAgIC8qIERlY3JlbWVudCBjb3VudGVyLiAqLworICAgIGRlY3JlbWVudF9jb3VudGVyKGtleSk7CisKKyAgICAvKiBEb25lLiAqLworICAgIGlmIChrZXktPmdycF9sb2NrKSB7CisJLyoganVzdCBkZWNfcmVmIGFuZCB1bmxvY2suIHdlIHdpbGwgc2V0IGdycF9sb2NrIHRvIE5VTEwKKwkgKiBlbHNld2hlcmUgKi8KKwlwal9ncnBfbG9ja190ICpncnBfbG9jayA9IGtleS0+Z3JwX2xvY2s7CisJLy8gRG9uJ3Qgc2V0IGdycF9sb2NrIHRvIE5VTEwgb3RoZXJ3aXNlIHRoZSBvdGhlciB0aHJlYWQKKwkvLyB3aWxsIGNyYXNoLiBKdXN0IGxlYXZlIGl0IGFzIGRhbmdsaW5nIHBvaW50ZXIsIGJ1dCB0aGlzCisJLy8gc2hvdWxkIGJlIHNhZmUKKwkvL2tleS0+Z3JwX2xvY2sgPSBOVUxMOworCXBqX2dycF9sb2NrX2RlY19yZWZfZGJnKGdycF9sb2NrLCAiaW9xdWV1ZSIsIDApOworCXBqX2dycF9sb2NrX3JlbGVhc2UoZ3JwX2xvY2spOworICAgIH0gZWxzZSB7CisJcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisgICAgfQorI2Vsc2UKKyAgICBpZiAoa2V5LT5ncnBfbG9jaykgeworCS8qIHNldCBncnBfbG9jayB0byBOVUxMIGFuZCB1bmxvY2sgKi8KKwlwal9ncnBfbG9ja190ICpncnBfbG9jayA9IGtleS0+Z3JwX2xvY2s7CisJLy8gRG9uJ3Qgc2V0IGdycF9sb2NrIHRvIE5VTEwgb3RoZXJ3aXNlIHRoZSBvdGhlciB0aHJlYWQKKwkvLyB3aWxsIGNyYXNoLiBKdXN0IGxlYXZlIGl0IGFzIGRhbmdsaW5nIHBvaW50ZXIsIGJ1dCB0aGlzCisJLy8gc2hvdWxkIGJlIHNhZmUKKwkvL2tleS0+Z3JwX2xvY2sgPSBOVUxMOworCXBqX2dycF9sb2NrX2RlY19yZWZfZGJnKGdycF9sb2NrLCAiaW9xdWV1ZSIsIDApOworCXBqX2dycF9sb2NrX3JlbGVhc2UoZ3JwX2xvY2spOworICAgIH0gZWxzZSB7CisJcGpfaW9xdWV1ZV91bmxvY2tfa2V5KGtleSk7CisgICAgfQorCisgICAgcGpfbG9ja19kZXN0cm95KGtleS0+bG9jayk7CisjZW5kaWYKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qIFRoaXMgc3VwcG9zZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgZmRfc2V0IHZhbHVlcyBhcmUgY29uc2lzdGVudAorICogd2l0aCB0aGUgb3BlcmF0aW9uIGN1cnJlbnRseSBzZXQgaW4gZWFjaCBrZXkuCisgKi8KKyNpZiBWQUxJREFURV9GRF9TRVQKK3N0YXRpYyB2b2lkIHZhbGlkYXRlX3NldHMoY29uc3QgcGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorCQkJICBjb25zdCBwal9mZF9zZXRfdCAqcmZkc2V0LAorCQkJICBjb25zdCBwal9mZF9zZXRfdCAqd2Zkc2V0LAorCQkJICBjb25zdCBwal9mZF9zZXRfdCAqeGZkc2V0KQoreworICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleTsKKworICAgIC8qCisgICAgICogVGhpcyBiYXNpY2x5IHdvdWxkIG5vdCB3b3JrIGFueW1vcmUuCisgICAgICogV2UgbmVlZCB0byBsb2NrIGtleSBiZWZvcmUgcGVyZm9ybWluZyB0aGUgY2hlY2ssIGJ1dCB3ZSBjYW4ndCBkbworICAgICAqIHNvIGJlY2F1c2Ugd2UncmUgaG9sZGluZyBpb3F1ZXVlIG11dGV4LiBJZiB3ZSBhY3F1aXJlIGtleSdzIG11dGV4CisgICAgICogbm93LCB0aGUgd2lsbCBjYXVzZSBkZWFkbG9jay4KKyAgICAgKi8KKyAgICBwal9hc3NlcnQoMCk7CisKKyAgICBrZXkgPSBpb3F1ZXVlLT5hY3RpdmVfbGlzdC5uZXh0OworICAgIHdoaWxlIChrZXkgIT0gJmlvcXVldWUtPmFjdGl2ZV9saXN0KSB7CisJaWYgKCFwal9saXN0X2VtcHR5KCZrZXktPnJlYWRfbGlzdCkKKyNpZiBkZWZpbmVkKFBKX0hBU19UQ1ApICYmIFBKX0hBU19UQ1AgIT0gMAorCSAgICB8fCAhcGpfbGlzdF9lbXB0eSgma2V5LT5hY2NlcHRfbGlzdCkKKyNlbmRpZgorCSAgICApIAorCXsKKwkgICAgcGpfYXNzZXJ0KFBKX0ZEX0lTU0VUKGtleS0+ZmQsIHJmZHNldCkpOworCX0gCisJZWxzZSB7CisJICAgIHBqX2Fzc2VydChQSl9GRF9JU1NFVChrZXktPmZkLCByZmRzZXQpID09IDApOworCX0KKwlpZiAoIXBqX2xpc3RfZW1wdHkoJmtleS0+d3JpdGVfbGlzdCkKKyNpZiBkZWZpbmVkKFBKX0hBU19UQ1ApICYmIFBKX0hBU19UQ1AgIT0gMAorCSAgICB8fCBrZXktPmNvbm5lY3RpbmcKKyNlbmRpZgorCSAgICkKKwl7CisJICAgIHBqX2Fzc2VydChQSl9GRF9JU1NFVChrZXktPmZkLCB3ZmRzZXQpKTsKKwl9CisJZWxzZSB7CisJICAgIHBqX2Fzc2VydChQSl9GRF9JU1NFVChrZXktPmZkLCB3ZmRzZXQpID09IDApOworCX0KKyNpZiBkZWZpbmVkKFBKX0hBU19UQ1ApICYmIFBKX0hBU19UQ1AgIT0gMAorCWlmIChrZXktPmNvbm5lY3RpbmcpCisJeworCSAgICBwal9hc3NlcnQoUEpfRkRfSVNTRVQoa2V5LT5mZCwgeGZkc2V0KSk7CisJfQorCWVsc2UgeworCSAgICBwal9hc3NlcnQoUEpfRkRfSVNTRVQoa2V5LT5mZCwgeGZkc2V0KSA9PSAwKTsKKwl9CisjZW5kaWYgLyogUEpfSEFTX1RDUCAqLworCisJa2V5ID0ga2V5LT5uZXh0OworICAgIH0KK30KKyNlbmRpZgkvKiBWQUxJREFURV9GRF9TRVQgKi8KKworCisvKiBpb3F1ZXVlX3JlbW92ZV9mcm9tX3NldCgpCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGlvcXVldWVfZGlzcGF0Y2hfZXZlbnQoKSB0byBpbnN0cnVjdAorICogdGhlIGlvcXVldWUgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgZGVzY3JpcHRvciBmcm9tIGlvcXVldWUncyBkZXNjcmlwdG9yCisgKiBzZXQgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuCisgKi8KK3N0YXRpYyB2b2lkIGlvcXVldWVfcmVtb3ZlX2Zyb21fc2V0KCBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGlvcXVldWVfZXZlbnRfdHlwZSBldmVudF90eXBlKQoreworICAgIHBqX2xvY2tfYWNxdWlyZShpb3F1ZXVlLT5sb2NrKTsKKworICAgIGlmIChldmVudF90eXBlID09IFJFQURBQkxFX0VWRU5UKQorICAgICAgICBQSl9GRF9DTFIoKHBqX3NvY2tfdClrZXktPmZkLCAmaW9xdWV1ZS0+cmZkc2V0KTsKKyAgICBlbHNlIGlmIChldmVudF90eXBlID09IFdSSVRFQUJMRV9FVkVOVCkKKyAgICAgICAgUEpfRkRfQ0xSKChwal9zb2NrX3Qpa2V5LT5mZCwgJmlvcXVldWUtPndmZHNldCk7CisjaWYgZGVmaW5lZChQSl9IQVNfVENQKSAmJiBQSl9IQVNfVENQIT0wCisgICAgZWxzZSBpZiAoZXZlbnRfdHlwZSA9PSBFWENFUFRJT05fRVZFTlQpCisgICAgICAgIFBKX0ZEX0NMUigocGpfc29ja190KWtleS0+ZmQsICZpb3F1ZXVlLT54ZmRzZXQpOworI2VuZGlmCisgICAgZWxzZQorICAgICAgICBwal9hc3NlcnQoMCk7CisKKyAgICBwal9sb2NrX3JlbGVhc2UoaW9xdWV1ZS0+bG9jayk7Cit9CisKKy8qCisgKiBpb3F1ZXVlX2FkZF90b19zZXQoKQorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBwal9pb3F1ZXVlX3JlY3YoKSwgcGpfaW9xdWV1ZV9zZW5kKCkgZXRjCisgKiB0byBpbnN0cnVjdCB0aGUgaW9xdWV1ZSB0byBhZGQgdGhlIHNwZWNpZmllZCBoYW5kbGUgdG8gaW9xdWV1ZSdzIGRlc2NyaXB0b3IKKyAqIHNldCBmb3IgdGhlIHNwZWNpZmllZCBldmVudC4KKyAqLworc3RhdGljIHZvaWQgaW9xdWV1ZV9hZGRfdG9fc2V0KCBwal9pb3F1ZXVlX3QgKmlvcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpb3F1ZXVlX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSApCit7CisgICAgcGpfbG9ja19hY3F1aXJlKGlvcXVldWUtPmxvY2spOworCisgICAgaWYgKGV2ZW50X3R5cGUgPT0gUkVBREFCTEVfRVZFTlQpCisgICAgICAgIFBKX0ZEX1NFVCgocGpfc29ja190KWtleS0+ZmQsICZpb3F1ZXVlLT5yZmRzZXQpOworICAgIGVsc2UgaWYgKGV2ZW50X3R5cGUgPT0gV1JJVEVBQkxFX0VWRU5UKQorICAgICAgICBQSl9GRF9TRVQoKHBqX3NvY2tfdClrZXktPmZkLCAmaW9xdWV1ZS0+d2Zkc2V0KTsKKyNpZiBkZWZpbmVkKFBKX0hBU19UQ1ApICYmIFBKX0hBU19UQ1AhPTAKKyAgICBlbHNlIGlmIChldmVudF90eXBlID09IEVYQ0VQVElPTl9FVkVOVCkKKyAgICAgICAgUEpfRkRfU0VUKChwal9zb2NrX3Qpa2V5LT5mZCwgJmlvcXVldWUtPnhmZHNldCk7CisjZW5kaWYKKyAgICBlbHNlCisgICAgICAgIHBqX2Fzc2VydCgwKTsKKworICAgIHBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKK30KKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKy8qIFNjYW4gY2xvc2luZyBrZXlzIHRvIGJlIHB1dCB0byBmcmVlIGxpc3QgYWdhaW4gKi8KK3N0YXRpYyB2b2lkIHNjYW5fY2xvc2luZ19rZXlzKHBqX2lvcXVldWVfdCAqaW9xdWV1ZSkKK3sKKyAgICBwal90aW1lX3ZhbCBub3c7CisgICAgcGpfaW9xdWV1ZV9rZXlfdCAqaDsKKworICAgIHBqX2dldHRpY2tjb3VudCgmbm93KTsKKyAgICBoID0gaW9xdWV1ZS0+Y2xvc2luZ19saXN0Lm5leHQ7CisgICAgd2hpbGUgKGggIT0gJmlvcXVldWUtPmNsb3NpbmdfbGlzdCkgeworCXBqX2lvcXVldWVfa2V5X3QgKm5leHQgPSBoLT5uZXh0OworCisJcGpfYXNzZXJ0KGgtPmNsb3NpbmcgIT0gMCk7CisKKwlpZiAoUEpfVElNRV9WQUxfR1RFKG5vdywgaC0+ZnJlZV90aW1lKSkgeworCSAgICBwal9saXN0X2VyYXNlKGgpOworCSAgICAvLyBEb24ndCBzZXQgZ3JwX2xvY2sgdG8gTlVMTCBvdGhlcndpc2UgdGhlIG90aGVyIHRocmVhZAorCSAgICAvLyB3aWxsIGNyYXNoLiBKdXN0IGxlYXZlIGl0IGFzIGRhbmdsaW5nIHBvaW50ZXIsIGJ1dCB0aGlzCisJICAgIC8vIHNob3VsZCBiZSBzYWZlCisJICAgIC8vaC0+Z3JwX2xvY2sgPSBOVUxMOworCSAgICBwal9saXN0X3B1c2hfYmFjaygmaW9xdWV1ZS0+ZnJlZV9saXN0LCBoKTsKKwl9CisJaCA9IG5leHQ7CisgICAgfQorfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQpICYmIFwKKyAgICBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIT0wCitzdGF0aWMgcGpfc3RhdHVzX3QgcmVwbGFjZV91ZHBfc29jayhwal9pb3F1ZXVlX2tleV90ICpoKQoreworICAgIGVudW0gZmxhZ3MgeworCUhBU19QRUVSX0FERFIgPSAxLAorCUhBU19RT1MgPSAyCisgICAgfTsKKyAgICBwal9zb2NrX3Qgb2xkX3NvY2ssIG5ld19zb2NrID0gUEpfSU5WQUxJRF9TT0NLRVQ7CisgICAgcGpfc29ja2FkZHIgbG9jYWxfYWRkciwgcmVtX2FkZHI7CisgICAgaW50IHZhbCwgYWRkcl9sZW47CisgICAgcGpfZmRfc2V0X3QgKmZkc1szXTsKKyAgICB1bnNpZ25lZCBpLCBmZHNfY250LCBmbGFncz0wOworICAgIHBqX3Fvc19wYXJhbXMgcW9zX3BhcmFtczsKKyAgICB1bnNpZ25lZCBtc2VjOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIHBqX2xvY2tfYWNxdWlyZShoLT5pb3F1ZXVlLT5sb2NrKTsKKworICAgIG9sZF9zb2NrID0gaC0+ZmQ7CisKKyAgICAvKiBDYW4gb25seSByZXBsYWNlIFVEUCBzb2NrZXQgKi8KKyAgICBwal9hc3NlcnQoaC0+ZmRfdHlwZSA9PSBwal9TT0NLX0RHUkFNKCkpOworCisgICAgUEpfTE9HKDQsKFRISVNfRklMRSwgIkF0dGVtcHRpbmcgdG8gcmVwbGFjZSBVRFAgc29ja2V0ICVkIiwgb2xkX3NvY2spKTsKKworICAgIC8qIEludmVzdGlnYXRlIHRoZSBvbGQgc29ja2V0ICovCisgICAgYWRkcl9sZW4gPSBzaXplb2YobG9jYWxfYWRkcik7CisgICAgc3RhdHVzID0gcGpfc29ja19nZXRzb2NrbmFtZShvbGRfc29jaywgJmxvY2FsX2FkZHIsICZhZGRyX2xlbik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fZXJyb3I7CisgICAgCisgICAgYWRkcl9sZW4gPSBzaXplb2YocmVtX2FkZHIpOworICAgIHN0YXR1cyA9IHBqX3NvY2tfZ2V0cGVlcm5hbWUob2xkX3NvY2ssICZyZW1fYWRkciwgJmFkZHJfbGVuKTsKKyAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisJZmxhZ3MgfD0gSEFTX1BFRVJfQUREUjsKKworICAgIHN0YXR1cyA9IHBqX3NvY2tfZ2V0X3Fvc19wYXJhbXMob2xkX3NvY2ssICZxb3NfcGFyYW1zKTsKKyAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisJZmxhZ3MgfD0gSEFTX1FPUzsKKworICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUgb2xkIHNvY2tldCwgY2xvc2UgaXQgb3RoZXJ3aXNlIHdlJ2xsIGdldAorICAgICAqIGVycm9yIGluIGJpbmQoKQorICAgICAqLworICAgIHBqX3NvY2tfY2xvc2Uob2xkX3NvY2spOworCisgICAgLyogUHJlcGFyZSB0aGUgbmV3IHNvY2tldCAqLworICAgIHN0YXR1cyA9IHBqX3NvY2tfc29ja2V0KGxvY2FsX2FkZHIuYWRkci5zYV9mYW1pbHksIFBKX1NPQ0tfREdSQU0sIDAsCisJCQkgICAgJm5ld19zb2NrKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJZ290byBvbl9lcnJvcjsKKworICAgIC8qIEV2ZW4gYWZ0ZXIgdGhlIHNvY2tldCBpcyBjbG9zZWQsIHdlJ2xsIHN0aWxsIGdldCAiQWRkcmVzcyBpbiB1c2UiCisgICAgICogZXJyb3JzLCBzbyBmb3JjZSBpdCB3aXRoIFNPX1JFVVNFQUREUgorICAgICAqLworICAgIHZhbCA9IDE7CisgICAgc3RhdHVzID0gcGpfc29ja19zZXRzb2Nrb3B0KG5ld19zb2NrLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsCisJCQkJJnZhbCwgc2l6ZW9mKHZhbCkpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlnb3RvIG9uX2Vycm9yOworCisgICAgLyogVGhlIGxvb3AgaXMgc2lsbHksIGJ1dCB3aGF0IGVsc2UgY2FuIHdlIGRvPyAqLworICAgIGFkZHJfbGVuID0gcGpfc29ja2FkZHJfZ2V0X2xlbigmbG9jYWxfYWRkcik7CisgICAgZm9yIChtc2VjPTIwOyA7IG1zZWM8MTAwMD8gbXNlYz1tc2VjKjIgOiAxMDAwKSB7CisJc3RhdHVzID0gcGpfc29ja19iaW5kKG5ld19zb2NrLCAmbG9jYWxfYWRkciwgYWRkcl9sZW4pOworCWlmIChzdGF0dXMgIT0gUEpfU1RBVFVTX0ZST01fT1MoRUFERFJJTlVTRSkpCisJICAgIGJyZWFrOworCVBKX0xPRyg0LChUSElTX0ZJTEUsICJBZGRyZXNzIGlzIHN0aWxsIGluIHVzZSwgcmV0cnlpbmcuLiIpKTsKKwlwal90aHJlYWRfc2xlZXAobXNlYyk7CisgICAgfQorCisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fZXJyb3I7CisKKyAgICBpZiAoZmxhZ3MgJiBIQVNfUU9TKSB7CisJc3RhdHVzID0gcGpfc29ja19zZXRfcW9zX3BhcmFtcyhuZXdfc29jaywgJnFvc19wYXJhbXMpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwkgICAgZ290byBvbl9lcnJvcjsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MgJiBIQVNfUEVFUl9BRERSKSB7CisJc3RhdHVzID0gcGpfc29ja19jb25uZWN0KG5ld19zb2NrLCAmcmVtX2FkZHIsIGFkZHJfbGVuKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJICAgIGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLyogU2V0IHNvY2tldCB0byBub25ibG9ja2luZy4gKi8KKyAgICB2YWwgPSAxOworI2lmIGRlZmluZWQoUEpfV0lOMzIpICYmIFBKX1dJTjMyIT0wIHx8IFwKKyAgICBkZWZpbmVkKFBKX1dJTjY0KSAmJiBQSl9XSU42NCAhPSAwIHx8IFwKKyAgICBkZWZpbmVkKFBKX1dJTjMyX1dJTkNFKSAmJiBQSl9XSU4zMl9XSU5DRSE9MAorICAgIGlmIChpb2N0bHNvY2tldChuZXdfc29jaywgRklPTkJJTywgJnZhbCkpIHsKKyNlbHNlCisgICAgaWYgKGlvY3RsKG5ld19zb2NrLCBGSU9OQklPLCAmdmFsKSkgeworI2VuZGlmCisgICAgICAgIHN0YXR1cyA9IHBqX2dldF9uZXRvc19lcnJvcigpOworCWdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLyogUmVwbGFjZSB0aGUgb2NjdXJyZW5jZSBvZiBvbGQgc29ja2V0IHdpdGggbmV3IHNvY2tldCBpbiB0aGUKKyAgICAgKiBmZCBzZXRzLgorICAgICAqLworICAgIGZkc19jbnQgPSAwOworICAgIGZkc1tmZHNfY250KytdID0gJmgtPmlvcXVldWUtPnJmZHNldDsKKyAgICBmZHNbZmRzX2NudCsrXSA9ICZoLT5pb3F1ZXVlLT53ZmRzZXQ7CisjaWYgUEpfSEFTX1RDUAorICAgIGZkc1tmZHNfY250KytdID0gJmgtPmlvcXVldWUtPnhmZHNldDsKKyNlbmRpZgorCisgICAgZm9yIChpPTA7IGk8ZmRzX2NudDsgKytpKSB7CisJaWYgKFBKX0ZEX0lTU0VUKG9sZF9zb2NrLCBmZHNbaV0pKSB7CisJICAgIFBKX0ZEX0NMUihvbGRfc29jaywgZmRzW2ldKTsKKwkgICAgUEpfRkRfU0VUKG5ld19zb2NrLCBmZHNbaV0pOworCX0KKyAgICB9CisKKyAgICAvKiBBbmQgZmluYWxseSByZXBsYWNlIHRoZSBmZCBpbiB0aGUga2V5ICovCisgICAgaC0+ZmQgPSBuZXdfc29jazsKKworICAgIFBKX0xPRyg0LChUSElTX0ZJTEUsICJVRFAgaGFzIGJlZW4gcmVwbGFjZWQgc3VjY2Vzc2Z1bGx5ISIpKTsKKworICAgIHBqX2xvY2tfcmVsZWFzZShoLT5pb3F1ZXVlLT5sb2NrKTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworCitvbl9lcnJvcjoKKyAgICBpZiAobmV3X3NvY2sgIT0gUEpfSU5WQUxJRF9TT0NLRVQpCisJcGpfc29ja19jbG9zZShuZXdfc29jayk7CisgICAgUEpfUEVSUk9SKDEsKFRISVNfRklMRSwgc3RhdHVzLCAiRXJyb3IgcmVwbGFjaW5nIHNvY2tldCIpKTsKKyAgICBwal9sb2NrX3JlbGVhc2UoaC0+aW9xdWV1ZS0+bG9jayk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKyNlbmRpZgorCisKKy8qCisgKiBwal9pb3F1ZXVlX3BvbGwoKQorICoKKyAqIEZldyB0aGluZ3Mgd29ydGggd3JpdHRlbjoKKyAqCisgKiAgLSB3ZSB1c2VkIHRvIGRvIG9ubHkgb25lIGNhbGxiYWNrIGNhbGxlZCBwZXIgcG9sbCwgYnV0IGl0IGRpZG4ndCBnbworICogICAgdmVyeSB3ZWxsLiBUaGUgcmVhc29uIGlzIGJlY2F1c2Ugb24gc29tZSBzaXR1YXRpb24sIHRoZSB3cml0ZSAKKyAqICAgIGNhbGxiYWNrIGdldHMgY2FsbGVkIGFsbCB0aGUgdGltZSwgdGh1cyBkb2Vzbid0IGdpdmUgdGhlIHJlYWQKKyAqICAgIGNhbGxiYWNrIHRvIGdldCBjYWxsZWQuIFRoaXMgaGFwcGVucywgZm9yIGV4YW1wbGUsIHdoZW4gdXNlcgorICogICAgc3VibWl0IHdyaXRlIG9wZXJhdGlvbiBpbnNpZGUgdGhlIHdyaXRlIGNhbGxiYWNrLgorICogICAgQXMgdGhlIHJlc3VsdCwgd2UgY2hhbmdlZCB0aGUgYmVoYXZpb3VyIHNvIHRoYXQgbm93IG11bHRpcGxlCisgKiAgICBjYWxsYmFja3MgYXJlIGNhbGxlZCBpbiBhIHNpbmdsZSBwb2xsLiBJdCBzaG91bGQgYmUgZmFzdCB0b28sCisgKiAgICBqdXN0IHRoYXQgd2UgbmVlZCB0byBiZSBjYXJlZnVsbCB3aXRoIHRoZSBpb3F1ZXVlIGRhdGEgc3RydWN0cy4KKyAqCisgKiAgLSB0byBndWFyYW50ZWUgcHJlZW1wdGl2ZW5lc3MgZXRjLCB0aGUgcG9sbCBmdW5jdGlvbiBtdXN0IHN0cmljdGx5CisgKiAgICB3b3JrIG9uIGZkX3NldCBjb3B5IG9mIHRoZSBpb3F1ZXVlIChub3QgdGhlIG9yaWdpbmFsIG9uZSkuCisgKi8KK1BKX0RFRihpbnQpIHBqX2lvcXVldWVfcG9sbCggcGpfaW9xdWV1ZV90ICppb3F1ZXVlLCBjb25zdCBwal90aW1lX3ZhbCAqdGltZW91dCkKK3sKKyAgICBwal9mZF9zZXRfdCByZmRzZXQsIHdmZHNldCwgeGZkc2V0OworICAgIGludCBjb3VudCwgaSwgY291bnRlcjsKKyAgICBwal9pb3F1ZXVlX2tleV90ICpoOworICAgIHN0cnVjdCBldmVudAorICAgIHsKKyAgICAgICAgcGpfaW9xdWV1ZV9rZXlfdAkqa2V5OworICAgICAgICBlbnVtIGlvcXVldWVfZXZlbnRfdHlwZSAgZXZlbnRfdHlwZTsKKyAgICB9IGV2ZW50W1BKX0lPUVVFVUVfTUFYX0VWRU5UU19JTl9TSU5HTEVfUE9MTF07CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGlvcXVldWUsIC1QSl9FSU5WQUwpOworCisgICAgLyogTG9jayBpb3F1ZXVlIGJlZm9yZSBtYWtpbmcgZmRfc2V0IGNvcGllcyAqLworICAgIHBqX2xvY2tfYWNxdWlyZShpb3F1ZXVlLT5sb2NrKTsKKworICAgIC8qIFdlIHdpbGwgb25seSBkbyBzZWxlY3QoKSB3aGVuIHRoZXJlIGFyZSBzb2NrZXRzIHRvIGJlIHBvbGxlZC4KKyAgICAgKiBPdGhlcndpc2Ugc2VsZWN0KCkgd2lsbCByZXR1cm4gZXJyb3IuCisgICAgICovCisgICAgaWYgKFBKX0ZEX0NPVU5UKCZpb3F1ZXVlLT5yZmRzZXQpPT0wICYmCisgICAgICAgIFBKX0ZEX0NPVU5UKCZpb3F1ZXVlLT53ZmRzZXQpPT0wIAorI2lmIGRlZmluZWQoUEpfSEFTX1RDUCkgJiYgUEpfSEFTX1RDUCE9MAorICAgICAgICAmJiBQSl9GRF9DT1VOVCgmaW9xdWV1ZS0+eGZkc2V0KT09MAorI2VuZGlmCisJKQorICAgIHsKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisJc2Nhbl9jbG9zaW5nX2tleXMoaW9xdWV1ZSk7CisjZW5kaWYKKwlwal9sb2NrX3JlbGVhc2UoaW9xdWV1ZS0+bG9jayk7CisJVFJBQ0VfXygoVEhJU19GSUxFLCAiICAgICBwb2xsOiBubyBmZCBpcyBzZXQiKSk7CisgICAgICAgIGlmICh0aW1lb3V0KQorICAgICAgICAgICAgcGpfdGhyZWFkX3NsZWVwKFBKX1RJTUVfVkFMX01TRUMoKnRpbWVvdXQpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogQ29weSBpb3F1ZXVlJ3MgcGpfZmRfc2V0X3QgdG8gbG9jYWwgdmFyaWFibGVzLiAqLworICAgIHBqX21lbWNweSgmcmZkc2V0LCAmaW9xdWV1ZS0+cmZkc2V0LCBzaXplb2YocGpfZmRfc2V0X3QpKTsKKyAgICBwal9tZW1jcHkoJndmZHNldCwgJmlvcXVldWUtPndmZHNldCwgc2l6ZW9mKHBqX2ZkX3NldF90KSk7CisjaWYgUEpfSEFTX1RDUAorICAgIHBqX21lbWNweSgmeGZkc2V0LCAmaW9xdWV1ZS0+eGZkc2V0LCBzaXplb2YocGpfZmRfc2V0X3QpKTsKKyNlbHNlCisgICAgUEpfRkRfWkVSTygmeGZkc2V0KTsKKyNlbmRpZgorCisjaWYgVkFMSURBVEVfRkRfU0VUCisgICAgdmFsaWRhdGVfc2V0cyhpb3F1ZXVlLCAmcmZkc2V0LCAmd2Zkc2V0LCAmeGZkc2V0KTsKKyNlbmRpZgorCisgICAgLyogVW5sb2NrIGlvcXVldWUgYmVmb3JlIHNlbGVjdCgpLiAqLworICAgIHBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKKworICAgIGNvdW50ID0gcGpfc29ja19zZWxlY3QoaW9xdWV1ZS0+bmZkcysxLCAmcmZkc2V0LCAmd2Zkc2V0LCAmeGZkc2V0LCAKKwkJCSAgIHRpbWVvdXQpOworICAgIAorICAgIGlmIChjb3VudCA9PSAwKQorCXJldHVybiAwOworICAgIGVsc2UgaWYgKGNvdW50IDwgMCkKKwlyZXR1cm4gLXBqX2dldF9uZXRvc19lcnJvcigpOworICAgIGVsc2UgaWYgKGNvdW50ID4gUEpfSU9RVUVVRV9NQVhfRVZFTlRTX0lOX1NJTkdMRV9QT0xMKQorICAgICAgICBjb3VudCA9IFBKX0lPUVVFVUVfTUFYX0VWRU5UU19JTl9TSU5HTEVfUE9MTDsKKworICAgIC8qIFNjYW4gZGVzY3JpcHRvciBzZXRzIGZvciBldmVudCBhbmQgYWRkIHRoZSBldmVudHMgaW4gdGhlIGV2ZW50CisgICAgICogYXJyYXkgdG8gYmUgcHJvY2Vzc2VkIGxhdGVyIGluIHRoaXMgZnVuY3Rpb24uIFdlIGRvIHRoaXMgc28gdGhhdAorICAgICAqIGV2ZW50cyBjYW4gYmUgcHJvY2Vzc2VkIGluIHBhcmFsbGVsIHdpdGhvdXQgaG9sZGluZyBpb3F1ZXVlIGxvY2suCisgICAgICovCisgICAgcGpfbG9ja19hY3F1aXJlKGlvcXVldWUtPmxvY2spOworCisgICAgY291bnRlciA9IDA7CisKKyAgICAvKiBTY2FuIGZvciB3cml0YWJsZSBzb2NrZXRzIGZpcnN0IHRvIGhhbmRsZSBwaWdneS1iYWNrIGRhdGEKKyAgICAgKiBjb21pbmcgd2l0aCBhY2NlcHQoKS4KKyAgICAgKi8KKyAgICBoID0gaW9xdWV1ZS0+YWN0aXZlX2xpc3QubmV4dDsKKyAgICBmb3IgKCA7IGghPSZpb3F1ZXVlLT5hY3RpdmVfbGlzdCAmJiBjb3VudGVyPGNvdW50OyBoID0gaC0+bmV4dCkgeworCisJaWYgKCAoa2V5X2hhc19wZW5kaW5nX3dyaXRlKGgpIHx8IGtleV9oYXNfcGVuZGluZ19jb25uZWN0KGgpKQorCSAgICAgJiYgUEpfRkRfSVNTRVQoaC0+ZmQsICZ3ZmRzZXQpICYmICFJU19DTE9TSU5HKGgpKQorICAgICAgICB7CisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworCSAgICBpbmNyZW1lbnRfY291bnRlcihoKTsKKyNlbmRpZgorICAgICAgICAgICAgZXZlbnRbY291bnRlcl0ua2V5ID0gaDsKKyAgICAgICAgICAgIGV2ZW50W2NvdW50ZXJdLmV2ZW50X3R5cGUgPSBXUklURUFCTEVfRVZFTlQ7CisgICAgICAgICAgICArK2NvdW50ZXI7CisgICAgICAgIH0KKworICAgICAgICAvKiBTY2FuIGZvciByZWFkYWJsZSBzb2NrZXQuICovCisJaWYgKChrZXlfaGFzX3BlbmRpbmdfcmVhZChoKSB8fCBrZXlfaGFzX3BlbmRpbmdfYWNjZXB0KGgpKQorICAgICAgICAgICAgJiYgUEpfRkRfSVNTRVQoaC0+ZmQsICZyZmRzZXQpICYmICFJU19DTE9TSU5HKGgpICYmCisJICAgIGNvdW50ZXI8Y291bnQpCisgICAgICAgIHsKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisJICAgIGluY3JlbWVudF9jb3VudGVyKGgpOworI2VuZGlmCisgICAgICAgICAgICBldmVudFtjb3VudGVyXS5rZXkgPSBoOworICAgICAgICAgICAgZXZlbnRbY291bnRlcl0uZXZlbnRfdHlwZSA9IFJFQURBQkxFX0VWRU5UOworICAgICAgICAgICAgKytjb3VudGVyOworCX0KKworI2lmIFBKX0hBU19UQ1AKKyAgICAgICAgaWYgKGtleV9oYXNfcGVuZGluZ19jb25uZWN0KGgpICYmIFBKX0ZEX0lTU0VUKGgtPmZkLCAmeGZkc2V0KSAmJgorCSAgICAhSVNfQ0xPU0lORyhoKSAmJiBjb3VudGVyPGNvdW50KSAKKwl7CisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworCSAgICBpbmNyZW1lbnRfY291bnRlcihoKTsKKyNlbmRpZgorICAgICAgICAgICAgZXZlbnRbY291bnRlcl0ua2V5ID0gaDsKKyAgICAgICAgICAgIGV2ZW50W2NvdW50ZXJdLmV2ZW50X3R5cGUgPSBFWENFUFRJT05fRVZFTlQ7CisgICAgICAgICAgICArK2NvdW50ZXI7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKworICAgIGZvciAoaT0wOyBpPGNvdW50ZXI7ICsraSkgeworCWlmIChldmVudFtpXS5rZXktPmdycF9sb2NrKQorCSAgICBwal9ncnBfbG9ja19hZGRfcmVmX2RiZyhldmVudFtpXS5rZXktPmdycF9sb2NrLCAiaW9xdWV1ZSIsIDApOworICAgIH0KKworICAgIFBKX1JBQ0VfTUUoNSk7CisKKyAgICBwal9sb2NrX3JlbGVhc2UoaW9xdWV1ZS0+bG9jayk7CisKKyAgICBQSl9SQUNFX01FKDUpOworCisgICAgY291bnQgPSBjb3VudGVyOworCisgICAgLyogTm93IHByb2Nlc3MgYWxsIGV2ZW50cy4gVGhlIGRpc3BhdGNoIGZ1bmN0aW9ucyB3aWxsIHRha2UgY2FyZQorICAgICAqIG9mIGxvY2tpbmcgaW4gZWFjaCBvZiB0aGUga2V5CisgICAgICovCisgICAgZm9yIChjb3VudGVyPTA7IGNvdW50ZXI8Y291bnQ7ICsrY291bnRlcikgeworICAgICAgICBzd2l0Y2ggKGV2ZW50W2NvdW50ZXJdLmV2ZW50X3R5cGUpIHsKKyAgICAgICAgY2FzZSBSRUFEQUJMRV9FVkVOVDoKKyAgICAgICAgICAgIGlvcXVldWVfZGlzcGF0Y2hfcmVhZF9ldmVudChpb3F1ZXVlLCBldmVudFtjb3VudGVyXS5rZXkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV1JJVEVBQkxFX0VWRU5UOgorICAgICAgICAgICAgaW9xdWV1ZV9kaXNwYXRjaF93cml0ZV9ldmVudChpb3F1ZXVlLCBldmVudFtjb3VudGVyXS5rZXkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVhDRVBUSU9OX0VWRU5UOgorICAgICAgICAgICAgaW9xdWV1ZV9kaXNwYXRjaF9leGNlcHRpb25fZXZlbnQoaW9xdWV1ZSwgZXZlbnRbY291bnRlcl0ua2V5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5PX0VWRU5UOgorICAgICAgICAgICAgcGpfYXNzZXJ0KCEiSW52YWxpZCBldmVudCEiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisJZGVjcmVtZW50X2NvdW50ZXIoZXZlbnRbY291bnRlcl0ua2V5KTsKKyNlbmRpZgorCisJaWYgKGV2ZW50W2NvdW50ZXJdLmtleS0+Z3JwX2xvY2spCisJICAgIHBqX2dycF9sb2NrX2RlY19yZWZfZGJnKGV2ZW50W2NvdW50ZXJdLmtleS0+Z3JwX2xvY2ssCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpb3F1ZXVlIiwgMCk7CisgICAgfQorCisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX3N5bWJpYW4uY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lvcXVldWVfc3ltYmlhbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzMTBkMQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX3N5bWJpYW4uY3BwCkBAIC0wLDAgKzEsODY2IEBACisvKiAkSWQ6IGlvcXVldWVfc3ltYmlhbi5jcHAgNDM3NCAyMDEzLTAyLTI3IDA3OjE1OjU3WiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovaW9xdWV1ZS5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovbGlzdC5oPgorI2luY2x1ZGUgPHBqL2xvY2suaD4KKyNpbmNsdWRlIDxwai9wb29sLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisKKyNpbmNsdWRlICJvc19zeW1iaWFuLmgiCisKK2NsYXNzIENJb3F1ZXVlQ2FsbGJhY2s7CisKKy8qCisgKiBJTyBRdWV1ZSBzdHJ1Y3R1cmUuCisgKi8KK3N0cnVjdCBwal9pb3F1ZXVlX3QKK3sKKyAgICBpbnQJCSAgICAgZXZlbnRDb3VudDsKK307CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIENsYXNzIHRvIGVuY2Fwc3VsYXRlIGFzeW5jaHJvbm91cyBzb2NrZXQgb3BlcmF0aW9uLgorLy8KK2NsYXNzIENJb3F1ZXVlQ2FsbGJhY2sgOiBwdWJsaWMgQ0FjdGl2ZQoreworcHVibGljOgorICAgIHN0YXRpYyBDSW9xdWV1ZUNhbGxiYWNrKiBOZXdMKHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCQkgIHBqX2lvcXVldWVfa2V5X3QgKmtleSwgCisJCQkJICBwal9zb2NrX3Qgc29jaywgCisJCQkJICBjb25zdCBwal9pb3F1ZXVlX2NhbGxiYWNrICpjYiwgCisJCQkJICB2b2lkICp1c2VyX2RhdGEpOworCisgICAgLy8KKyAgICAvLyBTdGFydCBhc3luY2hyb25vdXMgcmVjdigpIG9wZXJhdGlvbgorICAgIC8vCisgICAgcGpfc3RhdHVzX3QgU3RhcnRSZWFkKHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwgCisJCQkgIHZvaWQgKmJ1ZiwgcGpfc3NpemVfdCAqc2l6ZSwgdW5zaWduZWQgZmxhZ3MsCisJCQkgIHBqX3NvY2thZGRyX3QgKmFkZHIsIGludCAqYWRkcmxlbik7CisKKyAgICAvLworICAgIC8vIFN0YXJ0IGFzeW5jaHJvbm91cyBhY2NlcHQoKSBvcGVyYXRpb24uCisgICAgLy8KKyAgICBwal9zdGF0dXNfdCBTdGFydEFjY2VwdChwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkgICAgcGpfc29ja190ICpuZXdfc29jaywKKwkJCSAgICBwal9zb2NrYWRkcl90ICpsb2NhbCwKKwkJCSAgICBwal9zb2NrYWRkcl90ICpyZW1vdGUsCisJCQkgICAgaW50ICphZGRybGVuICk7CisKKyAgICAvLworICAgIC8vIENvbXBsZXRpb24gY2FsbGJhY2suCisgICAgLy8KKyAgICB2b2lkIFJ1bkwoKTsKKworICAgIC8vCisgICAgLy8gQ0FjdGl2ZSdzIERvQ2FuY2VsKCkKKyAgICAvLworICAgIHZvaWQgRG9DYW5jZWwoKTsKKworICAgIC8vCisgICAgLy8gQ2FuY2VsIG9wZXJhdGlvbiBhbmQgY2FsbCBjYWxsYmFjay4KKyAgICAvLworICAgIHZvaWQgQ2FuY2VsT3BlcmF0aW9uKHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwgCisJCQkgcGpfc3NpemVfdCBieXRlc19zdGF0dXMpOworCisgICAgLy8KKyAgICAvLyBBY2Nlc3NvcnMKKyAgICAvLworICAgIHZvaWQqIGdldF91c2VyX2RhdGEoKSBjb25zdAorICAgIHsKKwlyZXR1cm4gdXNlcl9kYXRhXzsKKyAgICB9CisgICAgdm9pZCBzZXRfdXNlcl9kYXRhKHZvaWQgKnVzZXJfZGF0YSkKKyAgICB7CisJdXNlcl9kYXRhXyA9IHVzZXJfZGF0YTsKKyAgICB9CisgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqZ2V0X29wX2tleSgpIGNvbnN0CisgICAgeworCXJldHVybiBwZW5kaW5nX2RhdGFfLmNvbW1vbl8ub3Bfa2V5XzsKKyAgICB9CisgICAgQ1BqU29ja2V0KiBnZXRfcGpfc29ja2V0KCkKKyAgICB7CisJcmV0dXJuIHNvY2tfOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBUeXBlIG9mIHBlbmRpbmcgb3BlcmF0aW9uLgorICAgIGVudW0gVHlwZSB7CisJVFlQRV9OT05FLAorCVRZUEVfUkVBRCwKKwlUWVBFX0FDQ0VQVCwKKyAgICB9OworCisgICAgLy8gU3RhdGljIGRhdGEuCisgICAgcGpfaW9xdWV1ZV90CQkqaW9xdWV1ZV87CisgICAgcGpfaW9xdWV1ZV9rZXlfdAkJKmtleV87CisgICAgQ1BqU29ja2V0CQkJKnNvY2tfOworICAgIHBqX2lvcXVldWVfY2FsbGJhY2sJCSBjYl87CisgICAgdm9pZAkJCSp1c2VyX2RhdGFfOworCisgICAgLy8gU3ltYmlhbiBkYXRhLgorICAgIFRQdHI4CQkJIGFCdWZmZXJQdHJfOworICAgIFRJbmV0QWRkcgkJCSBhQWRkcmVzc187CisKKyAgICAvLyBBcHBsaWNhdGlvbiBkYXRhLgorICAgIFR5cGUJCQkgdHlwZV87CisKKyAgICB1bmlvbiBQZW5kaW5nX0RhdGEKKyAgICB7CisJc3RydWN0IENvbW1vbgorCXsKKwkgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdAkqb3Bfa2V5XzsKKwl9IGNvbW1vbl87CisKKwlzdHJ1Y3QgUGVuZGluZ19SZWFkCisJeworCSAgICBwal9pb3F1ZXVlX29wX2tleV90CSpvcF9rZXlfOworCSAgICBwal9zb2NrYWRkcl90CSphZGRyXzsKKwkgICAgaW50CQkJKmFkZHJsZW5fOworCX0gcmVhZF87CisKKwlzdHJ1Y3QgUGVuZGluZ19BY2NlcHQKKwl7CisJICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleV87CisJICAgIHBqX3NvY2tfdAkJKm5ld19zb2NrXzsKKwkgICAgcGpfc29ja2FkZHJfdAkqbG9jYWxfOworCSAgICBwal9zb2NrYWRkcl90CSpyZW1vdGVfOworCSAgICBpbnQJCQkqYWRkcmxlbl87CisJfSBhY2NlcHRfOworICAgIH07CisKKyAgICB1bmlvbiBQZW5kaW5nX0RhdGEJCSBwZW5kaW5nX2RhdGFfOworICAgIFJTb2NrZXQJCQlibGFua19zb2NrXzsKKworICAgIENJb3F1ZXVlQ2FsbGJhY2socGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorCQkgICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleSwgcGpfc29ja190IHNvY2ssIAorCQkgICAgIGNvbnN0IHBqX2lvcXVldWVfY2FsbGJhY2sgKmNiLCB2b2lkICp1c2VyX2RhdGEpCisgICAgOiBDQWN0aXZlKENBY3RpdmU6OkVQcmlvcml0eVN0YW5kYXJkKSwKKwkgIGlvcXVldWVfKGlvcXVldWUpLCBrZXlfKGtleSksIHNvY2tfKChDUGpTb2NrZXQqKXNvY2spLCAKKwkgIHVzZXJfZGF0YV8odXNlcl9kYXRhKSwgYUJ1ZmZlclB0cl8oTlVMTCwgMCksIHR5cGVfKFRZUEVfTk9ORSkKKyAgICB7CisgICAgCXBqX21lbWNweSgmY2JfLCBjYiwgc2l6ZW9mKCpjYikpOworICAgIH0KKworCisgICAgdm9pZCBDb25zdHJ1Y3RMKCkKKyAgICB7CisJQ0FjdGl2ZVNjaGVkdWxlcjo6QWRkKHRoaXMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIEhhbmRsZVJlYWRDb21wbGV0aW9uKCk7CisgICAgQ1BqU29ja2V0ICpIYW5kbGVBY2NlcHRDb21wbGV0aW9uKCk7Cit9OworCisKK0NJb3F1ZXVlQ2FsbGJhY2sqIENJb3F1ZXVlQ2FsbGJhY2s6Ok5ld0wocGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorCQkJCQkgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKwkJCQkJIHBqX3NvY2tfdCBzb2NrLCAKKwkJCQkJIGNvbnN0IHBqX2lvcXVldWVfY2FsbGJhY2sgKmNiLCAKKwkJCQkJIHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgICBDSW9xdWV1ZUNhbGxiYWNrICpzZWxmID0gbmV3IENJb3F1ZXVlQ2FsbGJhY2soaW9xdWV1ZSwga2V5LCBzb2NrLCAKKwkJCQkJCSAgY2IsIHVzZXJfZGF0YSk7CisgICAgQ2xlYW51cFN0YWNrOjpQdXNoTChzZWxmKTsKKyAgICBzZWxmLT5Db25zdHJ1Y3RMKCk7CisgICAgQ2xlYW51cFN0YWNrOjpQb3Aoc2VsZik7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworCisvLworLy8gU3RhcnQgYXN5bmNocm9ub3VzIHJlY3YoKSBvcGVyYXRpb24KKy8vCitwal9zdGF0dXNfdCBDSW9xdWV1ZUNhbGxiYWNrOjpTdGFydFJlYWQocGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LCAKKwkJCQkJdm9pZCAqYnVmLCBwal9zc2l6ZV90ICpzaXplLCAKKwkJCQkJdW5zaWduZWQgZmxhZ3MsCisJCQkJCXBqX3NvY2thZGRyX3QgKmFkZHIsIGludCAqYWRkcmxlbikKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKElzQWN0aXZlKCk9PWZhbHNlLCBQSl9FQlVTWSk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihwZW5kaW5nX2RhdGFfLmNvbW1vbl8ub3Bfa2V5Xz09TlVMTCwgUEpfRUJVU1kpOworCisgICAgZmxhZ3MgJj0gflBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DOworCisgICAgcGVuZGluZ19kYXRhXy5yZWFkXy5vcF9rZXlfID0gb3Bfa2V5OworICAgIHBlbmRpbmdfZGF0YV8ucmVhZF8uYWRkcl8gPSBhZGRyOworICAgIHBlbmRpbmdfZGF0YV8ucmVhZF8uYWRkcmxlbl8gPSBhZGRybGVuOworCisgICAgYUJ1ZmZlclB0cl8uU2V0KChUVWludDgqKWJ1ZiwgMCwgKFRJbnQpKnNpemUpOworCisgICAgdHlwZV8gPSBUWVBFX1JFQUQ7CisgICAgaWYgKGFkZHIgJiYgYWRkcmxlbikgeworCXNvY2tfLT5Tb2NrZXQoKS5SZWN2RnJvbShhQnVmZmVyUHRyXywgYUFkZHJlc3NfLCBmbGFncywgaVN0YXR1cyk7CisgICAgfSBlbHNlIHsKKwlhQWRkcmVzc18uU2V0QWRkcmVzcygwKTsKKwlhQWRkcmVzc18uU2V0UG9ydCgwKTsKKworCWlmIChzb2NrXy0+SXNEYXRhZ3JhbSgpKSB7CisJICAgIHNvY2tfLT5Tb2NrZXQoKS5SZWN2KGFCdWZmZXJQdHJfLCBmbGFncywgaVN0YXR1cyk7CisJfSBlbHNlIHsKKwkgICAgLy8gVXNpbmcgc3RhdGljIGxpa2UgdGhpcyBpcyBub3QgcHJldHR5LCBidXQgd2UgZG9uJ3QgbmVlZCB0byB1c2UKKwkgICAgLy8gdGhlIHZhbHVlIGFueXdheSwgaGVuY2UgZG9pbmcgaXQgbGlrZSB0aGlzIGlzIHByb2JhYmx5IG1vc3QKKwkgICAgLy8gb3B0aW1hbC4KKwkgICAgc3RhdGljIFRTb2NrWGZyTGVuZ3RoIGxlbjsKKwkgICAgc29ja18tPlNvY2tldCgpLlJlY3ZPbmVPck1vcmUoYUJ1ZmZlclB0cl8sIGZsYWdzLCBpU3RhdHVzLCBsZW4pOworCX0KKyAgICB9CisKKyAgICBTZXRBY3RpdmUoKTsKKyAgICByZXR1cm4gUEpfRVBFTkRJTkc7Cit9CisKKworLy8KKy8vIFN0YXJ0IGFzeW5jaHJvbm91cyBhY2NlcHQoKSBvcGVyYXRpb24uCisvLworcGpfc3RhdHVzX3QgQ0lvcXVldWVDYWxsYmFjazo6U3RhcnRBY2NlcHQocGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJCQkgIHBqX3NvY2tfdCAqbmV3X3NvY2ssCisJCQkJCSAgcGpfc29ja2FkZHJfdCAqbG9jYWwsCisJCQkJCSAgcGpfc29ja2FkZHJfdCAqcmVtb3RlLAorCQkJCQkgIGludCAqYWRkcmxlbiApCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihJc0FjdGl2ZSgpPT1mYWxzZSwgUEpfRUJVU1kpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocGVuZGluZ19kYXRhXy5jb21tb25fLm9wX2tleV89PU5VTEwsIFBKX0VCVVNZKTsKKworICAgIC8vIGFkZHJsZW4gbXVzdCBiZSBzcGVjaWZpZWQgaWYgbG9jYWwgb3IgcmVtb3RlIGlzIHNwZWNpZmllZAorICAgIFBKX0FTU0VSVF9SRVRVUk4oKCFsb2NhbCAmJiAhcmVtb3RlKSB8fAorICAgIAkJICAgICAoYWRkcmxlbiAmJiAqYWRkcmxlbiksIFBKX0VJTlZBTCk7CisgICAgCisgICAgcGVuZGluZ19kYXRhXy5hY2NlcHRfLm9wX2tleV8gPSBvcF9rZXk7CisgICAgcGVuZGluZ19kYXRhXy5hY2NlcHRfLm5ld19zb2NrXyA9IG5ld19zb2NrOworICAgIHBlbmRpbmdfZGF0YV8uYWNjZXB0Xy5sb2NhbF8gPSBsb2NhbDsKKyAgICBwZW5kaW5nX2RhdGFfLmFjY2VwdF8ucmVtb3RlXyA9IHJlbW90ZTsKKyAgICBwZW5kaW5nX2RhdGFfLmFjY2VwdF8uYWRkcmxlbl8gPSBhZGRybGVuOworCisgICAgLy8gQ3JlYXRlIGJsYW5rIHNvY2tldAorICAgIGJsYW5rX3NvY2tfLk9wZW4oUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPlNvY2tldFNlcnYoKSk7CisKKyAgICB0eXBlXyA9IFRZUEVfQUNDRVBUOworICAgIHNvY2tfLT5Tb2NrZXQoKS5BY2NlcHQoYmxhbmtfc29ja18sIGlTdGF0dXMpOworCisgICAgU2V0QWN0aXZlKCk7CisgICAgcmV0dXJuIFBKX0VQRU5ESU5HOworfQorCisKKy8vCisvLyBIYW5kbGUgYXN5bmNocm9ub3VzIFJlY3ZGcm9tKCkgY29tcGxldGlvbgorLy8KK3ZvaWQgQ0lvcXVldWVDYWxsYmFjazo6SGFuZGxlUmVhZENvbXBsZXRpb24oKSAKK3sKKyAgICBpZiAocGVuZGluZ19kYXRhXy5yZWFkXy5hZGRyXyAmJiBwZW5kaW5nX2RhdGFfLnJlYWRfLmFkZHJsZW5fKSB7CisJUGpTeW1iaWFuT1M6OkFkZHIycGooYUFkZHJlc3NfLCAKKwkJCSAgICAgKihwal9zb2NrYWRkciopcGVuZGluZ19kYXRhXy5yZWFkXy5hZGRyXywKKwkJCSAgICAgcGVuZGluZ19kYXRhXy5yZWFkXy5hZGRybGVuXyk7CisJcGVuZGluZ19kYXRhXy5yZWFkXy5hZGRyXyA9IE5VTEw7CisJcGVuZGluZ19kYXRhXy5yZWFkXy5hZGRybGVuXyA9IE5VTEw7CisgICAgfQorCQorICAgIHBlbmRpbmdfZGF0YV8ucmVhZF8ub3Bfa2V5XyA9IE5VTEw7Cit9CisKKworLy8KKy8vIEhhbmRsZSBhc3luY2hyb25vdXMgQWNjZXB0KCkgY29tcGxldGlvbi4KKy8vCitDUGpTb2NrZXQgKkNJb3F1ZXVlQ2FsbGJhY2s6OkhhbmRsZUFjY2VwdENvbXBsZXRpb24oKSAKK3sKKwlDUGpTb2NrZXQgKnBqTmV3U29jayA9IG5ldyBDUGpTb2NrZXQoZ2V0X3BqX3NvY2tldCgpLT5HZXRBZigpLCAKKwkJCQkJICAgICBnZXRfcGpfc29ja2V0KCktPkdldFNvY2tUeXBlKCksCisJCQkJCSAgICAgYmxhbmtfc29ja18pOworCWludCBhZGRybGVuID0gMDsKKwkKKwlpZiAocGVuZGluZ19kYXRhXy5hY2NlcHRfLm5ld19zb2NrXykgeworCSAgICAqcGVuZGluZ19kYXRhXy5hY2NlcHRfLm5ld19zb2NrXyA9IChwal9zb2NrX3QpcGpOZXdTb2NrOworCSAgICBwZW5kaW5nX2RhdGFfLmFjY2VwdF8ubmV3X3NvY2tfID0gTlVMTDsKKwl9CisKKwlpZiAocGVuZGluZ19kYXRhXy5hY2NlcHRfLmxvY2FsXykgeworCSAgICBUSW5ldEFkZHIgYUFkZHI7CisJICAgIHBqX3NvY2thZGRyICpwdHJfc29ja2FkZHI7CisJICAgIAorCSAgICBibGFua19zb2NrXy5Mb2NhbE5hbWUoYUFkZHIpOworCSAgICBwdHJfc29ja2FkZHIgPSAocGpfc29ja2FkZHIqKXBlbmRpbmdfZGF0YV8uYWNjZXB0Xy5sb2NhbF87CisJICAgIGFkZHJsZW4gPSAqcGVuZGluZ19kYXRhXy5hY2NlcHRfLmFkZHJsZW5fOworCSAgICBQalN5bWJpYW5PUzo6QWRkcjJwaihhQWRkciwgKnB0cl9zb2NrYWRkciwgJmFkZHJsZW4pOworCSAgICBwZW5kaW5nX2RhdGFfLmFjY2VwdF8ubG9jYWxfID0gTlVMTDsKKwl9CisKKwlpZiAocGVuZGluZ19kYXRhXy5hY2NlcHRfLnJlbW90ZV8pIHsKKwkgICAgVEluZXRBZGRyIGFBZGRyOworCSAgICBwal9zb2NrYWRkciAqcHRyX3NvY2thZGRyOworCisJICAgIGJsYW5rX3NvY2tfLlJlbW90ZU5hbWUoYUFkZHIpOworCSAgICBwdHJfc29ja2FkZHIgPSAocGpfc29ja2FkZHIqKXBlbmRpbmdfZGF0YV8uYWNjZXB0Xy5yZW1vdGVfOworCSAgICBhZGRybGVuID0gKnBlbmRpbmdfZGF0YV8uYWNjZXB0Xy5hZGRybGVuXzsKKwkgICAgUGpTeW1iaWFuT1M6OkFkZHIycGooYUFkZHIsICpwdHJfc29ja2FkZHIsICZhZGRybGVuKTsKKwkgICAgcGVuZGluZ19kYXRhXy5hY2NlcHRfLnJlbW90ZV8gPSBOVUxMOworCX0KKworCWlmIChwZW5kaW5nX2RhdGFfLmFjY2VwdF8uYWRkcmxlbl8pIHsKKwkgICAgaWYgKGFkZHJsZW4gPT0gMCkgeworCSAgICAJaWYgKHBqTmV3U29jay0+R2V0QWYoKSA9PSBQSl9BRl9JTkVUKQorCSAgICAJICAgIGFkZHJsZW4gPSBzaXplb2YocGpfc29ja2FkZHJfaW4pOworCSAgICAJZWxzZSBpZiAocGpOZXdTb2NrLT5HZXRBZigpID09IFBKX0FGX0lORVQ2KQorCSAgICAJICAgIGFkZHJsZW4gPSBzaXplb2YocGpfc29ja2FkZHJfaW42KTsKKwkgICAgCWVsc2UgeworCSAgICAJICAgIHBqX2Fzc2VydCghIlVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CisJICAgIAl9CisJICAgIH0KKwkgICAgKnBlbmRpbmdfZGF0YV8uYWNjZXB0Xy5hZGRybGVuXyA9IGFkZHJsZW47CisJICAgIHBlbmRpbmdfZGF0YV8uYWNjZXB0Xy5hZGRybGVuXyA9IE5VTEw7CisJfQorCQorCXJldHVybiBwak5ld1NvY2s7Cit9CisKKworLy8KKy8vIENvbXBsZXRpb24gY2FsbGJhY2suCisvLwordm9pZCBDSW9xdWV1ZUNhbGxiYWNrOjpSdW5MKCkKK3sKKyAgICBwal9pb3F1ZXVlX3QgKmlvcSA9IGlvcXVldWVfOworICAgIFR5cGUgY3VyX3R5cGUgPSB0eXBlXzsKKworICAgIHR5cGVfID0gVFlQRV9OT05FOworCisgICAgaWYgKGN1cl90eXBlID09IFRZUEVfUkVBRCkgeworCS8vCisJLy8gQ29tcGxldGlvbiBvZiBhc3luY2hyb25vdXMgUmVjdkZyb20oKQorCS8vCisKKwkvKiBDbGVhciBvcF9rZXkgKHNhdmUgaXQgdG8gdGVtcCB2YXJpYWJsZSBmaXJzdCEpICovCisJcGpfaW9xdWV1ZV9vcF9rZXlfdAkqb3Bfa2V5ID0gcGVuZGluZ19kYXRhXy5yZWFkXy5vcF9rZXlfOworCXBlbmRpbmdfZGF0YV8ucmVhZF8ub3Bfa2V5XyA9IE5VTEw7CisKKwkvLyBIYW5kbGUgZmFpbHVyZSBjb25kaXRpb24KKwlpZiAoaVN0YXR1cyAhPSBLRXJyTm9uZSkgeworCSAgICBpZiAoY2JfLm9uX3JlYWRfY29tcGxldGUpIHsKKwkgICAgCWNiXy5vbl9yZWFkX2NvbXBsZXRlKCBrZXlfLCBvcF9rZXksIAorCQkJCSAgICAgIC1QSl9SRVRVUk5fT1NfRVJST1IoaVN0YXR1cy5JbnQoKSkpOworCSAgICB9CisJICAgIHJldHVybjsKKwl9CisKKwlIYW5kbGVSZWFkQ29tcGxldGlvbigpOworCisJLyogQ2FsbCBjYWxsYmFjayAqLworCWlmIChjYl8ub25fcmVhZF9jb21wbGV0ZSkgeworCSAgICBjYl8ub25fcmVhZF9jb21wbGV0ZShrZXlfLCBvcF9rZXksIGFCdWZmZXJQdHJfLkxlbmd0aCgpKTsKKwl9CisKKyAgICB9IGVsc2UgaWYgKGN1cl90eXBlID09IFRZUEVfQUNDRVBUKSB7CisJLy8KKwkvLyBDb21wbGV0aW9uIG9mIGFzeW5jaHJvbm91cyBBY2NlcHQoKQorCS8vCisJCisJLyogQ2xlYXIgb3Bfa2V5IChzYXZlIGl0IHRvIHRlbXAgdmFyaWFibGUgZmlyc3QhKSAqLworCXBqX2lvcXVldWVfb3Bfa2V5X3QJKm9wX2tleSA9IHBlbmRpbmdfZGF0YV8ucmVhZF8ub3Bfa2V5XzsKKwlwZW5kaW5nX2RhdGFfLnJlYWRfLm9wX2tleV8gPSBOVUxMOworCisJLy8gSGFuZGxlIGZhaWx1cmUgY29uZGl0aW9uCisJaWYgKGlTdGF0dXMgIT0gS0Vyck5vbmUpIHsKKwkgICAgaWYgKHBlbmRpbmdfZGF0YV8uYWNjZXB0Xy5uZXdfc29ja18pCisJCSpwZW5kaW5nX2RhdGFfLmFjY2VwdF8ubmV3X3NvY2tfID0gUEpfSU5WQUxJRF9TT0NLRVQ7CisJICAgIAorCSAgICBpZiAoY2JfLm9uX2FjY2VwdF9jb21wbGV0ZSkgeworCSAgICAJY2JfLm9uX2FjY2VwdF9jb21wbGV0ZSgga2V5Xywgb3Bfa2V5LCBQSl9JTlZBTElEX1NPQ0tFVCwKKwkJCQkgICAgICAgIC1QSl9SRVRVUk5fT1NfRVJST1IoaVN0YXR1cy5JbnQoKSkpOworCSAgICB9CisJICAgIHJldHVybjsKKwl9CisKKwlDUGpTb2NrZXQgKnBqTmV3U29jayA9IEhhbmRsZUFjY2VwdENvbXBsZXRpb24oKTsKKwkKKwkvLyBDYWxsIGNhbGxiYWNrLgorCWlmIChjYl8ub25fYWNjZXB0X2NvbXBsZXRlKSB7CisJICAgIGNiXy5vbl9hY2NlcHRfY29tcGxldGUoIGtleV8sIG9wX2tleSwgKHBqX3NvY2tfdClwak5ld1NvY2ssIAorCQkJCSAgICBQSl9TVUNDRVNTKTsKKwl9CisgICAgfQorCisgICAgaW9xLT5ldmVudENvdW50Kys7Cit9CisKKy8vCisvLyBDQWN0aXZlJ3MgRG9DYW5jZWwoKQorLy8KK3ZvaWQgQ0lvcXVldWVDYWxsYmFjazo6RG9DYW5jZWwoKQoreworICAgIGlmICh0eXBlXyA9PSBUWVBFX1JFQUQpCisJc29ja18tPlNvY2tldCgpLkNhbmNlbFJlY3YoKTsKKyAgICBlbHNlIGlmICh0eXBlXyA9PSBUWVBFX0FDQ0VQVCkKKwlzb2NrXy0+U29ja2V0KCkuQ2FuY2VsQWNjZXB0KCk7CisKKyAgICB0eXBlXyA9IFRZUEVfTk9ORTsKKyAgICBwZW5kaW5nX2RhdGFfLmNvbW1vbl8ub3Bfa2V5XyA9IE5VTEw7Cit9CisKKy8vCisvLyBDYW5jZWwgb3BlcmF0aW9uIGFuZCBjYWxsIGNhbGxiYWNrLgorLy8KK3ZvaWQgQ0lvcXVldWVDYWxsYmFjazo6Q2FuY2VsT3BlcmF0aW9uKHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwgCisJCQkJICAgICAgIHBqX3NzaXplX3QgYnl0ZXNfc3RhdHVzKQoreworICAgIFR5cGUgY3VyX3R5cGUgPSB0eXBlXzsKKworICAgIHBqX2Fzc2VydChvcF9rZXkgPT0gcGVuZGluZ19kYXRhXy5jb21tb25fLm9wX2tleV8pOworCisgICAgQ2FuY2VsKCk7CisKKyAgICBpZiAoY3VyX3R5cGUgPT0gVFlQRV9SRUFEKSB7CisgICAgCWlmIChjYl8ub25fcmVhZF9jb21wbGV0ZSkKKyAgICAJICAgIGNiXy5vbl9yZWFkX2NvbXBsZXRlKGtleV8sIG9wX2tleSwgYnl0ZXNfc3RhdHVzKTsKKyAgICB9IGVsc2UgaWYgKGN1cl90eXBlID09IFRZUEVfQUNDRVBUKQorCTsgICAgCit9CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8qCisgKiBJTyBRdWV1ZSBrZXkgc3RydWN0dXJlLgorICovCitzdHJ1Y3QgcGpfaW9xdWV1ZV9rZXlfdAoreworICAgIENJb3F1ZXVlQ2FsbGJhY2sJKmNiT2JqOworfTsKKworCisvKgorICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBpb3F1ZXVlIGltcGxlbWVudGF0aW9uLgorICovCitQSl9ERUYoY29uc3QgY2hhciopIHBqX2lvcXVldWVfbmFtZSh2b2lkKQoreworICAgIHJldHVybiAiaW9xdWV1ZS1zeW1iaWFuIjsKK30KKworCisvKgorICogQ3JlYXRlIGEgbmV3IEkvTyBRdWV1ZSBmcmFtZXdvcmsuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9jcmVhdGUoCXBqX3Bvb2xfdCAqcG9vbCwgCisJCQkJCXBqX3NpemVfdCBtYXhfZmQsCisJCQkJCXBqX2lvcXVldWVfdCAqKnBfaW9xdWV1ZSkKK3sKKyAgICBwal9pb3F1ZXVlX3QgKmlvcTsKKworICAgIFBKX1VOVVNFRF9BUkcobWF4X2ZkKTsKKworICAgIGlvcSA9IFBKX1BPT0xfWkFMTE9DX1QocG9vbCwgcGpfaW9xdWV1ZV90KTsKKyAgICAqcF9pb3F1ZXVlID0gaW9xOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBEZXN0cm95IHRoZSBJL08gcXVldWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9kZXN0cm95KCBwal9pb3F1ZXVlX3QgKmlvcSApCit7CisgICAgUEpfVU5VU0VEX0FSRyhpb3EpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBTZXQgdGhlIGxvY2sgb2JqZWN0IHRvIGJlIHVzZWQgYnkgdGhlIEkvTyBRdWV1ZS4gCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9zZXRfbG9jayggcGpfaW9xdWV1ZV90ICppb3EsIAorCQkJCQkgcGpfbG9ja190ICpsb2NrLAorCQkJCQkgcGpfYm9vbF90IGF1dG9fZGVsZXRlICkKK3sKKyAgICAvKiBEb24ndCByZWFsbHkgbmVlZCBsb2NrIGZvciBub3cgKi8KKyAgICBQSl9VTlVTRURfQVJHKGlvcSk7CisgICAgCisgICAgaWYgKGF1dG9fZGVsZXRlKSB7CisJcGpfbG9ja19kZXN0cm95KGxvY2spOworICAgIH0KKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2V0X2RlZmF1bHRfY29uY3VycmVuY3kocGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorCQkJCQkJCQkJCQkJCSAgIHBqX2Jvb2xfdCBhbGxvdykKK3sKKwkvKiBOb3Qgc3VwcG9ydGVkLCBqdXN0IHJldHVybiBQSl9TVUNDRVNTIHNpbGVudGx5ICovCisJUEpfVU5VU0VEX0FSRyhpb3F1ZXVlKTsKKwlQSl9VTlVTRURfQVJHKGFsbG93KTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIFJlZ2lzdGVyIGEgc29ja2V0IHRvIHRoZSBJL08gcXVldWUgZnJhbWV3b3JrLiAKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2soIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICAgcGpfaW9xdWV1ZV90ICppb3EsCisJCQkJCSAgICAgIHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCisJCQkJCSAgICAgIGNvbnN0IHBqX2lvcXVldWVfY2FsbGJhY2sgKmNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfa2V5X3QgKipwX2tleSApCit7CisgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5OworCisgICAga2V5ID0gUEpfUE9PTF9aQUxMT0NfVChwb29sLCBwal9pb3F1ZXVlX2tleV90KTsKKyAgICBrZXktPmNiT2JqID0gQ0lvcXVldWVDYWxsYmFjazo6TmV3TChpb3EsIGtleSwgc29jaywgY2IsIHVzZXJfZGF0YSk7CisKKyAgICAqcF9rZXkgPSBrZXk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrMihwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCQkJICAgICAgcGpfc29ja190IHNvY2ssCisJCQkJCSAgICAgIHBqX2dycF9sb2NrX3QgKmdycF9sb2NrLAorCQkJCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCisJCQkJCSAgICAgIGNvbnN0IHBqX2lvcXVldWVfY2FsbGJhY2sgKmNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfa2V5X3QgKipwX2tleSkKK3sKKyAgICBQSl9VTlVTRURfQVJHKGdycF9sb2NrKTsKKworICAgIHJldHVybiBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2socG9vbCwgaW9xdWV1ZSwgc29jaywgdXNlcl9kYXRhLCBjYiwgcF9rZXkpOworfQorCisvKgorICogVW5yZWdpc3RlciBmcm9tIHRoZSBJL08gUXVldWUgZnJhbWV3b3JrLiAKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3VucmVnaXN0ZXIoIHBqX2lvcXVldWVfa2V5X3QgKmtleSApCit7CisgICAgaWYgKGtleSA9PSBOVUxMIHx8IGtleS0+Y2JPYmogPT0gTlVMTCkKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKworICAgIC8vIENhbmNlbCBwZW5kaW5nIGFzeW5jIG9iamVjdAorICAgIGlmIChrZXktPmNiT2JqKSB7CisJa2V5LT5jYk9iai0+Q2FuY2VsKCk7CisgICAgfQorCisgICAgLy8gQ2xvc2Ugc29ja2V0LgorICAgIGtleS0+Y2JPYmotPmdldF9wal9zb2NrZXQoKS0+U29ja2V0KCkuQ2xvc2UoKTsKKyAgICBkZWxldGUga2V5LT5jYk9iai0+Z2V0X3BqX3NvY2tldCgpOworCisgICAgLy8gRGVsZXRlIGFzeW5jIG9iamVjdC4KKyAgICBpZiAoa2V5LT5jYk9iaikgeworCWRlbGV0ZSBrZXktPmNiT2JqOworCWtleS0+Y2JPYmogPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBHZXQgdXNlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhbiBpb3F1ZXVlIGtleS4KKyAqLworUEpfREVGKHZvaWQqKSBwal9pb3F1ZXVlX2dldF91c2VyX2RhdGEoIHBqX2lvcXVldWVfa2V5X3QgKmtleSApCit7CisgICAgcmV0dXJuIGtleS0+Y2JPYmotPmdldF91c2VyX2RhdGEoKTsKK30KKworCisvKgorICogU2V0IG9yIGNoYW5nZSB0aGUgdXNlciBkYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSBkZXNjcmlwdG9yIG9yCisgKiBoYW5kbGUgb3Igc29ja2V0IGRlc2NyaXB0b3IuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9zZXRfdXNlcl9kYXRhKCBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipvbGRfZGF0YSkKK3sKKyAgICBpZiAob2xkX2RhdGEpCisJKm9sZF9kYXRhID0ga2V5LT5jYk9iai0+Z2V0X3VzZXJfZGF0YSgpOworICAgIGtleS0+Y2JPYmotPnNldF91c2VyX2RhdGEodXNlcl9kYXRhKTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBJbml0aWFsaXplIG9wZXJhdGlvbiBrZXkuCisgKi8KK1BKX0RFRih2b2lkKSBwal9pb3F1ZXVlX29wX2tleV9pbml0KCBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJICAgICBwal9zaXplX3Qgc2l6ZSApCit7CisgICAgcGpfYnplcm8ob3Bfa2V5LCBzaXplKTsKK30KKworCisvKgorICogQ2hlY2sgaWYgb3BlcmF0aW9uIGlzIHBlbmRpbmcgb24gdGhlIHNwZWNpZmllZCBvcGVyYXRpb24ga2V5LgorICovCitQSl9ERUYocGpfYm9vbF90KSBwal9pb3F1ZXVlX2lzX3BlbmRpbmcoIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5ICkKK3sKKyAgICByZXR1cm4ga2V5LT5jYk9iai0+Z2V0X29wX2tleSgpPT1vcF9rZXkgJiYKKwkgICBrZXktPmNiT2JqLT5Jc0FjdGl2ZSgpOworfQorCisKKy8qCisgKiBQb3N0IGNvbXBsZXRpb24gc3RhdHVzIHRvIHRoZSBzcGVjaWZpZWQgb3BlcmF0aW9uIGtleSBhbmQgY2FsbCB0aGUKKyAqIGFwcHJvcHJpYXRlIGNhbGxiYWNrLiAKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3Bvc3RfY29tcGxldGlvbiggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCBieXRlc19zdGF0dXMgKQoreworICAgIGlmIChwal9pb3F1ZXVlX2lzX3BlbmRpbmcoa2V5LCBvcF9rZXkpKSB7CisJa2V5LT5jYk9iai0+Q2FuY2VsT3BlcmF0aW9uKG9wX2tleSwgYnl0ZXNfc3RhdHVzKTsKKyAgICB9CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworI2lmIGRlZmluZWQoUEpfSEFTX1RDUCkgJiYgUEpfSEFTX1RDUCAhPSAwCisvKioKKyAqIEluc3RydWN0IEkvTyBRdWV1ZSB0byBhY2NlcHQgaW5jb21pbmcgY29ubmVjdGlvbiBvbiB0aGUgc3BlY2lmaWVkIAorICogbGlzdGVuaW5nIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2FjY2VwdCggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJCSAgICAgICBwal9zb2NrX3QgKm5ld19zb2NrLAorCQkJCSAgICAgICBwal9zb2NrYWRkcl90ICpsb2NhbCwKKwkJCQkgICAgICAgcGpfc29ja2FkZHJfdCAqcmVtb3RlLAorCQkJCSAgICAgICBpbnQgKmFkZHJsZW4gKQoreworICAgIAorICAgIHJldHVybiBrZXktPmNiT2JqLT5TdGFydEFjY2VwdChvcF9rZXksIG5ld19zb2NrLCBsb2NhbCwgcmVtb3RlLCBhZGRybGVuKTsKK30KKworCisvKgorICogSW5pdGlhdGUgbm9uLWJsb2NraW5nIHNvY2tldCBjb25uZWN0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfY29ubmVjdCggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJCQljb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCQlpbnQgYWRkcmxlbiApCit7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworICAgIAorICAgIFJTb2NrZXQgJnJTb2NrID0ga2V5LT5jYk9iai0+Z2V0X3BqX3NvY2tldCgpLT5Tb2NrZXQoKTsKKyAgICBUSW5ldEFkZHIgaW5ldEFkZHI7CisgICAgVFJlcXVlc3RTdGF0dXMgcmVxU3RhdHVzOworCisgICAgLy8gUmV0dXJuIGZhaWx1cmUgaWYgYWNjZXNzIHBvaW50IGlzIG1hcmtlZCBhcyBkb3duIGJ5IGFwcC4KKyAgICBQSl9TWU1CSUFOX0NIRUNLX0NPTk5FQ1RJT04oKTsKKyAgICAKKyAgICAvLyBDb252ZXJ0IGFkZHJlc3MKKyAgICBzdGF0dXMgPSBQalN5bWJpYW5PUzo6cGoyQWRkcigqKGNvbnN0IHBqX3NvY2thZGRyKilhZGRyLCBhZGRybGVuLCAKKyAgICAJCQkJICBpbmV0QWRkcik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorICAgIAlyZXR1cm4gc3RhdHVzOworICAgIAorICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgYXN5bmMgY29ubmVjdCBmb3Igbm93LgorICAgIFBKX1RPRE8oSU9RVUVVRV9TVVBQT1JUX0FTWU5DX0NPTk5FQ1QpOworCisgICAgclNvY2suQ29ubmVjdChpbmV0QWRkciwgcmVxU3RhdHVzKTsKKyAgICBVc2VyOjpXYWl0Rm9yUmVxdWVzdChyZXFTdGF0dXMpOworCisgICAgaWYgKHJlcVN0YXR1cyA9PSBLRXJyTm9uZSkKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKworICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmVxU3RhdHVzLkludCgpKTsKK30KKworCisjZW5kaWYJLyogUEpfSEFTX1RDUCAqLworCisvKgorICogUG9sbCB0aGUgSS9PIFF1ZXVlIGZvciBjb21wbGV0ZWQgZXZlbnRzLgorICovCitQSl9ERUYoaW50KSBwal9pb3F1ZXVlX3BvbGwoIHBqX2lvcXVldWVfdCAqaW9xLAorCQkJICAgICBjb25zdCBwal90aW1lX3ZhbCAqdGltZW91dCkKK3sKKyAgICAvKiBQb2xsaW5nIGlzIG5vdCBuZWNlc3Nhcnkgb24gU3ltYmlhbiwgc2luY2UgYWxsIGFzeW5jIGFjdGl2aXRpZXMKKyAgICAgKiBhcmUgcmVnaXN0ZXJlZCB0byBhY3RpdmUgc2NoZWR1bGVyLgorICAgICAqLworICAgIFBKX1VOVVNFRF9BUkcoaW9xKTsKKyAgICBQSl9VTlVTRURfQVJHKHRpbWVvdXQpOworICAgIHJldHVybiAwOworfQorCisKKy8qCisgKiBJbnN0cnVjdCB0aGUgSS9PIFF1ZXVlIHRvIHJlYWQgZnJvbSB0aGUgc3BlY2lmaWVkIGhhbmRsZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlY3YoIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJICAgICB2b2lkICpidWZmZXIsCisJCQkJICAgICBwal9zc2l6ZV90ICpsZW5ndGgsCisJCQkJICAgICBwal91aW50MzJfdCBmbGFncyApCit7CisgICAgLy8gSWYgc29ja2V0IGhhcyByZWFkZXIsIGRlbGV0ZSBpdC4KKyAgICBpZiAoa2V5LT5jYk9iai0+Z2V0X3BqX3NvY2tldCgpLT5SZWFkZXIoKSkKKyAgICAJa2V5LT5jYk9iai0+Z2V0X3BqX3NvY2tldCgpLT5EZXN0cm95UmVhZGVyKCk7CisgICAgCisgICAgLy8gQ2xlYXIgZmxhZworICAgIGZsYWdzICY9IH5QSl9JT1FVRVVFX0FMV0FZU19BU1lOQzsKKyAgICByZXR1cm4ga2V5LT5jYk9iai0+U3RhcnRSZWFkKG9wX2tleSwgYnVmZmVyLCBsZW5ndGgsIGZsYWdzLCBOVUxMLCBOVUxMKTsKK30KKworCisvKgorICogVGhpcyBmdW5jdGlvbiBiZWhhdmVzIHNpbWlsYXJseSBhcyAjcGpfaW9xdWV1ZV9yZWN2KCksIGV4Y2VwdCB0aGF0IGl0IGlzCisgKiBub3JtYWxseSBjYWxsZWQgZm9yIHNvY2tldCwgYW5kIHRoZSByZW1vdGUgYWRkcmVzcyB3aWxsIGFsc28gYmUgcmV0dXJuZWQKKyAqIGFsb25nIHdpdGggdGhlIGRhdGEuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9yZWN2ZnJvbSggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJCSB2b2lkICpidWZmZXIsCisJCQkJCSBwal9zc2l6ZV90ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3VpbnQzMl90IGZsYWdzLAorCQkJCQkgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJIGludCAqYWRkcmxlbikKK3sKKyAgICBDUGpTb2NrZXQgKnNvY2sgPSBrZXktPmNiT2JqLT5nZXRfcGpfc29ja2V0KCk7CisgICAgCisgICAgLy8gSWYgYWRkcmVzcyBpcyBzcGVjaWZpZWQsIGNoZWNrIHRoYXQgdGhlIGxlbmd0aCBtYXRjaCB0aGUKKyAgICAvLyBhZGRyZXNzIGZhbWlseQorICAgIGlmIChhZGRyIHx8IGFkZHJsZW4pIHsKKyAgICAJUEpfQVNTRVJUX1JFVFVSTihhZGRyICYmIGFkZHJsZW4gJiYgKmFkZHJsZW4sIFBKX0VJTlZBTCk7CisgICAgCWlmIChzb2NrLT5HZXRBZigpID09IFBKX0FGX0lORVQpIHsKKyAgICAJICAgIFBKX0FTU0VSVF9SRVRVUk4oKmFkZHJsZW4+PShpbnQpc2l6ZW9mKHBqX3NvY2thZGRyX2luKSwgUEpfRUlOVkFMKTsKKyAgICAJfSBlbHNlIGlmIChzb2NrLT5HZXRBZigpID09IFBKX0FGX0lORVQ2KSB7CisgICAgCSAgICBQSl9BU1NFUlRfUkVUVVJOKCphZGRybGVuPj0oaW50KXNpemVvZihwal9zb2NrYWRkcl9pbjYpLCBQSl9FSU5WQUwpOworICAgIAl9CisgICAgfQorICAgIAorICAgIC8vIElmIHNvY2tldCBoYXMgcmVhZGVyLCBkZWxldGUgaXQuCisgICAgaWYgKHNvY2stPlJlYWRlcigpKQorICAgIAlzb2NrLT5EZXN0cm95UmVhZGVyKCk7CisgICAgCisgICAgaWYgKGtleS0+Y2JPYmotPklzQWN0aXZlKCkpCisJcmV0dXJuIFBKX0VCVVNZOworCisgICAgLy8gQ2xlYXIgZmxhZworICAgIGZsYWdzICY9IH5QSl9JT1FVRVVFX0FMV0FZU19BU1lOQzsKKyAgICByZXR1cm4ga2V5LT5jYk9iai0+U3RhcnRSZWFkKG9wX2tleSwgYnVmZmVyLCBsZW5ndGgsIGZsYWdzLCBhZGRyLCBhZGRybGVuKTsKK30KKworCisvKgorICogSW5zdHJ1Y3QgdGhlIEkvTyBRdWV1ZSB0byB3cml0ZSB0byB0aGUgaGFuZGxlLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2VuZCggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCQkgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisJCQkJICAgICBwal9zc2l6ZV90ICpsZW5ndGgsCisJCQkJICAgICBwal91aW50MzJfdCBmbGFncyApCit7CisgICAgVFJlcXVlc3RTdGF0dXMgcmVxU3RhdHVzOworICAgIFRQdHJDOCBhQnVmZmVyKChjb25zdCBUVWludDgqKWRhdGEsIChUSW50KSpsZW5ndGgpOworICAgIFRTb2NrWGZyTGVuZ3RoIGFMZW47CisgICAgCisgICAgUEpfVU5VU0VEX0FSRyhvcF9rZXkpOworCisgICAgLy8gRm9yY2luZyBwZW5kaW5nIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLgorICAgIFBKX0FTU0VSVF9SRVRVUk4oKGZsYWdzICYgUEpfSU9RVUVVRV9BTFdBWVNfQVNZTkMpPT0wLCBQSl9FSU5WQUwpOworCisgICAgLy8gUmV0dXJuIGZhaWx1cmUgaWYgYWNjZXNzIHBvaW50IGlzIG1hcmtlZCBhcyBkb3duIGJ5IGFwcC4KKyAgICBQSl9TWU1CSUFOX0NIRUNLX0NPTk5FQ1RJT04oKTsKKworICAgIC8vIENsZWFyIGZsYWcKKyAgICBmbGFncyAmPSB+UEpfSU9RVUVVRV9BTFdBWVNfQVNZTkM7CisKKyAgICBrZXktPmNiT2JqLT5nZXRfcGpfc29ja2V0KCktPlNvY2tldCgpLlNlbmQoYUJ1ZmZlciwgZmxhZ3MsIHJlcVN0YXR1cywgYUxlbik7CisgICAgVXNlcjo6V2FpdEZvclJlcXVlc3QocmVxU3RhdHVzKTsKKworICAgIGlmIChyZXFTdGF0dXMuSW50KCkgIT0gS0Vyck5vbmUpCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihyZXFTdGF0dXMuSW50KCkpOworCisgICAgLy9BdCBsZWFzdCBpbiBVSVEgRW11bGF0b3IsIGFMZW4uTGVuZ3RoKCkgcmVwb3J0cyBpbmNvcnJlY3QgbGVuZ3RoCisgICAgLy9mb3IgVURQIChzb21lIG5ld2xjLmNvbSB1c2VycyBzZWVtIHRvIGhhdmUgcmVwb3J0ZWQgdGhpcyB0b28pLgorICAgIC8vKmxlbmd0aCA9IGFMZW4uTGVuZ3RoKCk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworLyoKKyAqIEluc3RydWN0IHRoZSBJL08gUXVldWUgdG8gd3JpdGUgdG8gdGhlIGhhbmRsZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3NlbmR0byggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJCSAgICAgICBjb25zdCB2b2lkICpkYXRhLAorCQkJCSAgICAgICBwal9zc2l6ZV90ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal91aW50MzJfdCBmbGFncywKKwkJCQkgICAgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkgICAgICAgaW50IGFkZHJsZW4pCit7CisgICAgVFJlcXVlc3RTdGF0dXMgcmVxU3RhdHVzOworICAgIFRQdHJDOCBhQnVmZmVyOworICAgIFRJbmV0QWRkciBpbmV0QWRkcjsKKyAgICBUU29ja1hmckxlbmd0aCBhTGVuOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAKKyAgICBQSl9VTlVTRURfQVJHKG9wX2tleSk7CisKKyAgICAvLyBGb3JjaW5nIHBlbmRpbmcgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgUEpfQVNTRVJUX1JFVFVSTigoZmxhZ3MgJiBQSl9JT1FVRVVFX0FMV0FZU19BU1lOQyk9PTAsIFBKX0VJTlZBTCk7CisKKyAgICAvLyBSZXR1cm4gZmFpbHVyZSBpZiBhY2Nlc3MgcG9pbnQgaXMgbWFya2VkIGFzIGRvd24gYnkgYXBwLgorICAgIFBKX1NZTUJJQU5fQ0hFQ0tfQ09OTkVDVElPTigpOworCisgICAgLy8gQ29udmVydCBhZGRyZXNzCisgICAgc3RhdHVzID0gUGpTeW1iaWFuT1M6OnBqMkFkZHIoKihjb25zdCBwal9zb2NrYWRkciopYWRkciwgYWRkcmxlbiwgCisgICAgCQkJCSAgaW5ldEFkZHIpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKyAgICAJcmV0dXJuIHN0YXR1czsKKyAgICAKKyAgICAvLyBDbGVhciBmbGFnCisgICAgZmxhZ3MgJj0gflBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DOworCisgICAgYUJ1ZmZlci5TZXQoKGNvbnN0IFRVaW50OCopZGF0YSwgKFRJbnQpKmxlbmd0aCk7CisgICAgQ1BqU29ja2V0ICpwalNvY2sgPSBrZXktPmNiT2JqLT5nZXRfcGpfc29ja2V0KCk7CisKKyAgICBwalNvY2stPlNvY2tldCgpLlNlbmRUbyhhQnVmZmVyLCBpbmV0QWRkciwgZmxhZ3MsIHJlcVN0YXR1cywgYUxlbik7CisgICAgVXNlcjo6V2FpdEZvclJlcXVlc3QocmVxU3RhdHVzKTsKKworICAgIGlmIChyZXFTdGF0dXMuSW50KCkgIT0gS0Vyck5vbmUpCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihyZXFTdGF0dXMuSW50KCkpOworCisgICAgLy9BdCBsZWFzdCBpbiBVSVEgRW11bGF0b3IsIGFMZW4uTGVuZ3RoKCkgcmVwb3J0cyBpbmNvcnJlY3QgbGVuZ3RoCisgICAgLy9mb3IgVURQIChzb21lIG5ld2xjLmNvbSB1c2VycyBzZWVtIHRvIGhhdmUgcmVwb3J0ZWQgdGhpcyB0b28pLgorICAgIC8vKmxlbmd0aCA9IGFMZW4uTGVuZ3RoKCk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9zZXRfY29uY3VycmVuY3kocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJCQkJCQkJCQkgICBwal9ib29sX3QgYWxsb3cpCit7CisJLyogTm90IHN1cHBvcnRlZCwganVzdCByZXR1cm4gUEpfU1VDQ0VTUyBzaWxlbnRseSAqLworCVBKX1VOVVNFRF9BUkcoa2V5KTsKKwlQSl9VTlVTRURfQVJHKGFsbG93KTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2xvY2tfa2V5KHBqX2lvcXVldWVfa2V5X3QgKmtleSkKK3sKKwkvKiBOb3Qgc3VwcG9ydGVkLCBqdXN0IHJldHVybiBQSl9TVUNDRVNTIHNpbGVudGx5ICovCisJUEpfVU5VU0VEX0FSRyhrZXkpOworCXJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfdW5sb2NrX2tleShwal9pb3F1ZXVlX2tleV90ICprZXkpCit7CisJLyogTm90IHN1cHBvcnRlZCwganVzdCByZXR1cm4gUEpfU1VDQ0VTUyBzaWxlbnRseSAqLworCVBKX1VOVVNFRF9BUkcoa2V5KTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pb3F1ZXVlX3dpbm50LmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovaW9xdWV1ZV93aW5udC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZThhYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovaW9xdWV1ZV93aW5udC5jCkBAIC0wLDAgKzEsMTQ0MyBAQAorLyogJElkOiBpb3F1ZXVlX3dpbm50LmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9pb3F1ZXVlLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9sb2NrLmg+CisjaW5jbHVkZSA8cGovcG9vbC5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL3NvY2suaD4KKyNpbmNsdWRlIDxwai9hcnJheS5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3NvY2tldC5oPgorCisKKyNpZiBkZWZpbmVkKFBKX0hBU19XSU5TT0NLMl9IKSAmJiBQSl9IQVNfV0lOU09DSzJfSCAhPSAwCisjICBpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2VsaWYgZGVmaW5lZChQSl9IQVNfV0lOU09DS19IKSAmJiBQSl9IQVNfV0lOU09DS19IICE9IDAKKyMgIGluY2x1ZGUgPHdpbnNvY2suaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChQSl9IQVNfTVNXU09DS19IKSAmJiBQSl9IQVNfTVNXU09DS19IICE9IDAKKyMgIGluY2x1ZGUgPG1zd3NvY2suaD4KKyNlbmRpZgorCisKKy8qIFRoZSBhZGRyZXNzIHNwZWNpZmllZCBpbiBBY2NlcHRFeCgpIG11c3QgYmUgMTYgbW9yZSB0aGFuIHRoZSBzaXplIG9mCisgKiBTT0NLQUREUiAoc291cmNlOiBNU0ROKS4KKyAqLworI2RlZmluZSBBQ0NFUFRfQUREUl9MRU4JICAgIChzaXplb2YocGpfc29ja2FkZHJfaW4pKzE2KQorCit0eXBlZGVmIHN0cnVjdCBnZW5lcmljX292ZXJsYXBwZWQKK3sKKyAgICBXU0FPVkVSTEFQUEVECSAgIG92ZXJsYXBwZWQ7CisgICAgcGpfaW9xdWV1ZV9vcGVyYXRpb25fZSBvcGVyYXRpb247Cit9IGdlbmVyaWNfb3ZlcmxhcHBlZDsKKworLyoKKyAqIE9WRVJMQVBQUEVEIHN0cnVjdHVyZSBmb3Igc2VuZCBhbmQgcmVjZWl2ZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgaW9xdWV1ZV9vdmVybGFwcGVkCit7CisgICAgV1NBT1ZFUkxBUFBFRAkgICBvdmVybGFwcGVkOworICAgIHBqX2lvcXVldWVfb3BlcmF0aW9uX2Ugb3BlcmF0aW9uOworICAgIFdTQUJVRgkJICAgd3NhYnVmOworICAgIHBqX3NvY2thZGRyX2luICAgICAgICAgZHVtbXlfYWRkcjsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIGR1bW15X2FkZHJsZW47Cit9IGlvcXVldWVfb3ZlcmxhcHBlZDsKKworI2lmIFBKX0hBU19UQ1AKKy8qCisgKiBPVkVSTEFQIHN0cnVjdHVyZSBmb3IgYWNjZXB0LgorICovCit0eXBlZGVmIHN0cnVjdCBpb3F1ZXVlX2FjY2VwdF9yZWMKK3sKKyAgICBXU0FPVkVSTEFQUEVECSAgICBvdmVybGFwcGVkOworICAgIHBqX2lvcXVldWVfb3BlcmF0aW9uX2UgIG9wZXJhdGlvbjsKKyAgICBwal9zb2NrX3QJCSAgICBuZXdzb2NrOworICAgIHBqX3NvY2tfdAkJICAgKm5ld3NvY2tfcHRyOworICAgIGludAkJCSAgICphZGRybGVuOworICAgIHZvaWQJCSAgICpyZW1vdGU7CisgICAgdm9pZAkJICAgKmxvY2FsOworICAgIGNoYXIJCSAgICBhY2NlcHRfYnVmWzIgKiBBQ0NFUFRfQUREUl9MRU5dOworfSBpb3F1ZXVlX2FjY2VwdF9yZWM7CisjZW5kaWYKKworLyoKKyAqIFN0cnVjdHVyZSB0byBob2xkIHBlbmRpbmcgb3BlcmF0aW9uIGtleS4KKyAqLwordW5pb24gb3BlcmF0aW9uX2tleQoreworICAgIGdlbmVyaWNfb3ZlcmxhcHBlZCAgICAgIGdlbmVyaWM7CisgICAgaW9xdWV1ZV9vdmVybGFwcGVkICAgICAgb3ZlcmxhcHBlZDsKKyNpZiBQSl9IQVNfVENQCisgICAgaW9xdWV1ZV9hY2NlcHRfcmVjICAgICAgYWNjZXB0OworI2VuZGlmCit9OworCisvKiBUeXBlIG9mIGhhbmRsZSBpbiB0aGUga2V5LiAqLworZW51bSBoYW5kbGVfdHlwZQoreworICAgIEhORF9JU19VTktOT1dOLAorICAgIEhORF9JU19GSUxFLAorICAgIEhORF9JU19TT0NLRVQsCit9OworCitlbnVtIHsgUE9TVF9RVUlUX0xFTiA9IDB4RkZGRkRFQURVTCB9OworCisvKgorICogU3RydWN0dXJlIGZvciBpbmRpdmlkdWFsIHNvY2tldC4KKyAqLworc3RydWN0IHBqX2lvcXVldWVfa2V5X3QKK3sKKyAgICBQSl9ERUNMX0xJU1RfTUVNQkVSKHN0cnVjdCBwal9pb3F1ZXVlX2tleV90KTsKKworICAgIHBqX2lvcXVldWVfdCAgICAgICAqaW9xdWV1ZTsKKyAgICBIQU5ETEUJCWhuZDsKKyAgICB2b2lkCSAgICAgICAqdXNlcl9kYXRhOworICAgIGVudW0gaGFuZGxlX3R5cGUgICAgaG5kX3R5cGU7CisgICAgcGpfaW9xdWV1ZV9jYWxsYmFjawljYjsKKyAgICBwal9ib29sX3QJCWFsbG93X2NvbmN1cnJlbnQ7CisKKyNpZiBQSl9IQVNfVENQCisgICAgaW50CQkJY29ubmVjdGluZzsKKyNlbmRpZgorCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIHBqX2F0b21pY190CSAgICAgICAqcmVmX2NvdW50OworICAgIHBqX2Jvb2xfdAkJY2xvc2luZzsKKyAgICBwal90aW1lX3ZhbAkJZnJlZV90aW1lOworICAgIHBqX211dGV4X3QJICAgICAgICptdXRleDsKKyNlbmRpZgorCit9OworCisvKgorICogSU8gUXVldWUgc3RydWN0dXJlLgorICovCitzdHJ1Y3QgcGpfaW9xdWV1ZV90Cit7CisgICAgSEFORExFCSAgICAgIGlvY3A7CisgICAgcGpfbG9ja190ICAgICAgICAqbG9jazsKKyAgICBwal9ib29sX3QgICAgICAgICBhdXRvX2RlbGV0ZV9sb2NrOworICAgIHBqX2Jvb2xfdAkgICAgICBkZWZhdWx0X2NvbmN1cnJlbmN5OworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIHBqX2lvcXVldWVfa2V5X3QgIGFjdGl2ZV9saXN0OworICAgIHBqX2lvcXVldWVfa2V5X3QgIGZyZWVfbGlzdDsKKyAgICBwal9pb3F1ZXVlX2tleV90ICBjbG9zaW5nX2xpc3Q7CisjZW5kaWYKKworICAgIC8qIFRoZXNlIGFyZSB0byBrZWVwIHRyYWNrIG9mIGNvbm5lY3Rpbmcgc29ja2V0cyAqLworI2lmIFBKX0hBU19UQ1AKKyAgICB1bnNpZ25lZAkgICAgICBldmVudF9jb3VudDsKKyAgICBIQU5ETEUJICAgICAgZXZlbnRfcG9vbFtNQVhJTVVNX1dBSVRfT0JKRUNUUysxXTsKKyAgICB1bnNpZ25lZAkgICAgICBjb25uZWN0aW5nX2NvdW50OworICAgIEhBTkRMRQkgICAgICBjb25uZWN0aW5nX2hhbmRsZXNbTUFYSU1VTV9XQUlUX09CSkVDVFMrMV07CisgICAgcGpfaW9xdWV1ZV9rZXlfdCAqY29ubmVjdGluZ19rZXlzW01BWElNVU1fV0FJVF9PQkpFQ1RTKzFdOworI2VuZGlmCit9OworCisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisvKiBQcm90b3R5cGUgKi8KK3N0YXRpYyB2b2lkIHNjYW5fY2xvc2luZ19rZXlzKHBqX2lvcXVldWVfdCAqaW9xdWV1ZSk7CisjZW5kaWYKKworCisjaWYgUEpfSEFTX1RDUAorLyoKKyAqIFByb2Nlc3MgdGhlIHNvY2tldCB3aGVuIHRoZSBvdmVybGFwcGVkIGFjY2VwdCgpIGNvbXBsZXRlZC4KKyAqLworc3RhdGljIHZvaWQgaW9xdWV1ZV9vbl9hY2NlcHRfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9xdWV1ZV9hY2NlcHRfcmVjICphY2NlcHRfb3ZlcmxhcHBlZCkKK3sKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKmxvY2FsOworICAgIHN0cnVjdCBzb2NrYWRkciAqcmVtb3RlOworICAgIGludCBsb2NhbGxlbiwgcmVtb3RlbGVuOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvKiBPbiBXaW5YUCBvciBsYXRlciwgdXNlIFNPX1VQREFURV9BQ0NFUFRfQ09OVEVYVCBzbyB0aGF0IHNvY2tldCAKKyAgICAgKiBhZGRyZXNzZXMgY2FuIGJlIG9idGFpbmVkIHdpdGggZ2V0c29ja25hbWUoKSBhbmQgZ2V0cGVlcm5hbWUoKS4KKyAgICAgKi8KKyAgICBzdGF0dXMgPSBzZXRzb2Nrb3B0KGFjY2VwdF9vdmVybGFwcGVkLT5uZXdzb2NrLCBTT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgU09fVVBEQVRFX0FDQ0VQVF9DT05URVhULCAKKyAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKikma2V5LT5obmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFNPQ0tFVCkpOworICAgIC8qIFNPX1VQREFURV9BQ0NFUFRfQ09OVEVYVCBpcyBmb3IgV2luWFAgb3IgbGF0ZXIuCisgICAgICogU28gaWdub3JlIHRoZSBlcnJvciBzdGF0dXMuCisgICAgICovCisKKyAgICAvKiBPcGVyYXRpb24gY29tcGxldGUgaW1tZWRpYXRlbHkuICovCisgICAgaWYgKGFjY2VwdF9vdmVybGFwcGVkLT5hZGRybGVuKSB7CisJR2V0QWNjZXB0RXhTb2NrYWRkcnMoIGFjY2VwdF9vdmVybGFwcGVkLT5hY2NlcHRfYnVmLAorCQkJICAgICAgMCwgCisJCQkgICAgICBBQ0NFUFRfQUREUl9MRU4sCisJCQkgICAgICBBQ0NFUFRfQUREUl9MRU4sCisJCQkgICAgICAmbG9jYWwsCisJCQkgICAgICAmbG9jYWxsZW4sCisJCQkgICAgICAmcmVtb3RlLAorCQkJICAgICAgJnJlbW90ZWxlbik7CisJaWYgKCphY2NlcHRfb3ZlcmxhcHBlZC0+YWRkcmxlbiA+PSBsb2NhbGxlbikgeworCSAgICBpZiAoYWNjZXB0X292ZXJsYXBwZWQtPmxvY2FsKQorCQlwal9tZW1jcHkoYWNjZXB0X292ZXJsYXBwZWQtPmxvY2FsLCBsb2NhbCwgbG9jYWxsZW4pOworCSAgICBpZiAoYWNjZXB0X292ZXJsYXBwZWQtPnJlbW90ZSkKKwkJcGpfbWVtY3B5KGFjY2VwdF9vdmVybGFwcGVkLT5yZW1vdGUsIHJlbW90ZSwgbG9jYWxsZW4pOworCX0gZWxzZSB7CisJICAgIGlmIChhY2NlcHRfb3ZlcmxhcHBlZC0+bG9jYWwpCisJCXBqX2J6ZXJvKGFjY2VwdF9vdmVybGFwcGVkLT5sb2NhbCwgCisJCQkgKmFjY2VwdF9vdmVybGFwcGVkLT5hZGRybGVuKTsKKwkgICAgaWYgKGFjY2VwdF9vdmVybGFwcGVkLT5yZW1vdGUpCisJCXBqX2J6ZXJvKGFjY2VwdF9vdmVybGFwcGVkLT5yZW1vdGUsIAorCQkJICphY2NlcHRfb3ZlcmxhcHBlZC0+YWRkcmxlbik7CisJfQorCisJKmFjY2VwdF9vdmVybGFwcGVkLT5hZGRybGVuID0gbG9jYWxsZW47CisgICAgfQorICAgIGlmIChhY2NlcHRfb3ZlcmxhcHBlZC0+bmV3c29ja19wdHIpCisgICAgICAgICphY2NlcHRfb3ZlcmxhcHBlZC0+bmV3c29ja19wdHIgPSBhY2NlcHRfb3ZlcmxhcHBlZC0+bmV3c29jazsKKyAgICBhY2NlcHRfb3ZlcmxhcHBlZC0+b3BlcmF0aW9uID0gMDsKK30KKworc3RhdGljIHZvaWQgZXJhc2VfY29ubmVjdGluZ19zb2NrZXQoIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwgdW5zaWduZWQgcG9zKQoreworICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleSA9IGlvcXVldWUtPmNvbm5lY3Rpbmdfa2V5c1twb3NdOworICAgIEhBTkRMRSBoRXZlbnQgPSBpb3F1ZXVlLT5jb25uZWN0aW5nX2hhbmRsZXNbcG9zXTsKKworICAgIC8qIFJlbW92ZSBrZXkgZnJvbSBhcnJheSBvZiBjb25uZWN0aW5nIGhhbmRsZXMuICovCisgICAgcGpfYXJyYXlfZXJhc2UoaW9xdWV1ZS0+Y29ubmVjdGluZ19rZXlzLCBzaXplb2Yoa2V5KSwKKwkJICAgaW9xdWV1ZS0+Y29ubmVjdGluZ19jb3VudCwgcG9zKTsKKyAgICBwal9hcnJheV9lcmFzZShpb3F1ZXVlLT5jb25uZWN0aW5nX2hhbmRsZXMsIHNpemVvZihIQU5ETEUpLAorCQkgICBpb3F1ZXVlLT5jb25uZWN0aW5nX2NvdW50LCBwb3MpOworICAgIC0taW9xdWV1ZS0+Y29ubmVjdGluZ19jb3VudDsKKworICAgIC8qIERpc2Fzc29jaWF0ZSB0aGUgc29ja2V0IGZyb20gdGhlIGV2ZW50LiAqLworICAgIFdTQUV2ZW50U2VsZWN0KChwal9zb2NrX3Qpa2V5LT5obmQsIGhFdmVudCwgMCk7CisKKyAgICAvKiBQdXQgZXZlbnQgb2JqZWN0IHRvIHBvb2wuICovCisgICAgaWYgKGlvcXVldWUtPmV2ZW50X2NvdW50IDwgTUFYSU1VTV9XQUlUX09CSkVDVFMpIHsKKwlpb3F1ZXVlLT5ldmVudF9wb29sW2lvcXVldWUtPmV2ZW50X2NvdW50KytdID0gaEV2ZW50OworICAgIH0gZWxzZSB7CisJLyogU2hvdWxkbid0IGhhcHBlbi4gVGhlcmUgc2hvdWxkIGJlIG5vIG1vcmUgcGVuZGluZyBjb25uZWN0aW9ucworCSAqIHRoYW4gbWF4LiAKKwkgKi8KKwlwal9hc3NlcnQoMCk7CisJQ2xvc2VIYW5kbGUoaEV2ZW50KTsKKyAgICB9CisKK30KKworLyoKKyAqIFBvbGwgZm9yIHRoZSBjb21wbGV0aW9uIG9mIG5vbi1ibG9ja2luZyBjb25uZWN0KCkuCisgKiBJZiB0aGVyZSdzIGEgY29tcGxldGlvbiwgdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUga2V5IG9mIHRoZSBjb21wbGV0ZWQKKyAqIHNvY2tldCwgYW5kICdyZXN1bHQnIGFyZ3VtZW50IGNvbnRhaW5zIHRoZSBjb25uZWN0KCkgcmVzdWx0LiBJZiBjb25uZWN0KCkKKyAqIHN1Y2NlZWRlZCwgJ3Jlc3VsdCcgd2lsbCBoYXZlIHZhbHVlIHplcm8sIG90aGVyd2lzZSB3aWxsIGhhdmUgdGhlIGVycm9yCisgKiBjb2RlLgorICovCitzdGF0aWMgaW50IGNoZWNrX2Nvbm5lY3RpbmcoIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSApCit7CisgICAgaWYgKGlvcXVldWUtPmNvbm5lY3RpbmdfY291bnQpIHsKKwlpbnQgaSwgY291bnQ7CisJc3RydWN0IAorCXsKKwkgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5OworCSAgICBwal9zdGF0dXNfdAkgICAgICBzdGF0dXM7CisJfSBldmVudHNbUEpfSU9RVUVVRV9NQVhfRVZFTlRTX0lOX1NJTkdMRV9QT0xMLTFdOworCisJcGpfbG9ja19hY3F1aXJlKGlvcXVldWUtPmxvY2spOworCWZvciAoY291bnQ9MDsgY291bnQ8UEpfSU9RVUVVRV9NQVhfRVZFTlRTX0lOX1NJTkdMRV9QT0xMLTE7ICsrY291bnQpIHsKKwkgICAgRFdPUkQgcmVzdWx0OworCisJICAgIHJlc3VsdCA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMoaW9xdWV1ZS0+Y29ubmVjdGluZ19jb3VudCwKKwkJCQkJICAgIGlvcXVldWUtPmNvbm5lY3RpbmdfaGFuZGxlcywKKwkJCQkJICAgIEZBTFNFLCAwKTsKKwkgICAgaWYgKHJlc3VsdCA+PSBXQUlUX09CSkVDVF8wICYmIAorCQlyZXN1bHQgPCBXQUlUX09CSkVDVF8wK2lvcXVldWUtPmNvbm5lY3RpbmdfY291bnQpIAorCSAgICB7CisJCVdTQU5FVFdPUktFVkVOVFMgbmV0X2V2ZW50czsKKworCQkvKiBHb3QgY29tcGxldGVkIGNvbm5lY3QoKS4gKi8KKwkJdW5zaWduZWQgcG9zID0gcmVzdWx0IC0gV0FJVF9PQkpFQ1RfMDsKKwkJZXZlbnRzW2NvdW50XS5rZXkgPSBpb3F1ZXVlLT5jb25uZWN0aW5nX2tleXNbcG9zXTsKKworCQkvKiBTZWUgd2hldGhlciBjb25uZWN0IGhhcyBzdWNjZWVkZWQuICovCisJCVdTQUVudW1OZXR3b3JrRXZlbnRzKChwal9zb2NrX3QpZXZlbnRzW2NvdW50XS5rZXktPmhuZCwgCisJCQkJICAgICBpb3F1ZXVlLT5jb25uZWN0aW5nX2hhbmRsZXNbcG9zXSwgCisJCQkJICAgICAmbmV0X2V2ZW50cyk7CisJCWV2ZW50c1tjb3VudF0uc3RhdHVzID0gCisJCSAgICBQSl9TVEFUVVNfRlJPTV9PUyhuZXRfZXZlbnRzLmlFcnJvckNvZGVbRkRfQ09OTkVDVF9CSVRdKTsKKworCQkvKiBFcmFzZSBzb2NrZXQgZnJvbSBwZW5kaW5nIGNvbm5lY3QuICovCisJCWVyYXNlX2Nvbm5lY3Rpbmdfc29ja2V0KGlvcXVldWUsIHBvcyk7CisJICAgIH0gZWxzZSB7CisJCS8qIE5vIG1vcmUgZXZlbnRzICovCisJCWJyZWFrOworCSAgICB9CisJfQorCXBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKKworCS8qIENhbGwgY2FsbGJhY2tzLiAqLworCWZvciAoaT0wOyBpPGNvdW50OyArK2kpIHsKKwkgICAgaWYgKGV2ZW50c1tpXS5rZXktPmNiLm9uX2Nvbm5lY3RfY29tcGxldGUpIHsKKwkJZXZlbnRzW2ldLmtleS0+Y2Iub25fY29ubmVjdF9jb21wbGV0ZShldmVudHNbaV0ua2V5LCAKKwkJCQkJCSAgICAgIGV2ZW50c1tpXS5zdGF0dXMpOworCSAgICB9CisJfQorCisJcmV0dXJuIGNvdW50OworICAgIH0KKworICAgIHJldHVybiAwOworICAgIAorfQorI2VuZGlmCisKKy8qCisgKiBwal9pb3F1ZXVlX25hbWUoKQorICovCitQSl9ERUYoY29uc3QgY2hhciopIHBqX2lvcXVldWVfbmFtZSh2b2lkKQoreworICAgIHJldHVybiAiaW9jcCI7Cit9CisKKy8qCisgKiBwal9pb3F1ZXVlX2NyZWF0ZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9jcmVhdGUoIHBqX3Bvb2xfdCAqcG9vbCwgCisJCQkJICAgICAgIHBqX3NpemVfdCBtYXhfZmQsCisJCQkJICAgICAgIHBqX2lvcXVldWVfdCAqKnBfaW9xdWV1ZSkKK3sKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWU7CisgICAgdW5zaWduZWQgaTsKKyAgICBwal9zdGF0dXNfdCByYzsKKworICAgIFBKX1VOVVNFRF9BUkcobWF4X2ZkKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBvb2wgJiYgcF9pb3F1ZXVlLCBQSl9FSU5WQUwpOworCisgICAgcmMgPSBzaXplb2YodW5pb24gb3BlcmF0aW9uX2tleSk7CisKKyAgICAvKiBDaGVjayB0aGF0IHNpemVvZihwal9pb3F1ZXVlX29wX2tleV90KSBtYWtlcyBzZW5zZS4gKi8KKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNpemVvZihwal9pb3F1ZXVlX29wX2tleV90KS1zaXplb2Yodm9pZCopID49IAorICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuaW9uIG9wZXJhdGlvbl9rZXkpLCBQSl9FQlVHKTsKKworICAgIC8qIENyZWF0ZSBJT0NQICovCisgICAgaW9xdWV1ZSA9IHBqX3Bvb2xfemFsbG9jKHBvb2wsIHNpemVvZigqaW9xdWV1ZSkpOworICAgIGlvcXVldWUtPmlvY3AgPSBDcmVhdGVJb0NvbXBsZXRpb25Qb3J0KElOVkFMSURfSEFORExFX1ZBTFVFLCBOVUxMLCAwLCAwKTsKKyAgICBpZiAoaW9xdWV1ZS0+aW9jcCA9PSBOVUxMKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgLyogQ3JlYXRlIElPQ1AgbXV0ZXggKi8KKyAgICByYyA9IHBqX2xvY2tfY3JlYXRlX3JlY3Vyc2l2ZV9tdXRleChwb29sLCBOVUxMLCAmaW9xdWV1ZS0+bG9jayk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlDbG9zZUhhbmRsZShpb3F1ZXVlLT5pb2NwKTsKKwlyZXR1cm4gcmM7CisgICAgfQorCisgICAgaW9xdWV1ZS0+YXV0b19kZWxldGVfbG9jayA9IFBKX1RSVUU7CisgICAgaW9xdWV1ZS0+ZGVmYXVsdF9jb25jdXJyZW5jeSA9IFBKX0lPUVVFVUVfREVGQVVMVF9BTExPV19DT05DVVJSRU5DWTsKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyAgICAvKgorICAgICAqIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBrZXkgcG9vbHMuCisgICAgICovCisgICAgcGpfbGlzdF9pbml0KCZpb3F1ZXVlLT5hY3RpdmVfbGlzdCk7CisgICAgcGpfbGlzdF9pbml0KCZpb3F1ZXVlLT5mcmVlX2xpc3QpOworICAgIHBqX2xpc3RfaW5pdCgmaW9xdWV1ZS0+Y2xvc2luZ19saXN0KTsKKworICAgIC8qIFByZWFsbG9jYXRlIGtleXMgYWNjb3JkaW5nIHRvIG1heF9mZCBzZXR0aW5nLCBhbmQgcHV0IHRoZW0KKyAgICAgKiBpbiBmcmVlX2xpc3QuCisgICAgICovCisgICAgZm9yIChpPTA7IGk8bWF4X2ZkOyArK2kpIHsKKwlwal9pb3F1ZXVlX2tleV90ICprZXk7CisKKwlrZXkgPSBwal9wb29sX2FsbG9jKHBvb2wsIHNpemVvZihwal9pb3F1ZXVlX2tleV90KSk7CisKKwlyYyA9IHBqX2F0b21pY19jcmVhdGUocG9vbCwgMCwgJmtleS0+cmVmX2NvdW50KTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBrZXkgPSBpb3F1ZXVlLT5mcmVlX2xpc3QubmV4dDsKKwkgICAgd2hpbGUgKGtleSAhPSAmaW9xdWV1ZS0+ZnJlZV9saXN0KSB7CisJCXBqX2F0b21pY19kZXN0cm95KGtleS0+cmVmX2NvdW50KTsKKwkJcGpfbXV0ZXhfZGVzdHJveShrZXktPm11dGV4KTsKKwkJa2V5ID0ga2V5LT5uZXh0OworCSAgICB9CisJICAgIENsb3NlSGFuZGxlKGlvcXVldWUtPmlvY3ApOworCSAgICByZXR1cm4gcmM7CisJfQorCisJcmMgPSBwal9tdXRleF9jcmVhdGVfcmVjdXJzaXZlKHBvb2wsICJpb3FrZXkiLCAma2V5LT5tdXRleCk7CisJaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgcGpfYXRvbWljX2Rlc3Ryb3koa2V5LT5yZWZfY291bnQpOworCSAgICBrZXkgPSBpb3F1ZXVlLT5mcmVlX2xpc3QubmV4dDsKKwkgICAgd2hpbGUgKGtleSAhPSAmaW9xdWV1ZS0+ZnJlZV9saXN0KSB7CisJCXBqX2F0b21pY19kZXN0cm95KGtleS0+cmVmX2NvdW50KTsKKwkJcGpfbXV0ZXhfZGVzdHJveShrZXktPm11dGV4KTsKKwkJa2V5ID0ga2V5LT5uZXh0OworCSAgICB9CisJICAgIENsb3NlSGFuZGxlKGlvcXVldWUtPmlvY3ApOworCSAgICByZXR1cm4gcmM7CisJfQorCisJcGpfbGlzdF9wdXNoX2JhY2soJmlvcXVldWUtPmZyZWVfbGlzdCwga2V5KTsKKyAgICB9CisjZW5kaWYKKworICAgICpwX2lvcXVldWUgPSBpb3F1ZXVlOworCisgICAgUEpfTE9HKDQsICgicGpsaWIiLCAiV2luTlQgSU9DUCBJL08gUXVldWUgY3JlYXRlZCAoJXApIiwgaW9xdWV1ZSkpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfaW9xdWV1ZV9kZXN0cm95KCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2Rlc3Ryb3koIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSApCit7CisjaWYgUEpfSEFTX1RDUAorICAgIHVuc2lnbmVkIGk7CisjZW5kaWYKKyAgICBwal9pb3F1ZXVlX2tleV90ICprZXk7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oaW9xdWV1ZSwgUEpfRUlOVkFMKTsKKworICAgIHBqX2xvY2tfYWNxdWlyZShpb3F1ZXVlLT5sb2NrKTsKKworI2lmIFBKX0hBU19UQ1AKKyAgICAvKiBEZXN0cm95IGV2ZW50cyBpbiB0aGUgcG9vbCAqLworICAgIGZvciAoaT0wOyBpPGlvcXVldWUtPmV2ZW50X2NvdW50OyArK2kpIHsKKwlDbG9zZUhhbmRsZShpb3F1ZXVlLT5ldmVudF9wb29sW2ldKTsKKyAgICB9CisgICAgaW9xdWV1ZS0+ZXZlbnRfY291bnQgPSAwOworI2VuZGlmCisKKyAgICBpZiAoQ2xvc2VIYW5kbGUoaW9xdWV1ZS0+aW9jcCkgIT0gVFJVRSkKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKEdldExhc3RFcnJvcigpKTsKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyAgICAvKiBEZXN0cm95IHJlZmVyZW5jZSBjb3VudGVycyAqLworICAgIGtleSA9IGlvcXVldWUtPmFjdGl2ZV9saXN0Lm5leHQ7CisgICAgd2hpbGUgKGtleSAhPSAmaW9xdWV1ZS0+YWN0aXZlX2xpc3QpIHsKKwlwal9hdG9taWNfZGVzdHJveShrZXktPnJlZl9jb3VudCk7CisJcGpfbXV0ZXhfZGVzdHJveShrZXktPm11dGV4KTsKKwlrZXkgPSBrZXktPm5leHQ7CisgICAgfQorCisgICAga2V5ID0gaW9xdWV1ZS0+Y2xvc2luZ19saXN0Lm5leHQ7CisgICAgd2hpbGUgKGtleSAhPSAmaW9xdWV1ZS0+Y2xvc2luZ19saXN0KSB7CisJcGpfYXRvbWljX2Rlc3Ryb3koa2V5LT5yZWZfY291bnQpOworCXBqX211dGV4X2Rlc3Ryb3koa2V5LT5tdXRleCk7CisJa2V5ID0ga2V5LT5uZXh0OworICAgIH0KKworICAgIGtleSA9IGlvcXVldWUtPmZyZWVfbGlzdC5uZXh0OworICAgIHdoaWxlIChrZXkgIT0gJmlvcXVldWUtPmZyZWVfbGlzdCkgeworCXBqX2F0b21pY19kZXN0cm95KGtleS0+cmVmX2NvdW50KTsKKwlwal9tdXRleF9kZXN0cm95KGtleS0+bXV0ZXgpOworCWtleSA9IGtleS0+bmV4dDsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChpb3F1ZXVlLT5hdXRvX2RlbGV0ZV9sb2NrKQorICAgICAgICBwal9sb2NrX2Rlc3Ryb3koaW9xdWV1ZS0+bG9jayk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2V0X2RlZmF1bHRfY29uY3VycmVuY3kocGpfaW9xdWV1ZV90ICppb3F1ZXVlLAorCQkJCQkJICAgICAgIHBqX2Jvb2xfdCBhbGxvdykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGlvcXVldWUgIT0gTlVMTCwgUEpfRUlOVkFMKTsKKyAgICBpb3F1ZXVlLT5kZWZhdWx0X2NvbmN1cnJlbmN5ID0gYWxsb3c7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBwal9pb3F1ZXVlX3NldF9sb2NrKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3NldF9sb2NrKCBwal9pb3F1ZXVlX3QgKmlvcXVldWUsIAorCQkJCQkgcGpfbG9ja190ICpsb2NrLAorCQkJCQkgcGpfYm9vbF90IGF1dG9fZGVsZXRlICkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGlvcXVldWUgJiYgbG9jaywgUEpfRUlOVkFMKTsKKworICAgIGlmIChpb3F1ZXVlLT5hdXRvX2RlbGV0ZV9sb2NrKSB7CisgICAgICAgIHBqX2xvY2tfZGVzdHJveShpb3F1ZXVlLT5sb2NrKTsKKyAgICB9CisKKyAgICBpb3F1ZXVlLT5sb2NrID0gbG9jazsKKyAgICBpb3F1ZXVlLT5hdXRvX2RlbGV0ZV9sb2NrID0gYXV0b19kZWxldGU7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jaygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrKCBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCQkJICAgICAgcGpfc29ja190IHNvY2ssCisJCQkJCSAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKwkJCQkJICAgICAgY29uc3QgcGpfaW9xdWV1ZV9jYWxsYmFjayAqY2IsCisJCQkJCSAgICAgIHBqX2lvcXVldWVfa2V5X3QgKiprZXkgKQoreworICAgIEhBTkRMRSBoaW9xOworICAgIHBqX2lvcXVldWVfa2V5X3QgKnJlYzsKKyAgICB1X2xvbmcgdmFsdWU7CisgICAgaW50IHJjOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIGlvcXVldWUgJiYgY2IgJiYga2V5LCBQSl9FSU5WQUwpOworCisgICAgcGpfbG9ja19hY3F1aXJlKGlvcXVldWUtPmxvY2spOworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIC8qIFNjYW4gY2xvc2luZyBsaXN0IGZpcnN0IHRvIHJlbGVhc2UgdW51c2VkIGtleXMuCisgICAgICogTXVzdCBkbyB0aGlzIHdpdGggbG9jayBhY3F1aXJlZC4KKyAgICAgKi8KKyAgICBzY2FuX2Nsb3Npbmdfa2V5cyhpb3F1ZXVlKTsKKworICAgIC8qIElmIHNhZmUgdW5yZWdpc3RyYXRpb24gaXMgdXNlZCwgdGhlbiBnZXQgdGhlIGtleSByZWNvcmQgZnJvbQorICAgICAqIHRoZSBmcmVlIGxpc3QuCisgICAgICovCisgICAgaWYgKHBqX2xpc3RfZW1wdHkoJmlvcXVldWUtPmZyZWVfbGlzdCkpIHsKKwlwal9sb2NrX3JlbGVhc2UoaW9xdWV1ZS0+bG9jayk7CisJcmV0dXJuIFBKX0VUT09NQU5ZOworICAgIH0KKworICAgIHJlYyA9IGlvcXVldWUtPmZyZWVfbGlzdC5uZXh0OworICAgIHBqX2xpc3RfZXJhc2UocmVjKTsKKworICAgIC8qIFNldCBpbml0aWFsIHJlZmVyZW5jZSBjb3VudCB0byAxICovCisgICAgcGpfYXNzZXJ0KHBqX2F0b21pY19nZXQocmVjLT5yZWZfY291bnQpID09IDApOworICAgIHBqX2F0b21pY19pbmMocmVjLT5yZWZfY291bnQpOworCisgICAgcmVjLT5jbG9zaW5nID0gMDsKKworI2Vsc2UKKyAgICByZWMgPSBwal9wb29sX3phbGxvYyhwb29sLCBzaXplb2YocGpfaW9xdWV1ZV9rZXlfdCkpOworI2VuZGlmCisKKyAgICAvKiBCdWlsZCB0aGUga2V5IGZvciB0aGlzIHNvY2tldC4gKi8KKyAgICByZWMtPmlvcXVldWUgPSBpb3F1ZXVlOworICAgIHJlYy0+aG5kID0gKEhBTkRMRSlzb2NrOworICAgIHJlYy0+aG5kX3R5cGUgPSBITkRfSVNfU09DS0VUOworICAgIHJlYy0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICAgIHBqX21lbWNweSgmcmVjLT5jYiwgY2IsIHNpemVvZihwal9pb3F1ZXVlX2NhbGxiYWNrKSk7CisKKyAgICAvKiBTZXQgY29uY3VycmVuY3kgZm9yIHRoaXMgaGFuZGxlICovCisgICAgcmMgPSBwal9pb3F1ZXVlX3NldF9jb25jdXJyZW5jeShyZWMsIGlvcXVldWUtPmRlZmF1bHRfY29uY3VycmVuY3kpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJcGpfbG9ja19yZWxlYXNlKGlvcXVldWUtPmxvY2spOworCXJldHVybiByYzsKKyAgICB9CisKKyNpZiBQSl9IQVNfVENQCisgICAgcmVjLT5jb25uZWN0aW5nID0gMDsKKyNlbmRpZgorCisgICAgLyogU2V0IHNvY2tldCB0byBub25ibG9ja2luZy4gKi8KKyAgICB2YWx1ZSA9IDE7CisgICAgcmMgPSBpb2N0bHNvY2tldChzb2NrLCBGSU9OQklPLCAmdmFsdWUpOworICAgIGlmIChyYyAhPSAwKSB7CisJcGpfbG9ja19yZWxlYXNlKGlvcXVldWUtPmxvY2spOworICAgICAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKFdTQUdldExhc3RFcnJvcigpKTsKKyAgICB9CisKKyAgICAvKiBBc3NvY2lhdGUgd2l0aCBJT0NQICovCisgICAgaGlvcSA9IENyZWF0ZUlvQ29tcGxldGlvblBvcnQoKEhBTkRMRSlzb2NrLCBpb3F1ZXVlLT5pb2NwLCAoRFdPUkQpcmVjLCAwKTsKKyAgICBpZiAoIWhpb3EpIHsKKwlwal9sb2NrX3JlbGVhc2UoaW9xdWV1ZS0+bG9jayk7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7CisgICAgfQorCisgICAgKmtleSA9IHJlYzsKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyAgICBwal9saXN0X3B1c2hfYmFjaygmaW9xdWV1ZS0+YWN0aXZlX2xpc3QsIHJlYyk7CisjZW5kaWYKKworICAgIHBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBwal9pb3F1ZXVlX2dldF91c2VyX2RhdGEoKQorICovCitQSl9ERUYodm9pZCopIHBqX2lvcXVldWVfZ2V0X3VzZXJfZGF0YSggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5ICkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGtleSwgTlVMTCk7CisgICAgcmV0dXJuIGtleS0+dXNlcl9kYXRhOworfQorCisvKgorICogcGpfaW9xdWV1ZV9zZXRfdXNlcl9kYXRhKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3NldF91c2VyX2RhdGEoIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKm9sZF9kYXRhICkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGtleSwgUEpfRUlOVkFMKTsKKyAgICAKKyAgICBpZiAob2xkX2RhdGEpCisgICAgICAgICpvbGRfZGF0YSA9IGtleS0+dXNlcl9kYXRhOworCisgICAga2V5LT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKy8qIERlY3JlbWVudCB0aGUga2V5J3MgcmVmZXJlbmNlIGNvdW50ZXIsIGFuZCB3aGVuIHRoZSBjb3VudGVyIHJlYWNoIHplcm8sCisgKiBkZXN0cm95IHRoZSBrZXkuCisgKi8KK3N0YXRpYyB2b2lkIGRlY3JlbWVudF9jb3VudGVyKHBqX2lvcXVldWVfa2V5X3QgKmtleSkKK3sKKyAgICBpZiAocGpfYXRvbWljX2RlY19hbmRfZ2V0KGtleS0+cmVmX2NvdW50KSA9PSAwKSB7CisKKwlwal9sb2NrX2FjcXVpcmUoa2V5LT5pb3F1ZXVlLT5sb2NrKTsKKworCXBqX2Fzc2VydChrZXktPmNsb3NpbmcgPT0gMSk7CisJcGpfZ2V0dGlja2NvdW50KCZrZXktPmZyZWVfdGltZSk7CisJa2V5LT5mcmVlX3RpbWUubXNlYyArPSBQSl9JT1FVRVVFX0tFWV9GUkVFX0RFTEFZOworCXBqX3RpbWVfdmFsX25vcm1hbGl6ZSgma2V5LT5mcmVlX3RpbWUpOworCisJcGpfbGlzdF9lcmFzZShrZXkpOworCXBqX2xpc3RfcHVzaF9iYWNrKCZrZXktPmlvcXVldWUtPmNsb3NpbmdfbGlzdCwga2V5KTsKKworCXBqX2xvY2tfcmVsZWFzZShrZXktPmlvcXVldWUtPmxvY2spOworICAgIH0KK30KKyNlbmRpZgorCisvKgorICogUG9sbCB0aGUgSS9PIENvbXBsZXRpb24gUG9ydCwgZXhlY3V0ZSBjYWxsYmFjaywgCisgKiBhbmQgcmV0dXJuIHRoZSBrZXkgYW5kIGJ5dGVzIHRyYW5zZmVyZWQgb2YgdGhlIGxhc3Qgb3BlcmF0aW9uLgorICovCitzdGF0aWMgcGpfYm9vbF90IHBvbGxfaW9jcCggSEFORExFIGhJb2NwLCBEV09SRCBkd1RpbWVvdXQsIAorCQkJICAgIHBqX3NzaXplX3QgKnBfYnl0ZXMsIHBqX2lvcXVldWVfa2V5X3QgKipwX2tleSApCit7CisgICAgRFdPUkQgZHdCeXRlc1RyYW5zZmVyZWQsIGR3S2V5OworICAgIGdlbmVyaWNfb3ZlcmxhcHBlZCAqcE92OworICAgIHBqX2lvcXVldWVfa2V5X3QgKmtleTsKKyAgICBwal9zc2l6ZV90IHNpemVfc3RhdHVzID0gLTE7CisgICAgQk9PTCByY0dldFF1ZXVlZDsKKworICAgIC8qIFBvbGwgZm9yIGNvbXBsZXRpb24gc3RhdHVzLiAqLworICAgIHJjR2V0UXVldWVkID0gR2V0UXVldWVkQ29tcGxldGlvblN0YXR1cyhoSW9jcCwgJmR3Qnl0ZXNUcmFuc2ZlcmVkLAorCQkJCQkgICAgJmR3S2V5LCAoT1ZFUkxBUFBFRCoqKSZwT3YsIAorCQkJCQkgICAgZHdUaW1lb3V0KTsKKworICAgIC8qIFRoZSByZXR1cm4gdmFsdWUgaXM6CisgICAgICogLSBub256ZXJvIGlmIGV2ZW50IHdhcyBkZXF1ZXVlZC4KKyAgICAgKiAtIHplcm8gYW5kIHBPdj09TlVMTCBpZiBubyBldmVudCB3YXMgZGVxdWV1ZWQuCisgICAgICogLSB6ZXJvIGFuZCBwT3YhPU5VTEwgaWYgZXZlbnQgZm9yIGZhaWxlZCBJL08gd2FzIGRlcXVldWVkLgorICAgICAqLworICAgIGlmIChwT3YpIHsKKwlwal9ib29sX3QgaGFzX2xvY2s7CisKKwkvKiBFdmVudCB3YXMgZGVxdWV1ZWQgZm9yIGVpdGhlciBzdWNjZXNzZnVsbCBvciBmYWlsZWQgSS9PICovCisJa2V5ID0gKHBqX2lvcXVldWVfa2V5X3QqKWR3S2V5OworCXNpemVfc3RhdHVzID0gZHdCeXRlc1RyYW5zZmVyZWQ7CisKKwkvKiBSZXBvcnQgdG8gY2FsbGVyIHJlZ2FyZGxlc3MgKi8KKwlpZiAocF9ieXRlcykKKwkgICAgKnBfYnl0ZXMgPSBzaXplX3N0YXR1czsKKwlpZiAocF9rZXkpCisJICAgICpwX2tleSA9IGtleTsKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKwkvKiBXZSBzaG91bGRuJ3QgY2FsbCBjYWxsYmFja3MgaWYga2V5IGlzIHF1aXR0aW5nLiAqLworCWlmIChrZXktPmNsb3NpbmcpCisJICAgIHJldHVybiBQSl9UUlVFOworCisJLyogSWYgY29uY3VycmVuY3kgaXMgZGlzYWJsZWQsIGxvY2sgdGhlIGtleSAKKwkgKiAoYW5kIHNhdmUgdGhlIGxvY2sgc3RhdHVzIHRvIGxvY2FsIHZhciBzaW5jZSBhcHAgbWF5IGNoYW5nZQorCSAqIGNvbmN1cnJlbmN5IHNldHRpbmcgd2hpbGUgaW4gdGhlIGNhbGxiYWNrKSAqLworCWlmIChrZXktPmFsbG93X2NvbmN1cnJlbnQgPT0gUEpfRkFMU0UpIHsKKwkgICAgcGpfbXV0ZXhfbG9jayhrZXktPm11dGV4KTsKKwkgICAgaGFzX2xvY2sgPSBQSl9UUlVFOworCX0gZWxzZSB7CisJICAgIGhhc19sb2NrID0gUEpfRkFMU0U7CisJfQorCisJLyogTm93IHRoYXQgd2UgZ2V0IHRoZSBsb2NrLCBjaGVjayBhZ2FpbiB0aGF0IGtleSBpcyBub3QgY2xvc2luZyAqLworCWlmIChrZXktPmNsb3NpbmcpIHsKKwkgICAgaWYgKGhhc19sb2NrKSB7CisJCXBqX211dGV4X3VubG9jayhrZXktPm11dGV4KTsKKwkgICAgfQorCSAgICByZXR1cm4gUEpfVFJVRTsKKwl9CisKKwkvKiBJbmNyZW1lbnQgcmVmZXJlbmNlIGNvdW50ZXIgdG8gcHJldmVudCB0aGlzIGtleSBmcm9tIGJlaW5nCisJICogZGVsZXRlZAorCSAqLworCXBqX2F0b21pY19pbmMoa2V5LT5yZWZfY291bnQpOworI2Vsc2UKKwlQSl9VTlVTRURfQVJHKGhhc19sb2NrKTsKKyNlbmRpZgorCisJLyogQ2Fycnkgb3V0IHRoZSBjYWxsYmFjayAqLworCXN3aXRjaCAocE92LT5vcGVyYXRpb24pIHsKKwljYXNlIFBKX0lPUVVFVUVfT1BfUkVBRDoKKwljYXNlIFBKX0lPUVVFVUVfT1BfUkVDVjoKKwljYXNlIFBKX0lPUVVFVUVfT1BfUkVDVl9GUk9NOgorICAgICAgICAgICAgcE92LT5vcGVyYXRpb24gPSAwOworICAgICAgICAgICAgaWYgKGtleS0+Y2Iub25fcmVhZF9jb21wbGV0ZSkKKwkgICAgICAgIGtleS0+Y2Iub25fcmVhZF9jb21wbGV0ZShrZXksIChwal9pb3F1ZXVlX29wX2tleV90KilwT3YsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3N0YXR1cyk7CisJICAgIGJyZWFrOworCWNhc2UgUEpfSU9RVUVVRV9PUF9XUklURToKKwljYXNlIFBKX0lPUVVFVUVfT1BfU0VORDoKKwljYXNlIFBKX0lPUVVFVUVfT1BfU0VORF9UTzoKKyAgICAgICAgICAgIHBPdi0+b3BlcmF0aW9uID0gMDsKKyAgICAgICAgICAgIGlmIChrZXktPmNiLm9uX3dyaXRlX2NvbXBsZXRlKQorCSAgICAgICAga2V5LT5jYi5vbl93cml0ZV9jb21wbGV0ZShrZXksIChwal9pb3F1ZXVlX29wX2tleV90KilwT3YsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV9zdGF0dXMpOworCSAgICBicmVhazsKKyNpZiBQSl9IQVNfVENQCisJY2FzZSBQSl9JT1FVRVVFX09QX0FDQ0VQVDoKKwkgICAgLyogc3BlY2lhbCBjYXNlIGZvciBhY2NlcHQuICovCisJICAgIGlvcXVldWVfb25fYWNjZXB0X2NvbXBsZXRlKGtleSwgKGlvcXVldWVfYWNjZXB0X3JlYyopcE92KTsKKyAgICAgICAgICAgIGlmIChrZXktPmNiLm9uX2FjY2VwdF9jb21wbGV0ZSkgeworICAgICAgICAgICAgICAgIGlvcXVldWVfYWNjZXB0X3JlYyAqYWNjZXB0X3JlYyA9IChpb3F1ZXVlX2FjY2VwdF9yZWMqKXBPdjsKKwkJcGpfc3RhdHVzX3Qgc3RhdHVzID0gUEpfU1VDQ0VTUzsKKwkJcGpfc29ja190IG5ld3NvY2s7CisKKwkJbmV3c29jayA9IGFjY2VwdF9yZWMtPm5ld3NvY2s7CisJCWFjY2VwdF9yZWMtPm5ld3NvY2sgPSBQSl9JTlZBTElEX1NPQ0tFVDsKKworCQlpZiAobmV3c29jayA9PSBQSl9JTlZBTElEX1NPQ0tFVCkgeworCQkgICAgaW50IGR3RXJyb3IgPSBXU0FHZXRMYXN0RXJyb3IoKTsKKwkJICAgIGlmIChkd0Vycm9yID09IDApIGR3RXJyb3IgPSBPU0VSUl9FTk9UQ09OTjsKKwkJICAgIHN0YXR1cyA9IFBKX1JFVFVSTl9PU19FUlJPUihkd0Vycm9yKTsKKwkJfQorCisJICAgICAgICBrZXktPmNiLm9uX2FjY2VwdF9jb21wbGV0ZShrZXksIChwal9pb3F1ZXVlX29wX2tleV90KilwT3YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3c29jaywgc3RhdHVzKTsKKwkJCisgICAgICAgICAgICB9CisJICAgIGJyZWFrOworCWNhc2UgUEpfSU9RVUVVRV9PUF9DT05ORUNUOgorI2VuZGlmCisJY2FzZSBQSl9JT1FVRVVFX09QX05PTkU6CisJICAgIHBqX2Fzc2VydCgwKTsKKwkgICAgYnJlYWs7CisJfQorCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworCWRlY3JlbWVudF9jb3VudGVyKGtleSk7CisJaWYgKGhhc19sb2NrKQorCSAgICBwal9tdXRleF91bmxvY2soa2V5LT5tdXRleCk7CisjZW5kaWYKKworCXJldHVybiBQSl9UUlVFOworICAgIH0KKworICAgIC8qIE5vIGV2ZW50IHdhcyBxdWV1ZWQuICovCisgICAgcmV0dXJuIFBKX0ZBTFNFOworfQorCisvKgorICogcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3VucmVnaXN0ZXIoIHBqX2lvcXVldWVfa2V5X3QgKmtleSApCit7CisgICAgdW5zaWduZWQgaTsKKyAgICBwal9ib29sX3QgaGFzX2xvY2s7CisgICAgZW51bSB7IFJFVFJZID0gMTAgfTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oa2V5LCBQSl9FSU5WQUwpOworCisjaWYgUEpfSEFTX1RDUAorICAgIGlmIChrZXktPmNvbm5lY3RpbmcpIHsKKwl1bnNpZ25lZCBwb3M7CisgICAgICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZTsKKworICAgICAgICBpb3F1ZXVlID0ga2V5LT5pb3F1ZXVlOworCisJLyogRXJhc2UgZnJvbSBjb25uZWN0aW5nX2hhbmRsZXMgKi8KKwlwal9sb2NrX2FjcXVpcmUoaW9xdWV1ZS0+bG9jayk7CisJZm9yIChwb3M9MDsgcG9zIDwgaW9xdWV1ZS0+Y29ubmVjdGluZ19jb3VudDsgKytwb3MpIHsKKwkgICAgaWYgKGlvcXVldWUtPmNvbm5lY3Rpbmdfa2V5c1twb3NdID09IGtleSkgeworCQllcmFzZV9jb25uZWN0aW5nX3NvY2tldChpb3F1ZXVlLCBwb3MpOworCQlicmVhazsKKwkgICAgfQorCX0KKwlrZXktPmNvbm5lY3RpbmcgPSAwOworCXBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKKyAgICB9CisjZW5kaWYKKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyAgICAvKiBNYXJrIGtleSBhcyBjbG9zaW5nIGJlZm9yZSBjbG9zaW5nIGhhbmRsZS4gKi8KKyAgICBrZXktPmNsb3NpbmcgPSAxOworCisgICAgLyogSWYgY29uY3VycmVuY3kgaXMgZGlzYWJsZWQsIHdhaXQgdW50aWwgdGhlIGtleSBoYXMgZmluaXNoZWQKKyAgICAgKiBwcm9jZXNzaW5nIHRoZSBjYWxsYmFjaworICAgICAqLworICAgIGlmIChrZXktPmFsbG93X2NvbmN1cnJlbnQgPT0gUEpfRkFMU0UpIHsKKwlwal9tdXRleF9sb2NrKGtleS0+bXV0ZXgpOworCWhhc19sb2NrID0gUEpfVFJVRTsKKyAgICB9IGVsc2UgeworCWhhc19sb2NrID0gUEpfRkFMU0U7CisgICAgfQorI2Vsc2UKKyAgICBQSl9VTlVTRURfQVJHKGhhc19sb2NrKTsKKyNlbmRpZgorICAgIAorICAgIC8qIENsb3NlIGhhbmRsZSAodGhlIG9ubHkgd2F5IHRvIGRpc2Fzc29jaWF0ZSBoYW5kbGUgZnJvbSBJT0NQKS4gCisgICAgICogV2UgYWxzbyBuZWVkIHRvIGNsb3NlIGhhbmRsZSB0byBtYWtlIHN1cmUgdGhhdCBubyBmdXJ0aGVyIGV2ZW50cworICAgICAqIHdpbGwgY29tZSB0byB0aGUgaGFuZGxlLgorICAgICAqLworICAgIC8qIFVwZGF0ZSAyMDA4LzA3LzE4IChodHRwOi8vdHJhYy5wanNpcC5vcmcvcmVwb3MvdGlja2V0LzU3NSk6CisgICAgICogIC0gSXQgc2VlbXMgdGhhdCBDbG9zZUhhbmRsZSgpIGluIGl0c2VsZiBkb2VzIG5vdCBhY3R1YWxseSBjbG9zZQorICAgICAqICAgIHRoZSBzb2NrZXQgKGkuZS4gaXQgd2lsbCBzdGlsbCBhcHBlYXIgaW4gIm5ldHN0YXQiIG91dHB1dCkuIEFsc28KKyAgICAgKiAgICBpZiB3ZSBvbmx5IHVzZSBDbG9zZUhhbmRsZSgpLCBhbiAiSW52YWxpZCBIYW5kbGUiIGV4Y2VwdGlvbiB3aWxsCisgICAgICogICAgYmUgcmFpc2VkIGluIFdTQUNsZWFudXAoKS4KKyAgICAgKiAgLSBNU0ROIGRvY3VtZW50YXRpb24gc2F5cyB0aGF0IENsb3NlSGFuZGxlKCkgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgCisgICAgICogICAgY2xvc2Vzb2NrZXQoKSBjYWxsIChzZWUKKyAgICAgKiAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMTEoVlMuODUpLmFzcHgpLgorICAgICAqICAgIEJ1dCB0dXJucyBvdXQgdGhhdCB0aGlzIHdpbGwgcmFpc2UgIkludmFsaWQgSGFuZGxlIiBleGNlcHRpb24KKyAgICAgKiAgICBpbiBkZWJ1ZyBtb2RlLgorICAgICAqICBTbyBiZWNhdXNlIG9mIHRoaXMsIHdlIHJlcGxhY2VkIENsb3NlSGFuZGxlKCkgd2l0aCBjbG9zZXNvY2tldCgpCisgICAgICogIGluc3RlYWQuIFRoZXNlIHdhcyB0ZXN0ZWQgb24gV2luWFAgU1AyLgorICAgICAqLworICAgIC8vQ2xvc2VIYW5kbGUoa2V5LT5obmQpOworICAgIHBqX3NvY2tfY2xvc2UoKHBqX3NvY2tfdClrZXktPmhuZCk7CisKKyAgICAvKiBSZXNldCBjYWxsYmFja3MgKi8KKyAgICBrZXktPmNiLm9uX2FjY2VwdF9jb21wbGV0ZSA9IE5VTEw7CisgICAga2V5LT5jYi5vbl9jb25uZWN0X2NvbXBsZXRlID0gTlVMTDsKKyAgICBrZXktPmNiLm9uX3JlYWRfY29tcGxldGUgPSBOVUxMOworICAgIGtleS0+Y2Iub25fd3JpdGVfY29tcGxldGUgPSBOVUxMOworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIC8qIEV2ZW4gYWZ0ZXIgaGFuZGxlIGlzIGNsb3NlZCwgSSBzdXNwZWN0IHRoYXQgSU9DUCBtYXkgc3RpbGwgdHJ5IHRvCisgICAgICogZG8gc29tZXRoaW5nIHdpdGggdGhlIGhhbmRsZSwgY2F1c2luZyBtZW1vcnkgY29ycnVwdGlvbiB3aGVuIHBvb2wKKyAgICAgKiBkZWJ1Z2dpbmcgaXMgZW5hYmxlZC4KKyAgICAgKgorICAgICAqIEZvcmNpbmcgY29udGV4dCBzd2l0Y2ggc2VlbXMgdG8gaGF2ZSBmaXhlZCB0aGF0LCBidXQgdGhpcyBpcyBxdWl0ZQorICAgICAqIGFuIHVnbHkgc29sdXRpb24uLgorICAgICAqCisgICAgICogVXBkYXRlIDIwMDgvMDIvMTM6CisgICAgICoJVGhpcyBzaG91bGQgbm90IGhhcHBlbiBpZiBjb25jdXJyZW5jeSBpcyBkaXNhbGxvd2VkIGZvciB0aGUga2V5LgorICAgICAqICBTbyBhdCBsZWFzdCBhcHBsaWNhdGlvbiBoYXMgYSBzb2x1dGlvbiBmb3IgdGhpcyAoaS5lLiBieSBkaXNhbGxvd2luZworICAgICAqICBjb25jdXJyZW5jeSBpbiB0aGUga2V5KS4KKyAgICAgKi8KKyAgICAvL1RoaXMgd2lsbCBsb29wIGZvcmV2ZXIgaWYgdW5yZWdpc3RyYXRpb24gaXMgZG9uZSBvbiB0aGUgY2FsbGJhY2suCisgICAgLy9Eb2luZyB0aGlzIHdpdGggUkVUUlkgSSB0aGluayBzaG91bGQgc29sdmUgdGhlIElPQ1Agc2V0dGluZyB0aGUgCisgICAgLy9zb2NrZXQgc2lnbmFsbGVkLCB3aXRob3V0IGNhdXNpbmcgdGhlIGRlYWRsb2NrLgorICAgIC8vd2hpbGUgKHBqX2F0b21pY19nZXQoa2V5LT5yZWZfY291bnQpICE9IDEpCisgICAgLy8JcGpfdGhyZWFkX3NsZWVwKDApOworICAgIGZvciAoaT0wOyBwal9hdG9taWNfZ2V0KGtleS0+cmVmX2NvdW50KSAhPSAxICYmIGk8UkVUUlk7ICsraSkKKwlwal90aHJlYWRfc2xlZXAoMCk7CisKKyAgICAvKiBEZWNyZW1lbnQgcmVmZXJlbmNlIGNvdW50ZXIgdG8gZGVzdHJveSB0aGUga2V5LiAqLworICAgIGRlY3JlbWVudF9jb3VudGVyKGtleSk7CisKKyAgICBpZiAoaGFzX2xvY2spCisJcGpfbXV0ZXhfdW5sb2NrKGtleS0+bXV0ZXgpOworI2VuZGlmCisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKy8qIFNjYW4gdGhlIGNsb3NpbmcgbGlzdCwgYW5kIHB1dCBwZW5kaW5nIGNsb3Npbmcga2V5cyB0byBmcmVlIGxpc3QuCisgKiBNdXN0IGRvIHRoaXMgd2l0aCBpb3F1ZXVlIG11dGV4IGhlbGQuCisgKi8KK3N0YXRpYyB2b2lkIHNjYW5fY2xvc2luZ19rZXlzKHBqX2lvcXVldWVfdCAqaW9xdWV1ZSkKK3sKKyAgICBpZiAoIXBqX2xpc3RfZW1wdHkoJmlvcXVldWUtPmNsb3NpbmdfbGlzdCkpIHsKKwlwal90aW1lX3ZhbCBub3c7CisJcGpfaW9xdWV1ZV9rZXlfdCAqa2V5OworCisJcGpfZ2V0dGlja2NvdW50KCZub3cpOworCQorCS8qIE1vdmUgY2xvc2luZyBrZXlzIHRvIGZyZWUgbGlzdCB3aGVuIHRoZXkndmUgZmluaXNoZWQgdGhlIGNsb3NpbmcKKwkgKiBpZGxlIHRpbWUuCisJICovCisJa2V5ID0gaW9xdWV1ZS0+Y2xvc2luZ19saXN0Lm5leHQ7CisJd2hpbGUgKGtleSAhPSAmaW9xdWV1ZS0+Y2xvc2luZ19saXN0KSB7CisJICAgIHBqX2lvcXVldWVfa2V5X3QgKm5leHQgPSBrZXktPm5leHQ7CisKKwkgICAgcGpfYXNzZXJ0KGtleS0+Y2xvc2luZyAhPSAwKTsKKworCSAgICBpZiAoUEpfVElNRV9WQUxfR1RFKG5vdywga2V5LT5mcmVlX3RpbWUpKSB7CisJCXBqX2xpc3RfZXJhc2Uoa2V5KTsKKwkJcGpfbGlzdF9wdXNoX2JhY2soJmlvcXVldWUtPmZyZWVfbGlzdCwga2V5KTsKKwkgICAgfQorCSAgICBrZXkgPSBuZXh0OworCX0KKyAgICB9Cit9CisjZW5kaWYKKworLyoKKyAqIHBqX2lvcXVldWVfcG9sbCgpCisgKgorICogUG9sbCBmb3IgZXZlbnRzLgorICovCitQSl9ERUYoaW50KSBwal9pb3F1ZXVlX3BvbGwoIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwgY29uc3QgcGpfdGltZV92YWwgKnRpbWVvdXQpCit7CisgICAgRFdPUkQgZHdNc2VjOworI2lmIFBKX0hBU19UQ1AKKyAgICBpbnQgY29ubmVjdF9jb3VudCA9IDA7CisjZW5kaWYKKyAgICBpbnQgZXZlbnRfY291bnQgPSAwOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihpb3F1ZXVlLCAtUEpfRUlOVkFMKTsKKworICAgIC8qIENhbGN1bGF0ZSBtaWxpc2Vjb25kcyB0aW1lb3V0IGZvciBHZXRRdWV1ZWRDb21wbGV0aW9uU3RhdHVzICovCisgICAgZHdNc2VjID0gdGltZW91dCA/IHRpbWVvdXQtPnNlYyoxMDAwICsgdGltZW91dC0+bXNlYyA6IElORklOSVRFOworCisgICAgLyogUG9sbCBmb3IgY29tcGxldGlvbiBzdGF0dXMuICovCisgICAgZXZlbnRfY291bnQgPSBwb2xsX2lvY3AoaW9xdWV1ZS0+aW9jcCwgZHdNc2VjLCBOVUxMLCBOVUxMKTsKKworI2lmIFBKX0hBU19UQ1AKKyAgICAvKiBDaGVjayB0aGUgY29ubmVjdGluZyBhcnJheSwgb25seSB3aGVuIHRoZXJlJ3Mgbm8gYWN0aXZpdHkuICovCisgICAgaWYgKGV2ZW50X2NvdW50ID09IDApIHsKKwljb25uZWN0X2NvdW50ID0gY2hlY2tfY29ubmVjdGluZyhpb3F1ZXVlKTsKKwlpZiAoY29ubmVjdF9jb3VudCA+IDApCisJICAgIGV2ZW50X2NvdW50ICs9IGNvbm5lY3RfY291bnQ7CisgICAgfQorI2VuZGlmCisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisgICAgLyogQ2hlY2sgdGhlIGNsb3Npbmcga2V5cyBvbmx5IHdoZW4gdGhlcmUncyBubyBhY3Rpdml0eSBhbmQgd2hlbiB0aGVyZSBhcmUKKyAgICAgKiBwZW5kaW5nIGNsb3Npbmcga2V5cy4KKyAgICAgKi8KKyAgICBpZiAoZXZlbnRfY291bnQgPT0gMCAmJiAhcGpfbGlzdF9lbXB0eSgmaW9xdWV1ZS0+Y2xvc2luZ19saXN0KSkgeworCXBqX2xvY2tfYWNxdWlyZShpb3F1ZXVlLT5sb2NrKTsKKwlzY2FuX2Nsb3Npbmdfa2V5cyhpb3F1ZXVlKTsKKwlwal9sb2NrX3JlbGVhc2UoaW9xdWV1ZS0+bG9jayk7CisgICAgfQorI2VuZGlmCisKKyAgICAvKiBSZXR1cm4gbnVtYmVyIG9mIGV2ZW50cy4gKi8KKyAgICByZXR1cm4gZXZlbnRfY291bnQ7Cit9CisKKy8qCisgKiBwal9pb3F1ZXVlX3JlY3YoKQorICoKKyAqIEluaXRpYXRlIG92ZXJsYXBwZWQgV1NBUmVjdigpIG9wZXJhdGlvbi4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3JlY3YoICBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCQkgICAgICB2b2lkICpidWZmZXIsCisJCQkJICAgICAgcGpfc3NpemVfdCAqbGVuZ3RoLAorCQkJCSAgICAgIHBqX3VpbnQzMl90IGZsYWdzICkKK3sKKyAgICAvKgorICAgICAqIElkZWFsbHkgd2Ugc2hvdWxkIGp1c3QgY2FsbCBwal9pb3F1ZXVlX3JlY3Zmcm9tKCkgd2l0aCBOVUxMIGFkZHIgYW5kCisgICAgICogYWRkcmxlbiBoZXJlLiBCdXQgdW5mb3J0dW5hdGVseSBpdCBnZW5lcmF0ZXMgRUlOVkFMLi4uIDotKAorICAgICAqICAtYmVubnlscAorICAgICAqLworICAgIGludCByYzsKKyAgICBEV09SRCBieXRlc1JlYWQ7CisgICAgRFdPUkQgZHdGbGFncyA9IDA7CisgICAgdW5pb24gb3BlcmF0aW9uX2tleSAqb3Bfa2V5X3JlYzsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXkgJiYgb3Bfa2V5ICYmIGJ1ZmZlciAmJiBsZW5ndGgsIFBKX0VJTlZBTCk7CisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisgICAgLyogQ2hlY2sga2V5IGlzIG5vdCBjbG9zaW5nICovCisgICAgaWYgKGtleS0+Y2xvc2luZykKKwlyZXR1cm4gUEpfRUNBTkNFTExFRDsKKyNlbmRpZgorCisgICAgb3Bfa2V5X3JlYyA9ICh1bmlvbiBvcGVyYXRpb25fa2V5KilvcF9rZXktPmludGVybmFsX187CisgICAgb3Bfa2V5X3JlYy0+b3ZlcmxhcHBlZC53c2FidWYuYnVmID0gYnVmZmVyOworICAgIG9wX2tleV9yZWMtPm92ZXJsYXBwZWQud3NhYnVmLmxlbiA9ICpsZW5ndGg7CisKKyAgICBkd0ZsYWdzID0gZmxhZ3M7CisgICAgCisgICAgLyogVHJ5IG5vbi1vdmVybGFwcGVkIHJlY2VpdmVkIGZpcnN0IHRvIHNlZSBpZiBkYXRhIGlzCisgICAgICogaW1tZWRpYXRlbHkgYXZhaWxhYmxlLgorICAgICAqLworICAgIGlmICgoZmxhZ3MgJiBQSl9JT1FVRVVFX0FMV0FZU19BU1lOQykgPT0gMCkgeworCXJjID0gV1NBUmVjdigoU09DS0VUKWtleS0+aG5kLCAmb3Bfa2V5X3JlYy0+b3ZlcmxhcHBlZC53c2FidWYsIDEsCisJCSAgICAgJmJ5dGVzUmVhZCwgJmR3RmxhZ3MsIE5VTEwsIE5VTEwpOworCWlmIChyYyA9PSAwKSB7CisJICAgICpsZW5ndGggPSBieXRlc1JlYWQ7CisJICAgIHJldHVybiBQSl9TVUNDRVNTOworCX0gZWxzZSB7CisJICAgIERXT1JEIGR3RXJyb3IgPSBXU0FHZXRMYXN0RXJyb3IoKTsKKwkgICAgaWYgKGR3RXJyb3IgIT0gV1NBRVdPVUxEQkxPQ0spIHsKKwkJKmxlbmd0aCA9IC0xOworCQlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKGR3RXJyb3IpOworCSAgICB9CisJfQorICAgIH0KKworICAgIGR3RmxhZ3MgJj0gfihQSl9JT1FVRVVFX0FMV0FZU19BU1lOQyk7CisKKyAgICAvKgorICAgICAqIE5vIGltbWVkaWF0ZSBkYXRhIGF2YWlsYWJsZS4KKyAgICAgKiBSZWdpc3RlciBvdmVybGFwcGVkIFJlY3YoKSBvcGVyYXRpb24uCisgICAgICovCisgICAgcGpfYnplcm8oICZvcF9rZXlfcmVjLT5vdmVybGFwcGVkLm92ZXJsYXBwZWQsIAorICAgICAgICAgICAgICBzaXplb2Yob3Bfa2V5X3JlYy0+b3ZlcmxhcHBlZC5vdmVybGFwcGVkKSk7CisgICAgb3Bfa2V5X3JlYy0+b3ZlcmxhcHBlZC5vcGVyYXRpb24gPSBQSl9JT1FVRVVFX09QX1JFQ1Y7CisKKyAgICByYyA9IFdTQVJlY3YoKFNPQ0tFVClrZXktPmhuZCwgJm9wX2tleV9yZWMtPm92ZXJsYXBwZWQud3NhYnVmLCAxLCAKKyAgICAgICAgICAgICAgICAgICZieXRlc1JlYWQsICZkd0ZsYWdzLCAKKwkJICAmb3Bfa2V5X3JlYy0+b3ZlcmxhcHBlZC5vdmVybGFwcGVkLCBOVUxMKTsKKyAgICBpZiAocmMgPT0gU09DS0VUX0VSUk9SKSB7CisJRFdPUkQgZHdTdGF0dXMgPSBXU0FHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGR3U3RhdHVzIT1XU0FfSU9fUEVORElORykgeworICAgICAgICAgICAgKmxlbmd0aCA9IC0xOworICAgICAgICAgICAgcmV0dXJuIFBKX1NUQVRVU19GUk9NX09TKGR3U3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFBlbmRpbmcgb3BlcmF0aW9uIGhhcyBiZWVuIHNjaGVkdWxlZC4gKi8KKyAgICByZXR1cm4gUEpfRVBFTkRJTkc7Cit9CisKKy8qCisgKiBwal9pb3F1ZXVlX3JlY3Zmcm9tKCkKKyAqCisgKiBJbml0aWF0ZSBvdmVybGFwcGVkIFJlY3ZGcm9tKCkgb3BlcmF0aW9uLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfcmVjdmZyb20oIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJCQkgdm9pZCAqYnVmZmVyLAorCQkJCQkgcGpfc3NpemVfdCAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal91aW50MzJfdCBmbGFncywKKwkJCQkJIHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJCSBpbnQgKmFkZHJsZW4pCit7CisgICAgaW50IHJjOworICAgIERXT1JEIGJ5dGVzUmVhZDsKKyAgICBEV09SRCBkd0ZsYWdzID0gMDsKKyAgICB1bmlvbiBvcGVyYXRpb25fa2V5ICpvcF9rZXlfcmVjOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGtleSAmJiBvcF9rZXkgJiYgYnVmZmVyLCBQSl9FSU5WQUwpOworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIC8qIENoZWNrIGtleSBpcyBub3QgY2xvc2luZyAqLworICAgIGlmIChrZXktPmNsb3NpbmcpCisJcmV0dXJuIFBKX0VDQU5DRUxMRUQ7CisjZW5kaWYKKworICAgIG9wX2tleV9yZWMgPSAodW5pb24gb3BlcmF0aW9uX2tleSopb3Bfa2V5LT5pbnRlcm5hbF9fOworICAgIG9wX2tleV9yZWMtPm92ZXJsYXBwZWQud3NhYnVmLmJ1ZiA9IGJ1ZmZlcjsKKyAgICBvcF9rZXlfcmVjLT5vdmVybGFwcGVkLndzYWJ1Zi5sZW4gPSAqbGVuZ3RoOworCisgICAgZHdGbGFncyA9IGZsYWdzOworICAgIAorICAgIC8qIFRyeSBub24tb3ZlcmxhcHBlZCByZWNlaXZlZCBmaXJzdCB0byBzZWUgaWYgZGF0YSBpcworICAgICAqIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4KKyAgICAgKi8KKyAgICBpZiAoKGZsYWdzICYgUEpfSU9RVUVVRV9BTFdBWVNfQVNZTkMpID09IDApIHsKKwlyYyA9IFdTQVJlY3ZGcm9tKChTT0NLRVQpa2V5LT5obmQsICZvcF9rZXlfcmVjLT5vdmVybGFwcGVkLndzYWJ1ZiwgMSwKKwkJCSAmYnl0ZXNSZWFkLCAmZHdGbGFncywgYWRkciwgYWRkcmxlbiwgTlVMTCwgTlVMTCk7CisJaWYgKHJjID09IDApIHsKKwkgICAgKmxlbmd0aCA9IGJ5dGVzUmVhZDsKKwkgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisJfSBlbHNlIHsKKwkgICAgRFdPUkQgZHdFcnJvciA9IFdTQUdldExhc3RFcnJvcigpOworCSAgICBpZiAoZHdFcnJvciAhPSBXU0FFV09VTERCTE9DSykgeworCQkqbGVuZ3RoID0gLTE7CisJCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoZHdFcnJvcik7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgZHdGbGFncyAmPSB+KFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DKTsKKworICAgIC8qCisgICAgICogTm8gaW1tZWRpYXRlIGRhdGEgYXZhaWxhYmxlLgorICAgICAqIFJlZ2lzdGVyIG92ZXJsYXBwZWQgUmVjdigpIG9wZXJhdGlvbi4KKyAgICAgKi8KKyAgICBwal9iemVybyggJm9wX2tleV9yZWMtPm92ZXJsYXBwZWQub3ZlcmxhcHBlZCwgCisgICAgICAgICAgICAgIHNpemVvZihvcF9rZXlfcmVjLT5vdmVybGFwcGVkLm92ZXJsYXBwZWQpKTsKKyAgICBvcF9rZXlfcmVjLT5vdmVybGFwcGVkLm9wZXJhdGlvbiA9IFBKX0lPUVVFVUVfT1BfUkVDVjsKKworICAgIHJjID0gV1NBUmVjdkZyb20oKFNPQ0tFVClrZXktPmhuZCwgJm9wX2tleV9yZWMtPm92ZXJsYXBwZWQud3NhYnVmLCAxLCAKKyAgICAgICAgICAgICAgICAgICAgICZieXRlc1JlYWQsICZkd0ZsYWdzLCBhZGRyLCBhZGRybGVuLAorCQkgICAgICZvcF9rZXlfcmVjLT5vdmVybGFwcGVkLm92ZXJsYXBwZWQsIE5VTEwpOworICAgIGlmIChyYyA9PSBTT0NLRVRfRVJST1IpIHsKKwlEV09SRCBkd1N0YXR1cyA9IFdTQUdldExhc3RFcnJvcigpOworICAgICAgICBpZiAoZHdTdGF0dXMhPVdTQV9JT19QRU5ESU5HKSB7CisgICAgICAgICAgICAqbGVuZ3RoID0gLTE7CisgICAgICAgICAgICByZXR1cm4gUEpfU1RBVFVTX0ZST01fT1MoZHdTdGF0dXMpOworICAgICAgICB9CisgICAgfSAKKyAgICAKKyAgICAvKiBQZW5kaW5nIG9wZXJhdGlvbiBoYXMgYmVlbiBzY2hlZHVsZWQuICovCisgICAgcmV0dXJuIFBKX0VQRU5ESU5HOworfQorCisvKgorICogcGpfaW9xdWV1ZV9zZW5kKCkKKyAqCisgKiBJbml0aWF0ZSBvdmVybGFwcGVkIFNlbmQgb3BlcmF0aW9uLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2VuZCggIHBqX2lvcXVldWVfa2V5X3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJCSAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisJCQkJICAgICAgcGpfc3NpemVfdCAqbGVuZ3RoLAorCQkJCSAgICAgIHBqX3VpbnQzMl90IGZsYWdzICkKK3sKKyAgICByZXR1cm4gcGpfaW9xdWV1ZV9zZW5kdG8oa2V5LCBvcF9rZXksIGRhdGEsIGxlbmd0aCwgZmxhZ3MsIE5VTEwsIDApOworfQorCisKKy8qCisgKiBwal9pb3F1ZXVlX3NlbmR0bygpCisgKgorICogSW5pdGlhdGUgb3ZlcmxhcHBlZCBTZW5kVG8gb3BlcmF0aW9uLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfc2VuZHRvKCBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisJCQkJICAgICAgIHBqX3NzaXplX3QgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3VpbnQzMl90IGZsYWdzLAorCQkJCSAgICAgICBjb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCSAgICAgICBpbnQgYWRkcmxlbikKK3sKKyAgICBpbnQgcmM7CisgICAgRFdPUkQgYnl0ZXNXcml0dGVuOworICAgIERXT1JEIGR3RmxhZ3M7CisgICAgdW5pb24gb3BlcmF0aW9uX2tleSAqb3Bfa2V5X3JlYzsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXkgJiYgb3Bfa2V5ICYmIGRhdGEsIFBKX0VJTlZBTCk7CisKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisgICAgLyogQ2hlY2sga2V5IGlzIG5vdCBjbG9zaW5nICovCisgICAgaWYgKGtleS0+Y2xvc2luZykKKwlyZXR1cm4gUEpfRUNBTkNFTExFRDsKKyNlbmRpZgorCisgICAgb3Bfa2V5X3JlYyA9ICh1bmlvbiBvcGVyYXRpb25fa2V5KilvcF9rZXktPmludGVybmFsX187CisKKyAgICAvKgorICAgICAqIEZpcnN0IHRyeSBibG9ja2luZyB3cml0ZS4KKyAgICAgKi8KKyAgICBvcF9rZXlfcmVjLT5vdmVybGFwcGVkLndzYWJ1Zi5idWYgPSAodm9pZCopZGF0YTsKKyAgICBvcF9rZXlfcmVjLT5vdmVybGFwcGVkLndzYWJ1Zi5sZW4gPSAqbGVuZ3RoOworCisgICAgZHdGbGFncyA9IGZsYWdzOworCisgICAgaWYgKChmbGFncyAmIFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DKSA9PSAwKSB7CisJcmMgPSBXU0FTZW5kVG8oKFNPQ0tFVClrZXktPmhuZCwgJm9wX2tleV9yZWMtPm92ZXJsYXBwZWQud3NhYnVmLCAxLAorCQkgICAgICAgJmJ5dGVzV3JpdHRlbiwgZHdGbGFncywgYWRkciwgYWRkcmxlbiwKKwkJICAgICAgIE5VTEwsIE5VTEwpOworCWlmIChyYyA9PSAwKSB7CisJICAgICpsZW5ndGggPSBieXRlc1dyaXR0ZW47CisJICAgIHJldHVybiBQSl9TVUNDRVNTOworCX0gZWxzZSB7CisJICAgIERXT1JEIGR3U3RhdHVzID0gV1NBR2V0TGFzdEVycm9yKCk7CisJICAgIGlmIChkd1N0YXR1cyAhPSBXU0FFV09VTERCTE9DSykgeworCQkqbGVuZ3RoID0gLTE7CisJCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoZHdTdGF0dXMpOworCSAgICB9CisJfQorICAgIH0KKworICAgIGR3RmxhZ3MgJj0gfihQSl9JT1FVRVVFX0FMV0FZU19BU1lOQyk7CisKKyAgICAvKgorICAgICAqIERhdGEgY2FuJ3QgYmUgc2VudCBpbW1lZGlhdGVseS4KKyAgICAgKiBTY2hlZHVsZSBhc3luY2hyb25vdXMgV1NBU2VuZCgpLgorICAgICAqLworICAgIHBqX2J6ZXJvKCAmb3Bfa2V5X3JlYy0+b3ZlcmxhcHBlZC5vdmVybGFwcGVkLCAKKyAgICAgICAgICAgICAgc2l6ZW9mKG9wX2tleV9yZWMtPm92ZXJsYXBwZWQub3ZlcmxhcHBlZCkpOworICAgIG9wX2tleV9yZWMtPm92ZXJsYXBwZWQub3BlcmF0aW9uID0gUEpfSU9RVUVVRV9PUF9TRU5EOworCisgICAgcmMgPSBXU0FTZW5kVG8oKFNPQ0tFVClrZXktPmhuZCwgJm9wX2tleV9yZWMtPm92ZXJsYXBwZWQud3NhYnVmLCAxLAorICAgICAgICAgICAgICAgICAgICZieXRlc1dyaXR0ZW4sICBkd0ZsYWdzLCBhZGRyLCBhZGRybGVuLAorCQkgICAmb3Bfa2V5X3JlYy0+b3ZlcmxhcHBlZC5vdmVybGFwcGVkLCBOVUxMKTsKKyAgICBpZiAocmMgPT0gU09DS0VUX0VSUk9SKSB7CisJRFdPUkQgZHdTdGF0dXMgPSBXU0FHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGR3U3RhdHVzIT1XU0FfSU9fUEVORElORykKKyAgICAgICAgICAgIHJldHVybiBQSl9TVEFUVVNfRlJPTV9PUyhkd1N0YXR1cyk7CisgICAgfQorCisgICAgLyogQXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdWNjZXNzZnVsbHkgc3VibWl0dGVkLiAqLworICAgIHJldHVybiBQSl9FUEVORElORzsKK30KKworI2lmIFBKX0hBU19UQ1AKKworLyoKKyAqIHBqX2lvcXVldWVfYWNjZXB0KCkKKyAqCisgKiBJbml0aWF0ZSBvdmVybGFwcGVkIGFjY2VwdCgpIG9wZXJhdGlvbi4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2FjY2VwdCggcGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorCQkJICAgICAgICAgICAgICAgcGpfc29ja190ICpuZXdfc29jaywKKwkJCSAgICAgICAgICAgICAgIHBqX3NvY2thZGRyX3QgKmxvY2FsLAorCQkJICAgICAgICAgICAgICAgcGpfc29ja2FkZHJfdCAqcmVtb3RlLAorCQkJICAgICAgICAgICAgICAgaW50ICphZGRybGVuKQoreworICAgIEJPT0wgcmM7CisgICAgRFdPUkQgYnl0ZXNSZWNlaXZlZDsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisgICAgdW5pb24gb3BlcmF0aW9uX2tleSAqb3Bfa2V5X3JlYzsKKyAgICBTT0NLRVQgc29jazsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXkgJiYgb3Bfa2V5ICYmIG5ld19zb2NrLCBQSl9FSU5WQUwpOworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIC8qIENoZWNrIGtleSBpcyBub3QgY2xvc2luZyAqLworICAgIGlmIChrZXktPmNsb3NpbmcpCisJcmV0dXJuIFBKX0VDQU5DRUxMRUQ7CisjZW5kaWYKKworICAgIC8qCisgICAgICogU2VlIGlmIHRoZXJlIGlzIGEgbmV3IGNvbm5lY3Rpb24gaW1tZWRpYXRlbHkgYXZhaWxhYmxlLgorICAgICAqLworICAgIHNvY2sgPSBXU0FBY2NlcHQoKFNPQ0tFVClrZXktPmhuZCwgcmVtb3RlLCBhZGRybGVuLCBOVUxMLCAwKTsKKyAgICBpZiAoc29jayAhPSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgICAvKiBZZXMhIE5ldyBzb2NrZXQgaXMgYXZhaWxhYmxlISAqLworCWlmIChsb2NhbCAmJiBhZGRybGVuKSB7CisJICAgIGludCBzdGF0dXM7CisKKwkgICAgLyogT24gV2luWFAgb3IgbGF0ZXIsIHVzZSBTT19VUERBVEVfQUNDRVBUX0NPTlRFWFQgc28gdGhhdCBzb2NrZXQgCisJICAgICAqIGFkZHJlc3NlcyBjYW4gYmUgb2J0YWluZWQgd2l0aCBnZXRzb2NrbmFtZSgpIGFuZCBnZXRwZWVybmFtZSgpLgorCSAgICAgKi8KKwkgICAgc3RhdHVzID0gc2V0c29ja29wdChzb2NrLCBTT0xfU09DS0VULCBTT19VUERBVEVfQUNDRVBUX0NPTlRFWFQsCisJCQkJKGNoYXIqKSZrZXktPmhuZCwgc2l6ZW9mKFNPQ0tFVCkpOworCSAgICAvKiBTT19VUERBVEVfQUNDRVBUX0NPTlRFWFQgaXMgZm9yIFdpblhQIG9yIGxhdGVyLgorCSAgICAgKiBTbyBpZ25vcmUgdGhlIGVycm9yIHN0YXR1cy4KKwkgICAgICovCisKKwkgICAgc3RhdHVzID0gZ2V0c29ja25hbWUoc29jaywgbG9jYWwsIGFkZHJsZW4pOworCSAgICBpZiAoc3RhdHVzICE9IDApIHsKKwkJRFdPUkQgZHdFcnJvciA9IFdTQUdldExhc3RFcnJvcigpOworCQljbG9zZXNvY2tldChzb2NrKTsKKwkJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihkd0Vycm9yKTsKKwkgICAgfQorCX0KKworICAgICAgICAqbmV3X3NvY2sgPSBzb2NrOworICAgICAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKworICAgIH0gZWxzZSB7CisgICAgICAgIERXT1JEIGR3RXJyb3IgPSBXU0FHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGR3RXJyb3IgIT0gV1NBRVdPVUxEQkxPQ0spIHsKKyAgICAgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoZHdFcnJvcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIE5vIGNvbm5lY3Rpb24gaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLgorICAgICAqIE11c3Qgc2NoZWR1bGUgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbi4KKyAgICAgKi8KKyAgICBvcF9rZXlfcmVjID0gKHVuaW9uIG9wZXJhdGlvbl9rZXkqKW9wX2tleS0+aW50ZXJuYWxfXzsKKyAgICAKKyAgICBzdGF0dXMgPSBwal9zb2NrX3NvY2tldChwal9BRl9JTkVUKCksIHBqX1NPQ0tfU1RSRUFNKCksIDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcF9rZXlfcmVjLT5hY2NlcHQubmV3c29jayk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisKKyAgICBvcF9rZXlfcmVjLT5hY2NlcHQub3BlcmF0aW9uID0gUEpfSU9RVUVVRV9PUF9BQ0NFUFQ7CisgICAgb3Bfa2V5X3JlYy0+YWNjZXB0LmFkZHJsZW4gPSBhZGRybGVuOworICAgIG9wX2tleV9yZWMtPmFjY2VwdC5sb2NhbCA9IGxvY2FsOworICAgIG9wX2tleV9yZWMtPmFjY2VwdC5yZW1vdGUgPSByZW1vdGU7CisgICAgb3Bfa2V5X3JlYy0+YWNjZXB0Lm5ld3NvY2tfcHRyID0gbmV3X3NvY2s7CisgICAgcGpfYnplcm8oICZvcF9rZXlfcmVjLT5hY2NlcHQub3ZlcmxhcHBlZCwgCisJICAgICAgc2l6ZW9mKG9wX2tleV9yZWMtPmFjY2VwdC5vdmVybGFwcGVkKSk7CisKKyAgICByYyA9IEFjY2VwdEV4KCAoU09DS0VUKWtleS0+aG5kLCAoU09DS0VUKW9wX2tleV9yZWMtPmFjY2VwdC5uZXdzb2NrLAorCQkgICBvcF9rZXlfcmVjLT5hY2NlcHQuYWNjZXB0X2J1ZiwKKwkJICAgMCwgQUNDRVBUX0FERFJfTEVOLCBBQ0NFUFRfQUREUl9MRU4sCisJCSAgICZieXRlc1JlY2VpdmVkLAorCQkgICAmb3Bfa2V5X3JlYy0+YWNjZXB0Lm92ZXJsYXBwZWQgKTsKKworICAgIGlmIChyYyA9PSBUUlVFKSB7CisJaW9xdWV1ZV9vbl9hY2NlcHRfY29tcGxldGUoa2V5LCAmb3Bfa2V5X3JlYy0+YWNjZXB0KTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9IGVsc2UgeworCURXT1JEIGR3U3RhdHVzID0gV1NBR2V0TGFzdEVycm9yKCk7CisJaWYgKGR3U3RhdHVzIT1XU0FfSU9fUEVORElORykKKyAgICAgICAgICAgIHJldHVybiBQSl9TVEFUVVNfRlJPTV9PUyhkd1N0YXR1cyk7CisgICAgfQorCisgICAgLyogQXN5bmNocm9ub3VzIEFjY2VwdCgpIGhhcyBiZWVuIHN1Ym1pdHRlZC4gKi8KKyAgICByZXR1cm4gUEpfRVBFTkRJTkc7Cit9CisKKworLyoKKyAqIHBqX2lvcXVldWVfY29ubmVjdCgpCisgKgorICogSW5pdGlhdGUgb3ZlcmxhcHBlZCBjb25uZWN0KCkgb3BlcmF0aW9uICh3ZWxsLCBpdCdzIG5vbi1ibG9ja2luZyBhY3R1YWxseSwKKyAqIHNpbmNlIHRoZXJlJ3Mgbm8gb3ZlcmxhcHBlZCB2ZXJzaW9uIG9mIGNvbm5lY3QoKSkuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9jb25uZWN0KCBwal9pb3F1ZXVlX2tleV90ICprZXksCisJCQkJCWNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJCWludCBhZGRybGVuICkKK3sKKyAgICBIQU5ETEUgaEV2ZW50OworICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZTsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihrZXkgJiYgYWRkciAmJiBhZGRybGVuLCBQSl9FSU5WQUwpOworCisjaWYgUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRworICAgIC8qIENoZWNrIGtleSBpcyBub3QgY2xvc2luZyAqLworICAgIGlmIChrZXktPmNsb3NpbmcpCisJcmV0dXJuIFBKX0VDQU5DRUxMRUQ7CisjZW5kaWYKKworICAgIC8qIEluaXRpYXRlIGNvbm5lY3QoKSAqLworICAgIGlmIChjb25uZWN0KChwal9zb2NrX3Qpa2V5LT5obmQsIGFkZHIsIGFkZHJsZW4pICE9IDApIHsKKwlEV09SRCBkd1N0YXR1czsKKwlkd1N0YXR1cyA9IFdTQUdldExhc3RFcnJvcigpOworICAgICAgICBpZiAoZHdTdGF0dXMgIT0gV1NBRVdPVUxEQkxPQ0spIHsKKwkgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihkd1N0YXR1cyk7CisJfQorICAgIH0gZWxzZSB7CisJLyogQ29ubmVjdCBoYXMgY29tcGxldGVkIGltbWVkaWF0ZWx5ISAqLworCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0KKworICAgIGlvcXVldWUgPSBrZXktPmlvcXVldWU7CisKKyAgICAvKiBBZGQgdG8gdGhlIGFycmF5IG9mIGNvbm5lY3Rpbmcgc29ja2V0IHRvIGJlIHBvbGxlZCAqLworICAgIHBqX2xvY2tfYWNxdWlyZShpb3F1ZXVlLT5sb2NrKTsKKworICAgIGlmIChpb3F1ZXVlLT5jb25uZWN0aW5nX2NvdW50ID49IE1BWElNVU1fV0FJVF9PQkpFQ1RTKSB7CisJcGpfbG9ja19yZWxlYXNlKGlvcXVldWUtPmxvY2spOworCXJldHVybiBQSl9FVE9PTUFOWUNPTk47CisgICAgfQorCisgICAgLyogR2V0IG9yIGNyZWF0ZSBldmVudCBvYmplY3QuICovCisgICAgaWYgKGlvcXVldWUtPmV2ZW50X2NvdW50KSB7CisJaEV2ZW50ID0gaW9xdWV1ZS0+ZXZlbnRfcG9vbFtpb3F1ZXVlLT5ldmVudF9jb3VudCAtIDFdOworCS0taW9xdWV1ZS0+ZXZlbnRfY291bnQ7CisgICAgfSBlbHNlIHsKKwloRXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7CisJaWYgKGhFdmVudCA9PSBOVUxMKSB7CisJICAgIERXT1JEIGR3U3RhdHVzID0gR2V0TGFzdEVycm9yKCk7CisJICAgIHBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKKwkgICAgcmV0dXJuIFBKX1NUQVRVU19GUk9NX09TKGR3U3RhdHVzKTsKKwl9CisgICAgfQorCisgICAgLyogTWFyayBrZXkgYXMgY29ubmVjdGluZy4KKyAgICAgKiBXZSBjYW4ndCB1c2UgYXJyYXkgaW5kZXggc2luY2Uga2V5IGNhbiBiZSByZW1vdmVkIGR5bmFtaWNhbGx5LiAKKyAgICAgKi8KKyAgICBrZXktPmNvbm5lY3RpbmcgPSAxOworCisgICAgLyogQXNzb2NpYXRlIHNvY2tldCBldmVudHMgdG8gdGhlIGV2ZW50IG9iamVjdC4gKi8KKyAgICBpZiAoV1NBRXZlbnRTZWxlY3QoKHBqX3NvY2tfdClrZXktPmhuZCwgaEV2ZW50LCBGRF9DT05ORUNUKSAhPSAwKSB7CisJQ2xvc2VIYW5kbGUoaEV2ZW50KTsKKwlwal9sb2NrX3JlbGVhc2UoaW9xdWV1ZS0+bG9jayk7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihXU0FHZXRMYXN0RXJyb3IoKSk7CisgICAgfQorCisgICAgLyogQWRkIHRvIGFycmF5LiAqLworICAgIGlvcXVldWUtPmNvbm5lY3Rpbmdfa2V5c1sgaW9xdWV1ZS0+Y29ubmVjdGluZ19jb3VudCBdID0ga2V5OworICAgIGlvcXVldWUtPmNvbm5lY3RpbmdfaGFuZGxlc1sgaW9xdWV1ZS0+Y29ubmVjdGluZ19jb3VudCBdID0gaEV2ZW50OworICAgIGlvcXVldWUtPmNvbm5lY3RpbmdfY291bnQrKzsKKworICAgIHBqX2xvY2tfcmVsZWFzZShpb3F1ZXVlLT5sb2NrKTsKKworICAgIHJldHVybiBQSl9FUEVORElORzsKK30KKyNlbmRpZgkvKiAjaWYgUEpfSEFTX1RDUCAqLworCisKK1BKX0RFRih2b2lkKSBwal9pb3F1ZXVlX29wX2tleV9pbml0KCBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJICAgICBwal9zaXplX3Qgc2l6ZSApCit7CisgICAgcGpfYnplcm8ob3Bfa2V5LCBzaXplKTsKK30KKworUEpfREVGKHBqX2Jvb2xfdCkgcGpfaW9xdWV1ZV9pc19wZW5kaW5nKCBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSApCit7CisgICAgQk9PTCByYzsKKyAgICBEV09SRCBieXRlc1RyYW5zZmVyZWQ7CisKKyAgICByYyA9IEdldE92ZXJsYXBwZWRSZXN1bHQoIGtleS0+aG5kLCAoTFBPVkVSTEFQUEVEKW9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc1RyYW5zZmVyZWQsIEZBTFNFICk7CisKKyAgICBpZiAocmMgPT0gRkFMU0UpIHsKKyAgICAgICAgcmV0dXJuIEdldExhc3RFcnJvcigpPT1FUlJPUl9JT19JTkNPTVBMRVRFOworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKK30KKworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2lvcXVldWVfcG9zdF9jb21wbGV0aW9uKCBwal9pb3F1ZXVlX2tleV90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zc2l6ZV90IGJ5dGVzX3N0YXR1cyApCit7CisgICAgQk9PTCByYzsKKworICAgIHJjID0gUG9zdFF1ZXVlZENvbXBsZXRpb25TdGF0dXMoa2V5LT5pb3F1ZXVlLT5pb2NwLCBieXRlc19zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZylrZXksIChPVkVSTEFQUEVEKilvcF9rZXkgKTsKKyAgICBpZiAocmMgPT0gRkFMU0UpIHsKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW9xdWV1ZV9zZXRfY29uY3VycmVuY3kocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LAorCQkJCQkgICAgICAgcGpfYm9vbF90IGFsbG93KQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4oa2V5LCBQSl9FSU5WQUwpOworCisgICAgLyogUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRyBtdXN0IGJlIGVuYWJsZWQgaWYgY29uY3VycmVuY3kgaXMKKyAgICAgKiBkaXNhYmxlZC4KKyAgICAgKi8KKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFsbG93IHx8IFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcsIFBKX0VJTlZBTCk7CisKKyAgICBrZXktPmFsbG93X2NvbmN1cnJlbnQgPSBhbGxvdzsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX2xvY2tfa2V5KHBqX2lvcXVldWVfa2V5X3QgKmtleSkKK3sKKyNpZiBQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHCisgICAgcmV0dXJuIHBqX211dGV4X2xvY2soa2V5LT5tdXRleCk7CisjZWxzZQorICAgIFBKX0FTU0VSVF9SRVRVUk4oISJQSl9JT1FVRVVFX0hBU19TQUZFX1VOUkVHIGlzIGRpc2FibGVkIiwgUEpfRUlOVkFMSURPUCk7CisjZW5kaWYKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pb3F1ZXVlX3VubG9ja19rZXkocGpfaW9xdWV1ZV9rZXlfdCAqa2V5KQoreworI2lmIFBKX0lPUVVFVUVfSEFTX1NBRkVfVU5SRUcKKyAgICByZXR1cm4gcGpfbXV0ZXhfdW5sb2NrKGtleS0+bXV0ZXgpOworI2Vsc2UKKyAgICBQSl9BU1NFUlRfUkVUVVJOKCEiUEpfSU9RVUVVRV9IQVNfU0FGRV9VTlJFRyBpcyBkaXNhYmxlZCIsIFBKX0VJTlZBTElET1ApOworI2VuZGlmCit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pcF9oZWxwZXJfZ2VuZXJpYy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lwX2hlbHBlcl9nZW5lcmljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRkNWExZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pcF9oZWxwZXJfZ2VuZXJpYy5jCkBAIC0wLDAgKzEsNDA5IEBACisvKiAkSWQ6IGlwX2hlbHBlcl9nZW5lcmljLmMgNDM1NSAyMDEzLTAyLTE5IDE2OjI3OjM3WiBiZW5ueWxwICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovaXBfaGVscGVyLmg+CisjaW5jbHVkZSA8cGovYWRkcl9yZXNvbHYuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zb2NrZXQuaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisKKy8qIFNldCB0byAxIHRvIGVuYWJsZSB0cmFjaW5nICovCisjaWYgMAorIyAgIGluY2x1ZGUgPHBqL2xvZy5oPgorIyAgIGRlZmluZSBUSElTX0ZJTEUJImlwX2hlbHBlcl9nZW5lcmljLmMiCisjICAgZGVmaW5lIFRSQUNFXyhleHApCVBKX0xPRyg1LGV4cCkKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqZ2V0X29zX2Vycm1zZyh2b2lkKQorICAgIHsKKwlzdGF0aWMgY2hhciBlcnJtc2dbUEpfRVJSX01TR19TSVpFXTsKKwlwal9zdHJlcnJvcihwal9nZXRfb3NfZXJyb3IoKSwgZXJybXNnLCBzaXplb2YoZXJybXNnKSk7CisJcmV0dXJuIGVycm1zZzsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmdldF9hZGRyKHZvaWQgKmFkZHIpCisgICAgeworCXN0YXRpYyBjaGFyIHR4dFtQSl9JTkVUNl9BRERSU1RSTEVOXTsKKwlzdHJ1Y3Qgc29ja2FkZHIgKmFkID0gKHN0cnVjdCBzb2NrYWRkciopYWRkcjsKKwlpZiAoYWQtPnNhX2ZhbWlseSAhPSBQSl9BRl9JTkVUICYmIGFkLT5zYV9mYW1pbHkgIT0gUEpfQUZfSU5FVDYpCisJICAgIHJldHVybiAiPyI7CisJcmV0dXJuIHBqX2luZXRfbnRvcDIoYWQtPnNhX2ZhbWlseSwgcGpfc29ja2FkZHJfZ2V0X2FkZHIoYWQpLCAKKwkJCSAgICAgdHh0LCBzaXplb2YodHh0KSk7CisgICAgfQorI2Vsc2UKKyMgICBkZWZpbmUgVFJBQ0VfKGV4cCkKKyNlbmRpZgorCisKKyNpZiAwCisgICAgLyogZHVtbXkgKi8KKworI2VsaWYgZGVmaW5lZChQSl9IQVNfSUZBRERSU19IKSAmJiBQSl9IQVNfSUZBRERSU19IICE9IDAgJiYgXAorICAgICAgZGVmaW5lZChQSl9IQVNfTkVUX0lGX0gpICYmIFBKX0hBU19ORVRfSUZfSCAhPSAwCisvKiBVc2luZyBnZXRpZmFkZHJzKCkgaXMgcHJlZmVycmVkIHNpbmNlIGl0IGNhbiB3b3JrIHdpdGggYm90aCBJUHY0IGFuZCBJUHY2ICovCitzdGF0aWMgcGpfc3RhdHVzX3QgaWZfZW51bV9ieV9hZihpbnQgYWYsCisJCQkJIHVuc2lnbmVkICpwX2NudCwKKwkJCQkgcGpfc29ja2FkZHIgaWZzW10pCit7CisgICAgc3RydWN0IGlmYWRkcnMgKmlmYXAgPSBOVUxMLCAqaXQ7CisgICAgdW5zaWduZWQgbWF4OworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZj09UEpfQUZfSU5FVCB8fCBhZj09UEpfQUZfSU5FVDYsIFBKX0VJTlZBTCk7CisgICAgCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICJTdGFydGluZyBpbnRlcmZhY2UgZW51bSB3aXRoIGdldGlmYWRkcnMoKSBmb3IgYWY9JWQiLAorCSAgICBhZikpOworCisgICAgaWYgKGdldGlmYWRkcnMoJmlmYXApICE9IDApIHsKKwlUUkFDRV8oKFRISVNfRklMRSwgIiBnZXRpZmFycmRzKCkgZmFpbGVkOiAlcyIsIGdldF9vc19lcnJtc2coKSkpOworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocGpfZ2V0X25ldG9zX2Vycm9yKCkpOworICAgIH0KKworICAgIGl0ID0gaWZhcDsKKyAgICBtYXggPSAqcF9jbnQ7CisgICAgKnBfY250ID0gMDsKKyAgICBmb3IgKDsgaXQhPU5VTEwgJiYgKnBfY250IDwgbWF4OyBpdCA9IGl0LT5pZmFfbmV4dCkgeworCXN0cnVjdCBzb2NrYWRkciAqYWQgPSBpdC0+aWZhX2FkZHI7CisKKwlUUkFDRV8oKFRISVNfRklMRSwgIiBjaGVja2luZyAlcyIsIGl0LT5pZmFfbmFtZSkpOworCisJaWYgKChpdC0+aWZhX2ZsYWdzICYgSUZGX1VQKT09MCkgeworCSAgICBUUkFDRV8oKFRISVNfRklMRSwgIiAgaW50ZXJmYWNlIGlzIGRvd24iKSk7CisJICAgIGNvbnRpbnVlOyAvKiBTa2lwIHdoZW4gaW50ZXJmYWNlIGlzIGRvd24gKi8KKwl9CisKKyNpZiBQSl9JUF9IRUxQRVJfSUdOT1JFX0xPT1BCQUNLX0lGCisJaWYgKGl0LT5pZmFfZmxhZ3MgJiBJRkZfTE9PUEJBQ0spIHsKKwkgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgIGxvb3BiYWNrIGludGVyZmFjZSIpKTsKKwkgICAgY29udGludWU7IC8qIFNraXAgbG9vcGJhY2sgaW50ZXJmYWNlICovCisJfQorI2VuZGlmCisKKwlpZiAoYWQ9PU5VTEwpIHsKKwkgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgIE5VTEwgYWRkcmVzcyBpZ25vcmVkIikpOworCSAgICBjb250aW51ZTsgLyogcmVwb3J0ZWQgdG8gaGFwcGVuIG9uIExpbnV4IDIuNi4yNS45IAorCQkJIHdpdGggcHBwIGludGVyZmFjZSAqLworCX0KKworCWlmIChhZC0+c2FfZmFtaWx5ICE9IGFmKSB7CisJICAgIFRSQUNFXygoVEhJU19GSUxFLCAiICBhZGRyZXNzICVzIGlnbm9yZWQgKGFmPSVkKSIsIAorCQkgICAgZ2V0X2FkZHIoYWQpLCBhZC0+c2FfZmFtaWx5KSk7CisJICAgIGNvbnRpbnVlOyAvKiBTa2lwIHdoZW4gaW50ZXJmYWNlIGlzIGRvd24gKi8KKwl9CisKKwkvKiBJZ25vcmUgMC4wLjAuMC84IGFkZHJlc3MuIFRoaXMgaXMgYSBzcGVjaWFsIGFkZHJlc3MKKwkgKiB3aGljaCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBwcmFjdGljYWwgdXNlLgorCSAqLworCWlmIChhZj09cGpfQUZfSU5FVCgpICYmCisJICAgIChwal9udG9obCgoKHBqX3NvY2thZGRyX2luKilhZCktPnNpbl9hZGRyLnNfYWRkcikgPj4gMjQpID09IDApCisJeworCSAgICBUUkFDRV8oKFRISVNfRklMRSwgIiAgYWRkcmVzcyAlcyBpZ25vcmVkICgwLjAuMC4wLzggY2xhc3MpIiwgCisJCSAgICBnZXRfYWRkcihhZCksIGFkLT5zYV9mYW1pbHkpKTsKKwkgICAgY29udGludWU7CisJfQorCisJVFJBQ0VfKChUSElTX0ZJTEUsICIgIGFkZHJlc3MgJXMgKGFmPSVkKSBhZGRlZCBhdCBpbmRleCAlZCIsIAorCQlnZXRfYWRkcihhZCksIGFkLT5zYV9mYW1pbHksICpwX2NudCkpOworCisJcGpfYnplcm8oJmlmc1sqcF9jbnRdLCBzaXplb2YoaWZzWzBdKSk7CisJcGpfbWVtY3B5KCZpZnNbKnBfY250XSwgYWQsIHBqX3NvY2thZGRyX2dldF9sZW4oYWQpKTsKKwlQSl9TT0NLQUREUl9SRVNFVF9MRU4oJmlmc1sqcF9jbnRdKTsKKwkoKnBfY250KSsrOworICAgIH0KKworICAgIGZyZWVpZmFkZHJzKGlmYXApOworICAgIFRSQUNFXygoVEhJU19GSUxFLCAiZG9uZSwgZm91bmQgJWQgYWRkcmVzcyhlcykiLCAqcF9jbnQpKTsKKyAgICByZXR1cm4gKCpwX2NudCAhPSAwKSA/IFBKX1NVQ0NFU1MgOiBQSl9FTk9URk9VTkQ7Cit9CisKKyNlbGlmIGRlZmluZWQoU0lPQ0dJRkNPTkYpICYmIFwKKyAgICAgIGRlZmluZWQoUEpfSEFTX05FVF9JRl9IKSAmJiBQSl9IQVNfTkVUX0lGX0ggIT0gMAorCisvKiBOb3RlOiB0aGlzIGRvZXMgbm90IHdvcmsgd2l0aCBJUHY2ICovCitzdGF0aWMgcGpfc3RhdHVzX3QgaWZfZW51bV9ieV9hZihpbnQgYWYsCisJCQkJIHVuc2lnbmVkICpwX2NudCwKKwkJCQkgcGpfc29ja2FkZHIgaWZzW10pCit7CisgICAgcGpfc29ja190IHNvY2s7CisgICAgY2hhciBidWZbNTEyXTsKKyAgICBzdHJ1Y3QgaWZjb25mIGlmYzsKKyAgICBzdHJ1Y3QgaWZyZXEgKmlmcjsKKyAgICBpbnQgaSwgY291bnQ7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZj09UEpfQUZfSU5FVCB8fCBhZj09UEpfQUZfSU5FVDYsIFBKX0VJTlZBTCk7CisgICAgCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICJTdGFydGluZyBpbnRlcmZhY2UgZW51bSB3aXRoIFNJT0NHSUZDT05GIGZvciBhZj0lZCIsCisJICAgIGFmKSk7CisKKyAgICBzdGF0dXMgPSBwal9zb2NrX3NvY2tldChhZiwgUEpfU09DS19ER1JBTSwgMCwgJnNvY2spOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gc3RhdHVzOworCisgICAgLyogUXVlcnkgYXZhaWxhYmxlIGludGVyZmFjZXMgKi8KKyAgICBpZmMuaWZjX2xlbiA9IHNpemVvZihidWYpOworICAgIGlmYy5pZmNfYnVmID0gYnVmOworCisgICAgaWYgKGlvY3RsKHNvY2ssIFNJT0NHSUZDT05GLCAmaWZjKSA8IDApIHsKKwlpbnQgb3NlcnIgPSBwal9nZXRfbmV0b3NfZXJyb3IoKTsKKwlUUkFDRV8oKFRISVNfRklMRSwgIiBpb2N0bChTSU9DR0lGQ09ORikgZmFpbGVkOiAlcyIsIGdldF9vc19lcnJtc2coKSkpOworCXBqX3NvY2tfY2xvc2Uoc29jayk7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihvc2Vycik7CisgICAgfQorCisgICAgLyogSW50ZXJmYWNlIGludGVyZmFjZXMgKi8KKyAgICBpZnIgPSAoc3RydWN0IGlmcmVxKikgaWZjLmlmY19yZXE7CisgICAgY291bnQgPSBpZmMuaWZjX2xlbiAvIHNpemVvZihzdHJ1Y3QgaWZyZXEpOworICAgIGlmIChjb3VudCA+ICpwX2NudCkKKwljb3VudCA9ICpwX2NudDsKKworICAgICpwX2NudCA9IDA7CisgICAgZm9yIChpPTA7IGk8Y291bnQ7ICsraSkgeworCXN0cnVjdCBpZnJlcSAqaXRmID0gJmlmcltpXTsKKyAgICAgICAgc3RydWN0IGlmcmVxIGlmZiA9ICppdGY7CisJc3RydWN0IHNvY2thZGRyICphZCA9ICZpdGYtPmlmcl9hZGRyOworCQorCVRSQUNFXygoVEhJU19GSUxFLCAiIGNoZWNraW5nIGludGVyZmFjZSAlcyIsIGl0Zi0+aWZyX25hbWUpKTsKKworCS8qIFNraXAgYWRkcmVzcyB3aXRoIGRpZmZlcmVudCBmYW1pbHkgKi8KKwlpZiAoYWQtPnNhX2ZhbWlseSAhPSBhZikgeworCSAgICBUUkFDRV8oKFRISVNfRklMRSwgIiAgYWRkcmVzcyAlcyAoYWY9JWQpIGlnbm9yZWQiLAorCQkgICAgZ2V0X2FkZHIoYWQpLCAoaW50KWFkLT5zYV9mYW1pbHkpKTsKKwkgICAgY29udGludWU7CisJfQorCisgICAgICAgIGlmIChpb2N0bChzb2NrLCBTSU9DR0lGRkxBR1MsICZpZmYpICE9IDApIHsKKwkgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgIGlvY3RsKFNJT0NHSUZGTEFHUykgZmFpbGVkOiAlcyIsCisJCSAgICBnZXRfb3NfZXJybXNnKCkpKTsKKwkgICAgY29udGludWU7CS8qIEZhaWxlZCB0byBnZXQgZmxhZ3MsIGNvbnRpbnVlICovCisJfQorCisJaWYgKChpZmYuaWZyX2ZsYWdzICYgSUZGX1VQKT09MCkgeworCSAgICBUUkFDRV8oKFRISVNfRklMRSwgIiAgaW50ZXJmYWNlIGlzIGRvd24iKSk7CisJICAgIGNvbnRpbnVlOyAvKiBTa2lwIHdoZW4gaW50ZXJmYWNlIGlzIGRvd24gKi8KKwl9CisKKyNpZiBQSl9JUF9IRUxQRVJfSUdOT1JFX0xPT1BCQUNLX0lGCisJaWYgKGlmZi5pZnJfZmxhZ3MgJiBJRkZfTE9PUEJBQ0spIHsKKwkgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgIGxvb3BiYWNrIGludGVyZmFjZSIpKTsKKwkgICAgY29udGludWU7IC8qIFNraXAgbG9vcGJhY2sgaW50ZXJmYWNlICovCisJfQorI2VuZGlmCisKKwkvKiBJZ25vcmUgMC4wLjAuMC84IGFkZHJlc3MuIFRoaXMgaXMgYSBzcGVjaWFsIGFkZHJlc3MKKwkgKiB3aGljaCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBwcmFjdGljYWwgdXNlLgorCSAqLworCWlmIChhZj09cGpfQUZfSU5FVCgpICYmCisJICAgIChwal9udG9obCgoKHBqX3NvY2thZGRyX2luKilhZCktPnNpbl9hZGRyLnNfYWRkcikgPj4gMjQpID09IDApCisJeworCSAgICBUUkFDRV8oKFRISVNfRklMRSwgIiAgYWRkcmVzcyAlcyBpZ25vcmVkICgwLjAuMC4wLzggY2xhc3MpIiwgCisJCSAgICBnZXRfYWRkcihhZCksIGFkLT5zYV9mYW1pbHkpKTsKKwkgICAgY29udGludWU7CisJfQorCisJVFJBQ0VfKChUSElTX0ZJTEUsICIgIGFkZHJlc3MgJXMgKGFmPSVkKSBhZGRlZCBhdCBpbmRleCAlZCIsIAorCQlnZXRfYWRkcihhZCksIGFkLT5zYV9mYW1pbHksICpwX2NudCkpOworCisJcGpfYnplcm8oJmlmc1sqcF9jbnRdLCBzaXplb2YoaWZzWzBdKSk7CisJcGpfbWVtY3B5KCZpZnNbKnBfY250XSwgYWQsIHBqX3NvY2thZGRyX2dldF9sZW4oYWQpKTsKKwlQSl9TT0NLQUREUl9SRVNFVF9MRU4oJmlmc1sqcF9jbnRdKTsKKwkoKnBfY250KSsrOworICAgIH0KKworICAgIC8qIERvbmUgd2l0aCBzb2NrZXQgKi8KKyAgICBwal9zb2NrX2Nsb3NlKHNvY2spOworCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICJkb25lLCBmb3VuZCAlZCBhZGRyZXNzKGVzKSIsICpwX2NudCkpOworICAgIHJldHVybiAoKnBfY250ICE9IDApID8gUEpfU1VDQ0VTUyA6IFBKX0VOT1RGT1VORDsKK30KKworCisjZWxpZiBkZWZpbmVkKFBKX0hBU19ORVRfSUZfSCkgJiYgUEpfSEFTX05FVF9JRl9IICE9IDAKKy8qIE5vdGU6IHRoaXMgZG9lcyBub3Qgd29yayB3aXRoIElQdjYgKi8KK3N0YXRpYyBwal9zdGF0dXNfdCBpZl9lbnVtX2J5X2FmKGludCBhZiwgdW5zaWduZWQgKnBfY250LCBwal9zb2NrYWRkciBpZnNbXSkKK3sKKyAgICBzdHJ1Y3QgaWZfbmFtZWluZGV4ICppZl9saXN0OworICAgIHN0cnVjdCBpZnJlcSBpZnJlcTsKKyAgICBwal9zb2NrX3Qgc29jazsKKyAgICB1bnNpZ25lZCBpLCBtYXhfY291bnQ7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZj09UEpfQUZfSU5FVCB8fCBhZj09UEpfQUZfSU5FVDYsIFBKX0VJTlZBTCk7CisKKyAgICBUUkFDRV8oKFRISVNfRklMRSwgIlN0YXJ0aW5nIGlmX25hbWVpbmRleCgpIGZvciBhZj0lZCIsIGFmKSk7CisKKyAgICBzdGF0dXMgPSBwal9zb2NrX3NvY2tldChhZiwgUEpfU09DS19ER1JBTSwgMCwgJnNvY2spOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gc3RhdHVzOworCisgICAgaWZfbGlzdCA9IGlmX25hbWVpbmRleCgpOworICAgIGlmIChpZl9saXN0ID09IE5VTEwpCisJcmV0dXJuIFBKX0VOT1RGT1VORDsKKworICAgIG1heF9jb3VudCA9ICpwX2NudDsKKyAgICAqcF9jbnQgPSAwOworICAgIGZvciAoaT0wOyBpZl9saXN0W2ldLmlmX2luZGV4ICYmICpwX2NudDxtYXhfY291bnQ7ICsraSkgeworCXN0cnVjdCBzb2NrYWRkciAqYWQ7CisJaW50IHJjOworCisJc3RybmNweShpZnJlcS5pZnJfbmFtZSwgaWZfbGlzdFtpXS5pZl9uYW1lLCBJRk5BTVNJWik7CisKKwlUUkFDRV8oKFRISVNfRklMRSwgIiBjaGVja2luZyBpbnRlcmZhY2UgJXMiLCBpZnJlcS5pZnJfbmFtZSkpOworCisJaWYgKChyYz1pb2N0bChzb2NrLCBTSU9DR0lGRkxBR1MsICZpZnJlcSkpICE9IDApIHsKKwkgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgIGlvY3RsKFNJT0NHSUZGTEFHUykgZmFpbGVkOiAlcyIsCisJCSAgICBnZXRfb3NfZXJybXNnKCkpKTsKKwkgICAgY29udGludWU7CS8qIEZhaWxlZCB0byBnZXQgZmxhZ3MsIGNvbnRpbnVlICovCisJfQorCisJaWYgKChpZnJlcS5pZnJfZmxhZ3MgJiBJRkZfVVApPT0wKSB7CisJICAgIFRSQUNFXygoVEhJU19GSUxFLCAiICBpbnRlcmZhY2UgaXMgZG93biIpKTsKKwkgICAgY29udGludWU7IC8qIFNraXAgd2hlbiBpbnRlcmZhY2UgaXMgZG93biAqLworCX0KKworI2lmIFBKX0lQX0hFTFBFUl9JR05PUkVfTE9PUEJBQ0tfSUYKKwlpZiAoaWZyZXEuaWZyX2ZsYWdzICYgSUZGX0xPT1BCQUNLKSB7CisJICAgIFRSQUNFXygoVEhJU19GSUxFLCAiICBsb29wYmFjayBpbnRlcmZhY2UiKSk7CisJICAgIGNvbnRpbnVlOyAvKiBTa2lwIGxvb3BiYWNrIGludGVyZmFjZSAqLworCX0KKyNlbmRpZgorCisJLyogTm90ZTogU0lPQ0dJRkFERFIgZG9lcyBub3Qgd29yayBmb3IgSVB2NiEgKi8KKwlpZiAoKHJjPWlvY3RsKHNvY2ssIFNJT0NHSUZBRERSLCAmaWZyZXEpKSAhPSAwKSB7CisJICAgIFRSQUNFXygoVEhJU19GSUxFLCAiICBpb2N0bChTSU9DR0lGQUREUikgZmFpbGVkOiAlcyIsCisJCSAgICBnZXRfb3NfZXJybXNnKCkpKTsKKwkgICAgY29udGludWU7CS8qIEZhaWxlZCB0byBnZXQgYWRkcmVzcywgY29udGludWUgKi8KKwl9CisKKwlhZCA9IChzdHJ1Y3Qgc29ja2FkZHIqKSAmaWZyZXEuaWZyX2FkZHI7CisKKwlpZiAoYWQtPnNhX2ZhbWlseSAhPSBhZikgeworCSAgICBUUkFDRV8oKFRISVNfRklMRSwgIiAgYWRkcmVzcyAlcyBmYW1pbHkgJWQgaWdub3JlZCIsIAorCQkJICAgICAgIGdldF9hZGRyKCZpZnJlcS5pZnJfYWRkciksCisJCQkgICAgICAgaWZyZXEuaWZyX2FkZHIuc2FfZmFtaWx5KSk7CisJICAgIGNvbnRpbnVlOwkvKiBOb3QgYWRkcmVzcyBmYW1pbHkgdGhhdCB3ZSB3YW50LCBjb250aW51ZSAqLworCX0KKworCS8qIElnbm9yZSAwLjAuMC4wLzggYWRkcmVzcy4gVGhpcyBpcyBhIHNwZWNpYWwgYWRkcmVzcworCSAqIHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIHByYWN0aWNhbCB1c2UuCisJICovCisJaWYgKGFmPT1wal9BRl9JTkVUKCkgJiYKKwkgICAgKHBqX250b2hsKCgocGpfc29ja2FkZHJfaW4qKWFkKS0+c2luX2FkZHIuc19hZGRyKSA+PiAyNCkgPT0gMCkKKwl7CisJICAgIFRSQUNFXygoVEhJU19GSUxFLCAiICBhZGRyZXNzICVzIGlnbm9yZWQgKDAuMC4wLjAvOCBjbGFzcykiLCAKKwkJICAgIGdldF9hZGRyKGFkKSwgYWQtPnNhX2ZhbWlseSkpOworCSAgICBjb250aW51ZTsKKwl9CisKKwkvKiBHb3QgYW4gYWRkcmVzcyAhICovCisJVFJBQ0VfKChUSElTX0ZJTEUsICIgIGFkZHJlc3MgJXMgKGFmPSVkKSBhZGRlZCBhdCBpbmRleCAlZCIsIAorCQlnZXRfYWRkcihhZCksIGFkLT5zYV9mYW1pbHksICpwX2NudCkpOworCisJcGpfYnplcm8oJmlmc1sqcF9jbnRdLCBzaXplb2YoaWZzWzBdKSk7CisJcGpfbWVtY3B5KCZpZnNbKnBfY250XSwgYWQsIHBqX3NvY2thZGRyX2dldF9sZW4oYWQpKTsKKwlQSl9TT0NLQUREUl9SRVNFVF9MRU4oJmlmc1sqcF9jbnRdKTsKKwkoKnBfY250KSsrOworICAgIH0KKworICAgIGlmX2ZyZWVuYW1laW5kZXgoaWZfbGlzdCk7CisgICAgcGpfc29ja19jbG9zZShzb2NrKTsKKworICAgIFRSQUNFXygoVEhJU19GSUxFLCAiZG9uZSwgZm91bmQgJWQgYWRkcmVzcyhlcykiLCAqcF9jbnQpKTsKKyAgICByZXR1cm4gKCpwX2NudCAhPSAwKSA/IFBKX1NVQ0NFU1MgOiBQSl9FTk9URk9VTkQ7Cit9CisKKyNlbHNlCitzdGF0aWMgcGpfc3RhdHVzX3QgaWZfZW51bV9ieV9hZihpbnQgYWYsCisJCQkJIHVuc2lnbmVkICpwX2NudCwKKwkJCQkgcGpfc29ja2FkZHIgaWZzW10pCit7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihwX2NudCAmJiAqcF9jbnQgPiAwICYmIGlmcywgUEpfRUlOVkFMKTsKKworICAgIHBqX2J6ZXJvKGlmcywgc2l6ZW9mKGlmc1swXSkgKiAoKnBfY250KSk7CisKKyAgICAvKiBKdXN0IGdldCBvbmUgZGVmYXVsdCByb3V0ZSAqLworICAgIHN0YXR1cyA9IHBqX2dldGRlZmF1bHRpcGludGVyZmFjZShhZiwgJmlmc1swXSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisKKyAgICAqcF9jbnQgPSAxOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorI2VuZGlmIC8qIFNJT0NHSUZDT05GICovCisKKy8qCisgKiBFbnVtZXJhdGUgdGhlIGxvY2FsIElQIGludGVyZmFjZSBjdXJyZW50bHkgYWN0aXZlIGluIHRoZSBob3N0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2VudW1faXBfaW50ZXJmYWNlKGludCBhZiwKKwkJCQkJIHVuc2lnbmVkICpwX2NudCwKKwkJCQkJIHBqX3NvY2thZGRyIGlmc1tdKQoreworICAgIHVuc2lnbmVkIHN0YXJ0OworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIHN0YXJ0ID0gMDsKKyAgICBpZiAoYWY9PVBKX0FGX0lORVQ2IHx8IGFmPT1QSl9BRl9VTlNQRUMpIHsKKwl1bnNpZ25lZCBtYXggPSAqcF9jbnQ7CisJc3RhdHVzID0gaWZfZW51bV9ieV9hZihQSl9BRl9JTkVUNiwgJm1heCwgJmlmc1tzdGFydF0pOworCWlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCSAgICBzdGFydCArPSBtYXg7CisJICAgICgqcF9jbnQpIC09IG1heDsKKwl9CisgICAgfQorCisgICAgaWYgKGFmPT1QSl9BRl9JTkVUIHx8IGFmPT1QSl9BRl9VTlNQRUMpIHsKKwl1bnNpZ25lZCBtYXggPSAqcF9jbnQ7CisJc3RhdHVzID0gaWZfZW51bV9ieV9hZihQSl9BRl9JTkVULCAmbWF4LCAmaWZzW3N0YXJ0XSk7CisJaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKSB7CisJICAgIHN0YXJ0ICs9IG1heDsKKwkgICAgKCpwX2NudCkgLT0gbWF4OworCX0KKyAgICB9CisKKyAgICAqcF9jbnQgPSBzdGFydDsKKworICAgIHJldHVybiAoKnBfY250ICE9IDApID8gUEpfU1VDQ0VTUyA6IFBKX0VOT1RGT1VORDsKK30KKworLyoKKyAqIEVudW1lcmF0ZSB0aGUgSVAgcm91dGluZyB0YWJsZSBmb3IgdGhpcyBob3N0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2VudW1faXBfcm91dGUodW5zaWduZWQgKnBfY250LAorCQkJCSAgICAgcGpfaXBfcm91dGVfZW50cnkgcm91dGVzW10pCit7CisgICAgcGpfc29ja2FkZHIgaXRmOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4ocF9jbnQgJiYgKnBfY250ID4gMCAmJiByb3V0ZXMsIFBKX0VJTlZBTCk7CisKKyAgICBwal9iemVybyhyb3V0ZXMsIHNpemVvZihyb3V0ZXNbMF0pICogKCpwX2NudCkpOworCisgICAgLyogSnVzdCBnZXQgb25lIGRlZmF1bHQgcm91dGUgKi8KKyAgICBzdGF0dXMgPSBwal9nZXRkZWZhdWx0aXBpbnRlcmZhY2UoUEpfQUZfSU5FVCwgJml0Zik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisgICAgCisgICAgcm91dGVzWzBdLmlwdjQuaWZfYWRkci5zX2FkZHIgPSBpdGYuaXB2NC5zaW5fYWRkci5zX2FkZHI7CisgICAgcm91dGVzWzBdLmlwdjQuZHN0X2FkZHIuc19hZGRyID0gMDsKKyAgICByb3V0ZXNbMF0uaXB2NC5tYXNrLnNfYWRkciA9IDA7CisgICAgKnBfY250ID0gMTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovaXBfaGVscGVyX3N5bWJpYW4uY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lwX2hlbHBlcl9zeW1iaWFuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjc1MWFkCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lwX2hlbHBlcl9zeW1iaWFuLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyogJElkOiBpcF9oZWxwZXJfc3ltYmlhbi5jcHAgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9pcF9oZWxwZXIuaD4KKyNpbmNsdWRlIDxwai9hZGRyX3Jlc29sdi5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3NvY2tldC5oPgorCisKKyNpbmNsdWRlICJvc19zeW1iaWFuLmgiCisKKyNkZWZpbmUgVEhJU19GSUxFCSJpcF9oZWxwZXJfc3ltYmlhbi5jcHAiCisjZGVmaW5lIFRSQUNFX01FCTAKKworc3RhdGljIHBqX3N0YXR1c190IHJzb2NrX2VudW1faW50ZXJmYWNlKGludCBhZiwKKwkJCQkJdW5zaWduZWQgKnBfY250LAorCQkJCQlwal9zb2NrYWRkciBpZnNbXSkgCit7CisgICAgVEludCByYzsKKyAgICBSU29ja2V0IHJTb2NrOworICAgIFRQY2tnQnVmPFRTb0luZXRJbnRlcmZhY2VJbmZvPiBpbmZvOworICAgIHVuc2lnbmVkIGk7CisgICAgCisgICAgaWYgKFBqU3ltYmlhbk9TOjpJbnN0YW5jZSgpLT5Db25uZWN0aW9uKCkpIHsKKyAgICAJCisgICAgCXJjID0gclNvY2suT3BlbihQalN5bWJpYW5PUzo6SW5zdGFuY2UoKS0+U29ja2V0U2VydigpLCAKKyAgICAJCQlhZiwgUEpfU09DS19ER1JBTSwgS1Byb3RvY29sSW5ldFVkcCwKKyAgICAJCQkqUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPkNvbm5lY3Rpb24oKSk7CisgICAgfSBlbHNlIHsKKyAgICAJCisgICAgCXJjID0gclNvY2suT3BlbihQalN5bWJpYW5PUzo6SW5zdGFuY2UoKS0+U29ja2V0U2VydigpLCAKKyAgICAJCQlhZiwgUEpfU09DS19ER1JBTSwgS1Byb3RvY29sSW5ldFVkcCk7CisgICAgCQkJCisgICAgfQorICAgICAgICAKKyAgICBpZiAocmMgIT0gS0Vyck5vbmUpCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihyYyk7CisgICAgCisgICAgclNvY2suU2V0T3B0KEtTb0luZXRFbnVtSW50ZXJmYWNlcywgS1NvbEluZXRJZkN0cmwpOworICAgIAorICAgIGZvciAoaT0wOyBpPCpwX2NudCAmJgorICAgIAkJclNvY2suR2V0T3B0KEtTb0luZXROZXh0SW50ZXJmYWNlLCBLU29sSW5ldElmQ3RybCwgCisgICAgCQkgICAgICAgICAgICAgaW5mbykgPT0gS0Vyck5vbmU7ICkgCisgICAgeworICAgIAlUSW5ldEFkZHIgJmlBZGRyZXNzID0gaW5mbygpLmlBZGRyZXNzOworICAgIAlpbnQgbmFtZWxlbjsKKworI2lmIFRSQUNFX01FCisJCWlmICgxKSB7CisJCQlwal9zb2NrYWRkciBhOworCQkJY2hhciBpcGFkZHJbUEpfSU5FVDZfQUREUlNUUkxFTisyXTsKKwkJCQorCQkJbmFtZWxlbiA9IHNpemVvZihwal9zb2NrYWRkcik7CisJCQlpZiAoUGpTeW1iaWFuT1M6OkFkZHIycGooaUFkZHJlc3MsIGEsICZuYW1lbGVuLCAKKwkJCQkJCQkJCSBQSl9GQUxTRSkgPT0gUEpfU1VDQ0VTUykgCisJCQl7CisJCQkJUEpfTE9HKDUsKFRISVNfRklMRSwgIkVudW06IGZvdW5kIGFkZHJlc3MgJXMiLCAKKwkJCQkJCXBqX3NvY2thZGRyX3ByaW50KCZhLCBpcGFkZHIsIHNpemVvZihpcGFkZHIpLCAyKSkpOworCQkJfQorCQl9CisjZW5kaWYKKyAgICAJCisgICAgCW5hbWVsZW4gPSBzaXplb2YoaWZzW2ldKTsKKyAgICAJaWYgKFBqU3ltYmlhbk9TOjpBZGRyMnBqKGlBZGRyZXNzLCBpZnNbaV0sICZuYW1lbGVuLCAKKyAgICAJCQkJCQkJIFBKX1RSVUUpICE9IFBKX1NVQ0NFU1MpCisgICAgCXsKKyAgICAJICAgIGNvbnRpbnVlOworICAgIAl9CisKKyAgICAJaWYgKGlmc1tpXS5hZGRyLnNhX2ZhbWlseSAhPSBhZikKKwkJICAgIGNvbnRpbnVlOworICAgIAkKKyAgICAJKytpOworICAgIH0KKyAgICAKKyAgICByU29jay5DbG9zZSgpOworICAgIAorICAgIC8vIERvbmUKKyAgICAqcF9jbnQgPSBpOworICAgIAorICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCQkJCQkKKy8qCisgKiBFbnVtZXJhdGUgdGhlIGxvY2FsIElQIGludGVyZmFjZSBjdXJyZW50bHkgYWN0aXZlIGluIHRoZSBob3N0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2VudW1faXBfaW50ZXJmYWNlKGludCBhZiwKKwkJCQkJIHVuc2lnbmVkICpwX2NudCwKKwkJCQkJIHBqX3NvY2thZGRyIGlmc1tdKQoreworICAgIHVuc2lnbmVkIHN0YXJ0OworICAgIHBqX3N0YXR1c190IHN0YXR1cyA9IFBKX1NVQ0NFU1M7CisKKyAgICBzdGFydCA9IDA7CisgICAgCSAgICAKKyAgICAvKiBHZXQgSVB2NiBpbnRlcmZhY2UgZmlyc3QuICovCisgICAgaWYgKGFmPT1QSl9BRl9JTkVUNiB8fCBhZj09UEpfQUZfVU5TUEVDKSB7CisgICAgCXVuc2lnbmVkIG1heCA9ICpwX2NudDsKKyAgICAJc3RhdHVzID0gcnNvY2tfZW51bV9pbnRlcmZhY2UoUEpfQUZfSU5FVDYsICZtYXgsICZpZnNbc3RhcnRdKTsKKyAgICAJaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKSB7CisgICAgCSAgICAoKnBfY250KSAtPSBtYXg7CisgICAgCSAgICBzdGFydCArPSBtYXg7CisgICAgCX0KKyAgICB9CisgICAgCisgICAgLyogR2V0IElQdjQgaW50ZXJmYWNlLiAqLworICAgIGlmIChhZj09UEpfQUZfSU5FVCB8fCBhZj09UEpfQUZfVU5TUEVDKSB7CisgICAgCXVuc2lnbmVkIG1heCA9ICpwX2NudDsKKyAgICAJc3RhdHVzID0gcnNvY2tfZW51bV9pbnRlcmZhY2UoUEpfQUZfSU5FVCwgJm1heCwgJmlmc1tzdGFydF0pOworICAgIAlpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpIHsKKyAgICAJICAgICgqcF9jbnQpIC09IG1heDsKKyAgICAJICAgIHN0YXJ0ICs9IG1heDsKKyAgICAJfQorICAgIH0KKyAgICAKKyAgICAqcF9jbnQgPSBzdGFydDsKKyAgICAKKyAgICByZXR1cm4gc3RhcnQgPyBQSl9TVUNDRVNTIDogUEpfRU5PVEZPVU5EOworfQorCisvKgorICogRW51bWVyYXRlIHRoZSBJUCByb3V0aW5nIHRhYmxlIGZvciB0aGlzIGhvc3QuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZW51bV9pcF9yb3V0ZSh1bnNpZ25lZCAqcF9jbnQsCisJCQkJICAgICBwal9pcF9yb3V0ZV9lbnRyeSByb3V0ZXNbXSkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBfY250ICYmICpwX2NudCA+IDAgJiYgcm91dGVzLCBQSl9FSU5WQUwpOworICAgICpwX2NudCA9IDA7CisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pcF9oZWxwZXJfd2luMzIuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9pcF9oZWxwZXJfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTI0NjA2Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2lwX2hlbHBlcl93aW4zMi5jCkBAIC0wLDAgKzEsNDQxIEBACisvKiAkSWQ6IGlwX2hlbHBlcl93aW4zMi5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovY29uZmlnLmg+CisKKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworLyogUE1JQl9JQ01QX0VYIGlzIG5vdCBkZWNsYXJlZCBpbiBWQzYsIGNhdXNpbmcgZXJyb3IuCisgKiBCdXQgRVZDNCwgd2hpY2ggYWxzbyBjbGFpbXMgdG8gYmUgVkM2LCBkb2VzIGhhdmUgaXQhIAorICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVI9PTEyMDAgJiYgIWRlZmluZWQoUEpfV0lOMzJfV0lOQ0UpCisjICAgZGVmaW5lIFBNSUJfSUNNUF9FWCB2b2lkKgorI2VuZGlmCisjaW5jbHVkZSA8d2luc29jazIuaD4KKworLyogSWYgeW91IGVuY291bnRlciBlcnJvciAiQ2Fubm90IG9wZW4gaW5jbHVkZSBmaWxlOiAnSXBobHBhcGkuaCcgaGVyZSwKKyAqIHlvdSBuZWVkIHRvIGluc3RhbGwgbmV3ZXIgUGxhdGZvcm0gU0RLLiBQcmVzdW1hYmx5IHlvdSdyZSB1c2luZworICogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gNj8KKyAqLworI2luY2x1ZGUgPElwaGxwYXBpLmg+CisKKyNpbmNsdWRlIDxwai9pcF9oZWxwZXIuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorCisvKiBEZWFsaW5nIHdpdGggVW5pY29kZSBxdWlya3M6CisKKyBUaGVyZSBzZWVtcyB0byBiZSBhIGRpZmZlcmVuY2Ugd2l0aCBHZXRQcm9jQWRkcmVzcygpIEFQSSBzaWduYXR1cmUgYmV0d2VlbgorIFdpbmRvd3MgKGkuZS4gV2luMzIpIGFuZCBXaW5kb3dzIENFIChlLmcuIFdpbmRvd3MgTW9iaWxlKS4gT24gV2luZG93cywgdGhlCisgQVBJIGlzIGRlY2xhcmVkIGFzOgorCisgICBGQVJQUk9DIEdldFByb2NBZGRyZXNzKAorICAgICBITU9EVUxFIGhNb2R1bGUsCisgICAgIExQQ1NUUiBscFByb2NOYW1lKTsKKyAKKyB3aGlsZSBvbiBXaW5kb3dzIENFOgorCisgICBGQVJQUk9DIEdldFByb2NBZGRyZXNzKAorICAgICBITU9EVUxFIGhNb2R1bGUsCisgICAgIExQQ1dTVFIgbHBQcm9jTmFtZSk7CisKKyBOb3RpY2UgdGhlIGRpZmZlcmVuY2Ugd2l0aCBscFByb2NOYW1lIGFyZ3VtZW50IHR5cGUuIFRoaXMgbWVhbnMgdGhhdCBvbiAKKyBXaW5kb3dzLCBldmVuIG9uIFVuaWNvZGUgV2luZG93cywgdGhlIGxwUHJvY05hbWUgYWx3YXlzIHRha2VzIEFOU0kgZm9ybWF0LCAKKyB3aGlsZSBvbiBXaW5kb3dzIENFLCB0aGUgYXJndW1lbnQgZm9sbG93cyB0aGUgVU5JQ09ERSBzZXR0aW5nLgorCisgQmVjYXVzZSBvZiB0aGlzLCB3ZSB1c2UgYSBkaWZmZXJlbnQgVW5pY29kZSB0cmVhdG1lbnQgaGVyZSB0aGFuIHRoZSB1c3VhbAorIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERSBQSkxJQiBzZXR0aW5nICg8cGovdW5pY29kZS5oPik6CisgICAtIEdQQV9URVhUIG1hY3JvOiBjb252ZXJ0IGxpdGVyYWwgc3RyaW5nIHRvIHBsYXRmb3JtJ3MgbmF0aXZlIGxpdGVyYWwgCisgICAgICAgICBzdHJpbmcKKyAgIC0gZ3BhX2NoYXI6IHRoZSBwbGF0Zm9ybSBuYXRpdmUgY2hhcmFjdGVyIHR5cGUKKworIE5vdGUgdGhhdCAiR1BBIiBhbmQgImdwYSIgYXJlIGFiYnJldmlhdGlvbnMgZm9yIEdldFByb2NBZGRyZXNzLgorKi8KKyNpZiBkZWZpbmVkKFBKX1dJTjMyX1dJTkNFKSAmJiBQSl9XSU4zMl9XSU5DRSE9MAorICAgIC8qIG9uIENFLCBmb2xsb3cgdGhlIFBKTElCIFVuaWNvZGUgc2V0dGluZyAqLworIyAgIGRlZmluZSBHUEFfVEVYVCh4KQlQSl9UKHgpCisjICAgZGVmaW5lIGdwYV9jaGFyCXBqX2NoYXJfdAorI2Vsc2UKKyAgICAvKiBvbiBub24tQ0UsIGFsd2F5cyB1c2UgQU5TSSBmb3JtYXQgKi8KKyMgICBkZWZpbmUgR1BBX1RFWFQoeCkJeAorIyAgIGRlZmluZSBncGFfY2hhcgljaGFyCisjZW5kaWYKKworCit0eXBlZGVmIERXT1JEIChXSU5BUEkgKlBGTl9HZXRJcEFkZHJUYWJsZSkoUE1JQl9JUEFERFJUQUJMRSBwSXBBZGRyVGFibGUsIAorCQkJCQkgICBQVUxPTkcgcGR3U2l6ZSwgCisJCQkJCSAgIEJPT0wgYk9yZGVyKTsKK3R5cGVkZWYgRFdPUkQgKFdJTkFQSSAqUEZOX0dldEFkYXB0ZXJBZGRyZXNzZXMpKFVMT05HIEZhbWlseSwKKwkJCQkJICAgICAgICBVTE9ORyBGbGFncywKKwkJCQkJICAgICAgICBQVk9JRCBSZXNlcnZlZCwKKwkJCQkJICAgICAgICBQSVBfQURBUFRFUl9BRERSRVNTRVMgQWRhcHRlckFkZHJlc3NlcywKKwkJCQkJICAgICAgICBQVUxPTkcgU2l6ZVBvaW50ZXIpOwordHlwZWRlZiBEV09SRCAoV0lOQVBJICpQRk5fR2V0SXBGb3J3YXJkVGFibGUpKFBNSUJfSVBGT1JXQVJEVEFCTEUgcElwRm9yd2FyZFRhYmxlLAorCQkJCQkgICAgICBQVUxPTkcgcGR3U2l6ZSwgCisJCQkJCSAgICAgIEJPT0wgYk9yZGVyKTsKK3R5cGVkZWYgRFdPUkQgKFdJTkFQSSAqUEZOX0dldElmRW50cnkpKFBNSUJfSUZST1cgcElmUm93KTsKKworc3RhdGljIEhBTkRMRSBzX2hETEw7CitzdGF0aWMgUEZOX0dldElwQWRkclRhYmxlIHNfcGZuR2V0SXBBZGRyVGFibGU7CitzdGF0aWMgUEZOX0dldEFkYXB0ZXJBZGRyZXNzZXMgc19wZm5HZXRBZGFwdGVyQWRkcmVzc2VzOworc3RhdGljIFBGTl9HZXRJcEZvcndhcmRUYWJsZSBzX3BmbkdldElwRm9yd2FyZFRhYmxlOworc3RhdGljIFBGTl9HZXRJZkVudHJ5IHNfcGZuR2V0SWZFbnRyeTsKKworCitzdGF0aWMgdm9pZCB1bmxvYWRfaXBobHBfbW9kdWxlKHZvaWQpCit7CisgICAgRnJlZUxpYnJhcnkoc19oRExMKTsKKyAgICBzX2hETEwgPSBOVUxMOworICAgIHNfcGZuR2V0SXBBZGRyVGFibGUgPSBOVUxMOworICAgIHNfcGZuR2V0SXBGb3J3YXJkVGFibGUgPSBOVUxMOworICAgIHNfcGZuR2V0SWZFbnRyeSA9IE5VTEw7CisgICAgc19wZm5HZXRBZGFwdGVyQWRkcmVzc2VzID0gTlVMTDsKK30KKworc3RhdGljIEZBUlBST0MgR2V0SXBIbHBBcGlQcm9jKGdwYV9jaGFyICpscFByb2NOYW1lKQoreworICAgIGlmKE5VTEwgPT0gc19oRExMKSB7CisJc19oRExMID0gTG9hZExpYnJhcnkoUEpfVCgiSXBIbHBBcGkiKSk7CisJaWYoTlVMTCAhPSBzX2hETEwpIHsKKwkgICAgcGpfYXRleGl0KCZ1bmxvYWRfaXBobHBfbW9kdWxlKTsKKwl9CisgICAgfQorCQorICAgIGlmKE5VTEwgIT0gc19oRExMKQorCXJldHVybiBHZXRQcm9jQWRkcmVzcyhzX2hETEwsIGxwUHJvY05hbWUpOworICAgIAorICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgRFdPUkQgTXlHZXRJcEFkZHJUYWJsZShQTUlCX0lQQUREUlRBQkxFIHBJcEFkZHJUYWJsZSwgCisJCQkgICAgICBQVUxPTkcgcGR3U2l6ZSwgCisJCQkgICAgICBCT09MIGJPcmRlcikKK3sKKyAgICBpZihOVUxMID09IHNfcGZuR2V0SXBBZGRyVGFibGUpIHsKKwlzX3BmbkdldElwQWRkclRhYmxlID0gKFBGTl9HZXRJcEFkZHJUYWJsZSkgCisJICAgIEdldElwSGxwQXBpUHJvYyhHUEFfVEVYVCgiR2V0SXBBZGRyVGFibGUiKSk7CisgICAgfQorICAgIAorICAgIGlmKE5VTEwgIT0gc19wZm5HZXRJcEFkZHJUYWJsZSkgeworCXJldHVybiBzX3BmbkdldElwQWRkclRhYmxlKHBJcEFkZHJUYWJsZSwgcGR3U2l6ZSwgYk9yZGVyKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIEVSUk9SX05PVF9TVVBQT1JURUQ7Cit9CisKK3N0YXRpYyBEV09SRCBNeUdldEFkYXB0ZXJBZGRyZXNzZXMoVUxPTkcgRmFtaWx5LAorCQkJCSAgIFVMT05HIEZsYWdzLAorCQkJCSAgIFBWT0lEIFJlc2VydmVkLAorCQkJCSAgIFBJUF9BREFQVEVSX0FERFJFU1NFUyBBZGFwdGVyQWRkcmVzc2VzLAorCQkJCSAgIFBVTE9ORyBTaXplUG9pbnRlcikKK3sKKyAgICBpZihOVUxMID09IHNfcGZuR2V0QWRhcHRlckFkZHJlc3NlcykgeworCXNfcGZuR2V0QWRhcHRlckFkZHJlc3NlcyA9IChQRk5fR2V0QWRhcHRlckFkZHJlc3NlcykgCisJICAgIEdldElwSGxwQXBpUHJvYyhHUEFfVEVYVCgiR2V0QWRhcHRlcnNBZGRyZXNzZXMiKSk7CisgICAgfQorICAgIAorICAgIGlmKE5VTEwgIT0gc19wZm5HZXRBZGFwdGVyQWRkcmVzc2VzKSB7CisJcmV0dXJuIHNfcGZuR2V0QWRhcHRlckFkZHJlc3NlcyhGYW1pbHksIEZsYWdzLCBSZXNlcnZlZCwKKwkJCQkJQWRhcHRlckFkZHJlc3NlcywgU2l6ZVBvaW50ZXIpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gRVJST1JfTk9UX1NVUFBPUlRFRDsKK30KKworI2lmIFBKX0lQX0hFTFBFUl9JR05PUkVfTE9PUEJBQ0tfSUYKK3N0YXRpYyBEV09SRCBNeUdldElmRW50cnkoTUlCX0lGUk9XICpwSWZSb3cpCit7CisgICAgaWYoTlVMTCA9PSBzX3BmbkdldElmRW50cnkpIHsKKwlzX3BmbkdldElmRW50cnkgPSAoUEZOX0dldElmRW50cnkpIAorCSAgICBHZXRJcEhscEFwaVByb2MoR1BBX1RFWFQoIkdldElmRW50cnkiKSk7CisgICAgfQorICAgIAorICAgIGlmKE5VTEwgIT0gc19wZm5HZXRJZkVudHJ5KSB7CisJcmV0dXJuIHNfcGZuR2V0SWZFbnRyeShwSWZSb3cpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gRVJST1JfTk9UX1NVUFBPUlRFRDsKK30KKyNlbmRpZgorCisKK3N0YXRpYyBEV09SRCBNeUdldElwRm9yd2FyZFRhYmxlKFBNSUJfSVBGT1JXQVJEVEFCTEUgcElwRm9yd2FyZFRhYmxlLCAKKwkJCQkgUFVMT05HIHBkd1NpemUsIAorCQkJCSBCT09MIGJPcmRlcikKK3sKKyAgICBpZihOVUxMID09IHNfcGZuR2V0SXBGb3J3YXJkVGFibGUpIHsKKwlzX3BmbkdldElwRm9yd2FyZFRhYmxlID0gKFBGTl9HZXRJcEZvcndhcmRUYWJsZSkgCisJICAgIEdldElwSGxwQXBpUHJvYyhHUEFfVEVYVCgiR2V0SXBGb3J3YXJkVGFibGUiKSk7CisgICAgfQorICAgIAorICAgIGlmKE5VTEwgIT0gc19wZm5HZXRJcEZvcndhcmRUYWJsZSkgeworCXJldHVybiBzX3BmbkdldElwRm9yd2FyZFRhYmxlKHBJcEZvcndhcmRUYWJsZSwgcGR3U2l6ZSwgYk9yZGVyKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIEVSUk9SX05PVF9TVVBQT1JURUQ7Cit9CisKKy8qIEVudW1lcmF0ZSBsb2NhbCBJUCBpbnRlcmZhY2UgdXNpbmcgR2V0SXBBZGRyVGFibGUoKQorICogZm9yIElQdjQgYWRkcmVzc2VzIG9ubHkuCisgKi8KK3N0YXRpYyBwal9zdGF0dXNfdCBlbnVtX2lwdjRfaW50ZXJmYWNlKHVuc2lnbmVkICpwX2NudCwKKwkJCQkgICAgICAgcGpfc29ja2FkZHIgaWZzW10pCit7CisgICAgY2hhciBpcFRhYkJ1ZmZbNTEyXTsKKyAgICBNSUJfSVBBRERSVEFCTEUgKnBUYWIgPSAoTUlCX0lQQUREUlRBQkxFKilpcFRhYkJ1ZmY7CisgICAgVUxPTkcgdGFiU2l6ZSA9IHNpemVvZihpcFRhYkJ1ZmYpOworICAgIHVuc2lnbmVkIGksIGNvdW50OworICAgIERXT1JEIHJjID0gTk9fRVJST1I7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBfY250ICYmIGlmcywgUEpfRUlOVkFMKTsKKworICAgIC8qIEdldCBJUCBhZGRyZXNzIHRhYmxlICovCisgICAgcmMgPSBNeUdldElwQWRkclRhYmxlKHBUYWIsICZ0YWJTaXplLCBGQUxTRSk7CisgICAgaWYgKHJjICE9IE5PX0VSUk9SKSB7CisJaWYgKHJjID09IEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIpIHsKKwkgICAgLyogUmV0cnkgd2l0aCBsYXJnZXIgYnVmZmVyICovCisJICAgIHBUYWIgPSAoTUlCX0lQQUREUlRBQkxFKiltYWxsb2ModGFiU2l6ZSk7CisJICAgIGlmIChwVGFiKQorCQlyYyA9IE15R2V0SXBBZGRyVGFibGUocFRhYiwgJnRhYlNpemUsIEZBTFNFKTsKKwl9CisKKwlpZiAocmMgIT0gTk9fRVJST1IpIHsKKwkgICAgaWYgKHBUYWIgIT0gKE1JQl9JUEFERFJUQUJMRSopaXBUYWJCdWZmKQorCQlmcmVlKHBUYWIpOworCSAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHJjKTsKKwl9CisgICAgfQorCisgICAgLyogUmVzZXQgcmVzdWx0ICovCisgICAgcGpfYnplcm8oaWZzLCBzaXplb2YoaWZzWzBdKSAqICgqcF9jbnQpKTsKKworICAgIC8qIE5vdyBmaWxsIG91dCB0aGUgZW50cmllcyAqLworICAgIGNvdW50ID0gKHBUYWItPmR3TnVtRW50cmllcyA8ICpwX2NudCkgPyBwVGFiLT5kd051bUVudHJpZXMgOiAqcF9jbnQ7CisgICAgKnBfY250ID0gMDsKKyAgICBmb3IgKGk9MDsgaTxjb3VudDsgKytpKSB7CisJTUlCX0lGUk9XIGlmUm93OworCisJLyogSWdub3JlIDAuMC4wLjAgYWRkcmVzcyAoaW50ZXJmYWNlIGlzIGRvd24/KSAqLworCWlmIChwVGFiLT50YWJsZVtpXS5kd0FkZHIgPT0gMCkKKwkgICAgY29udGludWU7CisKKwkvKiBJZ25vcmUgMC4wLjAuMC84IGFkZHJlc3MuIFRoaXMgaXMgYSBzcGVjaWFsIGFkZHJlc3MKKwkgKiB3aGljaCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBwcmFjdGljYWwgdXNlLgorCSAqLworCWlmICgocGpfbnRvaGwocFRhYi0+dGFibGVbaV0uZHdBZGRyKSA+PiAyNCkgPT0gMCkKKwkgICAgY29udGludWU7CisKKyNpZiBQSl9JUF9IRUxQRVJfSUdOT1JFX0xPT1BCQUNLX0lGCisJLyogSW52ZXN0aWdhdGUgdGhlIHR5cGUgb2YgdGhpcyBpbnRlcmZhY2UgKi8KKwlwal9iemVybygmaWZSb3csIHNpemVvZihpZlJvdykpOworCWlmUm93LmR3SW5kZXggPSBwVGFiLT50YWJsZVtpXS5kd0luZGV4OworCWlmIChNeUdldElmRW50cnkoJmlmUm93KSAhPSAwKQorCSAgICBjb250aW51ZTsKKworCWlmIChpZlJvdy5kd1R5cGUgPT0gTUlCX0lGX1RZUEVfTE9PUEJBQ0spCisJICAgIGNvbnRpbnVlOworI2VuZGlmCisKKwlpZnNbKnBfY250XS5pcHY0LnNpbl9mYW1pbHkgPSBQSl9BRl9JTkVUOworCWlmc1sqcF9jbnRdLmlwdjQuc2luX2FkZHIuc19hZGRyID0gcFRhYi0+dGFibGVbaV0uZHdBZGRyOworCSgqcF9jbnQpKys7CisgICAgfQorCisgICAgaWYgKHBUYWIgIT0gKE1JQl9JUEFERFJUQUJMRSopaXBUYWJCdWZmKQorCWZyZWUocFRhYik7CisKKyAgICByZXR1cm4gKCpwX2NudCkgPyBQSl9TVUNDRVNTIDogUEpfRU5PVEZPVU5EOworfQorCisvKiBFbnVtZXJhdGUgbG9jYWwgSVAgaW50ZXJmYWNlIHVzaW5nIEdldEFkYXB0ZXJBZGRyZXNzZXMoKSwKKyAqIHdoaWNoIHdvcmtzIGZvciBib3RoIElQdjQgYW5kIElQdjYuCisgKi8KK3N0YXRpYyBwal9zdGF0dXNfdCBlbnVtX2lwdjRfaXB2Nl9pbnRlcmZhY2UoaW50IGFmLAorCQkJCQkgICAgdW5zaWduZWQgKnBfY250LAorCQkJCQkgICAgcGpfc29ja2FkZHIgaWZzW10pCit7CisgICAgcGpfdWludDhfdCBidWZmZXJbNjAwXTsKKyAgICBJUF9BREFQVEVSX0FERFJFU1NFUyAqYWRhcHRlciA9IChJUF9BREFQVEVSX0FERFJFU1NFUyopYnVmZmVyOworICAgIHZvaWQgKmFkYXB0ZXJCdWYgPSBOVUxMOworICAgIFVMT05HIHNpemUgPSBzaXplb2YoYnVmZmVyKTsKKyAgICBVTE9ORyBmbGFnczsKKyAgICB1bnNpZ25lZCBpOworICAgIERXT1JEIHJjOworCisgICAgZmxhZ3MgPSBHQUFfRkxBR19TS0lQX0ZSSUVORExZX05BTUUgfAorCSAgICBHQUFfRkxBR19TS0lQX0ROU19TRVJWRVIgfAorCSAgICBHQUFfRkxBR19TS0lQX01VTFRJQ0FTVDsKKworICAgIHJjID0gTXlHZXRBZGFwdGVyQWRkcmVzc2VzKGFmLCBmbGFncywgTlVMTCwgYWRhcHRlciwgJnNpemUpOworICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKSB7CisJaWYgKHJjID09IEVSUk9SX0JVRkZFUl9PVkVSRkxPVykgeworCSAgICAvKiBSZXRyeSB3aXRoIGxhcmdlciBtZW1vcnkgc2l6ZSAqLworCSAgICBhZGFwdGVyQnVmID0gbWFsbG9jKHNpemUpOworCSAgICBhZGFwdGVyID0gKElQX0FEQVBURVJfQUREUkVTU0VTKikgYWRhcHRlckJ1ZjsKKwkgICAgaWYgKGFkYXB0ZXIgIT0gTlVMTCkKKwkJcmMgPSBNeUdldEFkYXB0ZXJBZGRyZXNzZXMoYWYsIGZsYWdzLCBOVUxMLCBhZGFwdGVyLCAmc2l6ZSk7CisJfSAKKworCWlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKSB7CisJICAgIGlmIChhZGFwdGVyQnVmKQorCQlmcmVlKGFkYXB0ZXJCdWYpOworCSAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHJjKTsKKwl9CisgICAgfQorCisgICAgLyogUmVzZXQgcmVzdWx0ICovCisgICAgcGpfYnplcm8oaWZzLCBzaXplb2YoaWZzWzBdKSAqICgqcF9jbnQpKTsKKworICAgIC8qIEVudW1lcmF0ZSBpbnRlcmZhY2UgKi8KKyAgICBmb3IgKGk9MDsgaTwqcF9jbnQgJiYgYWRhcHRlcjsgYWRhcHRlciA9IGFkYXB0ZXItPk5leHQpIHsKKwlpZiAoYWRhcHRlci0+Rmlyc3RVbmljYXN0QWRkcmVzcykgeworCSAgICBTT0NLRVRfQUREUkVTUyAqcEFkZHIgPSAmYWRhcHRlci0+Rmlyc3RVbmljYXN0QWRkcmVzcy0+QWRkcmVzczsKKworCSAgICAvKiBJZ25vcmUgYWRkcmVzcyBmYW1pbHkgd2hpY2ggd2UgZGlkbid0IHJlcXVlc3QsIGp1c3QgaW4gY2FzZSAqLworCSAgICBpZiAocEFkZHItPmxwU29ja2FkZHItPnNhX2ZhbWlseSAhPSBQSl9BRl9JTkVUICYmCisJCXBBZGRyLT5scFNvY2thZGRyLT5zYV9mYW1pbHkgIT0gUEpfQUZfSU5FVDYpCisJICAgIHsKKwkJY29udGludWU7CisJICAgIH0KKworCSAgICAvKiBBcHBseSBzb21lIGZpbHRlcmluZyB0byBrbm93biBJUHY0IHVudXNhYmxlIGFkZHJlc3NlcyAqLworCSAgICBpZiAocEFkZHItPmxwU29ja2FkZHItPnNhX2ZhbWlseSA9PSBQSl9BRl9JTkVUKSB7CisJCWNvbnN0IHBqX3NvY2thZGRyX2luICphZGRyX2luID0gCisJCSAgICAoY29uc3QgcGpfc29ja2FkZHJfaW4qKXBBZGRyLT5scFNvY2thZGRyOworCisJCS8qIElnbm9yZSAwLjAuMC4wIGFkZHJlc3MgKGludGVyZmFjZSBpcyBkb3duPykgKi8KKwkJaWYgKGFkZHJfaW4tPnNpbl9hZGRyLnNfYWRkciA9PSAwKQorCQkgICAgY29udGludWU7CisKKwkJLyogSWdub3JlIDAuMC4wLjAvOCBhZGRyZXNzLiBUaGlzIGlzIGEgc3BlY2lhbCBhZGRyZXNzCisJCSAqIHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIHByYWN0aWNhbCB1c2UuCisJCSAqLworCQlpZiAoKHBqX250b2hsKGFkZHJfaW4tPnNpbl9hZGRyLnNfYWRkcikgPj4gMjQpID09IDApCisJCSAgICBjb250aW51ZTsKKwkgICAgfQorCisjaWYgUEpfSVBfSEVMUEVSX0lHTk9SRV9MT09QQkFDS19JRgorCSAgICAvKiBJZ25vcmUgbG9vcGJhY2sgaW50ZXJmYWNlcyAqLworCSAgICAvKiBUaGlzIHNob3VsZCBoYXZlIGJlZW4gSUZfVFlQRV9TT0ZUV0FSRV9MT09QQkFDSyBhY2NvcmRpbmcgdG8KKwkgICAgICogTVNETiwgYW5kIHRoaXMgbWFjcm8gc2hvdWxkIGhhdmUgYmVlbiBkZWNsYXJlZCBpbiBJcGlmY29ucy5oLCAKKwkgICAgICogYnV0IHNvbWUgU0RLIHZlcnNpb25zIGRvbid0IGhhdmUgaXQuCisJICAgICAqLworCSAgICBpZiAoYWRhcHRlci0+SWZUeXBlID09IE1JQl9JRl9UWVBFX0xPT1BCQUNLKQorCQljb250aW51ZTsKKyNlbmRpZgorCisJICAgIC8qIElnbm9yZSBkb3duIGludGVyZmFjZSAqLworCSAgICBpZiAoYWRhcHRlci0+T3BlclN0YXR1cyAhPSBJZk9wZXJTdGF0dXNVcCkKKwkJY29udGludWU7CisKKwkgICAgaWZzW2ldLmFkZHIuc2FfZmFtaWx5ID0gcEFkZHItPmxwU29ja2FkZHItPnNhX2ZhbWlseTsKKwkgICAgcGpfbWVtY3B5KCZpZnNbaV0sIHBBZGRyLT5scFNvY2thZGRyLCBwQWRkci0+aVNvY2thZGRyTGVuZ3RoKTsKKwkgICAgKytpOworCX0KKyAgICB9CisKKyAgICBpZiAoYWRhcHRlckJ1ZikKKwlmcmVlKGFkYXB0ZXJCdWYpOworCisgICAgKnBfY250ID0gaTsKKyAgICByZXR1cm4gKCpwX2NudCkgPyBQSl9TVUNDRVNTIDogUEpfRU5PVEZPVU5EOworfQorCisKKy8qCisgKiBFbnVtZXJhdGUgdGhlIGxvY2FsIElQIGludGVyZmFjZSBjdXJyZW50bHkgYWN0aXZlIGluIHRoZSBob3N0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2VudW1faXBfaW50ZXJmYWNlKGludCBhZiwKKwkJCQkJIHVuc2lnbmVkICpwX2NudCwKKwkJCQkJIHBqX3NvY2thZGRyIGlmc1tdKQoreworICAgIHBqX3N0YXR1c190IHN0YXR1cyA9IC0xOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihwX2NudCAmJiBpZnMsIFBKX0VJTlZBTCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihhZj09UEpfQUZfVU5TUEVDIHx8IGFmPT1QSl9BRl9JTkVUIHx8IGFmPT1QSl9BRl9JTkVUNiwKKwkJICAgICBQSl9FQUZOT1RTVVApOworCisgICAgc3RhdHVzID0gZW51bV9pcHY0X2lwdjZfaW50ZXJmYWNlKGFmLCBwX2NudCwgaWZzKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgJiYgKGFmPT1QSl9BRl9JTkVUIHx8IGFmPT1QSl9BRl9VTlNQRUMpKQorCXN0YXR1cyA9IGVudW1faXB2NF9pbnRlcmZhY2UocF9jbnQsIGlmcyk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIEVudW1lcmF0ZSB0aGUgSVAgcm91dGluZyB0YWJsZSBmb3IgdGhpcyBob3N0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2VudW1faXBfcm91dGUodW5zaWduZWQgKnBfY250LAorCQkJCSAgICAgcGpfaXBfcm91dGVfZW50cnkgcm91dGVzW10pCit7CisgICAgY2hhciBpcFRhYkJ1ZmZbMTAyNF07CisgICAgTUlCX0lQQUREUlRBQkxFICpwSXBUYWI7CisgICAgY2hhciBydGFiQnVmZlsxMDI0XTsKKyAgICBNSUJfSVBGT1JXQVJEVEFCTEUgKnByVGFiOworICAgIFVMT05HIHRhYlNpemU7CisgICAgdW5zaWduZWQgaSwgY291bnQ7CisgICAgRFdPUkQgcmMgPSBOT19FUlJPUjsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4ocF9jbnQgJiYgcm91dGVzLCBQSl9FSU5WQUwpOworCisgICAgcElwVGFiID0gKE1JQl9JUEFERFJUQUJMRSAqKWlwVGFiQnVmZjsKKyAgICBwclRhYiA9IChNSUJfSVBGT1JXQVJEVEFCTEUgKilydGFiQnVmZjsKKworICAgIC8qIEZpcnN0IGdldCBJUCBhZGRyZXNzIHRhYmxlICovCisgICAgdGFiU2l6ZSA9IHNpemVvZihpcFRhYkJ1ZmYpOworICAgIHJjID0gTXlHZXRJcEFkZHJUYWJsZShwSXBUYWIsICZ0YWJTaXplLCBGQUxTRSk7CisgICAgaWYgKHJjICE9IE5PX0VSUk9SKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmMpOworCisgICAgLyogTmV4dCBnZXQgSVAgcm91dGUgdGFibGUgKi8KKyAgICB0YWJTaXplID0gc2l6ZW9mKHJ0YWJCdWZmKTsKKworICAgIHJjID0gTXlHZXRJcEZvcndhcmRUYWJsZShwclRhYiwgJnRhYlNpemUsIDEpOworICAgIGlmIChyYyAhPSBOT19FUlJPUikKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHJjKTsKKworICAgIC8qIFJlc2V0IHJvdXRlcyAqLworICAgIHBqX2J6ZXJvKHJvdXRlcywgc2l6ZW9mKHJvdXRlc1swXSkgKiAoKnBfY250KSk7CisKKyAgICAvKiBOb3cgZmlsbCBvdXQgdGhlIHJvdXRlIGVudHJpZXMgKi8KKyAgICBjb3VudCA9IChwclRhYi0+ZHdOdW1FbnRyaWVzIDwgKnBfY250KSA/IHByVGFiLT5kd051bUVudHJpZXMgOiAqcF9jbnQ7CisgICAgKnBfY250ID0gMDsKKyAgICBmb3IgKGk9MDsgaTxjb3VudDsgKytpKSB7CisJdW5zaWduZWQgajsKKworCS8qIEZpbmQgaW50ZXJmYWNlIGVudHJ5ICovCisJZm9yIChqPTA7IGo8cElwVGFiLT5kd051bUVudHJpZXM7ICsraikgeworCSAgICBpZiAocElwVGFiLT50YWJsZVtqXS5kd0luZGV4ID09IHByVGFiLT50YWJsZVtpXS5kd0ZvcndhcmRJZkluZGV4KQorCQlicmVhazsKKwl9CisKKwlpZiAoaj09cElwVGFiLT5kd051bUVudHJpZXMpCisJICAgIGNvbnRpbnVlOwkvKiBJbnRlcmZhY2Ugbm90IGZvdW5kICovCisKKwlyb3V0ZXNbKnBfY250XS5pcHY0LmlmX2FkZHIuc19hZGRyID0gcElwVGFiLT50YWJsZVtqXS5kd0FkZHI7CisJcm91dGVzWypwX2NudF0uaXB2NC5kc3RfYWRkci5zX2FkZHIgPSBwclRhYi0+dGFibGVbaV0uZHdGb3J3YXJkRGVzdDsKKwlyb3V0ZXNbKnBfY250XS5pcHY0Lm1hc2suc19hZGRyID0gcHJUYWItPnRhYmxlW2ldLmR3Rm9yd2FyZE1hc2s7CisKKwkoKnBfY250KSsrOworICAgIH0KKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovbGlzdC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xpc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmY4ZDIwCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xpc3QuYwpAQCAtMCwwICsxLDI2IEBACisvKiAkSWQ6IGxpc3QuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2xpc3QuaD4KKworI2lmICFQSl9GVU5DVElPTlNfQVJFX0lOTElORUQKKyMgIGluY2x1ZGUgPHBqL2xpc3RfaS5oPgorI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xvY2suYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9sb2NrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjMDc4NwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9sb2NrLmMKQEAgLTAsMCArMSw3MTUgQEAKKy8qICRJZDogbG9jay5jIDQ2MTMgMjAxMy0xMC0wOCAwOTowODoxM1ogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2xvY2suaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorCisjZGVmaW5lIFRISVNfRklMRQkibG9jay5jIgorCit0eXBlZGVmIHZvaWQgTE9DS19PQko7CisKKy8qCisgKiBMb2NrIHN0cnVjdHVyZS4KKyAqLworc3RydWN0IHBqX2xvY2tfdAoreworICAgIExPQ0tfT0JKICpsb2NrX29iamVjdDsKKworICAgIHBqX3N0YXR1c190CSgqYWNxdWlyZSkJKExPQ0tfT0JKKik7CisgICAgcGpfc3RhdHVzX3QJKCp0cnlhY3F1aXJlKQkoTE9DS19PQkoqKTsKKyAgICBwal9zdGF0dXNfdAkoKnJlbGVhc2UpCShMT0NLX09CSiopOworICAgIHBqX3N0YXR1c190CSgqZGVzdHJveSkJKExPQ0tfT0JKKik7Cit9OworCit0eXBlZGVmIHBqX3N0YXR1c190ICgqRlBUUikoTE9DS19PQkoqKTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogSW1wbGVtZW50YXRpb24gb2YgbG9jayBvYmplY3Qgd2l0aCBtdXRleC4KKyAqLworc3RhdGljIHBqX2xvY2tfdCBtdXRleF9sb2NrX3RlbXBsYXRlID0gCit7CisgICAgTlVMTCwKKyAgICAoRlBUUikgJnBqX211dGV4X2xvY2ssCisgICAgKEZQVFIpICZwal9tdXRleF90cnlsb2NrLAorICAgIChGUFRSKSAmcGpfbXV0ZXhfdW5sb2NrLAorICAgIChGUFRSKSAmcGpfbXV0ZXhfZGVzdHJveQorfTsKKworc3RhdGljIHBqX3N0YXR1c190IGNyZWF0ZV9tdXRleF9sb2NrKCBwal9wb29sX3QgKnBvb2wsCisJCQkJICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgICBpbnQgdHlwZSwKKwkJCQkgICAgICBwal9sb2NrX3QgKipsb2NrICkKK3sKKyAgICBwal9sb2NrX3QgKnBfbG9jazsKKyAgICBwal9tdXRleF90ICptdXRleDsKKyAgICBwal9zdGF0dXNfdCByYzsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4ocG9vbCAmJiBsb2NrLCBQSl9FSU5WQUwpOworCisgICAgcF9sb2NrID0gUEpfUE9PTF9BTExPQ19UKHBvb2wsIHBqX2xvY2tfdCk7CisgICAgaWYgKCFwX2xvY2spCisJcmV0dXJuIFBKX0VOT01FTTsKKworICAgIHBqX21lbWNweShwX2xvY2ssICZtdXRleF9sb2NrX3RlbXBsYXRlLCBzaXplb2YocGpfbG9ja190KSk7CisgICAgcmMgPSBwal9tdXRleF9jcmVhdGUocG9vbCwgbmFtZSwgdHlwZSwgJm11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gcmM7CisKKyAgICBwX2xvY2stPmxvY2tfb2JqZWN0ID0gbXV0ZXg7CisgICAgKmxvY2sgPSBwX2xvY2s7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9sb2NrX2NyZWF0ZV9zaW1wbGVfbXV0ZXgoIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJCSBjb25zdCBjaGFyICpuYW1lLAorCQkJCQkJIHBqX2xvY2tfdCAqKmxvY2sgKQoreworICAgIHJldHVybiBjcmVhdGVfbXV0ZXhfbG9jayhwb29sLCBuYW1lLCBQSl9NVVRFWF9TSU1QTEUsIGxvY2spOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2xvY2tfY3JlYXRlX3JlY3Vyc2l2ZV9tdXRleCggcGpfcG9vbF90ICpwb29sLAorCQkJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCQkgICAgcGpfbG9ja190ICoqbG9jayApCit7CisgICAgcmV0dXJuIGNyZWF0ZV9tdXRleF9sb2NrKHBvb2wsIG5hbWUsIFBKX01VVEVYX1JFQ1VSU0UsIGxvY2spOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEltcGxlbWVudGF0aW9uIG9mIE5VTEwgbG9jayBvYmplY3QuCisgKi8KK3N0YXRpYyBwal9zdGF0dXNfdCBudWxsX29wKHZvaWQgKmFyZykKK3sKKyAgICBQSl9VTlVTRURfQVJHKGFyZyk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBwal9sb2NrX3QgbnVsbF9sb2NrX3RlbXBsYXRlID0gCit7CisgICAgTlVMTCwKKyAgICAmbnVsbF9vcCwKKyAgICAmbnVsbF9vcCwKKyAgICAmbnVsbF9vcCwKKyAgICAmbnVsbF9vcAorfTsKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9sb2NrX2NyZWF0ZV9udWxsX211dGV4KCBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJCQkgICAgICAgcGpfbG9ja190ICoqbG9jayApCit7CisgICAgUEpfVU5VU0VEX0FSRyhuYW1lKTsKKyAgICBQSl9VTlVTRURfQVJHKHBvb2wpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihsb2NrLCBQSl9FSU5WQUwpOworCisgICAgKmxvY2sgPSAmbnVsbF9sb2NrX3RlbXBsYXRlOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEltcGxlbWVudGF0aW9uIG9mIHNlbWFwaG9yZSBsb2NrIG9iamVjdC4KKyAqLworI2lmIGRlZmluZWQoUEpfSEFTX1NFTUFQSE9SRSkgJiYgUEpfSEFTX1NFTUFQSE9SRSAhPSAwCisKK3N0YXRpYyBwal9sb2NrX3Qgc2VtX2xvY2tfdGVtcGxhdGUgPSAKK3sKKyAgICBOVUxMLAorICAgIChGUFRSKSAmcGpfc2VtX3dhaXQsCisgICAgKEZQVFIpICZwal9zZW1fdHJ5d2FpdCwKKyAgICAoRlBUUikgJnBqX3NlbV9wb3N0LAorICAgIChGUFRSKSAmcGpfc2VtX2Rlc3Ryb3kKK307CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbG9ja19jcmVhdGVfc2VtYXBob3JlKCAgcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJICAgICAgIHVuc2lnbmVkIGluaXRpYWwsCisJCQkJCSAgICAgICB1bnNpZ25lZCBtYXgsCisJCQkJCSAgICAgICBwal9sb2NrX3QgKipsb2NrICkKK3sKKyAgICBwal9sb2NrX3QgKnBfbG9jazsKKyAgICBwal9zZW1fdCAqc2VtOworICAgIHBqX3N0YXR1c190IHJjOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIGxvY2ssIFBKX0VJTlZBTCk7CisKKyAgICBwX2xvY2sgPSBQSl9QT09MX0FMTE9DX1QocG9vbCwgcGpfbG9ja190KTsKKyAgICBpZiAoIXBfbG9jaykKKwlyZXR1cm4gUEpfRU5PTUVNOworCisgICAgcGpfbWVtY3B5KHBfbG9jaywgJnNlbV9sb2NrX3RlbXBsYXRlLCBzaXplb2YocGpfbG9ja190KSk7CisgICAgcmMgPSBwal9zZW1fY3JlYXRlKCBwb29sLCBuYW1lLCBpbml0aWFsLCBtYXgsICZzZW0pOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBwX2xvY2stPmxvY2tfb2JqZWN0ID0gc2VtOworICAgICpsb2NrID0gcF9sb2NrOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworI2VuZGlmCS8qIFBKX0hBU19TRU1BUEhPUkUgKi8KKworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2xvY2tfYWNxdWlyZSggcGpfbG9ja190ICpsb2NrICkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGxvY2sgIT0gTlVMTCwgUEpfRUlOVkFMKTsKKyAgICByZXR1cm4gKCpsb2NrLT5hY3F1aXJlKShsb2NrLT5sb2NrX29iamVjdCk7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbG9ja190cnlhY3F1aXJlKCBwal9sb2NrX3QgKmxvY2sgKQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4obG9jayAhPSBOVUxMLCBQSl9FSU5WQUwpOworICAgIHJldHVybiAoKmxvY2stPnRyeWFjcXVpcmUpKGxvY2stPmxvY2tfb2JqZWN0KTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9sb2NrX3JlbGVhc2UoIHBqX2xvY2tfdCAqbG9jayApCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihsb2NrICE9IE5VTEwsIFBKX0VJTlZBTCk7CisgICAgcmV0dXJuICgqbG9jay0+cmVsZWFzZSkobG9jay0+bG9ja19vYmplY3QpOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2xvY2tfZGVzdHJveSggcGpfbG9ja190ICpsb2NrICkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGxvY2sgIT0gTlVMTCwgUEpfRUlOVkFMKTsKKyAgICByZXR1cm4gKCpsb2NrLT5kZXN0cm95KShsb2NrLT5sb2NrX29iamVjdCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogR3JvdXAgbG9jaworICovCisKKy8qIEluZGl2aWR1YWwgbG9jayBpbiB0aGUgZ3JvdXAgbG9jayAqLwordHlwZWRlZiBzdHJ1Y3QgZ3JwX2xvY2tfaXRlbQoreworICAgIFBKX0RFQ0xfTElTVF9NRU1CRVIoc3RydWN0IGdycF9sb2NrX2l0ZW0pOworICAgIGludAkJIHByaW87CisgICAgcGpfbG9ja190CSpsb2NrOworCit9IGdycF9sb2NrX2l0ZW07CisKKy8qIERlc3Ryb3kgY2FsbGJhY2tzICovCit0eXBlZGVmIHN0cnVjdCBncnBfZGVzdHJveV9jYWxsYmFjaworeworICAgIFBKX0RFQ0xfTElTVF9NRU1CRVIoc3RydWN0IGdycF9kZXN0cm95X2NhbGxiYWNrKTsKKyAgICB2b2lkCSpjb21wOworICAgIHZvaWQJKCpoYW5kbGVyKSh2b2lkKik7Cit9IGdycF9kZXN0cm95X2NhbGxiYWNrOworCisjaWYgUEpfR1JQX0xPQ0tfREVCVUcKKy8qIFN0b3JlIGVhY2ggYWRkX3JlZiBjYWxsZXIgKi8KK3R5cGVkZWYgc3RydWN0IGdycF9sb2NrX3JlZgoreworICAgIFBKX0RFQ0xfTElTVF9NRU1CRVIoc3RydWN0IGdycF9sb2NrX3JlZik7CisgICAgY29uc3QgY2hhcgkqZmlsZTsKKyAgICBpbnQJCSBsaW5lOworfSBncnBfbG9ja19yZWY7CisjZW5kaWYKKworLyogVGhlIGdyb3VwIGxvY2sgKi8KK3N0cnVjdCBwal9ncnBfbG9ja190Cit7CisgICAgcGpfbG9ja190CSAJIGJhc2U7CisKKyAgICBwal9wb29sX3QJCSpwb29sOworICAgIHBqX2F0b21pY190CQkqcmVmX2NudDsKKyAgICBwal9sb2NrX3QJCSpvd25fbG9jazsKKworICAgIHBqX3RocmVhZF90CQkqb3duZXI7CisgICAgaW50CQkJIG93bmVyX2NudDsKKworICAgIGdycF9sb2NrX2l0ZW0JIGxvY2tfbGlzdDsKKyAgICBncnBfZGVzdHJveV9jYWxsYmFjayBkZXN0cm95X2xpc3Q7CisKKyNpZiBQSl9HUlBfTE9DS19ERUJVRworICAgIGdycF9sb2NrX3JlZgkgcmVmX2xpc3Q7CisgICAgZ3JwX2xvY2tfcmVmCSByZWZfZnJlZV9saXN0OworI2VuZGlmCit9OworCisKK1BKX0RFRih2b2lkKSBwal9ncnBfbG9ja19jb25maWdfZGVmYXVsdChwal9ncnBfbG9ja19jb25maWcgKmNmZykKK3sKKyAgICBwal9iemVybyhjZmcsIHNpemVvZigqY2ZnKSk7Cit9CisKK3N0YXRpYyB2b2lkIGdycF9sb2NrX3NldF9vd25lcl90aHJlYWQocGpfZ3JwX2xvY2tfdCAqZ2xvY2spCit7CisgICAgaWYgKCFnbG9jay0+b3duZXIpIHsKKwlnbG9jay0+b3duZXIgPSBwal90aHJlYWRfdGhpcygpOworCWdsb2NrLT5vd25lcl9jbnQgPSAxOworICAgIH0gZWxzZSB7CisJcGpfYXNzZXJ0KGdsb2NrLT5vd25lciA9PSBwal90aHJlYWRfdGhpcygpKTsKKwlnbG9jay0+b3duZXJfY250Kys7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBncnBfbG9ja191bnNldF9vd25lcl90aHJlYWQocGpfZ3JwX2xvY2tfdCAqZ2xvY2spCit7CisgICAgcGpfYXNzZXJ0KGdsb2NrLT5vd25lciA9PSBwal90aHJlYWRfdGhpcygpKTsKKyAgICBwal9hc3NlcnQoZ2xvY2stPm93bmVyX2NudCA+IDApOworICAgIGlmICgtLWdsb2NrLT5vd25lcl9jbnQgPD0gMCkgeworCWdsb2NrLT5vd25lciA9IE5VTEw7CisJZ2xvY2stPm93bmVyX2NudCA9IDA7CisgICAgfQorfQorCitzdGF0aWMgcGpfc3RhdHVzX3QgZ3JwX2xvY2tfYWNxdWlyZShMT0NLX09CSiAqcCkKK3sKKyAgICBwal9ncnBfbG9ja190ICpnbG9jayA9IChwal9ncnBfbG9ja190KilwOworICAgIGdycF9sb2NrX2l0ZW0gKmxjazsKKworICAgIHBqX2Fzc2VydChwal9hdG9taWNfZ2V0KGdsb2NrLT5yZWZfY250KSA+IDApOworCisgICAgbGNrID0gZ2xvY2stPmxvY2tfbGlzdC5uZXh0OworICAgIHdoaWxlIChsY2sgIT0gJmdsb2NrLT5sb2NrX2xpc3QpIHsKKwlwal9sb2NrX2FjcXVpcmUobGNrLT5sb2NrKTsKKwlsY2sgPSBsY2stPm5leHQ7CisgICAgfQorICAgIGdycF9sb2NrX3NldF9vd25lcl90aHJlYWQoZ2xvY2spOworICAgIHBqX2dycF9sb2NrX2FkZF9yZWYoZ2xvY2spOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitzdGF0aWMgcGpfc3RhdHVzX3QgZ3JwX2xvY2tfdHJ5YWNxdWlyZShMT0NLX09CSiAqcCkKK3sKKyAgICBwal9ncnBfbG9ja190ICpnbG9jayA9IChwal9ncnBfbG9ja190KilwOworICAgIGdycF9sb2NrX2l0ZW0gKmxjazsKKworICAgIHBqX2Fzc2VydChwal9hdG9taWNfZ2V0KGdsb2NrLT5yZWZfY250KSA+IDApOworCisgICAgbGNrID0gZ2xvY2stPmxvY2tfbGlzdC5uZXh0OworICAgIHdoaWxlIChsY2sgIT0gJmdsb2NrLT5sb2NrX2xpc3QpIHsKKwlwal9zdGF0dXNfdCBzdGF0dXMgPSBwal9sb2NrX3RyeWFjcXVpcmUobGNrLT5sb2NrKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgbGNrID0gbGNrLT5wcmV2OworCSAgICB3aGlsZSAobGNrICE9ICZnbG9jay0+bG9ja19saXN0KSB7CisJCXBqX2xvY2tfcmVsZWFzZShsY2stPmxvY2spOworCQlsY2sgPSBsY2stPnByZXY7CisJICAgIH0KKwkgICAgcmV0dXJuIHN0YXR1czsKKwl9CisJbGNrID0gbGNrLT5uZXh0OworICAgIH0KKyAgICBncnBfbG9ja19zZXRfb3duZXJfdGhyZWFkKGdsb2NrKTsKKyAgICBwal9ncnBfbG9ja19hZGRfcmVmKGdsb2NrKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworc3RhdGljIHBqX3N0YXR1c190IGdycF9sb2NrX3JlbGVhc2UoTE9DS19PQkogKnApCit7CisgICAgcGpfZ3JwX2xvY2tfdCAqZ2xvY2sgPSAocGpfZ3JwX2xvY2tfdCopcDsKKyAgICBncnBfbG9ja19pdGVtICpsY2s7CisKKyAgICBncnBfbG9ja191bnNldF9vd25lcl90aHJlYWQoZ2xvY2spOworCisgICAgbGNrID0gZ2xvY2stPmxvY2tfbGlzdC5wcmV2OworICAgIHdoaWxlIChsY2sgIT0gJmdsb2NrLT5sb2NrX2xpc3QpIHsKKwlwal9sb2NrX3JlbGVhc2UobGNrLT5sb2NrKTsKKwlsY2sgPSBsY2stPnByZXY7CisgICAgfQorICAgIHJldHVybiBwal9ncnBfbG9ja19kZWNfcmVmKGdsb2NrKTsKK30KKworc3RhdGljIHBqX3N0YXR1c190IGdycF9sb2NrX2Rlc3Ryb3koTE9DS19PQkogKnApCit7CisgICAgcGpfZ3JwX2xvY2tfdCAqZ2xvY2sgPSAocGpfZ3JwX2xvY2tfdCopcDsKKyAgICBwal9wb29sX3QgKnBvb2wgPSBnbG9jay0+cG9vbDsKKyAgICBncnBfbG9ja19pdGVtICpsY2s7CisgICAgZ3JwX2Rlc3Ryb3lfY2FsbGJhY2sgKmNiOworCisgICAgaWYgKCFnbG9jay0+cG9vbCkgeworCS8qIGFscmVhZHkgZGVzdHJveWVkPyEgKi8KKwlyZXR1cm4gUEpfRUlOVkFMOworICAgIH0KKworICAgIC8qIFJlbGVhc2UgYWxsIGNoYWluZWQgbG9ja3MgKi8KKyAgICBsY2sgPSBnbG9jay0+bG9ja19saXN0Lm5leHQ7CisgICAgd2hpbGUgKGxjayAhPSAmZ2xvY2stPmxvY2tfbGlzdCkgeworCWlmIChsY2stPmxvY2sgIT0gZ2xvY2stPm93bl9sb2NrKSB7CisJICAgIGludCBpOworCSAgICBmb3IgKGk9MDsgaTxnbG9jay0+b3duZXJfY250OyArK2kpCisJCXBqX2xvY2tfcmVsZWFzZShsY2stPmxvY2spOworCX0KKwlsY2sgPSBsY2stPm5leHQ7CisgICAgfQorCisgICAgLyogQ2FsbCBjYWxsYmFja3MgKi8KKyAgICBjYiA9IGdsb2NrLT5kZXN0cm95X2xpc3QubmV4dDsKKyAgICB3aGlsZSAoY2IgIT0gJmdsb2NrLT5kZXN0cm95X2xpc3QpIHsKKwlncnBfZGVzdHJveV9jYWxsYmFjayAqbmV4dCA9IGNiLT5uZXh0OworCWNiLT5oYW5kbGVyKGNiLT5jb21wKTsKKwljYiA9IG5leHQ7CisgICAgfQorCisgICAgcGpfbG9ja19kZXN0cm95KGdsb2NrLT5vd25fbG9jayk7CisgICAgcGpfYXRvbWljX2Rlc3Ryb3koZ2xvY2stPnJlZl9jbnQpOworICAgIGdsb2NrLT5wb29sID0gTlVMTDsKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2NyZWF0ZSggcGpfcG9vbF90ICpwb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX2dycF9sb2NrX2NvbmZpZyAqY2ZnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2dycF9sb2NrX3QgKipwX2dycF9sb2NrKQoreworICAgIHBqX2dycF9sb2NrX3QgKmdsb2NrOworICAgIGdycF9sb2NrX2l0ZW0gKm93bl9sb2NrOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4ocG9vbCAmJiBwX2dycF9sb2NrLCBQSl9FSU5WQUwpOworCisgICAgUEpfVU5VU0VEX0FSRyhjZmcpOworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKHBvb2wtPmZhY3RvcnksICJnbGNrJXAiLCA1MTIsIDUxMiwgTlVMTCk7CisgICAgaWYgKCFwb29sKQorCXJldHVybiBQSl9FTk9NRU07CisKKyAgICBnbG9jayA9IFBKX1BPT0xfWkFMTE9DX1QocG9vbCwgcGpfZ3JwX2xvY2tfdCk7CisgICAgZ2xvY2stPmJhc2UubG9ja19vYmplY3QgPSBnbG9jazsKKyAgICBnbG9jay0+YmFzZS5hY3F1aXJlID0gJmdycF9sb2NrX2FjcXVpcmU7CisgICAgZ2xvY2stPmJhc2UudHJ5YWNxdWlyZSA9ICZncnBfbG9ja190cnlhY3F1aXJlOworICAgIGdsb2NrLT5iYXNlLnJlbGVhc2UgPSAmZ3JwX2xvY2tfcmVsZWFzZTsKKyAgICBnbG9jay0+YmFzZS5kZXN0cm95ID0gJmdycF9sb2NrX2Rlc3Ryb3k7CisKKyAgICBnbG9jay0+cG9vbCA9IHBvb2w7CisgICAgcGpfbGlzdF9pbml0KCZnbG9jay0+bG9ja19saXN0KTsKKyAgICBwal9saXN0X2luaXQoJmdsb2NrLT5kZXN0cm95X2xpc3QpOworI2lmIFBKX0dSUF9MT0NLX0RFQlVHCisgICAgcGpfbGlzdF9pbml0KCZnbG9jay0+cmVmX2xpc3QpOworICAgIHBqX2xpc3RfaW5pdCgmZ2xvY2stPnJlZl9mcmVlX2xpc3QpOworI2VuZGlmCisKKyAgICBzdGF0dXMgPSBwal9hdG9taWNfY3JlYXRlKHBvb2wsIDAsICZnbG9jay0+cmVmX2NudCk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fZXJyb3I7CisKKyAgICBzdGF0dXMgPSBwal9sb2NrX2NyZWF0ZV9yZWN1cnNpdmVfbXV0ZXgocG9vbCwgcG9vbC0+b2JqX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnbG9jay0+b3duX2xvY2spOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlnb3RvIG9uX2Vycm9yOworCisgICAgb3duX2xvY2sgPSBQSl9QT09MX1pBTExPQ19UKHBvb2wsIGdycF9sb2NrX2l0ZW0pOworICAgIG93bl9sb2NrLT5sb2NrID0gZ2xvY2stPm93bl9sb2NrOworICAgIHBqX2xpc3RfcHVzaF9iYWNrKCZnbG9jay0+bG9ja19saXN0LCBvd25fbG9jayk7CisKKyAgICAqcF9ncnBfbG9jayA9IGdsb2NrOworICAgIHJldHVybiBQSl9TVUNDRVNTOworCitvbl9lcnJvcjoKKyAgICBncnBfbG9ja19kZXN0cm95KGdsb2NrKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2Rlc3Ryb3koIHBqX2dycF9sb2NrX3QgKmdycF9sb2NrKQoreworICAgIHJldHVybiBncnBfbG9ja19kZXN0cm95KGdycF9sb2NrKTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9ncnBfbG9ja19hY3F1aXJlKCBwal9ncnBfbG9ja190ICpncnBfbG9jaykKK3sKKyAgICByZXR1cm4gZ3JwX2xvY2tfYWNxdWlyZShncnBfbG9jayk7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ3JwX2xvY2tfdHJ5YWNxdWlyZSggcGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2spCit7CisgICAgcmV0dXJuIGdycF9sb2NrX3RyeWFjcXVpcmUoZ3JwX2xvY2spOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX3JlbGVhc2UoIHBqX2dycF9sb2NrX3QgKmdycF9sb2NrKQoreworICAgIHJldHVybiBncnBfbG9ja19yZWxlYXNlKGdycF9sb2NrKTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9ncnBfbG9ja19yZXBsYWNlKCBwal9ncnBfbG9ja190ICpvbGRfbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfZ3JwX2xvY2tfdCAqbmV3X2xvY2spCit7CisgICAgZ3JwX2Rlc3Ryb3lfY2FsbGJhY2sgKm9jYjsKKworICAgIC8qIE1vdmUgaGFuZGxlcnMgZnJvbSBvbGQgdG8gbmV3ICovCisgICAgb2NiID0gb2xkX2xvY2stPmRlc3Ryb3lfbGlzdC5uZXh0OworICAgIHdoaWxlIChvY2IgIT0gJm9sZF9sb2NrLT5kZXN0cm95X2xpc3QpIHsKKwlncnBfZGVzdHJveV9jYWxsYmFjayAqbmNiOworCisJbmNiID0gUEpfUE9PTF9BTExPQ19UKG5ld19sb2NrLT5wb29sLCBncnBfZGVzdHJveV9jYWxsYmFjayk7CisJbmNiLT5jb21wID0gb2NiLT5jb21wOworCW5jYi0+aGFuZGxlciA9IG9jYi0+aGFuZGxlcjsKKwlwal9saXN0X3B1c2hfYmFjaygmbmV3X2xvY2stPmRlc3Ryb3lfbGlzdCwgbmNiKTsKKworCW9jYiA9IG9jYi0+bmV4dDsKKyAgICB9CisKKyAgICBwal9saXN0X2luaXQoJm9sZF9sb2NrLT5kZXN0cm95X2xpc3QpOworCisgICAgZ3JwX2xvY2tfZGVzdHJveShvbGRfbG9jayk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ3JwX2xvY2tfYWRkX2hhbmRsZXIoIHBqX2dycF9sb2NrX3QgKmdsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfcG9vbF90ICpwb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29tcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpkZXN0cm95KSh2b2lkICpjb21wKSkKK3sKKyAgICBncnBfZGVzdHJveV9jYWxsYmFjayAqY2I7CisKKyAgICBncnBfbG9ja19hY3F1aXJlKGdsb2NrKTsKKworICAgIGlmIChwb29sID09IE5VTEwpCisJcG9vbCA9IGdsb2NrLT5wb29sOworCisgICAgY2IgPSBQSl9QT09MX1pBTExPQ19UKHBvb2wsIGdycF9kZXN0cm95X2NhbGxiYWNrKTsKKyAgICBjYi0+Y29tcCA9IGNvbXA7CisgICAgY2ItPmhhbmRsZXIgPSBkZXN0cm95OworICAgIHBqX2xpc3RfcHVzaF9iYWNrKCZnbG9jay0+ZGVzdHJveV9saXN0LCBjYik7CisKKyAgICBncnBfbG9ja19yZWxlYXNlKGdsb2NrKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9ncnBfbG9ja19kZWxfaGFuZGxlciggcGpfZ3JwX2xvY2tfdCAqZ2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb21wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmRlc3Ryb3kpKHZvaWQgKmNvbXApKQoreworICAgIGdycF9kZXN0cm95X2NhbGxiYWNrICpjYjsKKworICAgIGdycF9sb2NrX2FjcXVpcmUoZ2xvY2spOworCisgICAgY2IgPSBnbG9jay0+ZGVzdHJveV9saXN0Lm5leHQ7CisgICAgd2hpbGUgKGNiICE9ICZnbG9jay0+ZGVzdHJveV9saXN0KSB7CisJaWYgKGNiLT5jb21wID09IGNvbXAgJiYgY2ItPmhhbmRsZXIgPT0gZGVzdHJveSkKKwkgICAgYnJlYWs7CisJY2IgPSBjYi0+bmV4dDsKKyAgICB9CisKKyAgICBpZiAoY2IgIT0gJmdsb2NrLT5kZXN0cm95X2xpc3QpCisJcGpfbGlzdF9lcmFzZShjYik7CisKKyAgICBncnBfbG9ja19yZWxlYXNlKGdsb2NrKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworc3RhdGljIHBqX3N0YXR1c190IGdycF9sb2NrX2FkZF9yZWYocGpfZ3JwX2xvY2tfdCAqZ2xvY2spCit7CisgICAgcGpfYXRvbWljX2luYyhnbG9jay0+cmVmX2NudCk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBwal9zdGF0dXNfdCBncnBfbG9ja19kZWNfcmVmKHBqX2dycF9sb2NrX3QgKmdsb2NrKQoreworICAgIGludCBjbnQ7IC8qIGZvciBkZWJ1Z2dpbmcgKi8KKyAgICBpZiAoKGNudD1wal9hdG9taWNfZGVjX2FuZF9nZXQoZ2xvY2stPnJlZl9jbnQpKSA9PSAwKSB7CisJZ3JwX2xvY2tfZGVzdHJveShnbG9jayk7CisJcmV0dXJuIFBKX0VHT05FOworICAgIH0KKyAgICBwal9hc3NlcnQoY250ID4gMCk7CisgICAgcGpfZ3JwX2xvY2tfZHVtcChnbG9jayk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKyNpZiBQSl9HUlBfTE9DS19ERUJVRworUEpfREVGKHBqX3N0YXR1c190KSBwal9ncnBfbG9ja19hZGRfcmVmX2RiZyhwal9ncnBfbG9ja190ICpnbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUpCit7CisgICAgZ3JwX2xvY2tfcmVmICpyZWY7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgcGpfZW50ZXJfY3JpdGljYWxfc2VjdGlvbigpOworICAgIGlmICghcGpfbGlzdF9lbXB0eSgmZ2xvY2stPnJlZl9mcmVlX2xpc3QpKSB7CisJcmVmID0gZ2xvY2stPnJlZl9mcmVlX2xpc3QubmV4dDsKKwlwal9saXN0X2VyYXNlKHJlZik7CisgICAgfSBlbHNlIHsKKwlyZWYgPSBQSl9QT09MX0FMTE9DX1QoZ2xvY2stPnBvb2wsIGdycF9sb2NrX3JlZik7CisgICAgfQorCisgICAgcmVmLT5maWxlID0gZmlsZTsKKyAgICByZWYtPmxpbmUgPSBsaW5lOworICAgIHBqX2xpc3RfcHVzaF9iYWNrKCZnbG9jay0+cmVmX2xpc3QsIHJlZik7CisKKyAgICBwal9sZWF2ZV9jcml0aWNhbF9zZWN0aW9uKCk7CisKKyAgICBzdGF0dXMgPSBncnBfbG9ja19hZGRfcmVmKGdsb2NrKTsKKworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCXBqX2VudGVyX2NyaXRpY2FsX3NlY3Rpb24oKTsKKwlwal9saXN0X2VyYXNlKHJlZik7CisJcGpfbGlzdF9wdXNoX2JhY2soJmdsb2NrLT5yZWZfZnJlZV9saXN0LCByZWYpOworCXBqX2xlYXZlX2NyaXRpY2FsX3NlY3Rpb24oKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2RlY19yZWZfZGJnKHBqX2dycF9sb2NrX3QgKmdsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSkKK3sKKyAgICBncnBfbG9ja19yZWYgKnJlZjsKKworICAgIHBqX2VudGVyX2NyaXRpY2FsX3NlY3Rpb24oKTsKKyAgICAvKiBGaW5kIHRoZSBzYW1lIHNvdXJjZSBmaWxlICovCisgICAgcmVmID0gZ2xvY2stPnJlZl9saXN0Lm5leHQ7CisgICAgd2hpbGUgKHJlZiAhPSAmZ2xvY2stPnJlZl9saXN0KSB7CisJaWYgKHN0cmNtcChyZWYtPmZpbGUsIGZpbGUpID09IDApIHsKKwkgICAgcGpfbGlzdF9lcmFzZShyZWYpOworCSAgICBwal9saXN0X3B1c2hfYmFjaygmZ2xvY2stPnJlZl9mcmVlX2xpc3QsIHJlZik7CisJICAgIGJyZWFrOworCX0KKwlyZWYgPSByZWYtPm5leHQ7CisgICAgfQorICAgIHBqX2xlYXZlX2NyaXRpY2FsX3NlY3Rpb24oKTsKKworICAgIGlmIChyZWYgPT0gJmdsb2NrLT5yZWZfbGlzdCkgeworCVBKX0xPRygyLChUSElTX0ZJTEUsICJwal9ncnBfbG9ja19kZWNfcmVmX2RiZygpIGNvdWxkIG5vdCBmaW5kICIKKwkJCSAgICAgICJtYXRjaGluZyByZWYgZm9yICVzIiwgZmlsZSkpOworICAgIH0KKworICAgIHJldHVybiBncnBfbG9ja19kZWNfcmVmKGdsb2NrKTsKK30KKyNlbHNlCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2FkZF9yZWYocGpfZ3JwX2xvY2tfdCAqZ2xvY2spCit7CisgICAgcmV0dXJuIGdycF9sb2NrX2FkZF9yZWYoZ2xvY2spOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2RlY19yZWYocGpfZ3JwX2xvY2tfdCAqZ2xvY2spCit7CisgICAgcmV0dXJuIGdycF9sb2NrX2RlY19yZWYoZ2xvY2spOworfQorI2VuZGlmCisKK1BKX0RFRihpbnQpIHBqX2dycF9sb2NrX2dldF9yZWYocGpfZ3JwX2xvY2tfdCAqZ2xvY2spCit7CisgICAgcmV0dXJuIHBqX2F0b21pY19nZXQoZ2xvY2stPnJlZl9jbnQpOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dycF9sb2NrX2NoYWluX2xvY2soIHBqX2dycF9sb2NrX3QgKmdsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9sb2NrX3QgKmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3MpCit7CisgICAgZ3JwX2xvY2tfaXRlbSAqbGNrLCAqbmV3X2xjazsKKyAgICBpbnQgaTsKKworICAgIGdycF9sb2NrX2FjcXVpcmUoZ2xvY2spOworCisgICAgZm9yIChpPTA7IGk8Z2xvY2stPm93bmVyX2NudDsgKytpKQorCXBqX2xvY2tfYWNxdWlyZShsb2NrKTsKKworICAgIGxjayA9IGdsb2NrLT5sb2NrX2xpc3QubmV4dDsKKyAgICB3aGlsZSAobGNrICE9ICZnbG9jay0+bG9ja19saXN0KSB7CisJaWYgKGxjay0+cHJpbyA+PSBwb3MpCisJICAgIGJyZWFrOworCWxjayA9IGxjay0+bmV4dDsKKyAgICB9CisKKyAgICBuZXdfbGNrID0gUEpfUE9PTF9aQUxMT0NfVChnbG9jay0+cG9vbCwgZ3JwX2xvY2tfaXRlbSk7CisgICAgbmV3X2xjay0+cHJpbyA9IHBvczsKKyAgICBuZXdfbGNrLT5sb2NrID0gbG9jazsKKyAgICBwal9saXN0X2luc2VydF9iZWZvcmUobGNrLCBuZXdfbGNrKTsKKworICAgIC8qIHRoaXMgd2lsbCBhbHNvIHJlbGVhc2UgdGhlIG5ldyBsb2NrICovCisgICAgZ3JwX2xvY2tfcmVsZWFzZShnbG9jayk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ3JwX2xvY2tfdW5jaGFpbl9sb2NrKCBwal9ncnBfbG9ja190ICpnbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9sb2NrX3QgKmxvY2spCit7CisgICAgZ3JwX2xvY2tfaXRlbSAqbGNrOworCisgICAgZ3JwX2xvY2tfYWNxdWlyZShnbG9jayk7CisKKyAgICBsY2sgPSBnbG9jay0+bG9ja19saXN0Lm5leHQ7CisgICAgd2hpbGUgKGxjayAhPSAmZ2xvY2stPmxvY2tfbGlzdCkgeworCWlmIChsY2stPmxvY2sgPT0gbG9jaykKKwkgICAgYnJlYWs7CisJbGNrID0gbGNrLT5uZXh0OworICAgIH0KKworICAgIGlmIChsY2sgIT0gJmdsb2NrLT5sb2NrX2xpc3QpIHsKKwlpbnQgaTsKKworCXBqX2xpc3RfZXJhc2UobGNrKTsKKwlmb3IgKGk9MDsgaTxnbG9jay0+b3duZXJfY250OyArK2kpCisJICAgIHBqX2xvY2tfcmVsZWFzZShsY2stPmxvY2spOworICAgIH0KKworICAgIGdycF9sb2NrX3JlbGVhc2UoZ2xvY2spOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYodm9pZCkgcGpfZ3JwX2xvY2tfZHVtcChwal9ncnBfbG9ja190ICpncnBfbG9jaykKK3sKKyNpZiBQSl9HUlBfTE9DS19ERUJVRworICAgIGdycF9sb2NrX3JlZiAqcmVmID0gZ3JwX2xvY2stPnJlZl9saXN0Lm5leHQ7CisgICAgY2hhciBpbmZvX2J1ZlsxMDAwXTsKKyAgICBwal9zdHJfdCBpbmZvOworCisgICAgaW5mby5wdHIgPSBpbmZvX2J1ZjsKKyAgICBpbmZvLnNsZW4gPSAwOworCisgICAgcGpfZ3JwX2xvY2tfYWNxdWlyZShncnBfbG9jayk7CisgICAgcGpfZW50ZXJfY3JpdGljYWxfc2VjdGlvbigpOworCisgICAgd2hpbGUgKHJlZiAhPSAmZ3JwX2xvY2stPnJlZl9saXN0ICYmIGluZm8uc2xlbiA8IHNpemVvZihpbmZvX2J1ZikpIHsKKwljaGFyICpzdGFydCA9IGluZm8ucHRyICsgaW5mby5zbGVuOworCWludCBtYXhfbGVuID0gc2l6ZW9mKGluZm9fYnVmKSAtIGluZm8uc2xlbjsKKwlpbnQgbGVuOworCisJbGVuID0gcGpfYW5zaV9zbnByaW50ZihzdGFydCwgbWF4X2xlbiwgIiVzOiVkICIsIHJlZi0+ZmlsZSwgcmVmLT5saW5lKTsKKwlpZiAobGVuIDwgMSB8fCBsZW4gPj0gbWF4X2xlbikgeworCSAgICBsZW4gPSBzdHJsZW4ocmVmLT5maWxlKTsKKwkgICAgaWYgKGxlbiA+IG1heF9sZW4gLSAxKQorCQlsZW4gPSBtYXhfbGVuIC0gMTsKKworCSAgICBtZW1jcHkoc3RhcnQsIHJlZi0+ZmlsZSwgbGVuKTsKKwkgICAgc3RhcnRbbGVuKytdID0gJyAnOworCX0KKworCWluZm8uc2xlbiArPSBsZW47CisKKwlyZWYgPSByZWYtPm5leHQ7CisgICAgfQorCisgICAgaWYgKHJlZiAhPSAmZ3JwX2xvY2stPnJlZl9saXN0KSB7CisJaW50IGk7CisJZm9yIChpPTA7IGk8NDsgKytpKQorCSAgICBpbmZvX2J1ZltzaXplb2YoaW5mb19idWYpLWktMV0gPSAnLic7CisgICAgfQorICAgIGluZm8ucHRyW2luZm8uc2xlbi0xXSA9ICdcMCc7CisKKyAgICBwal9sZWF2ZV9jcml0aWNhbF9zZWN0aW9uKCk7CisgICAgcGpfZ3JwX2xvY2tfcmVsZWFzZShncnBfbG9jayk7CisKKyAgICBQSl9MT0coNCwoVEhJU19GSUxFLCAiR3JvdXAgbG9jayAlcCwgcmVmX2NudD0lZC4gUmVmZXJlbmNlIGhvbGRlcnM6ICVzIiwKKwkgICAgICAgZ3JwX2xvY2ssIHBqX2dycF9sb2NrX2dldF9yZWYoZ3JwX2xvY2spLCBpbmZvLnB0cikpOworI2Vsc2UKKyAgICBQSl9VTlVTRURfQVJHKGdycF9sb2NrKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xvZy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xvZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZjQzMTcKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovbG9nLmMKQEAgLTAsMCArMSw1NDggQEAKKy8qICRJZDogbG9nLmMgNDYyNCAyMDEzLTEwLTIxIDA2OjM3OjMwWiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovdHlwZXMuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zdGRhcmcuaD4KKworI2lmIFBKX0xPR19NQVhfTEVWRUwgPj0gMQorCisjaWYgMAorUEpfREVGX0RBVEEoaW50KSBwal9sb2dfbWF4X2xldmVsID0gUEpfTE9HX01BWF9MRVZFTDsKKyNlbHNlCitzdGF0aWMgaW50IHBqX2xvZ19tYXhfbGV2ZWwgPSBQSl9MT0dfTUFYX0xFVkVMOworI2VuZGlmCisKK3N0YXRpYyB2b2lkICpnX2xhc3RfdGhyZWFkOworCisjaWYgUEpfSEFTX1RIUkVBRFMKK3N0YXRpYyBsb25nIHRocmVhZF9zdXNwZW5kZWRfdGxzX2lkID0gLTE7CisjICBpZiBQSl9MT0dfRU5BQkxFX0lOREVOVAorc3RhdGljIGxvbmcgdGhyZWFkX2luZGVudF90bHNfaWQgPSAtMTsKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmICFQSl9MT0dfRU5BQkxFX0lOREVOVCB8fCAhUEpfSEFTX1RIUkVBRFMKK3N0YXRpYyBpbnQgbG9nX2luZGVudDsKKyNlbmRpZgorCitzdGF0aWMgcGpfbG9nX2Z1bmMgKmxvZ193cml0ZXIgPSAmcGpfbG9nX3dyaXRlOworc3RhdGljIHVuc2lnbmVkIGxvZ19kZWNvciA9IFBKX0xPR19IQVNfVElNRSB8IFBKX0xPR19IQVNfTUlDUk9fU0VDIHwKKwkJCSAgICBQSl9MT0dfSEFTX1NFTkRFUiB8IFBKX0xPR19IQVNfTkVXTElORSB8CisJCQkgICAgUEpfTE9HX0hBU19TUEFDRSB8IFBKX0xPR19IQVNfVEhSRUFEX1NXQyB8CisJCQkgICAgUEpfTE9HX0hBU19JTkRFTlQKKyNpZiAoZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIhPTApIHx8IFwKKyAgICAoZGVmaW5lZChQSl9XSU42NCkgJiYgUEpfV0lONjQhPTApCisJCQkgICAgfCBQSl9MT0dfSEFTX0NPTE9SCisjZW5kaWYKKwkJCSAgICA7CisKK3N0YXRpYyBwal9jb2xvcl90IFBKX0xPR19DT0xPUl8wID0gUEpfVEVSTV9DT0xPUl9CUklHSFQgfCBQSl9URVJNX0NPTE9SX1I7CitzdGF0aWMgcGpfY29sb3JfdCBQSl9MT0dfQ09MT1JfMSA9IFBKX1RFUk1fQ09MT1JfQlJJR0hUIHwgUEpfVEVSTV9DT0xPUl9SOworc3RhdGljIHBqX2NvbG9yX3QgUEpfTE9HX0NPTE9SXzIgPSBQSl9URVJNX0NPTE9SX0JSSUdIVCB8IAorCQkJCSAgIFBKX1RFUk1fQ09MT1JfUiB8IAorCQkJCSAgIFBKX1RFUk1fQ09MT1JfRzsKK3N0YXRpYyBwal9jb2xvcl90IFBKX0xPR19DT0xPUl8zID0gUEpfVEVSTV9DT0xPUl9CUklHSFQgfCAKKwkJCQkgICBQSl9URVJNX0NPTE9SX1IgfCAKKwkJCQkgICBQSl9URVJNX0NPTE9SX0cgfCAKKwkJCQkgICBQSl9URVJNX0NPTE9SX0I7CitzdGF0aWMgcGpfY29sb3JfdCBQSl9MT0dfQ09MT1JfNCA9IFBKX1RFUk1fQ09MT1JfUiB8IAorCQkJCSAgIFBKX1RFUk1fQ09MT1JfRyB8IAorCQkJCSAgIFBKX1RFUk1fQ09MT1JfQjsKK3N0YXRpYyBwal9jb2xvcl90IFBKX0xPR19DT0xPUl81ID0gUEpfVEVSTV9DT0xPUl9SIHwgCisJCQkJICAgUEpfVEVSTV9DT0xPUl9HIHwgCisJCQkJICAgUEpfVEVSTV9DT0xPUl9COworc3RhdGljIHBqX2NvbG9yX3QgUEpfTE9HX0NPTE9SXzYgPSBQSl9URVJNX0NPTE9SX1IgfCAKKwkJCQkgICBQSl9URVJNX0NPTE9SX0cgfCAKKwkJCQkgICBQSl9URVJNX0NPTE9SX0I7CisvKiBEZWZhdWx0IHRlcm1pbmFsIGNvbG9yICovCitzdGF0aWMgcGpfY29sb3JfdCBQSl9MT0dfQ09MT1JfNzcgPSBQSl9URVJNX0NPTE9SX1IgfCAKKwkJCQkgICAgUEpfVEVSTV9DT0xPUl9HIHwgCisJCQkJICAgIFBKX1RFUk1fQ09MT1JfQjsKKworI2lmIFBKX0xPR19VU0VfU1RBQ0tfQlVGRkVSPT0wCitzdGF0aWMgY2hhciBsb2dfYnVmZmVyW1BKX0xPR19NQVhfU0laRV07CisjZW5kaWYKKworI2RlZmluZSBMT0dfTUFYX0lOREVOVAkJODAKKworI2lmIFBKX0hBU19USFJFQURTCitzdGF0aWMgdm9pZCBsb2dnaW5nX3NodXRkb3duKHZvaWQpCit7CisgICAgaWYgKHRocmVhZF9zdXNwZW5kZWRfdGxzX2lkICE9IC0xKSB7CisJcGpfdGhyZWFkX2xvY2FsX2ZyZWUodGhyZWFkX3N1c3BlbmRlZF90bHNfaWQpOworCXRocmVhZF9zdXNwZW5kZWRfdGxzX2lkID0gLTE7CisgICAgfQorIyAgaWYgUEpfTE9HX0VOQUJMRV9JTkRFTlQKKyAgICBpZiAodGhyZWFkX2luZGVudF90bHNfaWQgIT0gLTEpIHsKKwlwal90aHJlYWRfbG9jYWxfZnJlZSh0aHJlYWRfaW5kZW50X3Rsc19pZCk7CisJdGhyZWFkX2luZGVudF90bHNfaWQgPSAtMTsKKyAgICB9CisjICBlbmRpZgorfQorI2VuZGlmCS8qIFBKX0hBU19USFJFQURTICovCisKKyNpZiBQSl9MT0dfRU5BQkxFX0lOREVOVCAmJiBQSl9IQVNfVEhSRUFEUworc3RhdGljIHZvaWQgbG9nX3NldF9pbmRlbnQoaW50IGluZGVudCkKK3sKKyAgICBpZiAoaW5kZW50IDwgMCkgaW5kZW50ID0gMDsKKyAgICBwal90aHJlYWRfbG9jYWxfc2V0KHRocmVhZF9pbmRlbnRfdGxzX2lkLCAodm9pZCopKHBqX3NzaXplX3QpaW5kZW50KTsKK30KKworc3RhdGljIGludCBsb2dfZ2V0X3Jhd19pbmRlbnQodm9pZCkKK3sKKyAgICByZXR1cm4gKGxvbmcpKHBqX3NzaXplX3QpcGpfdGhyZWFkX2xvY2FsX2dldCh0aHJlYWRfaW5kZW50X3Rsc19pZCk7Cit9CisKKyNlbHNlCitzdGF0aWMgdm9pZCBsb2dfc2V0X2luZGVudChpbnQgaW5kZW50KQoreworICAgIGxvZ19pbmRlbnQgPSBpbmRlbnQ7CisgICAgaWYgKGxvZ19pbmRlbnQgPCAwKSBsb2dfaW5kZW50ID0gMDsKK30KKworc3RhdGljIGludCBsb2dfZ2V0X3Jhd19pbmRlbnQodm9pZCkKK3sKKyAgICByZXR1cm4gbG9nX2luZGVudDsKK30KKyNlbmRpZgkvKiBQSl9MT0dfRU5BQkxFX0lOREVOVCAmJiBQSl9IQVNfVEhSRUFEUyAqLworCitzdGF0aWMgaW50IGxvZ19nZXRfaW5kZW50KHZvaWQpCit7CisgICAgaW50IGluZGVudCA9IGxvZ19nZXRfcmF3X2luZGVudCgpOworICAgIHJldHVybiBpbmRlbnQgPiBMT0dfTUFYX0lOREVOVCA/IExPR19NQVhfSU5ERU5UIDogaW5kZW50OworfQorCitQSl9ERUYodm9pZCkgcGpfbG9nX2FkZF9pbmRlbnQoaW50IGluZGVudCkKK3sKKyAgICBsb2dfc2V0X2luZGVudChsb2dfZ2V0X3Jhd19pbmRlbnQoKSArIGluZGVudCk7Cit9CisKK1BKX0RFRih2b2lkKSBwal9sb2dfcHVzaF9pbmRlbnQodm9pZCkKK3sKKyAgICBwal9sb2dfYWRkX2luZGVudChQSl9MT0dfSU5ERU5UX1NJWkUpOworfQorCitQSl9ERUYodm9pZCkgcGpfbG9nX3BvcF9pbmRlbnQodm9pZCkKK3sKKyAgICBwal9sb2dfYWRkX2luZGVudCgtUEpfTE9HX0lOREVOVF9TSVpFKTsKK30KKworcGpfc3RhdHVzX3QgcGpfbG9nX2luaXQodm9pZCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIGlmICh0aHJlYWRfc3VzcGVuZGVkX3Rsc19pZCA9PSAtMSkgeworCXBqX3N0YXR1c190IHN0YXR1czsKKwlzdGF0dXMgPSBwal90aHJlYWRfbG9jYWxfYWxsb2MoJnRocmVhZF9zdXNwZW5kZWRfdGxzX2lkKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJICAgIHJldHVybiBzdGF0dXM7CisKKyMgIGlmIFBKX0xPR19FTkFCTEVfSU5ERU5UCisJc3RhdHVzID0gcGpfdGhyZWFkX2xvY2FsX2FsbG9jKCZ0aHJlYWRfaW5kZW50X3Rsc19pZCk7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIHBqX3RocmVhZF9sb2NhbF9mcmVlKHRocmVhZF9zdXNwZW5kZWRfdGxzX2lkKTsKKwkgICAgdGhyZWFkX3N1c3BlbmRlZF90bHNfaWQgPSAtMTsKKwkgICAgcmV0dXJuIHN0YXR1czsKKwl9CisjICBlbmRpZgorCXBqX2F0ZXhpdCgmbG9nZ2luZ19zaHV0ZG93bik7CisgICAgfQorI2VuZGlmCisgICAgZ19sYXN0X3RocmVhZCA9IE5VTEw7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRih2b2lkKSBwal9sb2dfc2V0X2RlY29yKHVuc2lnbmVkIGRlY29yKQoreworICAgIGxvZ19kZWNvciA9IGRlY29yOworfQorCitQSl9ERUYodW5zaWduZWQpIHBqX2xvZ19nZXRfZGVjb3Iodm9pZCkKK3sKKyAgICByZXR1cm4gbG9nX2RlY29yOworfQorCitQSl9ERUYodm9pZCkgcGpfbG9nX3NldF9jb2xvcihpbnQgbGV2ZWwsIHBqX2NvbG9yX3QgY29sb3IpCit7CisgICAgc3dpdGNoIChsZXZlbCkgCisgICAgeworCWNhc2UgMDogUEpfTE9HX0NPTE9SXzAgPSBjb2xvcjsgCisJICAgIGJyZWFrOworCWNhc2UgMTogUEpfTE9HX0NPTE9SXzEgPSBjb2xvcjsgCisJICAgIGJyZWFrOworCWNhc2UgMjogUEpfTE9HX0NPTE9SXzIgPSBjb2xvcjsgCisJICAgIGJyZWFrOworCWNhc2UgMzogUEpfTE9HX0NPTE9SXzMgPSBjb2xvcjsgCisJICAgIGJyZWFrOworCWNhc2UgNDogUEpfTE9HX0NPTE9SXzQgPSBjb2xvcjsgCisJICAgIGJyZWFrOworCWNhc2UgNTogUEpfTE9HX0NPTE9SXzUgPSBjb2xvcjsgCisJICAgIGJyZWFrOworCWNhc2UgNjogUEpfTE9HX0NPTE9SXzYgPSBjb2xvcjsgCisJICAgIGJyZWFrOworCS8qIERlZmF1bHQgdGVybWluYWwgY29sb3IgKi8KKwljYXNlIDc3OiBQSl9MT0dfQ09MT1JfNzcgPSBjb2xvcjsgCisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIC8qIERvIG5vdGhpbmcgKi8KKwkgICAgYnJlYWs7CisgICAgfQorfQorCitQSl9ERUYocGpfY29sb3JfdCkgcGpfbG9nX2dldF9jb2xvcihpbnQgbGV2ZWwpCit7CisgICAgc3dpdGNoIChsZXZlbCkgeworCWNhc2UgMDoKKwkgICAgcmV0dXJuIFBKX0xPR19DT0xPUl8wOworCWNhc2UgMToKKwkgICAgcmV0dXJuIFBKX0xPR19DT0xPUl8xOworCWNhc2UgMjoKKwkgICAgcmV0dXJuIFBKX0xPR19DT0xPUl8yOworCWNhc2UgMzoKKwkgICAgcmV0dXJuIFBKX0xPR19DT0xPUl8zOworCWNhc2UgNDoKKwkgICAgcmV0dXJuIFBKX0xPR19DT0xPUl80OworCWNhc2UgNToKKwkgICAgcmV0dXJuIFBKX0xPR19DT0xPUl81OworCWNhc2UgNjoKKwkgICAgcmV0dXJuIFBKX0xPR19DT0xPUl82OworCWRlZmF1bHQ6CisJICAgIC8qIFJldHVybiBkZWZhdWx0IHRlcm1pbmFsIGNvbG9yICovCisJICAgIHJldHVybiBQSl9MT0dfQ09MT1JfNzc7CisgICAgfQorfQorCitQSl9ERUYodm9pZCkgcGpfbG9nX3NldF9sZXZlbChpbnQgbGV2ZWwpCit7CisgICAgcGpfbG9nX21heF9sZXZlbCA9IGxldmVsOworfQorCisjaWYgMQorUEpfREVGKGludCkgcGpfbG9nX2dldF9sZXZlbCh2b2lkKQoreworICAgIHJldHVybiBwal9sb2dfbWF4X2xldmVsOworfQorI2VuZGlmCisKK1BKX0RFRih2b2lkKSBwal9sb2dfc2V0X2xvZ19mdW5jKCBwal9sb2dfZnVuYyAqZnVuYyApCit7CisgICAgbG9nX3dyaXRlciA9IGZ1bmM7Cit9CisKK1BKX0RFRihwal9sb2dfZnVuYyopIHBqX2xvZ19nZXRfbG9nX2Z1bmModm9pZCkKK3sKKyAgICByZXR1cm4gbG9nX3dyaXRlcjsKK30KKworLyogVGVtcG9yYXJpbHkgc3VzcGVuZCBsb2dnaW5nIGZhY2lsaXR5IGZvciB0aGlzIHRocmVhZC4KKyAqIElmIHRocmVhZCBsb2NhbCBzdG9yYWdlL3ZhcmlhYmxlIGlzIG5vdCB1c2VkIG9yIG5vdCBpbml0aWFsaXplZCwgdGhlbgorICogd2UgY2FuIG9ubHkgc3VzcGVuZCB0aGUgbG9nZ2luZyBnbG9iYWxseSBhY3Jvc3MgYWxsIHRocmVhZHMuIFRoaXMgbWF5CisgKiBoYXBwZW4gZS5nLiB3aGVuIGxvZyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIFBKTElCIGlzIGZ1bGx5IGluaXRpYWxpemVkCisgKiBvciBhZnRlciBQSkxJQiBpcyBzaHV0ZG93bi4KKyAqLworc3RhdGljIHZvaWQgc3VzcGVuZF9sb2dnaW5nKGludCAqc2F2ZWRfbGV2ZWwpCit7CisJLyogU2F2ZSB0aGUgbGV2ZWwgcmVnYXJkbGVzcywganVzdCBpbiBjYXNlIFBKTElCIGlzIHNodXRkb3duCisJICogYmV0d2VlbiBzdXNwZW5kIGFuZCByZXN1bWUuCisJICovCisJKnNhdmVkX2xldmVsID0gcGpfbG9nX21heF9sZXZlbDsKKworI2lmIFBKX0hBU19USFJFQURTCisgICAgaWYgKHRocmVhZF9zdXNwZW5kZWRfdGxzX2lkICE9IC0xKSAKKyAgICB7CisJcGpfdGhyZWFkX2xvY2FsX3NldCh0aHJlYWRfc3VzcGVuZGVkX3Rsc19pZCwgCisJCQkgICAgKHZvaWQqKShwal9zc2l6ZV90KVBKX1RSVUUpOworICAgIH0gCisgICAgZWxzZQorI2VuZGlmCisgICAgeworCXBqX2xvZ19tYXhfbGV2ZWwgPSAwOworICAgIH0KK30KKworLyogUmVzdW1lIGxvZ2dpbmcgZmFjaWxpdHkgZm9yIHRoaXMgdGhyZWFkICovCitzdGF0aWMgdm9pZCByZXN1bWVfbG9nZ2luZyhpbnQgKnNhdmVkX2xldmVsKQoreworI2lmIFBKX0hBU19USFJFQURTCisgICAgaWYgKHRocmVhZF9zdXNwZW5kZWRfdGxzX2lkICE9IC0xKSAKKyAgICB7CisJcGpfdGhyZWFkX2xvY2FsX3NldCh0aHJlYWRfc3VzcGVuZGVkX3Rsc19pZCwgKHZvaWQqKVBKX0ZBTFNFKTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworCS8qIE9ubHkgcmV2ZXJ0IHRoZSBsZXZlbCBpZiBhcHBsaWNhdGlvbiBkb2Vzbid0IGNoYW5nZSB0aGUKKwkgKiBsb2dnaW5nIGxldmVsIGJldHdlZW4gc3VzcGVuZCBhbmQgcmVzdW1lLgorCSAqLworCWlmIChwal9sb2dfbWF4X2xldmVsPT0wICYmICpzYXZlZF9sZXZlbCkKKwkgICAgcGpfbG9nX21heF9sZXZlbCA9ICpzYXZlZF9sZXZlbDsKKyAgICB9Cit9CisKKy8qIElzIGxvZ2dpbmcgZmFjaWxpdHkgc3VzcGVuZGVkIGZvciB0aGlzIHRocmVhZD8gKi8KK3N0YXRpYyBwal9ib29sX3QgaXNfbG9nZ2luZ19zdXNwZW5kZWQodm9pZCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIGlmICh0aHJlYWRfc3VzcGVuZGVkX3Rsc19pZCAhPSAtMSkgCisgICAgeworCXJldHVybiBwal90aHJlYWRfbG9jYWxfZ2V0KHRocmVhZF9zdXNwZW5kZWRfdGxzX2lkKSAhPSBOVUxMOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICB7CisJcmV0dXJuIHBqX2xvZ19tYXhfbGV2ZWwgPT0gMDsKKyAgICB9Cit9CisKK1BKX0RFRih2b2lkKSBwal9sb2coIGNvbnN0IGNoYXIgKnNlbmRlciwgaW50IGxldmVsLCAKKwkJICAgICBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgbWFya2VyKQoreworICAgIHBqX3RpbWVfdmFsIG5vdzsKKyAgICBwal9wYXJzZWRfdGltZSBwdGltZTsKKyAgICBjaGFyICpwcmU7CisjaWYgUEpfTE9HX1VTRV9TVEFDS19CVUZGRVIKKyAgICBjaGFyIGxvZ19idWZmZXJbUEpfTE9HX01BWF9TSVpFXTsKKyNlbmRpZgorICAgIGludCBzYXZlZF9sZXZlbCwgbGVuLCBwcmludF9sZW4sIGluZGVudDsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBpZiAobGV2ZWwgPiBwal9sb2dfbWF4X2xldmVsKQorCXJldHVybjsKKworICAgIGlmIChpc19sb2dnaW5nX3N1c3BlbmRlZCgpKQorCXJldHVybjsKKworICAgIC8qIFRlbXBvcmFyaWx5IGRpc2FibGUgbG9nZ2luZyBmb3IgdGhpcyB0aHJlYWQuIFNvbWUgb2YgUEpMSUIgQVBJcyB0aGF0CisgICAgICogdGhpcyBmdW5jdGlvbiBjYWxscyBiZWxvdyB3aWxsIHJlY3Vyc2l2ZWx5IGNhbGwgdGhlIGxvZ2dpbmcgZnVuY3Rpb24gCisgICAgICogYmFjaywgaGVuY2UgaXQgd2lsbCBjYXVzZSBpbmZpbml0ZSByZWN1cnNpdmUgY2FsbHMgaWYgd2UgYWxsb3cgdGhhdC4KKyAgICAgKi8KKyAgICBzdXNwZW5kX2xvZ2dpbmcoJnNhdmVkX2xldmVsKTsKKworICAgIC8qIEdldCBjdXJyZW50IGRhdGUvdGltZS4gKi8KKyAgICBwal9nZXR0aW1lb2ZkYXkoJm5vdyk7CisgICAgcGpfdGltZV9kZWNvZGUoJm5vdywgJnB0aW1lKTsKKworICAgIHByZSA9IGxvZ19idWZmZXI7CisgICAgaWYgKGxvZ19kZWNvciAmIFBKX0xPR19IQVNfTEVWRUxfVEVYVCkgeworCXN0YXRpYyBjb25zdCBjaGFyICpsdGV4dHNbXSA9IHsgIkZBVEFMOiIsICJFUlJPUjoiLCAiIFdBUk46IiwgCisJCQkgICAgICAiIElORk86IiwgIkRFQlVHOiIsICJUUkFDRToiLCAiREVUUkM6In07CisJcGpfYW5zaV9zdHJjcHkocHJlLCBsdGV4dHNbbGV2ZWxdKTsKKwlwcmUgKz0gNjsKKyAgICB9CisgICAgaWYgKGxvZ19kZWNvciAmIFBKX0xPR19IQVNfREFZX05BTUUpIHsKKwlzdGF0aWMgY29uc3QgY2hhciAqd2RheXNbXSA9IHsgIlN1biIsICJNb24iLCAiVHVlIiwgIldlZCIsCisJCQkJICAgICAgICJUaHUiLCAiRnJpIiwgIlNhdCJ9OworCXBqX2Fuc2lfc3RyY3B5KHByZSwgd2RheXNbcHRpbWUud2RheV0pOworCXByZSArPSAzOworICAgIH0KKyAgICBpZiAobG9nX2RlY29yICYgUEpfTE9HX0hBU19ZRUFSKSB7CisJaWYgKHByZSE9bG9nX2J1ZmZlcikgKnByZSsrID0gJyAnOworCXByZSArPSBwal91dG9hKHB0aW1lLnllYXIsIHByZSk7CisgICAgfQorICAgIGlmIChsb2dfZGVjb3IgJiBQSl9MT0dfSEFTX01PTlRIKSB7CisJKnByZSsrID0gJy0nOworCXByZSArPSBwal91dG9hX3BhZChwdGltZS5tb24rMSwgcHJlLCAyLCAnMCcpOworICAgIH0KKyAgICBpZiAobG9nX2RlY29yICYgUEpfTE9HX0hBU19EQVlfT0ZfTU9OKSB7CisJKnByZSsrID0gJy0nOworCXByZSArPSBwal91dG9hX3BhZChwdGltZS5kYXksIHByZSwgMiwgJzAnKTsKKyAgICB9CisgICAgaWYgKGxvZ19kZWNvciAmIFBKX0xPR19IQVNfVElNRSkgeworCWlmIChwcmUhPWxvZ19idWZmZXIpICpwcmUrKyA9ICcgJzsKKwlwcmUgKz0gcGpfdXRvYV9wYWQocHRpbWUuaG91ciwgcHJlLCAyLCAnMCcpOworCSpwcmUrKyA9ICc6JzsKKwlwcmUgKz0gcGpfdXRvYV9wYWQocHRpbWUubWluLCBwcmUsIDIsICcwJyk7CisJKnByZSsrID0gJzonOworCXByZSArPSBwal91dG9hX3BhZChwdGltZS5zZWMsIHByZSwgMiwgJzAnKTsKKyAgICB9CisgICAgaWYgKGxvZ19kZWNvciAmIFBKX0xPR19IQVNfTUlDUk9fU0VDKSB7CisJKnByZSsrID0gJy4nOworCXByZSArPSBwal91dG9hX3BhZChwdGltZS5tc2VjLCBwcmUsIDMsICcwJyk7CisgICAgfQorICAgIGlmIChsb2dfZGVjb3IgJiBQSl9MT0dfSEFTX1NFTkRFUikgeworCWVudW0geyBTRU5ERVJfV0lEVEggPSAxNCB9OworCXBqX3NpemVfdCBzZW5kZXJfbGVuID0gc3RybGVuKHNlbmRlcik7CisJaWYgKHByZSE9bG9nX2J1ZmZlcikgKnByZSsrID0gJyAnOworCWlmIChzZW5kZXJfbGVuIDw9IFNFTkRFUl9XSURUSCkgeworCSAgICB3aGlsZSAoc2VuZGVyX2xlbiA8IFNFTkRFUl9XSURUSCkKKwkJKnByZSsrID0gJyAnLCArK3NlbmRlcl9sZW47CisJICAgIHdoaWxlICgqc2VuZGVyKQorCQkqcHJlKysgPSAqc2VuZGVyKys7CisJfSBlbHNlIHsKKwkgICAgaW50IGk7CisJICAgIGZvciAoaT0wOyBpPFNFTkRFUl9XSURUSDsgKytpKQorCQkqcHJlKysgPSAqc2VuZGVyKys7CisJfQorICAgIH0KKyAgICBpZiAobG9nX2RlY29yICYgUEpfTE9HX0hBU19USFJFQURfSUQpIHsKKwllbnVtIHsgVEhSRUFEX1dJRFRIID0gMTIgfTsKKwljb25zdCBjaGFyICp0aHJlYWRfbmFtZSA9IHBqX3RocmVhZF9nZXRfbmFtZShwal90aHJlYWRfdGhpcygpKTsKKwlwal9zaXplX3QgdGhyZWFkX2xlbiA9IHN0cmxlbih0aHJlYWRfbmFtZSk7CisJKnByZSsrID0gJyAnOworCWlmICh0aHJlYWRfbGVuIDw9IFRIUkVBRF9XSURUSCkgeworCSAgICB3aGlsZSAodGhyZWFkX2xlbiA8IFRIUkVBRF9XSURUSCkKKwkJKnByZSsrID0gJyAnLCArK3RocmVhZF9sZW47CisJICAgIHdoaWxlICgqdGhyZWFkX25hbWUpCisJCSpwcmUrKyA9ICp0aHJlYWRfbmFtZSsrOworCX0gZWxzZSB7CisJICAgIGludCBpOworCSAgICBmb3IgKGk9MDsgaTxUSFJFQURfV0lEVEg7ICsraSkKKwkJKnByZSsrID0gKnRocmVhZF9uYW1lKys7CisJfQorICAgIH0KKworICAgIGlmIChsb2dfZGVjb3IgIT0gMCAmJiBsb2dfZGVjb3IgIT0gUEpfTE9HX0hBU19ORVdMSU5FKQorCSpwcmUrKyA9ICcgJzsKKworICAgIGlmIChsb2dfZGVjb3IgJiBQSl9MT0dfSEFTX1RIUkVBRF9TV0MpIHsKKwl2b2lkICpjdXJyZW50X3RocmVhZCA9ICh2b2lkKilwal90aHJlYWRfdGhpcygpOworCWlmIChjdXJyZW50X3RocmVhZCAhPSBnX2xhc3RfdGhyZWFkKSB7CisJICAgICpwcmUrKyA9ICchJzsKKwkgICAgZ19sYXN0X3RocmVhZCA9IGN1cnJlbnRfdGhyZWFkOworCX0gZWxzZSB7CisJICAgICpwcmUrKyA9ICcgJzsKKwl9CisgICAgfSBlbHNlIGlmIChsb2dfZGVjb3IgJiBQSl9MT0dfSEFTX1NQQUNFKSB7CisJKnByZSsrID0gJyAnOworICAgIH0KKworI2lmIFBKX0xPR19FTkFCTEVfSU5ERU5UCisgICAgaWYgKGxvZ19kZWNvciAmIFBKX0xPR19IQVNfSU5ERU5UKSB7CisJaW5kZW50ID0gbG9nX2dldF9pbmRlbnQoKTsKKwlpZiAoaW5kZW50ID4gMCkgeworCSAgICBwal9tZW1zZXQocHJlLCBQSl9MT0dfSU5ERU5UX0NIQVIsIGluZGVudCk7CisJICAgIHByZSArPSBpbmRlbnQ7CisJfQorICAgIH0KKyNlbmRpZgorCisgICAgbGVuID0gKGludCkocHJlIC0gbG9nX2J1ZmZlcik7CisKKyAgICAvKiBQcmludCB0aGUgd2hvbGUgbWVzc2FnZSB0byB0aGUgc3RyaW5nIGxvZ19idWZmZXIuICovCisgICAgcHJpbnRfbGVuID0gcGpfYW5zaV92c25wcmludGYocHJlLCBzaXplb2YobG9nX2J1ZmZlciktbGVuLCBmb3JtYXQsIAorCQkJCSAgbWFya2VyKTsKKyAgICBpZiAocHJpbnRfbGVuIDwgMCkgeworCWxldmVsID0gMTsKKwlwcmludF9sZW4gPSBwal9hbnNpX3NucHJpbnRmKHByZSwgc2l6ZW9mKGxvZ19idWZmZXIpLWxlbiwgCisJCQkJICAgICAiPGxvZ2dpbmcgZXJyb3I6IG1zZyB0b28gbG9uZz4iKTsKKyAgICB9CisgICAgaWYgKHByaW50X2xlbiA8IDEgfHwgcHJpbnRfbGVuID49IChpbnQpKHNpemVvZihsb2dfYnVmZmVyKS1sZW4pKSB7CisJcHJpbnRfbGVuID0gc2l6ZW9mKGxvZ19idWZmZXIpIC0gbGVuIC0gMTsKKyAgICB9CisgICAgbGVuID0gbGVuICsgcHJpbnRfbGVuOworICAgIGlmIChsZW4gPiAwICYmIGxlbiA8IChpbnQpc2l6ZW9mKGxvZ19idWZmZXIpLTIpIHsKKwlpZiAobG9nX2RlY29yICYgUEpfTE9HX0hBU19DUikgeworCSAgICBsb2dfYnVmZmVyW2xlbisrXSA9ICdccic7CisJfQorCWlmIChsb2dfZGVjb3IgJiBQSl9MT0dfSEFTX05FV0xJTkUpIHsKKwkgICAgbG9nX2J1ZmZlcltsZW4rK10gPSAnXG4nOworCX0KKwlsb2dfYnVmZmVyW2xlbl0gPSAnXDAnOworICAgIH0gZWxzZSB7CisJbGVuID0gc2l6ZW9mKGxvZ19idWZmZXIpLTE7CisJaWYgKGxvZ19kZWNvciAmIFBKX0xPR19IQVNfQ1IpIHsKKwkgICAgbG9nX2J1ZmZlcltzaXplb2YobG9nX2J1ZmZlciktM10gPSAnXHInOworCX0KKwlpZiAobG9nX2RlY29yICYgUEpfTE9HX0hBU19ORVdMSU5FKSB7CisJICAgIGxvZ19idWZmZXJbc2l6ZW9mKGxvZ19idWZmZXIpLTJdID0gJ1xuJzsKKwl9CisJbG9nX2J1ZmZlcltzaXplb2YobG9nX2J1ZmZlciktMV0gPSAnXDAnOworICAgIH0KKworICAgIC8qIEl0IHNob3VsZCBiZSBzYWZlIHRvIHJlc3VtZSBsb2dnaW5nIGF0IHRoaXMgcG9pbnQuIEFwcGxpY2F0aW9uIGNhbgorICAgICAqIHJlY3Vyc2l2ZWx5IGNhbGwgdGhlIGxvZ2dpbmcgZnVuY3Rpb24gaW5zaWRlIHRoZSBjYWxsYmFjay4KKyAgICAgKi8KKyAgICByZXN1bWVfbG9nZ2luZygmc2F2ZWRfbGV2ZWwpOworCisgICAgaWYgKGxvZ193cml0ZXIpCisJKCpsb2dfd3JpdGVyKShsZXZlbCwgbG9nX2J1ZmZlciwgbGVuKTsKK30KKworLyoKK1BKX0RFRih2b2lkKSBwal9sb2dfMChjb25zdCBjaGFyICpvYmosIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnOworICAgIHZhX3N0YXJ0KGFyZywgZm9ybWF0KTsKKyAgICBwal9sb2cob2JqLCAwLCBmb3JtYXQsIGFyZyk7CisgICAgdmFfZW5kKGFyZyk7Cit9CisqLworCitQSl9ERUYodm9pZCkgcGpfbG9nXzEoY29uc3QgY2hhciAqb2JqLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZzsKKyAgICB2YV9zdGFydChhcmcsIGZvcm1hdCk7CisgICAgcGpfbG9nKG9iaiwgMSwgZm9ybWF0LCBhcmcpOworICAgIHZhX2VuZChhcmcpOworfQorI2VuZGlmCS8qIFBKX0xPR19NQVhfTEVWRUwgPj0gMSAqLworCisjaWYgUEpfTE9HX01BWF9MRVZFTCA+PSAyCitQSl9ERUYodm9pZCkgcGpfbG9nXzIoY29uc3QgY2hhciAqb2JqLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZzsKKyAgICB2YV9zdGFydChhcmcsIGZvcm1hdCk7CisgICAgcGpfbG9nKG9iaiwgMiwgZm9ybWF0LCBhcmcpOworICAgIHZhX2VuZChhcmcpOworfQorI2VuZGlmCisKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDMKK1BKX0RFRih2b2lkKSBwal9sb2dfMyhjb25zdCBjaGFyICpvYmosIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnOworICAgIHZhX3N0YXJ0KGFyZywgZm9ybWF0KTsKKyAgICBwal9sb2cob2JqLCAzLCBmb3JtYXQsIGFyZyk7CisgICAgdmFfZW5kKGFyZyk7Cit9CisjZW5kaWYKKworI2lmIFBKX0xPR19NQVhfTEVWRUwgPj0gNAorUEpfREVGKHZvaWQpIHBqX2xvZ180KGNvbnN0IGNoYXIgKm9iaiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmc7CisgICAgdmFfc3RhcnQoYXJnLCBmb3JtYXQpOworICAgIHBqX2xvZyhvYmosIDQsIGZvcm1hdCwgYXJnKTsKKyAgICB2YV9lbmQoYXJnKTsKK30KKyNlbmRpZgorCisjaWYgUEpfTE9HX01BWF9MRVZFTCA+PSA1CitQSl9ERUYodm9pZCkgcGpfbG9nXzUoY29uc3QgY2hhciAqb2JqLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZzsKKyAgICB2YV9zdGFydChhcmcsIGZvcm1hdCk7CisgICAgcGpfbG9nKG9iaiwgNSwgZm9ybWF0LCBhcmcpOworICAgIHZhX2VuZChhcmcpOworfQorI2VuZGlmCisKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDYKK1BKX0RFRih2b2lkKSBwal9sb2dfNihjb25zdCBjaGFyICpvYmosIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnOworICAgIHZhX3N0YXJ0KGFyZywgZm9ybWF0KTsKKyAgICBwal9sb2cob2JqLCA2LCBmb3JtYXQsIGFyZyk7CisgICAgdmFfZW5kKGFyZyk7Cit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xvZ193cml0ZXJfcHJpbnRrLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovbG9nX3dyaXRlcl9wcmludGsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzVmYjY3Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xvZ193cml0ZXJfcHJpbnRrLmMKQEAgLTAsMCArMSwyOCBAQAorLyogJElkOiBsb2dfd3JpdGVyX3ByaW50ay5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKworUEpfREVGKHZvaWQpIHBqX2xvZ193cml0ZShpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKmJ1ZmZlciwgaW50IGxlbikKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIHByaW50ayhLRVJOX0lORk8gIiVzIiwgYnVmZmVyKTsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xvZ193cml0ZXJfc3Rkb3V0LmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovbG9nX3dyaXRlcl9zdGRvdXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWU1NDgyCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xvZ193cml0ZXJfc3Rkb3V0LmMKQEAgLTAsMCArMSw1NyBAQAorLyogJElkOiBsb2dfd3JpdGVyX3N0ZG91dC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvc3RkZmlsZWlvLmg+CisKKworc3RhdGljIHZvaWQgdGVybV9zZXRfY29sb3IoaW50IGxldmVsKQoreworI2lmIGRlZmluZWQoUEpfVEVSTV9IQVNfQ09MT1IpICYmIFBKX1RFUk1fSEFTX0NPTE9SICE9IDAKKyAgICBwal90ZXJtX3NldF9jb2xvcihwal9sb2dfZ2V0X2NvbG9yKGxldmVsKSk7CisjZWxzZQorICAgIFBKX1VOVVNFRF9BUkcobGV2ZWwpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHRlcm1fcmVzdG9yZV9jb2xvcih2b2lkKQoreworI2lmIGRlZmluZWQoUEpfVEVSTV9IQVNfQ09MT1IpICYmIFBKX1RFUk1fSEFTX0NPTE9SICE9IDAKKyAgICAvKiBTZXQgdGVybWluYWwgdG8gaXRzIGRlZmF1bHQgY29sb3IgKi8KKyAgICBwal90ZXJtX3NldF9jb2xvcihwal9sb2dfZ2V0X2NvbG9yKDc3KSk7CisjZW5kaWYKK30KKworCitQSl9ERUYodm9pZCkgcGpfbG9nX3dyaXRlKGludCBsZXZlbCwgY29uc3QgY2hhciAqYnVmZmVyLCBpbnQgbGVuKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfVU5VU0VEX0FSRyhsZW4pOworCisgICAgLyogQ29weSB0byB0ZXJtaW5hbC9maWxlLiAqLworICAgIGlmIChwal9sb2dfZ2V0X2RlY29yKCkgJiBQSl9MT0dfSEFTX0NPTE9SKSB7CisJdGVybV9zZXRfY29sb3IobGV2ZWwpOworCXByaW50ZigiJXMiLCBidWZmZXIpOworCXRlcm1fcmVzdG9yZV9jb2xvcigpOworICAgIH0gZWxzZSB7CisJcHJpbnRmKCIlcyIsIGJ1ZmZlcik7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovbG9nX3dyaXRlcl9zeW1iaWFuX2NvbnNvbGUuY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xvZ193cml0ZXJfc3ltYmlhbl9jb25zb2xlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjUzOTRlCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL2xvZ193cml0ZXJfc3ltYmlhbl9jb25zb2xlLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKiAkSWQ6IGxvZ193cml0ZXJfc3ltYmlhbl9jb25zb2xlLmNwcCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovdW5pY29kZS5oPgorCisjaW5jbHVkZSAib3Nfc3ltYmlhbi5oIgorI2luY2x1ZGUgPGUzMmNvbnMuaD4KKworUEpfREVGKHZvaWQpIHBqX2xvZ193cml0ZShpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKmJ1ZmZlciwgaW50IGxlbikKK3sKKyNpZiAwCisgICAgd2NoYXJfdCB3YnVmZmVyW1BKX0xPR19NQVhfU0laRV07CisgICAgQ0NvbnNvbGVCYXNlICpjb25zID0gUGpTeW1iaWFuT1M6Okluc3RhbmNlLT5Db25zb2xlKCk7CisKKyAgICBwal9hbnNpX3RvX3VuaWNvZGUoYnVmZmVyLCBsZW4sIHdidWZmZXIsIFBKX0FSUkFZX1NJWkUod2J1ZmZlcikpOworCisgICAgCisgICAgVFB0ckMxNiBhUHRyKChUVWludDE2Kil3YnVmZmVyLCBsZW4pOworICAgIGNvbnNvbGUtPldyaXRlKGFQdHIpOworI2Vsc2UKKyAgICBQSl9VTlVTRURfQVJHKGxldmVsKTsKKyAgICBQSl9VTlVTRURfQVJHKGJ1ZmZlcik7CisgICAgUEpfVU5VU0VEX0FSRyhsZW4pOworI2VuZGlmCit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX2Rhcndpbi5tIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX2NvcmVfZGFyd2luLm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkzZjQyNQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX2Rhcndpbi5tCkBAIC0wLDAgKzEsMTAwIEBACisvKiAkSWQ6IG9zX2NvcmVfZGFyd2luLm0gMzY3MCAyMDExLTA3LTIwIDAzOjAwOjQ4WiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSAiVGFyZ2V0Q29uZGl0aW9uYWxzLmgiCisKKyNpZiBUQVJHRVRfT1NfSVBIT05FCisKK1BKX0RFRihpbnQpIHBqX3J1bl9hcHAocGpfbWFpbl9mdW5jX3B0ciBtYWluX2Z1bmMsIGludCBhcmdjLCBjaGFyICphcmd2W10sCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzKQoreworICAgIHJldHVybiAoKm1haW5fZnVuYykoYXJnYywgYXJndik7Cit9CisKKyNlbHNlCisKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjaW5jbHVkZSA8QXBwS2l0L0FwcEtpdC5oPgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgorI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCisjZGVmaW5lIFRISVNfRklMRSAgICJvc19jb3JlX2Rhcndpbi5tIgorCit0eXBlZGVmIHN0cnVjdCBydW5fYXBwX3QgeworICAgIHBqX21haW5fZnVuY19wdHIgIG1haW5fZnVuYzsKKyAgICBpbnQgICAgICAgICAgICAgICBhcmdjOworICAgIGNoYXIgICAgICAgICAgICAqKmFyZ3Y7CisgICAgaW50ICAgICAgICAgICAgICAgcmV0dmFsOworfSBydW5fYXBwX3Q7CisKK0BpbnRlcmZhY2UgRGVhZFRocmVhZDogTlNPYmplY3QgeyA7OyB9CisrICh2b2lkKWVudGVyTXVsdGlUaHJlYWRlZE1vZGU7CisrICh2b2lkKWVtcHR5VGhyZWFkTWV0aG9kOihpZClvYmo7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBEZWFkVGhyZWFkCisrICh2b2lkKWVudGVyTXVsdGlUaHJlYWRlZE1vZGUKK3sKKyAgICBbTlNUaHJlYWQgZGV0YWNoTmV3VGhyZWFkU2VsZWN0b3I6QHNlbGVjdG9yKGVtcHR5VGhyZWFkTWV0aG9kOikKKyAgICAgICAgICAgICAgdG9UYXJnZXQ6W0RlYWRUaHJlYWQgY2xhc3NdIHdpdGhPYmplY3Q6bmlsXTsKK30KKworKyAodm9pZCllbXB0eVRocmVhZE1ldGhvZDooaWQpb2JqIHsgOyB9CitAZW5kCisKK3N0YXRpYyB2b2lkKiBtYWluX3RocmVhZCh2b2lkICpkYXRhKQoreworICAgIHJ1bl9hcHBfdCAqcGFyYW0gPSAocnVuX2FwcF90ICopZGF0YTsKKyAgICAKKyAgICBwYXJhbS0+cmV0dmFsID0gKCpwYXJhbS0+bWFpbl9mdW5jKShwYXJhbS0+YXJnYywgcGFyYW0tPmFyZ3YpOworICAgIENGUnVuTG9vcFN0b3AoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKKyAgICAKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIHBqX3J1bl9hcHAoKQorICogVGhpcyBmdW5jdGlvbiBoYXMgdG8gYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBUaGUgcHVycG9zZSBvZgorICogdGhpcyBmdW5jdGlvbiBpcyB0byBpbml0aWFsaXplIHRoZSBhcHBsaWNhdGlvbidzIG1lbW9yeSBwb29sLCBldmVudAorICogbG9vcCBtYW5hZ2VtZW50LCBhbmQgbXVsdGktdGhyZWFkaW5nIGVudmlyb25tZW50LgorICovCitQSl9ERUYoaW50KSBwal9ydW5fYXBwKHBqX21haW5fZnVuY19wdHIgbWFpbl9mdW5jLCBpbnQgYXJnYywgY2hhciAqYXJndltdLAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBwdGhyZWFkX3QgdGhyZWFkOworICAgIHJ1bl9hcHBfdCBwYXJhbTsKKyAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbDsKKyAgICAKKyAgICBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAgW05TQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dOworICAgIFtEZWFkVGhyZWFkIGVudGVyTXVsdGlUaHJlYWRlZE1vZGVdOworCisgICAgcGFyYW0uYXJnYyA9IGFyZ2M7CisgICAgcGFyYW0uYXJndiA9IChjaGFyICoqKWFyZ3Y7CisgICAgcGFyYW0ubWFpbl9mdW5jID0gbWFpbl9mdW5jOworICAgIGlmIChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCAmbWFpbl90aHJlYWQsICZwYXJhbSkgPT0gMCkgeworICAgICAgICBDRlJ1bkxvb3BSdW4oKTsKKyAgICB9CisgICAgCisgICAgUEpfVU5VU0VEX0FSRyhwb29sKTsKKyAgICAKKyAgICByZXR1cm4gcGFyYW0ucmV0dmFsOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX2xpbnV4X2tlcm5lbC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX2NvcmVfbGludXhfa2VybmVsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE4NjVlZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX2xpbnV4X2tlcm5lbC5jCkBAIC0wLDAgKzEsNjk4IEBACisvKiAkSWQ6IG9zX2NvcmVfbGludXhfa2VybmVsLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9leGNlcHQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zcHJpbnRmLmg+CisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisjaWYgZGVmaW5lZChNT0RWRVJTSU9OUykKKyNpbmNsdWRlIDxsaW51eC9tb2R2ZXJzaW9ucy5oPgorI2VuZGlmCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKy8vI2luY2x1ZGUgPGxpbnV4L3RxdWV1ZS5oPgorI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9zaWduYWwuaD4KKworI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KKyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CisjaW5jbHVkZSA8YXNtL3NlbWFwaG9yZS5oPgorCisjZGVmaW5lIFRISVNfRklMRSAgICJvc2xpbnV4a2VybiIKKworc3RydWN0IHBqX3RocmVhZF90Cit7CisgICAgLyoqIFRocmVhZCdzIG5hbWUuICovCisgICAgY2hhciBvYmpfbmFtZVtQSl9NQVhfT0JKX05BTUVdOworCisgICAgLyoqIExpbnV4IHRhc2sgc3RydWN0dXJlIGZvciB0aHJlYWQuICovCisgICAgc3RydWN0IHRhc2tfc3RydWN0ICp0aHJlYWQ7CQorCisgICAgLyoqIEZsYWdzIChzcGVjaWZpZWQgaW4gcGpfdGhyZWFkX2NyZWF0ZSkgKi8KKyAgICB1bnNpZ25lZCBmbGFnczsKKworICAgIC8qKiBUYXNrIHF1ZXVlIG5lZWRlZCB0byBsYXVuY2ggdGhyZWFkLiAqLworICAgIC8vc3RydWN0IHRxX3N0cnVjdAl0cTsJCisKKyAgICAvKiogU2VtYXBob3JlIG5lZWRlZCB0byBjb250cm9sIHRocmVhZCBzdGFydHVwLiAqLworICAgIHN0cnVjdCBzZW1hcGhvcmUJc3RhcnRzdG9wX3NlbTsKKworICAgIC8qKiBTZW1hcGhvcmUgdG8gc3VzcGVuZCB0aHJlYWQgZHVyaW5nIHN0YXJ0dXAuICovCisgICAgc3RydWN0IHNlbWFwaG9yZQlzdXNwZW5kX3NlbTsKKworICAgIC8qKiBRdWV1ZSB0aHJlYWQgaXMgd2FpdGluZyBvbi4gR2V0cyBpbml0aWFsaXplZCBieQorICAgICAgICB0aHJlYWRfaW5pdGlhbGl6ZSwgY2FuIGJlIHVzZWQgYnkgdGhyZWFkIGl0c2VsZi4KKyAgICAgKi8KKyAgICB3YWl0X3F1ZXVlX2hlYWRfdAlxdWV1ZTsKKworICAgIC8qKiBGbGFnIHRvIHRlbGwgdGhyZWFkIHdoZXRoZXIgdG8gZGllIG9yIG5vdC4KKyAgICAgICAgV2hlbiB0aGUgdGhyZWFkIHJlY2VpdmVzIGEgc2lnbmFsLCBpdCBtdXN0IGNoZWNrCisgICAgICAgIHRoZSB2YWx1ZSBvZiB0ZXJtaW5hdGUgYW5kIGNhbGwgdGhyZWFkX2RlaW5pdGlhbGl6ZSBhbmQgdGVybWluYXRlCisgICAgICAgIGlmIHNldC4KKyAgICAgKi8KKyAgICBpbnQgdGVybWluYXRlOyAgICAKKworICAgIC8qKiBUaHJlYWQncyBlbnRyeS4gKi8KKyAgICBwal90aHJlYWRfcHJvYyAqZnVuYzsKKworICAgIC8qKiBBcmd1bWVudC4gKi8KKyAgICB2b2lkICphcmc7Cit9OworCitzdHJ1Y3QgcGpfYXRvbWljX3QKK3sKKyAgICBhdG9taWNfdCBhdG9tOworfTsKKworc3RydWN0IHBqX211dGV4X3QKK3sKKyAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKKyAgICBwal9ib29sX3QJICAgICByZWN1cnNpdmU7CisgICAgcGpfdGhyZWFkX3QJICAgICpvd25lcjsKKyAgICBpbnQJCSAgICAgb3duX2NvdW50OworfTsKKworc3RydWN0IHBqX3NlbV90Cit7CisgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07Cit9OworCisvKgorICogU3RhdGljIGdsb2JhbCB2YXJpYWJsZXMuCisgKi8KKyNkZWZpbmUgTUFYX1RMU19JRCAgMzIKK3N0YXRpYyB2b2lkICp0bHNfdmFsdWVzW01BWF9UTFNfSURdOworc3RhdGljIGludCB0bHNfaWQ7CitzdGF0aWMgbG9uZyB0aHJlYWRfdGxzX2lkOworc3RhdGljIHNwaW5sb2NrX3QgY3JpdGljYWxfc2VjdGlvbiA9IFNQSU5fTE9DS19VTkxPQ0tFRDsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHNwaW5sb2NrX2ZsYWdzOworc3RhdGljIHBqX3RocmVhZF90IG1haW5fdGhyZWFkOworCisvKiBwcml2YXRlIGZ1bmN0aW9ucyAqLworLy8jZGVmaW5lIFRSQUNFXyhleHByKQlQSl9MT0coMyxleHByKQorI2RlZmluZSBUUkFDRV8oeCkKKworCisvKiBUaGlzIG11c3QgYmUgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgdGhyZWFkLiAqLworc3RhdGljIHZvaWQgdGhyZWFkX2luaXRpYWxpemUoIHBqX3RocmVhZF90ICp0aHJlYWQgKQoreworICAgIFRSQUNFXygoVEhJU19GSUxFLCAiLS0tbmV3IHRocmVhZCBpbml0aWFsaXppbmcuLi4iKSk7CisKKyAgICAvKiBTZXQgVExTICovCisgICAgcGpfdGhyZWFkX2xvY2FsX3NldCh0aHJlYWRfdGxzX2lkLCB0aHJlYWQpOworCisgICAgLyogZmlsbCBpbiB0aHJlYWQgc3RydWN0dXJlICovCisgICAgdGhyZWFkLT50aHJlYWQgPSBjdXJyZW50OworICAgIHBqX2Fzc2VydCh0aHJlYWQtPnRocmVhZCAhPSBOVUxMKTsKKworICAgIC8qIHNldCBzaWduYWwgbWFzayB0byB3aGF0IHdlIHdhbnQgdG8gcmVzcG9uZCAqLworICAgIHNpZ2luaXRzZXRpbnYoJmN1cnJlbnQtPmJsb2NrZWQsIAorCQkgIHNpZ21hc2soU0lHS0lMTCl8c2lnbWFzayhTSUdJTlQpfHNpZ21hc2soU0lHVEVSTSkpOworCisgICAgLyogaW5pdGlhbGlzZSB3YWl0IHF1ZXVlICovCisgICAgaW5pdF93YWl0cXVldWVfaGVhZCgmdGhyZWFkLT5xdWV1ZSk7CisKKyAgICAvKiBpbml0aWFsaXNlIHRlcm1pbmF0aW9uIGZsYWcgKi8KKyAgICB0aHJlYWQtPnRlcm1pbmF0ZSA9IDA7CisKKyAgICAvKiBzZXQgbmFtZSBvZiB0aGlzIHByb2Nlc3MgKG1ha2luZyBzdXJlIG9ial9uYW1lIGlzIG51bGwgCisgICAgICogdGVybWluYXRlZCBmaXJzdCkgCisgICAgICovCisgICAgdGhyZWFkLT5vYmpfbmFtZVtQSl9NQVhfT0JKX05BTUUtMV0gPSAnXDAnOworICAgIHNwcmludGYoY3VycmVudC0+Y29tbSwgdGhyZWFkLT5vYmpfbmFtZSk7CisgICAgICAgIAorICAgIC8qIHRlbGwgdGhlIGNyZWF0b3IgdGhhdCB3ZSBhcmUgcmVhZHkgYW5kIGxldCBoaW0gY29udGludWUgKi8KKyAgICB1cCgmdGhyZWFkLT5zdGFydHN0b3Bfc2VtKTsJCit9CisKKy8qIGNsZWFudXAgb2YgdGhyZWFkLiBDYWxsZWQgYnkgdGhlIGV4aXRpbmcgdGhyZWFkLiAqLworc3RhdGljIHZvaWQgdGhyZWFkX2RlaW5pdGlhbGl6ZShwal90aHJlYWRfdCAqdGhyZWFkKQoreworICAgIC8qIHdlIGFyZSB0ZXJtaW5hdGluZyAqLworCisgICAgLyogbG9jayB0aGUga2VybmVsLCB0aGUgZXhpdCB3aWxsIHVubG9jayBpdCAqLworICAgIHRocmVhZC0+dGhyZWFkID0gTlVMTDsKKyAgICBtYigpOworCisgICAgLyogbm90aWZ5IHRoZSBzdG9wX2t0aHJlYWQoKSByb3V0aW5lIHRoYXQgd2UgYXJlIHRlcm1pbmF0aW5nLiAqLworICAgIHVwKCZ0aHJlYWQtPnN0YXJ0c3RvcF9zZW0pOworCisgICAgLyogdGhlIGtlcm5lbF90aHJlYWQgdGhhdCBjYWxsZWQgY2xvbmUoKSBkb2VzIGEgZG9fZXhpdCBoZXJlLiAqLworCisgICAgLyogdGhlcmUgaXMgbm8gcmFjZSBoZXJlIGJldHdlZW4gZXhlY3V0aW9uIG9mIHRoZSAia2lsbGVyIiBhbmQgCisgICAgICAgcmVhbCB0ZXJtaW5hdGlvbiBvZiB0aGUgdGhyZWFkIChyYWNlIHdpbmRvdyBiZXR3ZWVuIHVwIGFuZCBkb19leGl0KSwgCisgICAgICAgc2luY2UgYm90aCB0aGUgdGhyZWFkIGFuZCB0aGUgImtpbGxlciIgZnVuY3Rpb24gYXJlIHJ1bm5pbmcgd2l0aCAKKyAgICAgICB0aGUga2VybmVsIGxvY2sgaGVsZC4KKyAgICAgICBUaGUga2VybmVsIGxvY2sgd2lsbCBiZSBmcmVlZCBhZnRlciB0aGUgdGhyZWFkIGV4aXRlZCwgc28gdGhlIGNvZGUKKyAgICAgICBpcyByZWFsbHkgbm90IGV4ZWN1dGVkIGFueW1vcmUgYXMgc29vbiBhcyB0aGUgdW5sb2FkIGZ1bmN0aW9ucyBnZXRzCisgICAgICAgdGhlIGtlcm5lbCBsb2NrIGJhY2suCisgICAgICAgVGhlIGluaXQgcHJvY2VzcyBtYXkgbm90IGhhdmUgbWFkZSB0aGUgY2xlYW51cCBvZiB0aGUgcHJvY2VzcyBoZXJlLAorICAgICAgIGJ1dCB0aGUgY2xlYW51cCBjYW4gYmUgZG9uZSBzYWZlbHkgd2l0aCB0aGUgbW9kdWxlIHVubG9hZGVkLgorICAgICovCisKK30KKworc3RhdGljIGludCB0aHJlYWRfcHJvYyh2b2lkICphcmcpCit7CisgICAgcGpfdGhyZWFkX3QgKnRocmVhZCA9IGFyZzsKKworICAgIFRSQUNFXygoVEhJU19GSUxFLCAiLS0tbmV3IHRocmVhZCBzdGFydGluZyEiKSk7CisKKyAgICAvKiBJbml0aWFsaXplIHRocmVhZC4gKi8KKyAgICB0aHJlYWRfaW5pdGlhbGl6ZSggdGhyZWFkICk7CisKKyAgICAvKiBXYWl0IGlmIGNyZWF0ZWQgc3VzcGVuZGVkLiAqLworICAgIGlmICh0aHJlYWQtPmZsYWdzICYgUEpfVEhSRUFEX1NVU1BFTkRFRCkgeworCVRSQUNFXygoVEhJU19GSUxFLCAiLS0tbmV3IHRocmVhZCBzdXNwZW5kZWQuLi4iKSk7CisJZG93bigmdGhyZWFkLT5zdXNwZW5kX3NlbSk7CisgICAgfQorCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICItLS1uZXcgdGhyZWFkIHJ1bm5pbmcuLi4iKSk7CisKKyAgICBwal9hc3NlcnQodGhyZWFkLT5mdW5jICE9IE5VTEwpOworCisgICAgLyogQ2FsbCB0aHJlYWQncyBlbnRyeS4gKi8KKyAgICAoKnRocmVhZC0+ZnVuYykodGhyZWFkLT5hcmcpOworCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICItLS10aHJlYWQgZXhpdGluZy4uLiIpKTsKKworICAgIC8qIENsZWFudXAgdGhyZWFkLiAqLworICAgIHRocmVhZF9kZWluaXRpYWxpemUodGhyZWFkKTsKKworICAgIHJldHVybiAwOworfQorCisvKiBUaGUgdmVyeSB0YXNrIGVudHJ5LiAqLworc3RhdGljIHZvaWQga3RocmVhZF9sYXVuY2hlcih2b2lkICphcmcpCit7CisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIuLi5sYXVuY2hpbmcgdGhyZWFkIS4uLiIpKTsKKyAgICBrZXJuZWxfdGhyZWFkKCZ0aHJlYWRfcHJvYywgYXJnLCAwKTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9pbml0KHZvaWQpCit7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICBQSl9MT0coNSwgKCJwal9pbml0IiwgIkluaXRpYWxpemluZyBQSiBMaWJyYXJ5Li4iKSk7CisKKyAgICByYyA9IHBqX3RocmVhZF9pbml0KCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHJjOworCisgICAgLyogSW5pdGlhbGl6ZSBleGNlcHRpb24gSUQgZm9yIHRoZSBwb29sLiAKKyAgICAgKiBNdXN0IGRvIHNvIGFmdGVyIGNyaXRpY2FsIHNlY3Rpb24gaXMgY29uZmlndXJlZC4KKyAgICAgKi8KKyAgICByYyA9IHBqX2V4Y2VwdGlvbl9pZF9hbGxvYygiUEpMSUIvTm8gbWVtb3J5IiwgJlBKX05PX01FTU9SWV9FWENFUFRJT04pOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3VpbnQzMl90KSBwal9nZXRwaWQodm9pZCkKK3sKKyAgICByZXR1cm4gMTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal90aHJlYWRfcmVnaXN0ZXIgKCBjb25zdCBjaGFyICpjc3RyX3RocmVhZF9uYW1lLAorCQkJCQkgcGpfdGhyZWFkX2Rlc2MgZGVzYywKKwkJCQkJIHBqX3RocmVhZF90ICoqcHRyX3RocmVhZCkKK3sKKyAgICBjaGFyIHN0YWNrX3B0cjsKKyAgICBwal90aHJlYWRfdCAqdGhyZWFkID0gKHBqX3RocmVhZF90ICopZGVzYzsKKyAgICBwal9zdHJfdCB0aHJlYWRfbmFtZSA9IHBqX3N0cigoY2hhciopY3N0cl90aHJlYWRfbmFtZSk7CisKKyAgICAvKiBTaXplIHNhbml0eSBjaGVjay4gKi8KKyAgICBpZiAoc2l6ZW9mKHBqX3RocmVhZF9kZXNjKSA8IHNpemVvZihwal90aHJlYWRfdCkpIHsKKwlwal9hc3NlcnQoISJOb3QgZW5vdWdoIHBqX3RocmVhZF9kZXNjIHNpemUhIik7CisJcmV0dXJuIFBKX0VCVUc7CisgICAgfQorCisgICAgLyogSWYgYSB0aHJlYWQgZGVzY3JpcHRvciBoYXMgYmVlbiByZWdpc3RlcmVkIGJlZm9yZSwganVzdCByZXR1cm4gaXQuICovCisgICAgaWYgKHBqX3RocmVhZF9sb2NhbF9nZXQgKHRocmVhZF90bHNfaWQpICE9IDApIHsKKwkvLyAyMDA2LTAyLTI2IGJlbm55bHA6CisJLy8gIFRoaXMgd291bGRuJ3Qgd29yayBpbiBhbGwgY2FzZXMhLgorCS8vICBJZiB0aHJlYWQgaXMgY3JlYXRlZCBieSBleHRlcm5hbCBtb2R1bGUgKGUuZy4gc291bmQgdGhyZWFkKSwKKwkvLyAgdGhyZWFkIG1heSBiZSByZXVzZWQgd2hpbGUgdGhlIHBvb2wgdXNlZCBmb3IgdGhlIHRocmVhZCBkZXNjcmlwdG9yCisJLy8gIGhhcyBiZWVuIGRlbGV0ZWQgYnkgYXBwbGljYXRpb24uCisJLy8qdGhyZWFkX3B0ciA9IChwal90aHJlYWRfdCopcGpfdGhyZWFkX2xvY2FsX2dldCAodGhyZWFkX3Rsc19pZCk7CisgICAgICAgIC8vcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBhbmQgc2V0IHRoZSB0aHJlYWQgZW50cnkuICovCisgICAgcGpfYnplcm8oZGVzYywgc2l6ZW9mKHN0cnVjdCBwal90aHJlYWRfdCkpOworCisgICAgaWYoY3N0cl90aHJlYWRfbmFtZSAmJiBwal9zdHJsZW4oJnRocmVhZF9uYW1lKSA8IHNpemVvZih0aHJlYWQtPm9ial9uYW1lKS0xKQorCXBqX3NwcmludGYodGhyZWFkLT5vYmpfbmFtZSwgY3N0cl90aHJlYWRfbmFtZSwgdGhyZWFkLT50aHJlYWQpOworICAgIGVsc2UKKwlwal9zbnByaW50Zih0aHJlYWQtPm9ial9uYW1lLCBzaXplb2YodGhyZWFkLT5vYmpfbmFtZSksIAorCQkgICAgInRociVwIiwgKHZvaWQqKXRocmVhZC0+dGhyZWFkKTsKKyAgICAKKyAgICAvKiBJbml0aWFsaXplLiAqLworICAgIHRocmVhZF9pbml0aWFsaXplKHRocmVhZCk7CisKKyAgICAvKiBFYXQgc2VtYXBob3JlLiAqLworICAgIGRvd24oJnRocmVhZC0+c3RhcnRzdG9wX3NlbSk7CisKKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisgICAgdGhyZWFkLT5zdGtfc3RhcnQgPSAmc3RhY2tfcHRyOworICAgIHRocmVhZC0+c3RrX3NpemUgPSAweEZGRkZGRkZGVUw7CisgICAgdGhyZWFkLT5zdGtfbWF4X3VzYWdlID0gMDsKKyNlbHNlCisgICAgc3RhY2tfcHRyID0gJ1wwJzsKKyNlbmRpZgorCisgICAgKnB0cl90aHJlYWQgPSB0aHJlYWQ7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworcGpfc3RhdHVzX3QgcGpfdGhyZWFkX2luaXQodm9pZCkKK3sKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICBwal90aHJlYWRfdCAqZHVtbXk7CisgICAgCisgICAgcmMgPSBwal90aHJlYWRfbG9jYWxfYWxsb2MoJnRocmVhZF90bHNfaWQpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiByYzsKKworICAgIHJldHVybiBwal90aHJlYWRfcmVnaXN0ZXIoInBqbGliLW1haW4iLCAobG9uZyopJm1haW5fdGhyZWFkLCAmZHVtbXkpOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9jcmVhdGUoIHBqX3Bvb2xfdCAqcG9vbCwgY29uc3QgY2hhciAqdGhyZWFkX25hbWUsCisJCQkJICAgICAgcGpfdGhyZWFkX3Byb2MgKnByb2MsIHZvaWQgKmFyZywKKwkJCQkgICAgICBwal9zaXplX3Qgc3RhY2tfc2l6ZSwgdW5zaWduZWQgZmxhZ3MsCisJCQkJICAgICAgcGpfdGhyZWFkX3QgKipwdHJfdGhyZWFkKQoreworICAgIHBqX3RocmVhZF90ICp0aHJlYWQ7CisKKyAgICBUUkFDRV8oKFRISVNfRklMRSwgInBqX3RocmVhZF9jcmVhdGUoKSIpKTsKKyAgICAKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBvb2wgJiYgcHJvYyAmJiBwdHJfdGhyZWFkLCBQSl9FSU5WQUwpOworCisgICAgdGhyZWFkID0gcGpfcG9vbF96YWxsb2MocG9vbCwgc2l6ZW9mKHBqX3RocmVhZF90KSk7CisgICAgaWYgKCF0aHJlYWQpCisJcmV0dXJuIFBKX0VOT01FTTsKKworICAgIFBKX1VOVVNFRF9BUkcoc3RhY2tfc2l6ZSk7CisKKyAgICAvKiBUaHJlYWQgbmFtZS4gKi8KKyAgICBpZiAoIXRocmVhZF9uYW1lKSAKKwl0aHJlYWRfbmFtZSA9ICJ0aHIlcCI7CisgICAgCisgICAgaWYgKHN0cmNocih0aHJlYWRfbmFtZSwgJyUnKSkgeworCXBqX3NucHJpbnRmKHRocmVhZC0+b2JqX25hbWUsIFBKX01BWF9PQkpfTkFNRSwgdGhyZWFkX25hbWUsIHRocmVhZCk7CisgICAgfSBlbHNlIHsKKwlzdHJuY3B5KHRocmVhZC0+b2JqX25hbWUsIHRocmVhZF9uYW1lLCBQSl9NQVhfT0JKX05BTUUpOworCXRocmVhZC0+b2JqX25hbWVbUEpfTUFYX09CSl9OQU1FLTFdID0gJ1wwJzsKKyAgICB9CisgICAgCisgICAgLyogSW5pdCB0aHJlYWQncyBzZW1hcGhvcmUuICovCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIuLi5pbml0IHNlbWFwaG9yZXMuLi4iKSk7CisgICAgaW5pdF9NVVRFWF9MT0NLRUQoJnRocmVhZC0+c3RhcnRzdG9wX3NlbSk7CisgICAgaW5pdF9NVVRFWF9MT0NLRUQoJnRocmVhZC0+c3VzcGVuZF9zZW0pOworCisgICAgdGhyZWFkLT5mbGFncyA9IGZsYWdzOworCisgICAgaWYgKChmbGFncyAmIFBKX1RIUkVBRF9TVVNQRU5ERUQpID09IDApIHsKKwl1cCgmdGhyZWFkLT5zdXNwZW5kX3NlbSk7CisgICAgfQorCisgICAgLyogU3RvcmUgdGhlIGZ1bmN0aW9ucyBhbmQgYXJndW1lbnQuICovCisgICAgdGhyZWFkLT5mdW5jID0gcHJvYzsKKyAgICB0aHJlYWQtPmFyZyA9IGFyZzsKKyAgICAKKyAgICAvKiBTYXZlIHJldHVybiB2YWx1ZS4gKi8KKyAgICAqcHRyX3RocmVhZCA9IHRocmVhZDsKKyAgICAKKyAgICAvKiBDcmVhdGUgdGhlIG5ldyB0aHJlYWQgYnkgcnVubmluZyBhIHRhc2sgdGhyb3VnaCBrZXZlbnRkLiAqLworCisjaWYgMAorICAgIC8qIEluaXRpYWxpemUgdGhlIHRhc2sgcXVldWUgc3RydWN0LiAqLworICAgIHRocmVhZC0+dHEuc3luYyA9IDA7CisgICAgSU5JVF9MSVNUX0hFQUQoJnRocmVhZC0+dHEubGlzdCk7CisgICAgdGhyZWFkLT50cS5yb3V0aW5lID0ga3RocmVhZF9sYXVuY2hlcjsKKyAgICB0aHJlYWQtPnRxLmRhdGEgPSB0aHJlYWQ7CisKKyAgICAvKiBhbmQgc2NoZWR1bGUgaXQgZm9yIGV4ZWN1dGlvbi4gKi8KKyAgICBzY2hlZHVsZV90YXNrKCZ0aHJlYWQtPnRxKTsKKyNlbmRpZgorICAgIGt0aHJlYWRfbGF1bmNoZXIodGhyZWFkKTsKKworICAgIC8qIFdhaXQgdW50aWwgdGhyZWFkIGhhcyByZWFjaGVkIHRoZSBzZXR1cF90aHJlYWQgcm91dGluZS4gKi8KKyAgICBUUkFDRV8oKFRISVNfRklMRSwgIi4uLndhaXQgZm9yIHRoZSBuZXcgdGhyZWFkLi4uIikpOworICAgIGRvd24oJnRocmVhZC0+c3RhcnRzdG9wX3NlbSk7CisKKyAgICBUUkFDRV8oKFRISVNfRklMRSwgIi4uLm1haW4gdGhyZWFkIHJlc3VtZWQuLi4iKSk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihjb25zdCBjaGFyKikgcGpfdGhyZWFkX2dldF9uYW1lKHBqX3RocmVhZF90ICp0aHJlYWQpCit7CisgICAgcmV0dXJuIHRocmVhZC0+b2JqX25hbWU7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX3Jlc3VtZShwal90aHJlYWRfdCAqdGhyZWFkKQoreworICAgIHVwKCZ0aHJlYWQtPnN1c3BlbmRfc2VtKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3RocmVhZF90KikgcGpfdGhyZWFkX3RoaXModm9pZCkKK3sKKyAgICByZXR1cm4gKHBqX3RocmVhZF90Kilwal90aHJlYWRfbG9jYWxfZ2V0KHRocmVhZF90bHNfaWQpOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9qb2luKHBqX3RocmVhZF90ICpwKQoreworICAgIFRSQUNFXygoVEhJU19GSUxFLCAicGpfdGhyZWFkX2pvaW4oKSIpKTsKKyAgICBkb3duKCZwLT5zdGFydHN0b3Bfc2VtKTsKKyAgICBUUkFDRV8oKFRISVNfRklMRSwgIiAgam9pbmVkISIpKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal90aHJlYWRfZGVzdHJveShwal90aHJlYWRfdCAqdGhyZWFkKQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4odGhyZWFkICE9IE5VTEwsIFBKX0VJTlZBTElET1ApOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9zbGVlcCh1bnNpZ25lZCBtc2VjKQoreworICAgIHBqX2hpZ2hwcmVjX3QgdGlja3M7CisgICAgcGpfdGhyZWFkX3QgKnRocmVhZCA9IHBqX3RocmVhZF90aGlzKCk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHRocmVhZCAhPSBOVUxMLCBQSl9FQlVHKTsKKyAgICAKKyAgICAvKiBVc2UgaGlnaCBwcmVjaXNpb24gY2FsY3VsYXRpb24gdG8gbWFrZSBzdXJlIHdlIGRvbid0CisgICAgICogY3JvcCB2YWx1ZXM6CisgICAgICoKKyAgICAgKgl0aWNrcyA9IEhaICogbXNlYyAvIDEwMDAKKyAgICAgKi8KKyAgICB0aWNrcyA9IEhaOworICAgIHBqX2hpZ2hwcmVjX211bCh0aWNrcywgbXNlYyk7CisgICAgcGpfaGlnaHByZWNfZGl2KHRpY2tzLCAxMDAwKTsKKworICAgIFRSQUNFXygoVEhJU19GSUxFLCAidGhpcyB0aHJlYWQgd2lsbCBzbGVlcCBmb3IgJXUgdGlja3MiLCB0aWNrcykpOworICAgIGludGVycnVwdGlibGVfc2xlZXBfb25fdGltZW91dCggJnRocmVhZC0+cXVldWUsIHRpY2tzKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2F0b21pY19jcmVhdGUoIHBqX3Bvb2xfdCAqcG9vbCwgCisJCQkJICAgICAgcGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUsCisJCQkJICAgICAgcGpfYXRvbWljX3QgKipwdHJfdmFyKQoreworICAgIHBqX2F0b21pY190ICp0ID0gcGpfcG9vbF9jYWxsb2MocG9vbCwgMSwgc2l6ZW9mKHBqX2F0b21pY190KSk7CisgICAgaWYgKCF0KSByZXR1cm4gUEpfRU5PTUVNOworCisgICAgYXRvbWljX3NldCgmdC0+YXRvbSwgdmFsdWUpOworICAgICpwdHJfdmFyID0gdDsKKyAgICAKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9hdG9taWNfZGVzdHJveSggcGpfYXRvbWljX3QgKnZhciApCit7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRih2b2lkKSBwal9hdG9taWNfc2V0KHBqX2F0b21pY190ICp2YXIsIHBqX2F0b21pY192YWx1ZV90IHZhbHVlKQoreworICAgIGF0b21pY19zZXQoJnZhci0+YXRvbSwgdmFsdWUpOworfQorCitQSl9ERUYocGpfYXRvbWljX3ZhbHVlX3QpIHBqX2F0b21pY19nZXQocGpfYXRvbWljX3QgKnZhcikKK3sKKyAgICByZXR1cm4gYXRvbWljX3JlYWQoJnZhci0+YXRvbSk7Cit9CisKK1BKX0RFRih2b2lkKSBwal9hdG9taWNfaW5jKHBqX2F0b21pY190ICp2YXIpCit7CisgICAgYXRvbWljX2luYygmdmFyLT5hdG9tKTsKK30KKworUEpfREVGKHZvaWQpIHBqX2F0b21pY19kZWMocGpfYXRvbWljX3QgKnZhcikKK3sKKyAgICBhdG9taWNfZGVjKCZ2YXItPmF0b20pOworfQorCitQSl9ERUYodm9pZCkgcGpfYXRvbWljX2FkZCggcGpfYXRvbWljX3QgKnZhciwgcGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUgKQoreworICAgIGF0b21pY19hZGQodmFsdWUsICZ2YXItPmF0b20pOworfQorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2xvY2FsX2FsbG9jKGxvbmcgKmluZGV4KQoreworICAgIGlmICh0bHNfaWQgPj0gTUFYX1RMU19JRCkKKwlyZXR1cm4gUEpfRVRPT01BTlk7CisgICAgCisgICAgKmluZGV4ID0gdGxzX2lkKys7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHZvaWQpIHBqX3RocmVhZF9sb2NhbF9mcmVlKGxvbmcgaW5kZXgpCit7CisgICAgcGpfYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPCBNQVhfVExTX0lEKTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal90aHJlYWRfbG9jYWxfc2V0KGxvbmcgaW5kZXgsIHZvaWQgKnZhbHVlKQoreworICAgIHBqX2Fzc2VydChpbmRleCA+PSAwICYmIGluZGV4IDwgTUFYX1RMU19JRCk7CisgICAgdGxzX3ZhbHVlc1tpbmRleF0gPSB2YWx1ZTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHZvaWQqKSBwal90aHJlYWRfbG9jYWxfZ2V0KGxvbmcgaW5kZXgpCit7CisgICAgcGpfYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPCBNQVhfVExTX0lEKTsKKyAgICByZXR1cm4gdGxzX3ZhbHVlc1tpbmRleF07Cit9CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworUEpfREVGKHZvaWQpIHBqX2VudGVyX2NyaXRpY2FsX3NlY3Rpb24odm9pZCkKK3sKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgmY3JpdGljYWxfc2VjdGlvbiwgc3BpbmxvY2tfZmxhZ3MpOworfQorCitQSl9ERUYodm9pZCkgcGpfbGVhdmVfY3JpdGljYWxfc2VjdGlvbih2b2lkKQoreworICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNyaXRpY2FsX3NlY3Rpb24sIHNwaW5sb2NrX2ZsYWdzKTsKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X2NyZWF0ZSggcGpfcG9vbF90ICpwb29sLCAKKwkJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIAorCQkJCSAgICAgaW50IHR5cGUsCisJCQkJICAgICBwal9tdXRleF90ICoqcHRyX211dGV4KQoreworICAgIHBqX211dGV4X3QgKm11dGV4OworICAgIAorICAgIFBKX1VOVVNFRF9BUkcobmFtZSk7CisKKyAgICBtdXRleCA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgc2l6ZW9mKHBqX211dGV4X3QpKTsKKyAgICBpZiAoIW11dGV4KQorCXJldHVybiBQSl9FTk9NRU07CisKKyAgICBpbml0X01VVEVYKCZtdXRleC0+c2VtKTsKKworICAgIG11dGV4LT5yZWN1cnNpdmUgPSAodHlwZSA9PSBQSl9NVVRFWF9SRUNVUlNFKTsKKyAgICBtdXRleC0+b3duZXIgPSBOVUxMOworICAgIG11dGV4LT5vd25fY291bnQgPSAwOworICAgIAorICAgIC8qIERvbmUuICovCisgICAgKnB0cl9tdXRleCA9IG11dGV4OworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X2NyZWF0ZV9zaW1wbGUoIHBqX3Bvb2xfdCAqcG9vbCwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJICAgIHBqX211dGV4X3QgKiptdXRleCApCit7CisgICAgcmV0dXJuIHBqX211dGV4X2NyZWF0ZShwb29sLCBuYW1lLCBQSl9NVVRFWF9TSU1QTEUsIG11dGV4KTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9tdXRleF9jcmVhdGVfcmVjdXJzaXZlKCBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJCQkgICAgICAgcGpfbXV0ZXhfdCAqKm11dGV4ICkKK3sKKyAgICByZXR1cm4gcGpfbXV0ZXhfY3JlYXRlKCBwb29sLCBuYW1lLCBQSl9NVVRFWF9SRUNVUlNFLCBtdXRleCk7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfbG9jayhwal9tdXRleF90ICptdXRleCkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG11dGV4LCBQSl9FSU5WQUwpOworCisgICAgaWYgKG11dGV4LT5yZWN1cnNpdmUpIHsKKwlwal90aHJlYWRfdCAqdGhpc190aHJlYWQgPSBwal90aHJlYWRfdGhpcygpOworCWlmIChtdXRleC0+b3duZXIgPT0gdGhpc190aHJlYWQpIHsKKwkgICAgKyttdXRleC0+b3duX2NvdW50OworCX0gZWxzZSB7CisJICAgIGRvd24oJm11dGV4LT5zZW0pOworCSAgICBwal9hc3NlcnQobXV0ZXgtPm93bl9jb3VudCA9PSAwKTsKKwkgICAgbXV0ZXgtPm93bmVyID0gdGhpc190aHJlYWQ7CisJICAgIG11dGV4LT5vd25fY291bnQgPSAxOworCX0KKyAgICB9IGVsc2UgeworCWRvd24oJm11dGV4LT5zZW0pOworICAgIH0KKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9tdXRleF90cnlsb2NrKHBqX211dGV4X3QgKm11dGV4KQoreworICAgIGxvbmcgcmM7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG11dGV4LCBQSl9FSU5WQUwpOworCisgICAgaWYgKG11dGV4LT5yZWN1cnNpdmUpIHsKKwlwal90aHJlYWRfdCAqdGhpc190aHJlYWQgPSBwal90aHJlYWRfdGhpcygpOworCWlmIChtdXRleC0+b3duZXIgPT0gdGhpc190aHJlYWQpIHsKKwkgICAgKyttdXRleC0+b3duX2NvdW50OworCX0gZWxzZSB7CisJICAgIHJjID0gZG93bl9pbnRlcnJ1cHRpYmxlKCZtdXRleC0+c2VtKTsKKwkgICAgaWYgKHJjICE9IDApCisJCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoLXJjKTsKKwkgICAgcGpfYXNzZXJ0KG11dGV4LT5vd25fY291bnQgPT0gMCk7CisJICAgIG11dGV4LT5vd25lciA9IHRoaXNfdGhyZWFkOworCSAgICBtdXRleC0+b3duX2NvdW50ID0gMTsKKwl9CisgICAgfSBlbHNlIHsKKwlpbnQgcmMgPSBkb3duX3RyeWxvY2soJm11dGV4LT5zZW0pOworCWlmIChyYyAhPSAwKQorCSAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKC1yYyk7CisgICAgfQorICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X3VubG9jayhwal9tdXRleF90ICptdXRleCkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG11dGV4LCBQSl9FSU5WQUwpOworCisgICAgaWYgKG11dGV4LT5yZWN1cnNpdmUpIHsKKwlwal90aHJlYWRfdCAqdGhpc190aHJlYWQgPSBwal90aHJlYWRfdGhpcygpOworCWlmIChtdXRleC0+b3duZXIgPT0gdGhpc190aHJlYWQpIHsKKwkgICAgcGpfYXNzZXJ0KG11dGV4LT5vd25fY291bnQgPiAwKTsKKwkgICAgLS1tdXRleC0+b3duX2NvdW50OworCSAgICBpZiAobXV0ZXgtPm93bl9jb3VudCA9PSAwKSB7CisJCW11dGV4LT5vd25lciA9IE5VTEw7CisJCXVwKCZtdXRleC0+c2VtKTsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIHBqX2Fzc2VydCghIk5vdCBvd25lciEiKTsKKwkgICAgcmV0dXJuIFBKX0VJTlZBTElET1A7CisJfQorICAgIH0gZWxzZSB7CisJdXAoJm11dGV4LT5zZW0pOworICAgIH0KKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9tdXRleF9kZXN0cm95KHBqX211dGV4X3QgKm11dGV4KQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4obXV0ZXggIT0gTlVMTCwgUEpfRUlOVkFMKTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisjaWYgZGVmaW5lZChQSl9ERUJVRykgJiYgUEpfREVCVUcgIT0gMAorUEpfREVGKHBqX2Jvb2xfdCkgcGpfbXV0ZXhfaXNfbG9ja2VkKHBqX211dGV4X3QgKm11dGV4KQoreworICAgIGlmIChtdXRleC0+cmVjdXJzaXZlKQorCXJldHVybiBtdXRleC0+b3duZXIgPT0gcGpfdGhyZWFkX3RoaXMoKTsKKyAgICBlbHNlCisJcmV0dXJuIDE7Cit9CisjZW5kaWYJLyogUEpfREVCVUcgKi8KKworCisjaWYgZGVmaW5lZChQSl9IQVNfU0VNQVBIT1JFKSAmJiBQSl9IQVNfU0VNQVBIT1JFICE9IDAKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zZW1fY3JlYXRlKCAgcGpfcG9vbF90ICpwb29sLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgIHVuc2lnbmVkIGluaXRpYWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWF4LAorCQkJCSAgICBwal9zZW1fdCAqKnNlbSkKK3sKKyAgICBwal9zZW1fdCAqc2VtOworCisgICAgUEpfVU5VU0VEX0FSRyhtYXgpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIHNlbSwgUEpfRUlOVkFMKTsKKyAgICAKKyAgICBzZW0gPSBwal9wb29sX2FsbG9jKHBvb2wsIHNpemVvZihwal9zZW1fdCkpOworICAgIHNlbWFfaW5pdCgmc2VtLT5zZW0sIGluaXRpYWwpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NlbV93YWl0KHBqX3NlbV90ICpzZW0pCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIHNlbSwgUEpfRUlOVkFMKTsKKworICAgIGRvd24oJnNlbS0+c2VtKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zZW1fdHJ5d2FpdChwal9zZW1fdCAqc2VtKQoreworICAgIGludCByYzsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4ocG9vbCAmJiBzZW0sIFBKX0VJTlZBTCk7CisKKyAgICByYyA9IGRvd25fdHJ5bG9jaygmc2VtLT5zZW0pOworICAgIGlmIChyYyAhPSAwKSB7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUigtcmMpOworICAgIH0gZWxzZSB7CisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfQorfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NlbV9wb3N0KHBqX3NlbV90ICpzZW0pCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIHNlbSwgUEpfRUlOVkFMKTsKKworICAgIHVwKCZzZW0tPnNlbSk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc2VtX2Rlc3Ryb3kocGpfc2VtX3QgKnNlbSkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBvb2wgJiYgc2VtLCBQSl9FSU5WQUwpOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKyNlbmRpZgkvKiBQSl9IQVNfU0VNQVBIT1JFICovCisKKworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX3N5bWJpYW4uY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX2NvcmVfc3ltYmlhbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlmNWQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX3N5bWJpYW4uY3BwCkBAIC0wLDAgKzEsMTA2MyBAQAorLyogJElkOiBvc19jb3JlX3N5bWJpYW4uY3BwIDM5OTkgMjAxMi0wMy0zMCAwNzoxMDoxM1ogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworCisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9wb29sLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovcmFuZC5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL2d1aWQuaD4KKyNpbmNsdWRlIDxwai9leGNlcHQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorCisjaW5jbHVkZSAib3Nfc3ltYmlhbi5oIgorCisKKyNkZWZpbmUgUEpfTUFYX1RMUwkgICAgMzIKKyNkZWZpbmUgRFVNTVlfTVVURVgJICAgICgocGpfbXV0ZXhfdCopMTAxKQorI2RlZmluZSBEVU1NWV9TRU1BUEhPUkUJICAgICgocGpfc2VtX3QqKTEwMikKKyNkZWZpbmUgVEhJU19GSUxFCSAgICAib3NfY29yZV9zeW1iaWFuLmMiCisKKy8qIERlZmF1bHQgbWVzc2FnZSBzbG90IG51bWJlciBmb3IgUlNvY2tldFNlcnY6OkNvbm5lY3QoKS4KKyAqIEluY3JlYXNlIGl0IHRvIDMyIGZyb20gdGhlIGRlZmF1bHQgOCAoS0VTb2NrRGVmYXVsdE1lc3NhZ2VTbG90cykKKyAqLworI2lmbmRlZiBQSl9TWU1CSUFOX1NPQ0tfTVNHX1NMT1RTCisjICBkZWZpbmUgUEpfU1lNQklBTl9TT0NLX01TR19TTE9UUyAgMzIKKyNlbmRpZgorCisvKgorICogTm90ZToKKyAqCisgKiBUaGUgU3ltYmlhbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRocmVhZGluZyEKKyAqLyAKKworc3RydWN0IHBqX3RocmVhZF90Cit7CisgICAgY2hhcgkgICAgb2JqX25hbWVbUEpfTUFYX09CSl9OQU1FXTsKKyAgICB2b2lkCSAgICp0bHNfdmFsdWVzW1BKX01BWF9UTFNdOworCisjaWYgZGVmaW5lZChQSl9PU19IQVNfQ0hFQ0tfU1RBQ0spICYmIFBKX09TX0hBU19DSEVDS19TVEFDSyE9MAorICAgIHBqX3VpbnQzMl90CSAgICBzdGtfc2l6ZTsKKyAgICBwal91aW50MzJfdAkgICAgc3RrX21heF91c2FnZTsKKyAgICBjaGFyCSAgICpzdGtfc3RhcnQ7CisgICAgY29uc3QgY2hhcgkgICAqY2FsbGVyX2ZpbGU7CisgICAgaW50CQkgICAgY2FsbGVyX2xpbmU7CisjZW5kaWYKKworfSBtYWluX3RocmVhZDsKKworc3RydWN0IHBqX2F0b21pY190Cit7CisgICAgcGpfYXRvbWljX3ZhbHVlX3QJdmFsdWU7Cit9OworCitzdHJ1Y3QgcGpfc2VtX3QKK3sKKyAgICBpbnQgdmFsdWU7CisgICAgaW50IG1heDsKK307CisKKy8qIEZsYWcgYW5kIHJlZmVyZW5jZSBjb3VudGVyIGZvciBQSkxJQiBpbnN0YW5jZSAqLworc3RhdGljIGludCBpbml0aWFsaXplZDsKKworLyogRmxhZ3MgdG8gaW5kaWNhdGUgd2hpY2ggVExTIHZhcmlhYmxlcyBoYXZlIGJlZW4gdXNlZCAqLworc3RhdGljIGludCB0bHNfdmFyc1tQSl9NQVhfVExTXTsKKworLyogYXRleGl0IGhhbmRsZXJzICovCitzdGF0aWMgdW5zaWduZWQgYXRleGl0X2NvdW50Oworc3RhdGljIHZvaWQgKCphdGV4aXRfZnVuY1szMl0pKHZvaWQpOworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gQ1BqVGltZW91dFRpbWVyIGltcGxlbWVudGF0aW9uCisvLworCitDUGpUaW1lb3V0VGltZXI6OkNQalRpbWVvdXRUaW1lcigpCis6IENBY3RpdmUoUEpfU1lNQklBTl9USU1FUl9QUklPUklUWSksIGhhc1RpbWVkT3V0XyhQSl9GQUxTRSkKK3sKK30KKworQ1BqVGltZW91dFRpbWVyOjp+Q1BqVGltZW91dFRpbWVyKCkKK3sKKyAgICBDYW5jZWwoKTsKKyAgICB0aW1lcl8uQ2xvc2UoKTsKK30KKwordm9pZCBDUGpUaW1lb3V0VGltZXI6OkNvbnN0cnVjdEwoKQoreworICAgIGhhc1RpbWVkT3V0XyA9IFBKX0ZBTFNFOworICAgIHRpbWVyXy5DcmVhdGVMb2NhbCgpOworICAgIENBY3RpdmVTY2hlZHVsZXI6OkFkZCh0aGlzKTsKK30KKworQ1BqVGltZW91dFRpbWVyICpDUGpUaW1lb3V0VGltZXI6Ok5ld0woKQoreworICAgIENQalRpbWVvdXRUaW1lciAqc2VsZiA9IG5ldyBDUGpUaW1lb3V0VGltZXI7CisgICAgQ2xlYW51cFN0YWNrOjpQdXNoTChzZWxmKTsKKworICAgIHNlbGYtPkNvbnN0cnVjdEwoKTsKKworICAgIENsZWFudXBTdGFjazo6UG9wKHNlbGYpOworICAgIHJldHVybiBzZWxmOworCit9CisKK3ZvaWQgQ1BqVGltZW91dFRpbWVyOjpTdGFydFRpbWVyKFRVaW50IG1pbGlTZWNvbmRzKQoreworICAgIENhbmNlbCgpOworCisgICAgaGFzVGltZWRPdXRfID0gUEpfRkFMU0U7CisgICAgdGltZXJfLkFmdGVyKGlTdGF0dXMsIG1pbGlTZWNvbmRzICogMTAwMCk7CisgICAgU2V0QWN0aXZlKCk7Cit9CisKK2Jvb2wgQ1BqVGltZW91dFRpbWVyOjpIYXNUaW1lZE91dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1RpbWVkT3V0XyAhPSAwOworfQorCit2b2lkIENQalRpbWVvdXRUaW1lcjo6UnVuTCgpCit7CisgICAgaGFzVGltZWRPdXRfID0gUEpfVFJVRTsKK30KKwordm9pZCBDUGpUaW1lb3V0VGltZXI6OkRvQ2FuY2VsKCkKK3sKKyAgICB0aW1lcl8uQ2FuY2VsKCk7Cit9CisKK1RJbnQgQ1BqVGltZW91dFRpbWVyOjpSdW5FcnJvcihUSW50IGFFcnJvcikKK3sKKyAgICBQSl9VTlVTRURfQVJHKGFFcnJvcik7CisgICAgcmV0dXJuIEtFcnJOb25lOworfQorCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBQalN5bWJpYW5PUyBpbXBsZW1lbnRhdGlvbgorLy8KKworUGpTeW1iaWFuT1M6OlBqU3ltYmlhbk9TKCkKKzogaXNDb25uZWN0aW9uVXBfKGZhbHNlKSwKKyAgaXNTb2NrZXRTZXJ2SW5pdGlhbGl6ZWRfKGZhbHNlKSwgaXNSZXNvbHZlckluaXRpYWxpemVkXyhmYWxzZSksCisgIGNvbnNvbGVfKE5VTEwpLCBzZWxlY3RUaW1lb3V0VGltZXJfKE5VTEwpLAorICBhcHBTb2NrZXRTZXJ2XyhOVUxMKSwgYXBwQ29ubmVjdGlvbl8oTlVMTCksIGFwcEhvc3RSZXNvbHZlcl8oTlVMTCksCisgIGFwcEhvc3RSZXNvbHZlcjZfKE5VTEwpCit7Cit9CisKKy8vIFNldCBwYXJhbWV0ZXJzCit2b2lkIFBqU3ltYmlhbk9TOjpTZXRQYXJhbWV0ZXJzKHBqX3N5bWJpYW5vc19wYXJhbXMgKnBhcmFtcykgCit7CisgICAgYXBwU29ja2V0U2Vydl8gPSAoUlNvY2tldFNlcnYqKSBwYXJhbXMtPnJzb2NrZXRzZXJ2OworICAgIGFwcENvbm5lY3Rpb25fID0gKFJDb25uZWN0aW9uKikgcGFyYW1zLT5yY29ubmVjdGlvbjsKKyAgICBhcHBIb3N0UmVzb2x2ZXJfID0gKFJIb3N0UmVzb2x2ZXIqKSBwYXJhbXMtPnJob3N0cmVzb2x2ZXI7CisgICAgYXBwSG9zdFJlc29sdmVyNl8gPSAoUkhvc3RSZXNvbHZlciopIHBhcmFtcy0+cmhvc3RyZXNvbHZlcjY7Cit9CisKKy8vIEdldCBQalN5bWJpYW5PUyBpbnN0YW5jZQorUGpTeW1iaWFuT1MgKlBqU3ltYmlhbk9TOjpJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIFBqU3ltYmlhbk9TIGluc3RhbmNlXzsKKyAgICByZXR1cm4gJmluc3RhbmNlXzsKK30KKworCisvLyBJbml0aWFsaXplCitUSW50IFBqU3ltYmlhbk9TOjpJbml0aWFsaXplKCkKK3sKKyAgICBUSW50IGVycjsKKworICAgIHNlbGVjdFRpbWVvdXRUaW1lcl8gPSBDUGpUaW1lb3V0VGltZXI6Ok5ld0woKTsKKworI2lmIDAKKyAgICBwal9hc3NlcnQoY29uc29sZV8gPT0gTlVMTCk7CisgICAgVFJBUEQoZXJyLCBjb25zb2xlXyA9IENvbnNvbGU6Ok5ld0woX0woIlBKTElCIiksIAorCQkJCSAgICAgICAgVFNpemUoS0NvbnNGdWxsU2NyZWVuLEtDb25zRnVsbFNjcmVlbikpKTsKKyAgICByZXR1cm4gZXJyOworI2VuZGlmCisKKyAgICAvKiBPbmx5IGNyZWF0ZSBSU29ja2V0U2VydiBpZiBhcHBsaWNhdGlvbiBkb2Vzbid0IHNwZWNpZnkgaXQKKyAgICAgKiBpbiB0aGUgcGFyYW1ldGVycworICAgICAqLworICAgIGlmICghaXNTb2NrZXRTZXJ2SW5pdGlhbGl6ZWRfICYmIGFwcFNvY2tldFNlcnZfID09IE5VTEwpIHsKKwllcnIgPSBzb2NrZXRTZXJ2Xy5Db25uZWN0KFBKX1NZTUJJQU5fU09DS19NU0dfU0xPVFMpOworCWlmIChlcnIgIT0gS0Vyck5vbmUpCisJICAgIGdvdG8gb25fZXJyb3I7CisKKwlpc1NvY2tldFNlcnZJbml0aWFsaXplZF8gPSB0cnVlOworICAgIH0KKworICAgIGlmICghaXNSZXNvbHZlckluaXRpYWxpemVkXykgeworICAgIAlpZiAoYXBwSG9zdFJlc29sdmVyXyA9PSBOVUxMKSB7CisgICAgCSAgICBpZiAoQ29ubmVjdGlvbigpKQorICAgIAkgICAgCWVyciA9IGhvc3RSZXNvbHZlcl8uT3BlbihTb2NrZXRTZXJ2KCksIEtBZkluZXQsIEtTb2NrU3RyZWFtLAorICAgIAkgICAgCQkJICAgICAJICpDb25uZWN0aW9uKCkpOworICAgIAkgICAgZWxzZQorCSAgICAJZXJyID0gaG9zdFJlc29sdmVyXy5PcGVuKFNvY2tldFNlcnYoKSwgS0FmSW5ldCwgS1NvY2tTdHJlYW0pOworICAgIAkKKwkgICAgaWYgKGVyciAhPSBLRXJyTm9uZSkKKwkgICAgCWdvdG8gb25fZXJyb3I7CisgICAgCX0KKyAgICAJCisjaWYgZGVmaW5lZChQSl9IQVNfSVBWNikgJiYgUEpfSEFTX0lQVjYhPTAKKyAgICAJaWYgKGFwcEhvc3RSZXNvbHZlcjZfID09IE5VTEwpIHsKKyAgICAJICAgIGlmIChDb25uZWN0aW9uKCkpCisgICAgCSAgICAJZXJyID0gaG9zdFJlc29sdmVyNl8uT3BlbihTb2NrZXRTZXJ2KCksIEtBZkluZXQ2LCBLU29ja1N0cmVhbSwKKyAgICAJICAgIAkJCSAgICAgCSAgKkNvbm5lY3Rpb24oKSk7CisgICAgCSAgICBlbHNlCisJICAgIAllcnIgPSBob3N0UmVzb2x2ZXI2Xy5PcGVuKFNvY2tldFNlcnYoKSwgS0FmSW5ldDYsIEtTb2NrU3RyZWFtKTsKKyAgICAJCisJICAgIGlmIChlcnIgIT0gS0Vyck5vbmUpCisJICAgIAlnb3RvIG9uX2Vycm9yOworICAgIAl9CisjZW5kaWYKKyAgICAJCisgICAgCQorCWlzUmVzb2x2ZXJJbml0aWFsaXplZF8gPSB0cnVlOworICAgIH0KKworICAgIGlzQ29ubmVjdGlvblVwXyA9IHRydWU7CisgICAgCisgICAgcmV0dXJuIEtFcnJOb25lOworCitvbl9lcnJvcjoKKyAgICBTaHV0ZG93bigpOworICAgIHJldHVybiBlcnI7Cit9CisKKy8vIFNodXRkb3duCit2b2lkIFBqU3ltYmlhbk9TOjpTaHV0ZG93bigpCit7CisgICAgaXNDb25uZWN0aW9uVXBfID0gZmFsc2U7CisgICAgCisgICAgaWYgKGlzUmVzb2x2ZXJJbml0aWFsaXplZF8pIHsKKwkJaG9zdFJlc29sdmVyXy5DbG9zZSgpOworI2lmIGRlZmluZWQoUEpfSEFTX0lQVjYpICYmIFBKX0hBU19JUFY2IT0wCisgICAgCWhvc3RSZXNvbHZlcjZfLkNsb3NlKCk7CisjZW5kaWYKKyAgICAJaXNSZXNvbHZlckluaXRpYWxpemVkXyA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChpc1NvY2tldFNlcnZJbml0aWFsaXplZF8pIHsKKwlzb2NrZXRTZXJ2Xy5DbG9zZSgpOworCWlzU29ja2V0U2VydkluaXRpYWxpemVkXyA9IGZhbHNlOworICAgIH0KKworICAgIGRlbGV0ZSBjb25zb2xlXzsKKyAgICBjb25zb2xlXyA9IE5VTEw7CisKKyAgICBkZWxldGUgc2VsZWN0VGltZW91dFRpbWVyXzsKKyAgICBzZWxlY3RUaW1lb3V0VGltZXJfID0gTlVMTDsKKyAgICAKKyAgICBhcHBTb2NrZXRTZXJ2XyA9IE5VTEw7CisgICAgYXBwQ29ubmVjdGlvbl8gPSBOVUxMOworICAgIGFwcEhvc3RSZXNvbHZlcl8gPSBOVUxMOworICAgIGFwcEhvc3RSZXNvbHZlcjZfID0gTlVMTDsKK30KKworLy8gQ29udmVydCB0byBVbmljb2RlCitUSW50IFBqU3ltYmlhbk9TOjpDb252ZXJ0VG9Vbmljb2RlKFREZXMxNiAmYVVuaWNvZGUsIGNvbnN0IFREZXNDOCAmYUZvcmVpZ24pCit7CisjaWYgMAorICAgIHBqX2Fzc2VydChjb252XyAhPSBOVUxMKTsKKyAgICByZXR1cm4gY29udl8tPkNvbnZlcnRUb1VuaWNvZGUoYVVuaWNvZGUsIGFGb3JlaWduLCBjb252VG9Vbmljb2RlU3RhdGVfKTsKKyNlbHNlCisgICAgcmV0dXJuIENudlV0ZkNvbnZlcnRlcjo6Q29udmVydFRvVW5pY29kZUZyb21VdGY4KGFVbmljb2RlLCBhRm9yZWlnbik7CisjZW5kaWYKK30KKworLy8gQ29udmVydCBmcm9tIFVuaWNvZGUKK1RJbnQgUGpTeW1iaWFuT1M6OkNvbnZlcnRGcm9tVW5pY29kZShURGVzOCAmYUZvcmVpZ24sIGNvbnN0IFREZXNDMTYgJmFVbmljb2RlKQoreworI2lmIDAKKyAgICBwal9hc3NlcnQoY29udl8gIT0gTlVMTCk7CisgICAgcmV0dXJuIGNvbnZfLT5Db252ZXJ0RnJvbVVuaWNvZGUoYUZvcmVpZ24sIGFVbmljb2RlLCBjb252VG9BbnNpU3RhdGVfKTsKKyNlbHNlCisgICAgcmV0dXJuIENudlV0ZkNvbnZlcnRlcjo6Q29udmVydEZyb21Vbmljb2RlVG9VdGY4KGFGb3JlaWduLCBhVW5pY29kZSk7CisjZW5kaWYKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFBKTElCIG9zLmggaW1wbGVtZW50YXRpb24KKy8vCisKK1BKX0RFRihwal91aW50MzJfdCkgcGpfZ2V0cGlkKHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKworLyogU2V0IFN5bWJpYW4gc3BlY2lmaWMgcGFyYW1ldGVycyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zeW1iaWFub3Nfc2V0X3BhcmFtcyhwal9zeW1iaWFub3NfcGFyYW1zICpwcm0pIAoreworICAgIFBKX0FTU0VSVF9SRVRVUk4ocHJtICE9IE5VTEwsIFBKX0VJTlZBTCk7CisgICAgUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPlNldFBhcmFtZXRlcnMocHJtKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKiBTZXQgY29ubmVjdGlvbiBzdGF0dXMgKi8KK1BKX0RFRih2b2lkKSBwal9zeW1iaWFub3Nfc2V0X2Nvbm5lY3Rpb25fc3RhdHVzKHBqX2Jvb2xfdCB1cCkKK3sKKyAgICBQalN5bWJpYW5PUzo6SW5zdGFuY2UoKS0+U2V0Q29ubmVjdGlvblN0YXR1cyh1cCAhPSAwKTsKK30KKworCisvKgorICogcGpfaW5pdCh2b2lkKS4KKyAqIEluaXQgUEpMSUIhCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW5pdCh2b2lkKQoreworCWNoYXIgc3RhY2tfcHRyOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAKKyAgICAvKiBDaGVjayBpZiBQSkxJQiBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgKi8KKyAgICBpZiAoaW5pdGlhbGl6ZWQpIHsKKwkrK2luaXRpYWxpemVkOworCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0KKworICAgIHBqX2Fuc2lfc3RyY3B5KG1haW5fdGhyZWFkLm9ial9uYW1lLCAicGp0aHJlYWQiKTsKKworICAgIC8vIEluaXQgbWFpbiB0aHJlYWQKKyAgICBwal9tZW1zZXQoJm1haW5fdGhyZWFkLCAwLCBzaXplb2YobWFpbl90aHJlYWQpKTsKKworICAgIC8vIEluaXRpYWxpemUgUGpTeW1iaWFuT1MgaW5zdGFuY2UKKyAgICBQalN5bWJpYW5PUyAqb3MgPSBQalN5bWJpYW5PUzo6SW5zdGFuY2UoKTsKKworICAgIFBKX0xPRyg0LChUSElTX0ZJTEUsICJJbml0aWFsaXppbmcgUEpMSUIgZm9yIFN5bWJpYW4gT1MuLiIpKTsKKworICAgIFRJbnQgZXJyOyAKKyAgICBlcnIgPSBvcy0+SW5pdGlhbGl6ZSgpOworICAgIGlmIChlcnIgIT0gS0Vyck5vbmUpCisgICAgCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoZXJyKTsKKworICAgIC8qIEluaXQgbG9nZ2luZyAqLworICAgIHBqX2xvZ19pbml0KCk7CisKKyAgICAvKiBJbml0aWFsaXplIGV4Y2VwdGlvbiBJRCBmb3IgdGhlIHBvb2wuIAorICAgICAqIE11c3QgZG8gc28gYWZ0ZXIgY3JpdGljYWwgc2VjdGlvbiBpcyBjb25maWd1cmVkLgorICAgICAqLyAKKyAgICBzdGF0dXMgPSBwal9leGNlcHRpb25faWRfYWxsb2MoIlBKTElCL05vIG1lbW9yeSIsICZQSl9OT19NRU1PUllfRVhDRVBUSU9OKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIGdvdG8gb25fZXJyb3I7CisKKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisgICAgbWFpbl90aHJlYWQuc3RrX3N0YXJ0ID0gJnN0YWNrX3B0cjsKKyAgICBtYWluX3RocmVhZC5zdGtfc2l6ZSA9IDB4RkZGRkZGRkZVTDsKKyAgICBtYWluX3RocmVhZC5zdGtfbWF4X3VzYWdlID0gMDsKKyNlbHNlCisgICAgc3RhY2tfcHRyID0gJ1wwJzsKKyNlbmRpZgorCisgICAgLyogRmxhZyBQSkxJQiBhcyBpbml0aWFsaXplZCAqLworICAgICsraW5pdGlhbGl6ZWQ7CisgICAgcGpfYXNzZXJ0KGluaXRpYWxpemVkID09IDEpOworCisgICAgUEpfTE9HKDUsKFRISVNfRklMRSwgIlBKTElCIGluaXRpYWxpemVkLiIpKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKworb25fZXJyb3I6CisgICAgcGpfc2h1dGRvd24oKTsKKyAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKGVycik7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9hdGV4aXQocGpfZXhpdF9jYWxsYmFjayBmdW5jKQoreworICAgIGlmIChhdGV4aXRfY291bnQgPj0gUEpfQVJSQVlfU0laRShhdGV4aXRfZnVuYykpCisJcmV0dXJuIFBKX0VUT09NQU5ZOworCisgICAgYXRleGl0X2Z1bmNbYXRleGl0X2NvdW50KytdID0gZnVuYzsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisKK1BKX0RFRih2b2lkKSBwal9zaHV0ZG93bih2b2lkKQoreworICAgIC8qIE9ubHkgcGVyZm9ybSBzaHV0ZG93biBvcGVyYXRpb24gd2hlbiAnaW5pdGlhbGl6ZWQnIHJlYWNoZXMgemVybyAqLworICAgIHBqX2Fzc2VydChpbml0aWFsaXplZCA+IDApOworICAgIGlmICgtLWluaXRpYWxpemVkICE9IDApCisJcmV0dXJuOworCisgICAgLyogQ2FsbCBhdGV4aXQoKSBmdW5jdGlvbnMgKi8KKyAgICB3aGlsZSAoYXRleGl0X2NvdW50ID4gMCkgeworCSgqYXRleGl0X2Z1bmNbYXRleGl0X2NvdW50LTFdKSgpOworCS0tYXRleGl0X2NvdW50OworICAgIH0KKworICAgIC8qIEZyZWUgZXhjZXB0aW9uIElEICovCisgICAgaWYgKFBKX05PX01FTU9SWV9FWENFUFRJT04gIT0gLTEpIHsKKwlwal9leGNlcHRpb25faWRfZnJlZShQSl9OT19NRU1PUllfRVhDRVBUSU9OKTsKKwlQSl9OT19NRU1PUllfRVhDRVBUSU9OID0gLTE7CisgICAgfQorCisgICAgLyogQ2xlYXIgc3RhdGljIHZhcmlhYmxlcyAqLworICAgIHBqX2Vycm5vX2NsZWFyX2hhbmRsZXJzKCk7CisKKyAgICBQalN5bWJpYW5PUyAqb3MgPSBQalN5bWJpYW5PUzo6SW5zdGFuY2UoKTsKKyAgICBvcy0+U2h1dGRvd24oKTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworY2xhc3MgQ1BvbGxUaW1lb3V0VGltZXIgOiBwdWJsaWMgQ0FjdGl2ZSAKK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ1BvbGxUaW1lb3V0VGltZXIqIE5ld0woaW50IG1zZWMsIFRJbnQgcHJpbyk7CisgICAgfkNQb2xsVGltZW91dFRpbWVyKCk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIFJ1bkwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgRG9DYW5jZWwoKTsKKworcHJpdmF0ZToJCisgICAgUlRpbWVyCSAgICAgcnRpbWVyXzsKKyAgICAKKyAgICBleHBsaWNpdCBDUG9sbFRpbWVvdXRUaW1lcihUSW50IHByaW8pOworICAgIHZvaWQgQ29uc3RydWN0TChpbnQgbXNlYyk7Cit9OworCitDUG9sbFRpbWVvdXRUaW1lcjo6Q1BvbGxUaW1lb3V0VGltZXIoVEludCBwcmlvKQorOiBDQWN0aXZlKHByaW8pCit7Cit9CisKKworQ1BvbGxUaW1lb3V0VGltZXI6On5DUG9sbFRpbWVvdXRUaW1lcigpIAoreworICAgIHJ0aW1lcl8uQ2xvc2UoKTsKK30KKwordm9pZCBDUG9sbFRpbWVvdXRUaW1lcjo6Q29uc3RydWN0TChpbnQgbXNlYykgCit7CisgICAgcnRpbWVyXy5DcmVhdGVMb2NhbCgpOworICAgIENBY3RpdmVTY2hlZHVsZXI6OkFkZCh0aGlzKTsKKyAgICBydGltZXJfLkFmdGVyKGlTdGF0dXMsIG1zZWMqMTAwMCk7CisgICAgU2V0QWN0aXZlKCk7Cit9CisKK0NQb2xsVGltZW91dFRpbWVyKiBDUG9sbFRpbWVvdXRUaW1lcjo6TmV3TChpbnQgbXNlYywgVEludCBwcmlvKSAKK3sKKyAgICBDUG9sbFRpbWVvdXRUaW1lciAqc2VsZiA9IG5ldyBDUG9sbFRpbWVvdXRUaW1lcihwcmlvKTsKKyAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKHNlbGYpOworICAgIHNlbGYtPkNvbnN0cnVjdEwobXNlYyk7ICAgIAorICAgIENsZWFudXBTdGFjazo6UG9wKHNlbGYpOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3ZvaWQgQ1BvbGxUaW1lb3V0VGltZXI6OlJ1bkwoKSAKK3sKK30KKwordm9pZCBDUG9sbFRpbWVvdXRUaW1lcjo6RG9DYW5jZWwoKSAKK3sKKyAgICAgcnRpbWVyXy5DYW5jZWwoKTsKK30KKworCisvKgorICogV2FpdCB0aGUgY29tcGxldGlvbiBvZiBhbnkgU3ltYmlhbiBhY3RpdmUgb2JqZWN0cy4gCisgKi8KK1BKX0RFRihwal9ib29sX3QpIHBqX3N5bWJpYW5vc19wb2xsKGludCBwcmlvcml0eSwgaW50IG1zX3RpbWVvdXQpCit7CisgICAgQ1BvbGxUaW1lb3V0VGltZXIgKnRpbWVyID0gTlVMTDsKKyAgICAKKyAgICBpZiAocHJpb3JpdHk9PS0xKQorICAgIAlwcmlvcml0eSA9IEVQcmlvcml0eU51bGw7CisgICAgCisgICAgaWYgKG1zX3RpbWVvdXQgPj0gMCkgeworICAgIAl0aW1lciA9IENQb2xsVGltZW91dFRpbWVyOjpOZXdMKG1zX3RpbWVvdXQsIHByaW9yaXR5KTsKKyAgICB9CisgICAgCisgICAgUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPldhaXRGb3JBY3RpdmVPYmplY3RzKHByaW9yaXR5KTsKKyAgICAKKyAgICBpZiAodGltZXIpIHsKKyAgICAgICAgYm9vbCB0aW1lcl9pc19hY3RpdmUgPSB0aW1lci0+SXNBY3RpdmUoKTsKKyAgICAKKwl0aW1lci0+Q2FuY2VsKCk7CisgICAgICAgIAorICAgICAgICBkZWxldGUgdGltZXI7CisgICAgICAgIAorICAgIAlyZXR1cm4gdGltZXJfaXNfYWN0aXZlID8gUEpfVFJVRSA6IFBKX0ZBTFNFOworICAgIAkKKyAgICB9IGVsc2UgeworICAgIAlyZXR1cm4gUEpfVFJVRTsKKyAgICB9Cit9CisKKworLyoKKyAqIHBqX3RocmVhZF9pc19yZWdpc3RlcmVkKCkKKyAqLworUEpfREVGKHBqX2Jvb2xfdCkgcGpfdGhyZWFkX2lzX3JlZ2lzdGVyZWQodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfRkFMU0U7Cit9CisKKworLyoKKyAqIEdldCB0aHJlYWQgcHJpb3JpdHkgdmFsdWUgZm9yIHRoZSB0aHJlYWQuCisgKi8KK1BKX0RFRihpbnQpIHBqX3RocmVhZF9nZXRfcHJpbyhwal90aHJlYWRfdCAqdGhyZWFkKQoreworICAgIFBKX1VOVVNFRF9BUkcodGhyZWFkKTsKKyAgICByZXR1cm4gMTsKK30KKworCisvKgorICogU2V0IHRoZSB0aHJlYWQgcHJpb3JpdHkuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX3NldF9wcmlvKHBqX3RocmVhZF90ICp0aHJlYWQsICBpbnQgcHJpbykKK3sKKyAgICBQSl9VTlVTRURfQVJHKHRocmVhZCk7CisgICAgUEpfVU5VU0VEX0FSRyhwcmlvKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogR2V0IHRoZSBsb3dlc3QgcHJpb3JpdHkgdmFsdWUgYXZhaWxhYmxlIG9uIHRoaXMgc3lzdGVtLgorICovCitQSl9ERUYoaW50KSBwal90aHJlYWRfZ2V0X3ByaW9fbWluKHBqX3RocmVhZF90ICp0aHJlYWQpCit7CisgICAgUEpfVU5VU0VEX0FSRyh0aHJlYWQpOworICAgIHJldHVybiAxOworfQorCisKKy8qCisgKiBHZXQgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgdmFsdWUgYXZhaWxhYmxlIG9uIHRoaXMgc3lzdGVtLgorICovCitQSl9ERUYoaW50KSBwal90aHJlYWRfZ2V0X3ByaW9fbWF4KHBqX3RocmVhZF90ICp0aHJlYWQpCit7CisgICAgUEpfVU5VU0VEX0FSRyh0aHJlYWQpOworICAgIHJldHVybiAxOworfQorCisKKy8qCisgKiBwal90aHJlYWRfZ2V0X29zX2hhbmRsZSgpCisgKi8KK1BKX0RFRih2b2lkKikgcGpfdGhyZWFkX2dldF9vc19oYW5kbGUocGpfdGhyZWFkX3QgKnRocmVhZCkgCit7CisgICAgUEpfVU5VU0VEX0FSRyh0aHJlYWQpOworICAgIHJldHVybiBOVUxMOworfQorCisvKgorICogcGpfdGhyZWFkX3JlZ2lzdGVyKC4uKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9yZWdpc3RlciAoIGNvbnN0IGNoYXIgKmNzdHJfdGhyZWFkX25hbWUsCisJCQkJCSBwal90aHJlYWRfZGVzYyBkZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aHJlYWRfdCAqKnRocmVhZF9wdHIpCit7CisgICAgUEpfVU5VU0VEX0FSRyhjc3RyX3RocmVhZF9uYW1lKTsKKyAgICBQSl9VTlVTRURfQVJHKGRlc2MpOworICAgIFBKX1VOVVNFRF9BUkcodGhyZWFkX3B0cik7CisgICAgcmV0dXJuIFBKX0VJTlZBTElET1A7Cit9CisKKworLyoKKyAqIHBqX3RocmVhZF9jcmVhdGUoLi4uKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9jcmVhdGUoIHBqX3Bvb2xfdCAqcG9vbCwgCisJCQkJICAgICAgY29uc3QgY2hhciAqdGhyZWFkX25hbWUsCisJCQkJICAgICAgcGpfdGhyZWFkX3Byb2MgKnByb2MsIAorCQkJCSAgICAgIHZvaWQgKmFyZywKKwkJCQkgICAgICBwal9zaXplX3Qgc3RhY2tfc2l6ZSwgCisJCQkJICAgICAgdW5zaWduZWQgZmxhZ3MsCisJCQkJICAgICAgcGpfdGhyZWFkX3QgKipwdHJfdGhyZWFkKQoreworICAgIFBKX1VOVVNFRF9BUkcocG9vbCk7CisgICAgUEpfVU5VU0VEX0FSRyh0aHJlYWRfbmFtZSk7CisgICAgUEpfVU5VU0VEX0FSRyhwcm9jKTsKKyAgICBQSl9VTlVTRURfQVJHKGFyZyk7CisgICAgUEpfVU5VU0VEX0FSRyhzdGFja19zaXplKTsKKyAgICBQSl9VTlVTRURfQVJHKGZsYWdzKTsKKyAgICBQSl9VTlVTRURfQVJHKHB0cl90aHJlYWQpOworCisgICAgLyogU29ycnkgbWF0ZSwgd2UgZG9uJ3Qgc3VwcG9ydCB0aHJlYWRpbmcgKi8KKyAgICByZXR1cm4gUEpfRU5PVFNVUDsKK30KKworLyoKKyAqIHBqX3RocmVhZC1nZXRfbmFtZSgpCisgKi8KK1BKX0RFRihjb25zdCBjaGFyKikgcGpfdGhyZWFkX2dldF9uYW1lKHBqX3RocmVhZF90ICpwKQoreworICAgIHBqX2Fzc2VydChwID09ICZtYWluX3RocmVhZCk7CisgICAgcmV0dXJuIHAtPm9ial9uYW1lOworfQorCisvKgorICogcGpfdGhyZWFkX3Jlc3VtZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX3Jlc3VtZShwal90aHJlYWRfdCAqcCkKK3sKKyAgICBQSl9VTlVTRURfQVJHKHApOworICAgIHJldHVybiBQSl9FSU5WQUxJRE9QOworfQorCisvKgorICogcGpfdGhyZWFkX3RoaXMoKQorICovCitQSl9ERUYocGpfdGhyZWFkX3QqKSBwal90aHJlYWRfdGhpcyh2b2lkKQoreworICAgIHJldHVybiAmbWFpbl90aHJlYWQ7Cit9CisKKy8qCisgKiBwal90aHJlYWRfam9pbigpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2pvaW4ocGpfdGhyZWFkX3QgKnJlYykKK3sKKyAgICBQSl9VTlVTRURfQVJHKHJlYyk7CisgICAgcmV0dXJuIFBKX0VJTlZBTElET1A7Cit9CisKKy8qCisgKiBwal90aHJlYWRfZGVzdHJveSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2Rlc3Ryb3kocGpfdGhyZWFkX3QgKnJlYykKK3sKKyAgICBQSl9VTlVTRURfQVJHKHJlYyk7CisgICAgcmV0dXJuIFBKX0VJTlZBTElET1A7Cit9CisKKy8qCisgKiBwal90aHJlYWRfc2xlZXAoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9zbGVlcCh1bnNpZ25lZCBtc2VjKQoreworICAgIFVzZXI6OkFmdGVyKG1zZWMqMTAwMCk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvKgorICogcGpfdGhyZWFkX2xvY2FsX2FsbG9jKCkKKyAqLworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9sb2NhbF9hbGxvYyhsb25nICppbmRleCkKK3sKKyAgICB1bnNpZ25lZCBpOworCisgICAgLyogRmluZCB1bnVzZWQgVExTIHZhcmlhYmxlICovCisgICAgZm9yIChpPTA7IGk8UEpfQVJSQVlfU0laRSh0bHNfdmFycyk7ICsraSkgeworCWlmICh0bHNfdmFyc1tpXSA9PSAwKQorCSAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaSA9PSBQSl9BUlJBWV9TSVpFKHRsc192YXJzKSkKKwlyZXR1cm4gUEpfRVRPT01BTlk7CisKKyAgICB0bHNfdmFyc1tpXSA9IDE7CisgICAgKmluZGV4ID0gaTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfdGhyZWFkX2xvY2FsX2ZyZWUoKQorICovCitQSl9ERUYodm9pZCkgcGpfdGhyZWFkX2xvY2FsX2ZyZWUobG9uZyBpbmRleCkKK3sKKyAgICBQSl9BU1NFUlRfT05fRkFJTChpbmRleCA+PSAwICYmIGluZGV4IDwgKGludClQSl9BUlJBWV9TSVpFKHRsc192YXJzKSAmJgorCQkgICAgIHRsc192YXJzW2luZGV4XSAhPSAwLCByZXR1cm4pOworCisgICAgdGxzX3ZhcnNbaW5kZXhdID0gMDsKK30KKworCisvKgorICogcGpfdGhyZWFkX2xvY2FsX3NldCgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2xvY2FsX3NldChsb25nIGluZGV4LCB2b2lkICp2YWx1ZSkKK3sKKyAgICBwal90aHJlYWRfdCAqcmVjID0gcGpfdGhyZWFkX3RoaXMoKTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oaW5kZXggPj0gMCAmJiBpbmRleCA8IChpbnQpUEpfQVJSQVlfU0laRSh0bHNfdmFycykgJiYKKwkJICAgICB0bHNfdmFyc1tpbmRleF0gIT0gMCwgUEpfRUlOVkFMKTsKKworICAgIHJlYy0+dGxzX3ZhbHVlc1tpbmRleF0gPSB2YWx1ZTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIHBqX3RocmVhZF9sb2NhbF9nZXQoKQorICovCitQSl9ERUYodm9pZCopIHBqX3RocmVhZF9sb2NhbF9nZXQobG9uZyBpbmRleCkKK3sKKyAgICBwal90aHJlYWRfdCAqcmVjID0gcGpfdGhyZWFkX3RoaXMoKTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oaW5kZXggPj0gMCAmJiBpbmRleCA8IChpbnQpUEpfQVJSQVlfU0laRSh0bHNfdmFycykgJiYKKwkJICAgICB0bHNfdmFyc1tpbmRleF0gIT0gMCwgTlVMTCk7CisKKyAgICByZXR1cm4gcmVjLT50bHNfdmFsdWVzW2luZGV4XTsKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvKgorICogQ3JlYXRlIGF0b21pYyB2YXJpYWJsZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9hdG9taWNfY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorCQkJCSAgICAgIHBqX2F0b21pY192YWx1ZV90IGluaXRpYWwsCisJCQkJICAgICAgcGpfYXRvbWljX3QgKiphdG9taWMgKQoreworICAgICphdG9taWMgPSAocGpfYXRvbWljX3QqKXBqX3Bvb2xfYWxsb2MocG9vbCwgc2l6ZW9mKHN0cnVjdCBwal9hdG9taWNfdCkpOworICAgICgqYXRvbWljKS0+dmFsdWUgPSBpbml0aWFsOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBEZXN0cm95IGF0b21pYyB2YXJpYWJsZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9hdG9taWNfZGVzdHJveSggcGpfYXRvbWljX3QgKmF0b21pY192YXIgKQoreworICAgIFBKX1VOVVNFRF9BUkcoYXRvbWljX3Zhcik7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworLyoKKyAqIFNldCB0aGUgdmFsdWUgb2YgYW4gYXRvbWljIHR5cGUsIGFuZCByZXR1cm4gdGhlIHByZXZpb3VzIHZhbHVlLgorICovCitQSl9ERUYodm9pZCkgcGpfYXRvbWljX3NldCggcGpfYXRvbWljX3QgKmF0b21pY192YXIsIAorCQkJICAgIHBqX2F0b21pY192YWx1ZV90IHZhbHVlKQoreworICAgIGF0b21pY192YXItPnZhbHVlID0gdmFsdWU7Cit9CisKKworLyoKKyAqIEdldCB0aGUgdmFsdWUgb2YgYW4gYXRvbWljIHR5cGUuCisgKi8KK1BKX0RFRihwal9hdG9taWNfdmFsdWVfdCkgcGpfYXRvbWljX2dldChwal9hdG9taWNfdCAqYXRvbWljX3ZhcikKK3sKKyAgICByZXR1cm4gYXRvbWljX3Zhci0+dmFsdWU7Cit9CisKKworLyoKKyAqIEluY3JlbWVudCB0aGUgdmFsdWUgb2YgYW4gYXRvbWljIHR5cGUuCisgKi8KK1BKX0RFRih2b2lkKSBwal9hdG9taWNfaW5jKHBqX2F0b21pY190ICphdG9taWNfdmFyKQoreworICAgICsrYXRvbWljX3Zhci0+dmFsdWU7Cit9CisKKworLyoKKyAqIEluY3JlbWVudCB0aGUgdmFsdWUgb2YgYW4gYXRvbWljIHR5cGUgYW5kIGdldCB0aGUgcmVzdWx0LgorICovCitQSl9ERUYocGpfYXRvbWljX3ZhbHVlX3QpIHBqX2F0b21pY19pbmNfYW5kX2dldChwal9hdG9taWNfdCAqYXRvbWljX3ZhcikKK3sKKyAgICByZXR1cm4gKythdG9taWNfdmFyLT52YWx1ZTsKK30KKworCisvKgorICogRGVjcmVtZW50IHRoZSB2YWx1ZSBvZiBhbiBhdG9taWMgdHlwZS4KKyAqLworUEpfREVGKHZvaWQpIHBqX2F0b21pY19kZWMocGpfYXRvbWljX3QgKmF0b21pY192YXIpCit7CisgICAgLS1hdG9taWNfdmFyLT52YWx1ZTsKK30JCisKKworLyoKKyAqIERlY3JlbWVudCB0aGUgdmFsdWUgb2YgYW4gYXRvbWljIHR5cGUgYW5kIGdldCB0aGUgcmVzdWx0LgorICovCitQSl9ERUYocGpfYXRvbWljX3ZhbHVlX3QpIHBqX2F0b21pY19kZWNfYW5kX2dldChwal9hdG9taWNfdCAqYXRvbWljX3ZhcikKK3sKKyAgICByZXR1cm4gLS1hdG9taWNfdmFyLT52YWx1ZTsKK30KKworCisvKgorICogQWRkIGEgdmFsdWUgdG8gYW4gYXRvbWljIHR5cGUuCisgKi8KK1BKX0RFRih2b2lkKSBwal9hdG9taWNfYWRkKCBwal9hdG9taWNfdCAqYXRvbWljX3ZhciwKKwkJCSAgICBwal9hdG9taWNfdmFsdWVfdCB2YWx1ZSkKK3sKKyAgICBhdG9taWNfdmFyLT52YWx1ZSArPSB2YWx1ZTsKK30KKworCisvKgorICogQWRkIGEgdmFsdWUgdG8gYW4gYXRvbWljIHR5cGUgYW5kIGdldCB0aGUgcmVzdWx0LgorICovCitQSl9ERUYocGpfYXRvbWljX3ZhbHVlX3QpIHBqX2F0b21pY19hZGRfYW5kX2dldCggcGpfYXRvbWljX3QgKmF0b21pY192YXIsCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgcGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUpCit7CisgICAgYXRvbWljX3Zhci0+dmFsdWUgKz0gdmFsdWU7CisgICAgcmV0dXJuIGF0b21pY192YXItPnZhbHVlOworfQorCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9tdXRleF9jcmVhdGUoIHBqX3Bvb2xfdCAqcG9vbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgIGludCB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9tdXRleF90ICoqbXV0ZXgpCit7CisgICAgUEpfVU5VU0VEX0FSRyhwb29sKTsKKyAgICBQSl9VTlVTRURfQVJHKG5hbWUpOworICAgIFBKX1VOVVNFRF9BUkcodHlwZSk7CisKKyAgICAqbXV0ZXggPSBEVU1NWV9NVVRFWDsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIHBqX211dGV4X2NyZWF0ZV9zaW1wbGUoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X2NyZWF0ZV9zaW1wbGUoIHBqX3Bvb2xfdCAqcG9vbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSAgICBwal9tdXRleF90ICoqbXV0ZXggKQoreworICAgIHJldHVybiBwal9tdXRleF9jcmVhdGUocG9vbCwgbmFtZSwgUEpfTVVURVhfU0lNUExFLCBtdXRleCk7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9tdXRleF9jcmVhdGVfcmVjdXJzaXZlKCBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJCQkgICAgICAgcGpfbXV0ZXhfdCAqKm11dGV4ICkKK3sKKyAgICByZXR1cm4gcGpfbXV0ZXhfY3JlYXRlKHBvb2wsIG5hbWUsIFBKX01VVEVYX1JFQ1VSU0UsIG11dGV4KTsKK30KKworCisvKgorICogcGpfbXV0ZXhfbG9jaygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfbG9jayhwal9tdXRleF90ICptdXRleCkKK3sKKyAgICBwal9hc3NlcnQobXV0ZXggPT0gRFVNTVlfTVVURVgpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfbXV0ZXhfdHJ5bG9jaygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfdHJ5bG9jayhwal9tdXRleF90ICptdXRleCkKK3sKKyAgICBwal9hc3NlcnQobXV0ZXggPT0gRFVNTVlfTVVURVgpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfbXV0ZXhfdW5sb2NrKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9tdXRleF91bmxvY2socGpfbXV0ZXhfdCAqbXV0ZXgpCit7CisgICAgcGpfYXNzZXJ0KG11dGV4ID09IERVTU1ZX01VVEVYKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIHBqX211dGV4X2Rlc3Ryb3koKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X2Rlc3Ryb3kocGpfbXV0ZXhfdCAqbXV0ZXgpCit7CisgICAgcGpfYXNzZXJ0KG11dGV4ID09IERVTU1ZX01VVEVYKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLyoKKyAqIFJXIE11dGV4CisgKi8KKyNpbmNsdWRlICJvc19yd211dGV4LmMiCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworLyoKKyAqIEVudGVyIGNyaXRpY2FsIHNlY3Rpb24uCisgKi8KK1BKX0RFRih2b2lkKSBwal9lbnRlcl9jcml0aWNhbF9zZWN0aW9uKHZvaWQpCit7CisgICAgLyogTm90aGluZyB0byBkbyAqLworfQorCisKKy8qCisgKiBMZWF2ZSBjcml0aWNhbCBzZWN0aW9uLgorICovCitQSl9ERUYodm9pZCkgcGpfbGVhdmVfY3JpdGljYWxfc2VjdGlvbih2b2lkKQoreworICAgIC8qIE5vdGhpbmcgdG8gZG8gKi8KK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKgorICogQ3JlYXRlIHNlbWFwaG9yZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zZW1fY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgIHVuc2lnbmVkIGluaXRpYWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXgsCisJCQkJICAgcGpfc2VtX3QgKipwX3NlbSkKK3sKKyAgICBwal9zZW1fdCAqc2VtOworIAorICAgIFBKX1VOVVNFRF9BUkcobmFtZSk7CisKKyAgICBzZW0gPSAocGpfc2VtX3QqKSBwal9wb29sX3phbGxvYyhwb29sLCBzaXplb2YocGpfc2VtX3QpKTsKKyAgICBzZW0tPnZhbHVlID0gaW5pdGlhbDsKKyAgICBzZW0tPm1heCA9IG1heDsKKworICAgICpwX3NlbSA9IHNlbTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBXYWl0IGZvciBzZW1hcGhvcmUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc2VtX3dhaXQocGpfc2VtX3QgKnNlbSkKK3sKKyAgICBpZiAoc2VtLT52YWx1ZSA+IDApIHsKKwlzZW0tPnZhbHVlLS07CisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfSBlbHNlIHsKKwlwal9hc3NlcnQoISJVbmV4cGVjdGVkISIpOworCXJldHVybiBQSl9FSU5WQUxJRE9QOworICAgIH0KK30KKworCisvKgorICogVHJ5IHdhaXQgZm9yIHNlbWFwaG9yZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zZW1fdHJ5d2FpdChwal9zZW1fdCAqc2VtKQoreworICAgIGlmIChzZW0tPnZhbHVlID4gMCkgeworCXNlbS0+dmFsdWUtLTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9IGVsc2UgeworCXBqX2Fzc2VydCghIlVuZXhwZWN0ZWQhIik7CisJcmV0dXJuIFBKX0VJTlZBTElET1A7CisgICAgfQorfQorCisKKy8qCisgKiBSZWxlYXNlIHNlbWFwaG9yZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zZW1fcG9zdChwal9zZW1fdCAqc2VtKQoreworICAgIHNlbS0+dmFsdWUrKzsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogRGVzdHJveSBzZW1hcGhvcmUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc2VtX2Rlc3Ryb3kocGpfc2VtX3QgKnNlbSkKK3sKKyAgICBQSl9VTlVTRURfQVJHKHNlbSk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworI2lmIGRlZmluZWQoUEpfT1NfSEFTX0NIRUNLX1NUQUNLKSAmJiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sgIT0gMAorLyoKKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdGFjayBjaGVja2luZy4gCisgKi8KK1BKX0RFRih2b2lkKSBwal90aHJlYWRfY2hlY2tfc3RhY2soY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpCit7CisgICAgY2hhciBzdGtfcHRyOworICAgIHBqX3VpbnQzMl90IHVzYWdlOworICAgIHBqX3RocmVhZF90ICp0aHJlYWQgPSBwal90aHJlYWRfdGhpcygpOworCisgICAgcGpfYXNzZXJ0KHRocmVhZCk7CisKKyAgICAvKiBDYWxjdWxhdGUgY3VycmVudCB1c2FnZS4gKi8KKyAgICB1c2FnZSA9ICgmc3RrX3B0ciA+IHRocmVhZC0+c3RrX3N0YXJ0KSA/ICZzdGtfcHRyIC0gdGhyZWFkLT5zdGtfc3RhcnQgOgorCQl0aHJlYWQtPnN0a19zdGFydCAtICZzdGtfcHRyOworCisgICAgLyogQXNzZXJ0IGlmIHN0YWNrIHVzYWdlIGlzIGRhbmdlcm91c2x5IGhpZ2guICovCisgICAgcGpfYXNzZXJ0KCJTVEFDSyBPVkVSRkxPVyEhICIgJiYgKHVzYWdlIDw9IHRocmVhZC0+c3RrX3NpemUgLSAxMjgpKTsKKworICAgIC8qIEtlZXAgc3RhdGlzdGljLiAqLworICAgIGlmICh1c2FnZSA+IHRocmVhZC0+c3RrX21heF91c2FnZSkgeworCXRocmVhZC0+c3RrX21heF91c2FnZSA9IHVzYWdlOworCXRocmVhZC0+Y2FsbGVyX2ZpbGUgPSBmaWxlOworCXRocmVhZC0+Y2FsbGVyX2xpbmUgPSBsaW5lOworICAgIH0KK30KKworLyoKKyAqIEdldCBtYXhpbXVtIHN0YWNrIHVzYWdlIHN0YXRpc3RpYy4gCisgKi8KK1BKX0RFRihwal91aW50MzJfdCkgcGpfdGhyZWFkX2dldF9zdGFja19tYXhfdXNhZ2UocGpfdGhyZWFkX3QgKnRocmVhZCkKK3sKKyAgICByZXR1cm4gdGhyZWFkLT5zdGtfbWF4X3VzYWdlOworfQorCisvKgorICogRHVtcCB0aHJlYWQgc3RhY2sgc3RhdHVzLiAKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal90aHJlYWRfZ2V0X3N0YWNrX2luZm8ocGpfdGhyZWFkX3QgKnRocmVhZCwKKwkJCQkJICAgICBjb25zdCBjaGFyICoqZmlsZSwKKwkJCQkJICAgICBpbnQgKmxpbmUpCit7CisgICAgcGpfYXNzZXJ0KHRocmVhZCk7CisKKyAgICAqZmlsZSA9IHRocmVhZC0+Y2FsbGVyX2ZpbGU7CisgICAgKmxpbmUgPSB0aHJlYWQtPmNhbGxlcl9saW5lOworICAgIHJldHVybiAwOworfQorCisjZW5kaWYJLyogUEpfT1NfSEFTX0NIRUNLX1NUQUNLICovCisKKy8qCisgKiBwal9ydW5fYXBwKCkKKyAqLworUEpfREVGKGludCkgcGpfcnVuX2FwcChwal9tYWluX2Z1bmNfcHRyIG1haW5fZnVuYywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgcmV0dXJuICgqbWFpbl9mdW5jKShhcmdjLCBhcmd2KTsKK30KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX3VuaXguYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX3VuaXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjhiYTY4Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX2NvcmVfdW5peC5jCkBAIC0wLDAgKzEsMTkzMiBAQAorLyogJElkOiBvc19jb3JlX3VuaXguYyA0MzU5IDIwMTMtMDItMjEgMTE6MTg6MzZaIGJlbm55bHAgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKy8qCisgKiBDb250cmlidXRvcnM6CisgKiAtIFRoYW5rcyBmb3IgWmV0cm9uLCBJbmMuIChQaGlsIFRvcnJlLCBwdG9ycmVAemV0cm9uLmNvbSkgZm9yIGRvbmF0aW5nCisgKiAgIHRoZSBSVEVNUyBwb3J0LgorICovCisjaWZuZGVmIF9HTlVfU09VUkNFCisjICAgZGVmaW5lIF9HTlVfU09VUkNFCisjZW5kaWYKKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9yYW5kLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovZ3VpZC5oPgorI2luY2x1ZGUgPHBqL2V4Y2VwdC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisKKyNpZiBkZWZpbmVkKFBKX0hBU19TRU1BUEhPUkVfSCkgJiYgUEpfSEFTX1NFTUFQSE9SRV9IICE9IDAKKyMgIGluY2x1ZGUgPHNlbWFwaG9yZS5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4JICAgIC8vIGdldHBpZCgpCisjaW5jbHVkZSA8ZXJybm8uaD4JICAgIC8vIGVycm5vCisKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKyNkZWZpbmUgVEhJU19GSUxFICAgIm9zX2NvcmVfdW5peC5jIgorCisjZGVmaW5lIFNJR05BVFVSRTEgIDB4REVBRkJFRUYKKyNkZWZpbmUgU0lHTkFUVVJFMiAgMHhERUFEQzBERQorCitzdHJ1Y3QgcGpfdGhyZWFkX3QKK3sKKyAgICBjaGFyCSAgICBvYmpfbmFtZVtQSl9NQVhfT0JKX05BTUVdOworICAgIHB0aHJlYWRfdAkgICAgdGhyZWFkOworICAgIHBqX3RocmVhZF9wcm9jICpwcm9jOworICAgIHZvaWQJICAgKmFyZzsKKyAgICBwal91aW50MzJfdAkgICAgc2lnbmF0dXJlMTsKKyAgICBwal91aW50MzJfdAkgICAgc2lnbmF0dXJlMjsKKworICAgIHBqX211dGV4X3QJICAgKnN1c3BlbmRlZF9tdXRleDsKKworI2lmIGRlZmluZWQoUEpfT1NfSEFTX0NIRUNLX1NUQUNLKSAmJiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0shPTAKKyAgICBwal91aW50MzJfdAkgICAgc3RrX3NpemU7CisgICAgcGpfdWludDMyX3QJICAgIHN0a19tYXhfdXNhZ2U7CisgICAgY2hhcgkgICAqc3RrX3N0YXJ0OworICAgIGNvbnN0IGNoYXIJICAgKmNhbGxlcl9maWxlOworICAgIGludAkJICAgIGNhbGxlcl9saW5lOworI2VuZGlmCit9OworCitzdHJ1Y3QgcGpfYXRvbWljX3QKK3sKKyAgICBwal9tdXRleF90CSAgICAgICAqbXV0ZXg7CisgICAgcGpfYXRvbWljX3ZhbHVlX3QJdmFsdWU7Cit9OworCitzdHJ1Y3QgcGpfbXV0ZXhfdAoreworICAgIHB0aHJlYWRfbXV0ZXhfdCAgICAgbXV0ZXg7CisgICAgY2hhcgkJb2JqX25hbWVbUEpfTUFYX09CSl9OQU1FXTsKKyNpZiBQSl9ERUJVRworICAgIGludAkJICAgICAgICBuZXN0aW5nX2xldmVsOworICAgIHBqX3RocmVhZF90CSAgICAgICAqb3duZXI7CisgICAgY2hhcgkJb3duZXJfbmFtZVtQSl9NQVhfT0JKX05BTUVdOworI2VuZGlmCit9OworCisjaWYgZGVmaW5lZChQSl9IQVNfU0VNQVBIT1JFKSAmJiBQSl9IQVNfU0VNQVBIT1JFICE9IDAKK3N0cnVjdCBwal9zZW1fdAoreworICAgIHNlbV90CSAgICAgICAqc2VtOworICAgIGNoYXIJCW9ial9uYW1lW1BKX01BWF9PQkpfTkFNRV07Cit9OworI2VuZGlmIC8qIFBKX0hBU19TRU1BUEhPUkUgKi8KKworI2lmIGRlZmluZWQoUEpfSEFTX0VWRU5UX09CSikgJiYgUEpfSEFTX0VWRU5UX09CSiAhPSAwCitzdHJ1Y3QgcGpfZXZlbnRfdAoreworICAgIGVudW0gZXZlbnRfc3RhdGUgeworCUVWX1NUQVRFX09GRiwKKwlFVl9TVEFURV9TRVQsCisJRVZfU1RBVEVfUFVMU0VECisgICAgfSBzdGF0ZTsKKworICAgIHBqX211dGV4X3QJCW11dGV4OworICAgIHB0aHJlYWRfY29uZF90CWNvbmQ7CisKKyAgICBwal9ib29sX3QJCWF1dG9fcmVzZXQ7CisgICAgdW5zaWduZWQJCXRocmVhZHNfd2FpdGluZzsKKyAgICB1bnNpZ25lZAkJdGhyZWFkc190b19yZWxlYXNlOworfTsKKyNlbmRpZgkvKiBQSl9IQVNfRVZFTlRfT0JKICovCisKKworLyoKKyAqIEZsYWcgYW5kIHJlZmVyZW5jZSBjb3VudGVyIGZvciBQSkxJQiBpbnN0YW5jZS4KKyAqLworc3RhdGljIGludCBpbml0aWFsaXplZDsKKworI2lmIFBKX0hBU19USFJFQURTCisgICAgc3RhdGljIHBqX3RocmVhZF90IG1haW5fdGhyZWFkOworICAgIHN0YXRpYyBsb25nIHRocmVhZF90bHNfaWQ7CisgICAgc3RhdGljIHBqX211dGV4X3QgY3JpdGljYWxfc2VjdGlvbjsKKyNlbHNlCisjICAgZGVmaW5lIE1BWF9USFJFQURTIDMyCisgICAgc3RhdGljIGludCB0bHNfZmxhZ1tNQVhfVEhSRUFEU107CisgICAgc3RhdGljIHZvaWQgKnRsc1tNQVhfVEhSRUFEU107CisjZW5kaWYKKworc3RhdGljIHVuc2lnbmVkIGF0ZXhpdF9jb3VudDsKK3N0YXRpYyB2b2lkICgqYXRleGl0X2Z1bmNbMzJdKSh2b2lkKTsKKworc3RhdGljIHBqX3N0YXR1c190IGluaXRfbXV0ZXgocGpfbXV0ZXhfdCAqbXV0ZXgsIGNvbnN0IGNoYXIgKm5hbWUsIGludCB0eXBlKTsKKworLyoKKyAqIHBqX2luaXQodm9pZCkuCisgKiBJbml0IFBKTElCIQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2luaXQodm9pZCkKK3sKKyAgICBjaGFyIGR1bW15X2d1aWRbUEpfR1VJRF9NQVhfTEVOR1RIXTsKKyAgICBwal9zdHJfdCBndWlkOworICAgIHBqX3N0YXR1c190IHJjOworCisgICAgLyogQ2hlY2sgaWYgUEpMSUIgaGF2ZSBiZWVuIGluaXRpYWxpemVkICovCisgICAgaWYgKGluaXRpYWxpemVkKSB7CisJKytpbml0aWFsaXplZDsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9CisKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIC8qIEluaXQgdGhpcyB0aHJlYWQncyBUTFMuICovCisgICAgaWYgKChyYz1wal90aHJlYWRfaW5pdCgpKSAhPSAwKSB7CisJcmV0dXJuIHJjOworICAgIH0KKworICAgIC8qIENyaXRpY2FsIHNlY3Rpb24uICovCisgICAgaWYgKChyYz1pbml0X211dGV4KCZjcml0aWNhbF9zZWN0aW9uLCAiY3JpdHNlYyIsIFBKX01VVEVYX1JFQ1VSU0UpKSAhPSAwKQorCXJldHVybiByYzsKKworI2VuZGlmCisKKyAgICAvKiBJbml0IGxvZ2dpbmcgKi8KKyAgICBwal9sb2dfaW5pdCgpOworCisgICAgLyogSW5pdGlhbGl6ZSBleGNlcHRpb24gSUQgZm9yIHRoZSBwb29sLiAKKyAgICAgKiBNdXN0IGRvIHNvIGFmdGVyIGNyaXRpY2FsIHNlY3Rpb24gaXMgY29uZmlndXJlZC4KKyAgICAgKi8KKyAgICByYyA9IHBqX2V4Y2VwdGlvbl9pZF9hbGxvYygiUEpMSUIvTm8gbWVtb3J5IiwgJlBKX05PX01FTU9SWV9FWENFUFRJT04pOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gcmM7CisgICAgCisgICAgLyogSW5pdCByYW5kb20gc2VlZC4gKi8KKyAgICAvKiBPciBwcm9iYWJseSBub3QuIExldCBhcHBsaWNhdGlvbiBpbiBjaGFyZ2Ugb2YgdGhpcyAqLworICAgIC8qIHBqX3NyYW5kKCBjbG9jaygpICk7ICovCisKKyAgICAvKiBTdGFydHVwIEdVSUQuICovCisgICAgZ3VpZC5wdHIgPSBkdW1teV9ndWlkOworICAgIHBqX2dlbmVyYXRlX3VuaXF1ZV9zdHJpbmcoICZndWlkICk7CisKKyAgICAvKiBTdGFydHVwIHRpbWVzdGFtcCAqLworI2lmIGRlZmluZWQoUEpfSEFTX0hJR0hfUkVTX1RJTUVSKSAmJiBQSl9IQVNfSElHSF9SRVNfVElNRVIgIT0gMAorICAgIHsKKwlwal90aW1lc3RhbXAgZHVtbXlfdHM7CisJaWYgKChyYz1wal9nZXRfdGltZXN0YW1wKCZkdW1teV90cykpICE9IDApIHsKKwkgICAgcmV0dXJuIHJjOworCX0KKyAgICB9CisjZW5kaWYgICAKKworICAgIC8qIEZsYWcgUEpMSUIgYXMgaW5pdGlhbGl6ZWQgKi8KKyAgICArK2luaXRpYWxpemVkOworICAgIHBqX2Fzc2VydChpbml0aWFsaXplZCA9PSAxKTsKKworICAgIFBKX0xPRyg0LChUSElTX0ZJTEUsICJwamxpYiAlcyBmb3IgUE9TSVggaW5pdGlhbGl6ZWQiLAorCSAgICAgIFBKX1ZFUlNJT04pKTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfYXRleGl0KCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9hdGV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKQoreworICAgIGlmIChhdGV4aXRfY291bnQgPj0gUEpfQVJSQVlfU0laRShhdGV4aXRfZnVuYykpCisJcmV0dXJuIFBKX0VUT09NQU5ZOworCisgICAgYXRleGl0X2Z1bmNbYXRleGl0X2NvdW50KytdID0gZnVuYzsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIHBqX3NodXRkb3duKHZvaWQpCisgKi8KK1BKX0RFRih2b2lkKSBwal9zaHV0ZG93bigpCit7CisgICAgaW50IGk7CisKKyAgICAvKiBPbmx5IHBlcmZvcm0gc2h1dGRvd24gb3BlcmF0aW9uIHdoZW4gJ2luaXRpYWxpemVkJyByZWFjaGVzIHplcm8gKi8KKyAgICBwal9hc3NlcnQoaW5pdGlhbGl6ZWQgPiAwKTsKKyAgICBpZiAoLS1pbml0aWFsaXplZCAhPSAwKQorCXJldHVybjsKKworICAgIC8qIENhbGwgYXRleGl0KCkgZnVuY3Rpb25zICovCisgICAgZm9yIChpPWF0ZXhpdF9jb3VudC0xOyBpPj0wOyAtLWkpIHsKKwkoKmF0ZXhpdF9mdW5jW2ldKSgpOworICAgIH0KKyAgICBhdGV4aXRfY291bnQgPSAwOworCisgICAgLyogRnJlZSBleGNlcHRpb24gSUQgKi8KKyAgICBpZiAoUEpfTk9fTUVNT1JZX0VYQ0VQVElPTiAhPSAtMSkgeworCXBqX2V4Y2VwdGlvbl9pZF9mcmVlKFBKX05PX01FTU9SWV9FWENFUFRJT04pOworCVBKX05PX01FTU9SWV9FWENFUFRJT04gPSAtMTsKKyAgICB9CisKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIC8qIERlc3Ryb3kgUEpMSUIgY3JpdGljYWwgc2VjdGlvbiAqLworICAgIHBqX211dGV4X2Rlc3Ryb3koJmNyaXRpY2FsX3NlY3Rpb24pOworCisgICAgLyogRnJlZSBQSkxJQiBUTFMgKi8KKyAgICBpZiAodGhyZWFkX3Rsc19pZCAhPSAtMSkgeworCXBqX3RocmVhZF9sb2NhbF9mcmVlKHRocmVhZF90bHNfaWQpOworCXRocmVhZF90bHNfaWQgPSAtMTsKKyAgICB9CisKKyAgICAvKiBUaWNrZXQgIzExMzI6IEFzc2VydGlvbiB3aGVuIChyZSlzdGFydGluZyBQSkxJQiBvbiBkaWZmZXJlbnQgdGhyZWFkICovCisgICAgcGpfYnplcm8oJm1haW5fdGhyZWFkLCBzaXplb2YobWFpbl90aHJlYWQpKTsKKyNlbmRpZgorCisgICAgLyogQ2xlYXIgc3RhdGljIHZhcmlhYmxlcyAqLworICAgIHBqX2Vycm5vX2NsZWFyX2hhbmRsZXJzKCk7Cit9CisKKworLyoKKyAqIHBqX2dldHBpZCh2b2lkKQorICovCitQSl9ERUYocGpfdWludDMyX3QpIHBqX2dldHBpZCh2b2lkKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgcmV0dXJuIGdldHBpZCgpOworfQorCisvKgorICogQ2hlY2sgaWYgdGhpcyB0aHJlYWQgaGFzIGJlZW4gcmVnaXN0ZXJlZCB0byBQSkxJQi4KKyAqLworUEpfREVGKHBqX2Jvb2xfdCkgcGpfdGhyZWFkX2lzX3JlZ2lzdGVyZWQodm9pZCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHJldHVybiBwal90aHJlYWRfbG9jYWxfZ2V0KHRocmVhZF90bHNfaWQpICE9IDA7CisjZWxzZQorICAgIHBqX2Fzc2VydCgicGpfdGhyZWFkX2lzX3JlZ2lzdGVyZWQoKSBjYWxsZWQgaW4gbm9uLXRocmVhZGluZyBtb2RlISIpOworICAgIHJldHVybiBQSl9UUlVFOworI2VuZGlmCit9CisKKworLyoKKyAqIEdldCB0aHJlYWQgcHJpb3JpdHkgdmFsdWUgZm9yIHRoZSB0aHJlYWQuCisgKi8KK1BKX0RFRihpbnQpIHBqX3RocmVhZF9nZXRfcHJpbyhwal90aHJlYWRfdCAqdGhyZWFkKQoreworI2lmIFBKX0hBU19USFJFQURTCisgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworICAgIGludCBwb2xpY3k7CisgICAgaW50IHJjOworCisgICAgcmMgPSBwdGhyZWFkX2dldHNjaGVkcGFyYW0gKHRocmVhZC0+dGhyZWFkLCAmcG9saWN5LCAmcGFyYW0pOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiAtMTsKKworICAgIHJldHVybiBwYXJhbS5zY2hlZF9wcmlvcml0eTsKKyNlbHNlCisgICAgUEpfVU5VU0VEX0FSRyh0aHJlYWQpOworICAgIHJldHVybiAxOworI2VuZGlmCit9CisKKworLyoKKyAqIFNldCB0aGUgdGhyZWFkIHByaW9yaXR5LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9zZXRfcHJpbyhwal90aHJlYWRfdCAqdGhyZWFkLCAgaW50IHByaW8pCit7CisjaWYgUEpfSEFTX1RIUkVBRFMKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisgICAgaW50IHBvbGljeTsKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSAodGhyZWFkLT50aHJlYWQsICZwb2xpY3ksICZwYXJhbSk7CisgICAgaWYgKHJjICE9IDApCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihyYyk7CisKKyAgICBwYXJhbS5zY2hlZF9wcmlvcml0eSA9IHByaW87CisKKyAgICByYyA9IHB0aHJlYWRfc2V0c2NoZWRwYXJhbSh0aHJlYWQtPnRocmVhZCwgcG9saWN5LCAmcGFyYW0pOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmMpOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisjZWxzZQorICAgIFBKX1VOVVNFRF9BUkcodGhyZWFkKTsKKyAgICBQSl9VTlVTRURfQVJHKHByaW8pOworICAgIHBqX2Fzc2VydCgicGpfdGhyZWFkX3NldF9wcmlvKCkgY2FsbGVkIGluIG5vbi10aHJlYWRpbmcgbW9kZSEiKTsKKyAgICByZXR1cm4gMTsKKyNlbmRpZgorfQorCisKKy8qCisgKiBHZXQgdGhlIGxvd2VzdCBwcmlvcml0eSB2YWx1ZSBhdmFpbGFibGUgb24gdGhpcyBzeXN0ZW0uCisgKi8KK1BKX0RFRihpbnQpIHBqX3RocmVhZF9nZXRfcHJpb19taW4ocGpfdGhyZWFkX3QgKnRocmVhZCkKK3sKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisgICAgaW50IHBvbGljeTsKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSh0aHJlYWQtPnRocmVhZCwgJnBvbGljeSwgJnBhcmFtKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gLTE7CisKKyNpZiBkZWZpbmVkKF9QT1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HKQorICAgIHJldHVybiBzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSk7CisjZWxpZiBkZWZpbmVkIF9fT3BlbkJTRF9fCisgICAgLyogVGhyZWFkIHByaW8gbWluL21heCBhcmUgZGVjbGFyZWQgaW4gT3BlbkJTRCBwcml2YXRlIGhkciAqLworICAgIHJldHVybiAwOworI2Vsc2UKKyAgICBwal9hc3NlcnQoInBqX3RocmVhZF9nZXRfcHJpb19taW4oKSBub3Qgc3VwcG9ydGVkISIpOworICAgIHJldHVybiAwOworI2VuZGlmCit9CisKKworLyoKKyAqIEdldCB0aGUgaGlnaGVzdCBwcmlvcml0eSB2YWx1ZSBhdmFpbGFibGUgb24gdGhpcyBzeXN0ZW0uCisgKi8KK1BKX0RFRihpbnQpIHBqX3RocmVhZF9nZXRfcHJpb19tYXgocGpfdGhyZWFkX3QgKnRocmVhZCkKK3sKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisgICAgaW50IHBvbGljeTsKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSh0aHJlYWQtPnRocmVhZCwgJnBvbGljeSwgJnBhcmFtKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gLTE7CisKKyNpZiBkZWZpbmVkKF9QT1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HKQorICAgIHJldHVybiBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSk7CisjZWxpZiBkZWZpbmVkIF9fT3BlbkJTRF9fCisgICAgLyogVGhyZWFkIHByaW8gbWluL21heCBhcmUgZGVjbGFyZWQgaW4gT3BlbkJTRCBwcml2YXRlIGhkciAqLworICAgIHJldHVybiAzMTsKKyNlbHNlCisgICAgcGpfYXNzZXJ0KCJwal90aHJlYWRfZ2V0X3ByaW9fbWF4KCkgbm90IHN1cHBvcnRlZCEiKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCisKKy8qCisgKiBHZXQgbmF0aXZlIHRocmVhZCBoYW5kbGUKKyAqLworUEpfREVGKHZvaWQqKSBwal90aHJlYWRfZ2V0X29zX2hhbmRsZShwal90aHJlYWRfdCAqdGhyZWFkKSAKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHRocmVhZCwgTlVMTCk7CisKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHJldHVybiAmdGhyZWFkLT50aHJlYWQ7CisjZWxzZQorICAgIHBqX2Fzc2VydCgicGpfdGhyZWFkX2lzX3JlZ2lzdGVyZWQoKSBjYWxsZWQgaW4gbm9uLXRocmVhZGluZyBtb2RlISIpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisKKy8qCisgKiBwal90aHJlYWRfcmVnaXN0ZXIoLi4pCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX3JlZ2lzdGVyICggY29uc3QgY2hhciAqY3N0cl90aHJlYWRfbmFtZSwKKwkJCQkJIHBqX3RocmVhZF9kZXNjIGRlc2MsCisJCQkJCSBwal90aHJlYWRfdCAqKnB0cl90aHJlYWQpCit7CisjaWYgUEpfSEFTX1RIUkVBRFMKKyAgICBjaGFyIHN0YWNrX3B0cjsKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICBwal90aHJlYWRfdCAqdGhyZWFkID0gKHBqX3RocmVhZF90ICopZGVzYzsKKyAgICBwal9zdHJfdCB0aHJlYWRfbmFtZSA9IHBqX3N0cigoY2hhciopY3N0cl90aHJlYWRfbmFtZSk7CisKKyAgICAvKiBTaXplIHNhbml0eSBjaGVjay4gKi8KKyAgICBpZiAoc2l6ZW9mKHBqX3RocmVhZF9kZXNjKSA8IHNpemVvZihwal90aHJlYWRfdCkpIHsKKwlwal9hc3NlcnQoISJOb3QgZW5vdWdoIHBqX3RocmVhZF9kZXNjIHNpemUhIik7CisJcmV0dXJuIFBKX0VCVUc7CisgICAgfQorCisgICAgLyogV2FybiBpZiB0aGlzIHRocmVhZCBoYXMgYmVlbiByZWdpc3RlcmVkIGJlZm9yZSAqLworICAgIGlmIChwal90aHJlYWRfbG9jYWxfZ2V0ICh0aHJlYWRfdGxzX2lkKSAhPSAwKSB7CisJLy8gMjAwNi0wMi0yNiBiZW5ueWxwOgorCS8vICBUaGlzIHdvdWxkbid0IHdvcmsgaW4gYWxsIGNhc2VzIS4KKwkvLyAgSWYgdGhyZWFkIGlzIGNyZWF0ZWQgYnkgZXh0ZXJuYWwgbW9kdWxlIChlLmcuIHNvdW5kIHRocmVhZCksCisJLy8gIHRocmVhZCBtYXkgYmUgcmV1c2VkIHdoaWxlIHRoZSBwb29sIHVzZWQgZm9yIHRoZSB0aHJlYWQgZGVzY3JpcHRvcgorCS8vICBoYXMgYmVlbiBkZWxldGVkIGJ5IGFwcGxpY2F0aW9uLgorCS8vKnRocmVhZF9wdHIgPSAocGpfdGhyZWFkX3QqKXBqX3RocmVhZF9sb2NhbF9nZXQgKHRocmVhZF90bHNfaWQpOworICAgICAgICAvL3JldHVybiBQSl9TVUNDRVNTOworCVBKX0xPRyg0LChUSElTX0ZJTEUsICJJbmZvOiBwb3NzaWJseSByZS1yZWdpc3RlcmluZyBleGlzdGluZyAiCisJCQkgICAgICJ0aHJlYWQiKSk7CisgICAgfQorCisgICAgLyogT24gdGhlIG90aGVyIGhhbmQsIGFsc28gd2FybiBpZiB0aGUgdGhyZWFkIGRlc2NyaXB0b3IgYnVmZmVyIHNlZW0gdG8KKyAgICAgKiBoYXZlIGJlZW4gdXNlZCB0byByZWdpc3RlciBvdGhlciB0aHJlYWRzLgorICAgICAqLworICAgIHBqX2Fzc2VydCh0aHJlYWQtPnNpZ25hdHVyZTEgIT0gU0lHTkFUVVJFMSB8fAorCSAgICAgIHRocmVhZC0+c2lnbmF0dXJlMiAhPSBTSUdOQVRVUkUyIHx8CisJICAgICAgKHRocmVhZC0+dGhyZWFkID09IHB0aHJlYWRfc2VsZigpKSk7CisKKyAgICAvKiBJbml0aWFsaXplIGFuZCBzZXQgdGhlIHRocmVhZCBlbnRyeS4gKi8KKyAgICBwal9iemVybyhkZXNjLCBzaXplb2Yoc3RydWN0IHBqX3RocmVhZF90KSk7CisgICAgdGhyZWFkLT50aHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKKyAgICB0aHJlYWQtPnNpZ25hdHVyZTEgPSBTSUdOQVRVUkUxOworICAgIHRocmVhZC0+c2lnbmF0dXJlMiA9IFNJR05BVFVSRTI7CisKKyAgICBpZihjc3RyX3RocmVhZF9uYW1lICYmIHBqX3N0cmxlbigmdGhyZWFkX25hbWUpIDwgc2l6ZW9mKHRocmVhZC0+b2JqX25hbWUpLTEpCisJcGpfYW5zaV9zbnByaW50Zih0aHJlYWQtPm9ial9uYW1lLCBzaXplb2YodGhyZWFkLT5vYmpfbmFtZSksIAorCQkJIGNzdHJfdGhyZWFkX25hbWUsIHRocmVhZC0+dGhyZWFkKTsKKyAgICBlbHNlCisJcGpfYW5zaV9zbnByaW50Zih0aHJlYWQtPm9ial9uYW1lLCBzaXplb2YodGhyZWFkLT5vYmpfbmFtZSksIAorCQkJICJ0aHIlcCIsICh2b2lkKil0aHJlYWQtPnRocmVhZCk7CisgICAgCisgICAgcmMgPSBwal90aHJlYWRfbG9jYWxfc2V0KHRocmVhZF90bHNfaWQsIHRocmVhZCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlwal9iemVybyhkZXNjLCBzaXplb2Yoc3RydWN0IHBqX3RocmVhZF90KSk7CisJcmV0dXJuIHJjOworICAgIH0KKworI2lmIGRlZmluZWQoUEpfT1NfSEFTX0NIRUNLX1NUQUNLKSAmJiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0shPTAKKyAgICB0aHJlYWQtPnN0a19zdGFydCA9ICZzdGFja19wdHI7CisgICAgdGhyZWFkLT5zdGtfc2l6ZSA9IDB4RkZGRkZGRkZVTDsKKyAgICB0aHJlYWQtPnN0a19tYXhfdXNhZ2UgPSAwOworI2Vsc2UKKyAgICBzdGFja19wdHIgPSAnXDAnOworI2VuZGlmCisKKyAgICAqcHRyX3RocmVhZCA9IHRocmVhZDsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbHNlCisgICAgcGpfdGhyZWFkX3QgKnRocmVhZCA9IChwal90aHJlYWRfdCopZGVzYzsKKyAgICAqcHRyX3RocmVhZCA9IHRocmVhZDsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbmRpZgorfQorCisvKgorICogcGpfdGhyZWFkX2luaXQodm9pZCkKKyAqLworcGpfc3RhdHVzX3QgcGpfdGhyZWFkX2luaXQodm9pZCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX3N0YXR1c190IHJjOworICAgIHBqX3RocmVhZF90ICpkdW1teTsKKworICAgIHJjID0gcGpfdGhyZWFkX2xvY2FsX2FsbG9jKCZ0aHJlYWRfdGxzX2lkICk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlyZXR1cm4gcmM7CisgICAgfQorICAgIHJldHVybiBwal90aHJlYWRfcmVnaXN0ZXIoInRociVwIiwgKGxvbmcqKSZtYWluX3RocmVhZCwgJmR1bW15KTsKKyNlbHNlCisgICAgUEpfTE9HKDIsKFRISVNfRklMRSwgIlRocmVhZCBpbml0IGVycm9yLiBUaHJlYWRpbmcgaXMgbm90IGVuYWJsZWQhIikpOworICAgIHJldHVybiBQSl9FSU5WQUxJRE9QOworI2VuZGlmCit9CisKKyNpZiBQSl9IQVNfVEhSRUFEUworLyoKKyAqIHRocmVhZF9tYWluKCkKKyAqCisgKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IGZvciBhbGwgdGhyZWFkcy4KKyAqLworc3RhdGljIHZvaWQgKnRocmVhZF9tYWluKHZvaWQgKnBhcmFtKQoreworICAgIHBqX3RocmVhZF90ICpyZWMgPSAocGpfdGhyZWFkX3QqKXBhcmFtOworICAgIHZvaWQgKnJlc3VsdDsKKyAgICBwal9zdGF0dXNfdCByYzsKKworI2lmIGRlZmluZWQoUEpfT1NfSEFTX0NIRUNLX1NUQUNLKSAmJiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0shPTAKKyAgICByZWMtPnN0a19zdGFydCA9IChjaGFyKikmcmVjOworI2VuZGlmCisKKyAgICAvKiBTZXQgY3VycmVudCB0aHJlYWQgaWQuICovCisgICAgcmMgPSBwal90aHJlYWRfbG9jYWxfc2V0KHRocmVhZF90bHNfaWQsIHJlYyk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlwal9hc3NlcnQoISJUaHJlYWQgVExTIElEIGlzIG5vdCBzZXQgKHBqX2luaXQoKSBlcnJvcj8pIik7CisgICAgfQorCisgICAgLyogQ2hlY2sgaWYgc3VzcGVuc2lvbiBpcyByZXF1aXJlZC4gKi8KKyAgICBpZiAocmVjLT5zdXNwZW5kZWRfbXV0ZXgpIHsKKwlwal9tdXRleF9sb2NrKHJlYy0+c3VzcGVuZGVkX211dGV4KTsKKwlwal9tdXRleF91bmxvY2socmVjLT5zdXNwZW5kZWRfbXV0ZXgpOworICAgIH0KKworICAgIFBKX0xPRyg2LChyZWMtPm9ial9uYW1lLCAiVGhyZWFkIHN0YXJ0ZWQiKSk7CisKKyAgICAvKiBDYWxsIHVzZXIncyBlbnRyeSEgKi8KKyAgICByZXN1bHQgPSAodm9pZCopKGxvbmcpKCpyZWMtPnByb2MpKHJlYy0+YXJnKTsKKworICAgIC8qIERvbmUuICovCisgICAgUEpfTE9HKDYsKHJlYy0+b2JqX25hbWUsICJUaHJlYWQgcXVpdHRpbmciKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKy8qCisgKiBwal90aHJlYWRfY3JlYXRlKC4uLikKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal90aHJlYWRfY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorCQkJCSAgICAgIGNvbnN0IGNoYXIgKnRocmVhZF9uYW1lLAorCQkJCSAgICAgIHBqX3RocmVhZF9wcm9jICpwcm9jLCAKKwkJCQkgICAgICB2b2lkICphcmcsCisJCQkJICAgICAgcGpfc2l6ZV90IHN0YWNrX3NpemUsIAorCQkJCSAgICAgIHVuc2lnbmVkIGZsYWdzLAorCQkJCSAgICAgIHBqX3RocmVhZF90ICoqcHRyX3RocmVhZCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX3RocmVhZF90ICpyZWM7CisgICAgcHRocmVhZF9hdHRyX3QgdGhyZWFkX2F0dHI7CisgICAgdm9pZCAqc3RhY2tfYWRkcjsKKyAgICBpbnQgcmM7CisKKyAgICBQSl9VTlVTRURfQVJHKHN0YWNrX2FkZHIpOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBvb2wgJiYgcHJvYyAmJiBwdHJfdGhyZWFkLCBQSl9FSU5WQUwpOworCisgICAgLyogQ3JlYXRlIHRocmVhZCByZWNvcmQgYW5kIGFzc2lnbiBuYW1lIGZvciB0aGUgdGhyZWFkICovCisgICAgcmVjID0gKHN0cnVjdCBwal90aHJlYWRfdCopIHBqX3Bvb2xfemFsbG9jKHBvb2wsIHNpemVvZihwal90aHJlYWRfdCkpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocmVjLCBQSl9FTk9NRU0pOworICAgIAorICAgIC8qIFNldCBuYW1lLiAqLworICAgIGlmICghdGhyZWFkX25hbWUpIAorCXRocmVhZF9uYW1lID0gInRociVwIjsKKyAgICAKKyAgICBpZiAoc3RyY2hyKHRocmVhZF9uYW1lLCAnJScpKSB7CisJcGpfYW5zaV9zbnByaW50ZihyZWMtPm9ial9uYW1lLCBQSl9NQVhfT0JKX05BTUUsIHRocmVhZF9uYW1lLCByZWMpOworICAgIH0gZWxzZSB7CisJc3RybmNweShyZWMtPm9ial9uYW1lLCB0aHJlYWRfbmFtZSwgUEpfTUFYX09CSl9OQU1FKTsKKwlyZWMtPm9ial9uYW1lW1BKX01BWF9PQkpfTkFNRS0xXSA9ICdcMCc7CisgICAgfQorCisgICAgLyogU2V0IGRlZmF1bHQgc3RhY2sgc2l6ZSAqLworICAgIGlmIChzdGFja19zaXplID09IDApCisJc3RhY2tfc2l6ZSA9IFBKX1RIUkVBRF9ERUZBVUxUX1NUQUNLX1NJWkU7CisKKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisgICAgcmVjLT5zdGtfc2l6ZSA9IHN0YWNrX3NpemU7CisgICAgcmVjLT5zdGtfbWF4X3VzYWdlID0gMDsKKyNlbmRpZgorCisgICAgLyogRW11bGF0ZSBzdXNwZW5kZWQgdGhyZWFkIHdpdGggbXV0ZXguICovCisgICAgaWYgKGZsYWdzICYgUEpfVEhSRUFEX1NVU1BFTkRFRCkgeworCXJjID0gcGpfbXV0ZXhfY3JlYXRlX3NpbXBsZShwb29sLCBOVUxMLCAmcmVjLT5zdXNwZW5kZWRfbXV0ZXgpOworCWlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIHJldHVybiByYzsKKwl9CisKKwlwal9tdXRleF9sb2NrKHJlYy0+c3VzcGVuZGVkX211dGV4KTsKKyAgICB9IGVsc2UgeworCXBqX2Fzc2VydChyZWMtPnN1c3BlbmRlZF9tdXRleCA9PSBOVUxMKTsKKyAgICB9CisgICAgCisKKyAgICAvKiBJbml0IHRocmVhZCBhdHRyaWJ1dGVzICovCisgICAgcHRocmVhZF9hdHRyX2luaXQoJnRocmVhZF9hdHRyKTsKKworI2lmIGRlZmluZWQoUEpfVEhSRUFEX1NFVF9TVEFDS19TSVpFKSAmJiBQSl9USFJFQURfU0VUX1NUQUNLX1NJWkUhPTAKKyAgICAvKiBTZXQgdGhyZWFkJ3Mgc3RhY2sgc2l6ZSAqLworICAgIHJjID0gcHRocmVhZF9hdHRyX3NldHN0YWNrc2l6ZSgmdGhyZWFkX2F0dHIsIHN0YWNrX3NpemUpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmMpOworI2VuZGlmCS8qIFBKX1RIUkVBRF9TRVRfU1RBQ0tfU0laRSAqLworCisKKyNpZiBkZWZpbmVkKFBKX1RIUkVBRF9BTExPQ0FURV9TVEFDSykgJiYgUEpfVEhSRUFEX0FMTE9DQVRFX1NUQUNLIT0wCisgICAgLyogQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgc3RhY2sgKi8KKyAgICBzdGFja19hZGRyID0gcGpfcG9vbF9hbGxvYyhwb29sLCBzdGFja19zaXplKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHN0YWNrX2FkZHIsIFBKX0VOT01FTSk7CisKKyAgICByYyA9IHB0aHJlYWRfYXR0cl9zZXRzdGFja2FkZHIoJnRocmVhZF9hdHRyLCBzdGFja19hZGRyKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHJjKTsKKyNlbmRpZgkvKiBQSl9USFJFQURfQUxMT0NBVEVfU1RBQ0sgKi8KKworCisgICAgLyogQ3JlYXRlIHRoZSB0aHJlYWQuICovCisgICAgcmVjLT5wcm9jID0gcHJvYzsKKyAgICByZWMtPmFyZyA9IGFyZzsKKyAgICByYyA9IHB0aHJlYWRfY3JlYXRlKCAmcmVjLT50aHJlYWQsICZ0aHJlYWRfYXR0ciwgJnRocmVhZF9tYWluLCByZWMpOworICAgIGlmIChyYyAhPSAwKSB7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihyYyk7CisgICAgfQorCisgICAgKnB0cl90aHJlYWQgPSByZWM7CisKKyAgICBQSl9MT0coNiwgKHJlYy0+b2JqX25hbWUsICJUaHJlYWQgY3JlYXRlZCIpKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbHNlCisgICAgcGpfYXNzZXJ0KCEiVGhyZWFkaW5nIGlzIGRpc2FibGVkISIpOworICAgIHJldHVybiBQSl9FSU5WQUxJRE9QOworI2VuZGlmCit9CisKKy8qCisgKiBwal90aHJlYWQtZ2V0X25hbWUoKQorICovCitQSl9ERUYoY29uc3QgY2hhciopIHBqX3RocmVhZF9nZXRfbmFtZShwal90aHJlYWRfdCAqcCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX3RocmVhZF90ICpyZWMgPSAocGpfdGhyZWFkX3QqKXA7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocCwgIiIpOworCisgICAgcmV0dXJuIHJlYy0+b2JqX25hbWU7CisjZWxzZQorICAgIHJldHVybiAiIjsKKyNlbmRpZgorfQorCisvKgorICogcGpfdGhyZWFkX3Jlc3VtZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX3Jlc3VtZShwal90aHJlYWRfdCAqcCkKK3sKKyAgICBwal9zdGF0dXNfdCByYzsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihwLCBQSl9FSU5WQUwpOworCisgICAgcmMgPSBwal9tdXRleF91bmxvY2socC0+c3VzcGVuZGVkX211dGV4KTsKKworICAgIHJldHVybiByYzsKK30KKworLyoKKyAqIHBqX3RocmVhZF90aGlzKCkKKyAqLworUEpfREVGKHBqX3RocmVhZF90KikgcGpfdGhyZWFkX3RoaXModm9pZCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX3RocmVhZF90ICpyZWMgPSAocGpfdGhyZWFkX3QqKXBqX3RocmVhZF9sb2NhbF9nZXQodGhyZWFkX3Rsc19pZCk7CisgICAgCisgICAgaWYgKHJlYyA9PSBOVUxMKSB7CisJcGpfYXNzZXJ0KCEiQ2FsbGluZyBwamxpYiBmcm9tIHVua25vd24vZXh0ZXJuYWwgdGhyZWFkLiBZb3UgbXVzdCAiCisJCSAgICJyZWdpc3RlciBleHRlcm5hbCB0aHJlYWRzIHdpdGggcGpfdGhyZWFkX3JlZ2lzdGVyKCkgIgorCQkgICAiYmVmb3JlIGNhbGxpbmcgYW55IHBqbGliIGZ1bmN0aW9ucy4iKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE1VU1QgTk9UIGNoZWNrIHN0YWNrIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKyAgICAgKiBieSBQSl9DSEVDS19TVEFDSygpIGl0c2VsZiEhIQorICAgICAqCisgICAgICovCisKKyAgICByZXR1cm4gcmVjOworI2Vsc2UKKyAgICBwal9hc3NlcnQoISJUaHJlYWRpbmcgaXMgbm90IGVuYWJsZWQhIik7CisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKK30KKworLyoKKyAqIHBqX3RocmVhZF9qb2luKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal90aHJlYWRfam9pbihwal90aHJlYWRfdCAqcCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX3RocmVhZF90ICpyZWMgPSAocGpfdGhyZWFkX3QgKilwOworICAgIHZvaWQgKnJldDsKKyAgICBpbnQgcmVzdWx0OworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIFBKX0xPRyg2LCAocGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUsICJKb2luaW5nIHRocmVhZCAlcyIsIHAtPm9ial9uYW1lKSk7CisgICAgcmVzdWx0ID0gcHRocmVhZF9qb2luKCByZWMtPnRocmVhZCwgJnJldCk7CisKKyAgICBpZiAocmVzdWx0ID09IDApCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgZWxzZSB7CisJLyogQ2FsbGluZyBwdGhyZWFkX2pvaW4oKSBvbiBhIHRocmVhZCB0aGF0IG5vIGxvbmdlciBleGlzdHMgYW5kIAorCSAqIGdldHRpbmcgYmFjayBFU1JDSCBpc24ndCBhbiBlcnJvciAoaW4gdGhpcyBjb250ZXh0KS4gCisJICogVGhhbmtzIFBoaWwgVG9ycmUgPHB0b3JyZUB6ZXRyb24uY29tPi4KKwkgKi8KKwlyZXR1cm4gcmVzdWx0PT1FU1JDSCA/IFBKX1NVQ0NFU1MgOiBQSl9SRVRVUk5fT1NfRVJST1IocmVzdWx0KTsKKyAgICB9CisjZWxzZQorICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgcGpfYXNzZXJ0KCEiTm8gbXVsdGl0aHJlYWRpbmcgc3VwcG9ydCEiKTsKKyAgICByZXR1cm4gUEpfRUlOVkFMSURPUDsKKyNlbmRpZgorfQorCisvKgorICogcGpfdGhyZWFkX2Rlc3Ryb3koKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9kZXN0cm95KHBqX3RocmVhZF90ICpwKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvKiBEZXN0cm95IG11dGV4IHVzZWQgdG8gc3VzcGVuZCB0aHJlYWQgKi8KKyAgICBpZiAocC0+c3VzcGVuZGVkX211dGV4KSB7CisJcGpfbXV0ZXhfZGVzdHJveShwLT5zdXNwZW5kZWRfbXV0ZXgpOworCXAtPnN1c3BlbmRlZF9tdXRleCA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBwal90aHJlYWRfc2xlZXAoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9zbGVlcCh1bnNpZ25lZCBtc2VjKQoreworLyogVE9ETzogc2hvdWxkIGNoYW5nZSB0aGlzIHRvIHNvbWV0aGluZyBsaWtlIFBKX09TX0hBU19OQU5PU0xFRVAgKi8KKyNpZiBkZWZpbmVkKFBKX1JURU1TKSAmJiBQSl9SVEVNUyE9MAorICAgIGVudW0geyBOQU5PU0VDX1BFUl9NU0VDID0gMTAwMDAwMCB9OworICAgIHN0cnVjdCB0aW1lc3BlYyByZXE7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIHJlcS50dl9zZWMgPSBtc2VjIC8gMTAwMDsKKyAgICByZXEudHZfbnNlYyA9IChtc2VjICUgMTAwMCkgKiBOQU5PU0VDX1BFUl9NU0VDOworCisgICAgaWYgKG5hbm9zbGVlcCgmcmVxLCBOVUxMKSA9PSAwKQorCXJldHVybiBQSl9TVUNDRVNTOworCisgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX29zX2Vycm9yKCkpOworI2Vsc2UKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgcGpfc2V0X29zX2Vycm9yKDApOworCisgICAgdXNsZWVwKG1zZWMgKiAxMDAwKTsKKworICAgIC8qIE1hY09TIFggKHJlcG9ydGVkIG9uIDEwLjUpIHNlZW1zIHRvIGFsd2F5cyBzZXQgZXJybm8gdG8gRVRJTUVET1VULgorICAgICAqIEl0IGRvZXMgc28gYmVjYXVzZSB1c2xlZXAoKSBpcyBkZWNsYXJlZCB0byByZXR1cm4gaW50LCBhbmQgd2UncmUKKyAgICAgKiBzdXBwb3NlZCB0byBjaGVjayBmb3IgZXJybm8gb25seSB3aGVuIHVzbGVlcCgpIHJldHVybnMgbm9uLXplcm8uIAorICAgICAqIFVuZm9ydHVuYXRlbHksIHVzbGVlcCgpIGlzIGRlY2xhcmVkIHRvIHJldHVybiB2b2lkIGluIG90aGVyIHBsYXRmb3JtcworICAgICAqIHNvIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGFsd2F5cyBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSAodW5sZXNzIAorICAgICAqIHdlIGFkZCBhIGRldGVjdGlvbiByb3V0aW5lIGluIGF1dG9jb25mKS4KKyAgICAgKgorICAgICAqIEFzIGEgd29ya2Fyb3VuZCwgaGVyZSB3ZSBjaGVjayBpZiBFVElNRURPVVQgaXMgcmV0dXJuZWQgYW5kCisgICAgICogcmV0dXJuIHN1Y2Nlc3NmdWxseSBpZiBpdCBpcy4KKyAgICAgKi8KKyAgICBpZiAocGpfZ2V0X25hdGl2ZV9vc19lcnJvcigpID09IEVUSU1FRE9VVCkKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKworICAgIHJldHVybiBwal9nZXRfb3NfZXJyb3IoKTsKKworI2VuZGlmCS8qIFBKX1JURU1TICovCit9CisKKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisvKgorICogcGpfdGhyZWFkX2NoZWNrX3N0YWNrKCkKKyAqIEltcGxlbWVudGF0aW9uIGZvciBQSl9DSEVDS19TVEFDSygpCisgKi8KK1BKX0RFRih2b2lkKSBwal90aHJlYWRfY2hlY2tfc3RhY2soY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpCit7CisgICAgY2hhciBzdGtfcHRyOworICAgIHBqX3VpbnQzMl90IHVzYWdlOworICAgIHBqX3RocmVhZF90ICp0aHJlYWQgPSBwal90aHJlYWRfdGhpcygpOworCisgICAgLyogQ2FsY3VsYXRlIGN1cnJlbnQgdXNhZ2UuICovCisgICAgdXNhZ2UgPSAoJnN0a19wdHIgPiB0aHJlYWQtPnN0a19zdGFydCkgPyAmc3RrX3B0ciAtIHRocmVhZC0+c3RrX3N0YXJ0IDoKKwkJdGhyZWFkLT5zdGtfc3RhcnQgLSAmc3RrX3B0cjsKKworICAgIC8qIEFzc2VydCBpZiBzdGFjayB1c2FnZSBpcyBkYW5nZXJvdXNseSBoaWdoLiAqLworICAgIHBqX2Fzc2VydCgiU1RBQ0sgT1ZFUkZMT1chISAiICYmICh1c2FnZSA8PSB0aHJlYWQtPnN0a19zaXplIC0gMTI4KSk7CisKKyAgICAvKiBLZWVwIHN0YXRpc3RpYy4gKi8KKyAgICBpZiAodXNhZ2UgPiB0aHJlYWQtPnN0a19tYXhfdXNhZ2UpIHsKKwl0aHJlYWQtPnN0a19tYXhfdXNhZ2UgPSB1c2FnZTsKKwl0aHJlYWQtPmNhbGxlcl9maWxlID0gZmlsZTsKKwl0aHJlYWQtPmNhbGxlcl9saW5lID0gbGluZTsKKyAgICB9Cit9CisKKy8qCisgKiBwal90aHJlYWRfZ2V0X3N0YWNrX21heF91c2FnZSgpCisgKi8KK1BKX0RFRihwal91aW50MzJfdCkgcGpfdGhyZWFkX2dldF9zdGFja19tYXhfdXNhZ2UocGpfdGhyZWFkX3QgKnRocmVhZCkKK3sKKyAgICByZXR1cm4gdGhyZWFkLT5zdGtfbWF4X3VzYWdlOworfQorCisvKgorICogcGpfdGhyZWFkX2dldF9zdGFja19pbmZvKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal90aHJlYWRfZ2V0X3N0YWNrX2luZm8oIHBqX3RocmVhZF90ICp0aHJlYWQsCisJCQkJCSAgICAgIGNvbnN0IGNoYXIgKipmaWxlLAorCQkJCQkgICAgICBpbnQgKmxpbmUgKQoreworICAgIHBqX2Fzc2VydCh0aHJlYWQpOworCisgICAgKmZpbGUgPSB0aHJlYWQtPmNhbGxlcl9maWxlOworICAgICpsaW5lID0gdGhyZWFkLT5jYWxsZXJfbGluZTsKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmCS8qIFBKX09TX0hBU19DSEVDS19TVEFDSyAqLworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvKgorICogcGpfYXRvbWljX2NyZWF0ZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfYXRvbWljX2NyZWF0ZSggcGpfcG9vbF90ICpwb29sLCAKKwkJCQkgICAgICBwal9hdG9taWNfdmFsdWVfdCBpbml0aWFsLAorCQkJCSAgICAgIHBqX2F0b21pY190ICoqcHRyX2F0b21pYykKK3sKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICBwal9hdG9taWNfdCAqYXRvbWljX3ZhcjsKKworICAgIGF0b21pY192YXIgPSBQSl9QT09MX1pBTExPQ19UKHBvb2wsIHBqX2F0b21pY190KTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oYXRvbWljX3ZhciwgUEpfRU5PTUVNKTsKKyAgICAKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHJjID0gcGpfbXV0ZXhfY3JlYXRlKHBvb2wsICJhdG0lcCIsIFBKX01VVEVYX1NJTVBMRSwgJmF0b21pY192YXItPm11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gcmM7CisjZW5kaWYKKyAgICBhdG9taWNfdmFyLT52YWx1ZSA9IGluaXRpYWw7CisKKyAgICAqcHRyX2F0b21pYyA9IGF0b21pY192YXI7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBwal9hdG9taWNfZGVzdHJveSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfYXRvbWljX2Rlc3Ryb3koIHBqX2F0b21pY190ICphdG9taWNfdmFyICkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGF0b21pY192YXIsIFBKX0VJTlZBTCk7CisjaWYgUEpfSEFTX1RIUkVBRFMKKyAgICByZXR1cm4gcGpfbXV0ZXhfZGVzdHJveSggYXRvbWljX3Zhci0+bXV0ZXggKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworLyoKKyAqIHBqX2F0b21pY19zZXQoKQorICovCitQSl9ERUYodm9pZCkgcGpfYXRvbWljX3NldChwal9hdG9taWNfdCAqYXRvbWljX3ZhciwgcGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworI2lmIFBKX0hBU19USFJFQURTCisgICAgcGpfbXV0ZXhfbG9jayggYXRvbWljX3Zhci0+bXV0ZXggKTsKKyNlbmRpZgorICAgIGF0b21pY192YXItPnZhbHVlID0gdmFsdWU7CisjaWYgUEpfSEFTX1RIUkVBRFMKKyAgICBwal9tdXRleF91bmxvY2soIGF0b21pY192YXItPm11dGV4KTsKKyNlbmRpZiAKK30KKworLyoKKyAqIHBqX2F0b21pY19nZXQoKQorICovCitQSl9ERUYocGpfYXRvbWljX3ZhbHVlX3QpIHBqX2F0b21pY19nZXQocGpfYXRvbWljX3QgKmF0b21pY192YXIpCit7CisgICAgcGpfYXRvbWljX3ZhbHVlX3Qgb2xkdmFsOworICAgIAorICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX211dGV4X2xvY2soIGF0b21pY192YXItPm11dGV4ICk7CisjZW5kaWYKKyAgICBvbGR2YWwgPSBhdG9taWNfdmFyLT52YWx1ZTsKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX211dGV4X3VubG9jayggYXRvbWljX3Zhci0+bXV0ZXgpOworI2VuZGlmCisgICAgcmV0dXJuIG9sZHZhbDsKK30KKworLyoKKyAqIHBqX2F0b21pY19pbmNfYW5kX2dldCgpCisgKi8KK1BKX0RFRihwal9hdG9taWNfdmFsdWVfdCkgcGpfYXRvbWljX2luY19hbmRfZ2V0KHBqX2F0b21pY190ICphdG9taWNfdmFyKQoreworICAgIHBqX2F0b21pY192YWx1ZV90IG5ld192YWx1ZTsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX211dGV4X2xvY2soIGF0b21pY192YXItPm11dGV4ICk7CisjZW5kaWYKKyAgICBuZXdfdmFsdWUgPSArK2F0b21pY192YXItPnZhbHVlOworI2lmIFBKX0hBU19USFJFQURTCisgICAgcGpfbXV0ZXhfdW5sb2NrKCBhdG9taWNfdmFyLT5tdXRleCk7CisjZW5kaWYKKworICAgIHJldHVybiBuZXdfdmFsdWU7Cit9CisvKgorICogcGpfYXRvbWljX2luYygpCisgKi8KK1BKX0RFRih2b2lkKSBwal9hdG9taWNfaW5jKHBqX2F0b21pY190ICphdG9taWNfdmFyKQoreworICAgIHBqX2F0b21pY19pbmNfYW5kX2dldChhdG9taWNfdmFyKTsKK30KKworLyoKKyAqIHBqX2F0b21pY19kZWNfYW5kX2dldCgpCisgKi8KK1BKX0RFRihwal9hdG9taWNfdmFsdWVfdCkgcGpfYXRvbWljX2RlY19hbmRfZ2V0KHBqX2F0b21pY190ICphdG9taWNfdmFyKQoreworICAgIHBqX2F0b21pY192YWx1ZV90IG5ld192YWx1ZTsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX211dGV4X2xvY2soIGF0b21pY192YXItPm11dGV4ICk7CisjZW5kaWYKKyAgICBuZXdfdmFsdWUgPSAtLWF0b21pY192YXItPnZhbHVlOworI2lmIFBKX0hBU19USFJFQURTCisgICAgcGpfbXV0ZXhfdW5sb2NrKCBhdG9taWNfdmFyLT5tdXRleCk7CisjZW5kaWYKKworICAgIHJldHVybiBuZXdfdmFsdWU7Cit9CisKKy8qCisgKiBwal9hdG9taWNfZGVjKCkKKyAqLworUEpfREVGKHZvaWQpIHBqX2F0b21pY19kZWMocGpfYXRvbWljX3QgKmF0b21pY192YXIpCit7CisgICAgcGpfYXRvbWljX2RlY19hbmRfZ2V0KGF0b21pY192YXIpOworfQorCisvKgorICogcGpfYXRvbWljX2FkZF9hbmRfZ2V0KCkKKyAqLyAKK1BKX0RFRihwal9hdG9taWNfdmFsdWVfdCkgcGpfYXRvbWljX2FkZF9hbmRfZ2V0KCBwal9hdG9taWNfdCAqYXRvbWljX3ZhciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUgKQoreworICAgIHBqX2F0b21pY192YWx1ZV90IG5ld192YWx1ZTsKKworI2lmIFBKX0hBU19USFJFQURTCisgICAgcGpfbXV0ZXhfbG9jayhhdG9taWNfdmFyLT5tdXRleCk7CisjZW5kaWYKKyAgICAKKyAgICBhdG9taWNfdmFyLT52YWx1ZSArPSB2YWx1ZTsKKyAgICBuZXdfdmFsdWUgPSBhdG9taWNfdmFyLT52YWx1ZTsKKworI2lmIFBKX0hBU19USFJFQURTCisgICAgcGpfbXV0ZXhfdW5sb2NrKGF0b21pY192YXItPm11dGV4KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG5ld192YWx1ZTsKK30KKworLyoKKyAqIHBqX2F0b21pY19hZGQoKQorICovIAorUEpfREVGKHZvaWQpIHBqX2F0b21pY19hZGQoIHBqX2F0b21pY190ICphdG9taWNfdmFyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9hdG9taWNfdmFsdWVfdCB2YWx1ZSApCit7CisgICAgcGpfYXRvbWljX2FkZF9hbmRfZ2V0KGF0b21pY192YXIsIHZhbHVlKTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLyoKKyAqIHBqX3RocmVhZF9sb2NhbF9hbGxvYygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2xvY2FsX2FsbG9jKGxvbmcgKnBfaW5kZXgpCit7CisjaWYgUEpfSEFTX1RIUkVBRFMKKyAgICBwdGhyZWFkX2tleV90IGtleTsKKyAgICBpbnQgcmM7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBfaW5kZXggIT0gTlVMTCwgUEpfRUlOVkFMKTsKKworICAgIHBqX2Fzc2VydCggc2l6ZW9mKHB0aHJlYWRfa2V5X3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgaWYgKChyYz1wdGhyZWFkX2tleV9jcmVhdGUoJmtleSwgTlVMTCkpICE9IDApCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihyYyk7CisKKyAgICAqcF9pbmRleCA9IGtleTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbHNlCisgICAgaW50IGk7CisgICAgZm9yIChpPTA7IGk8TUFYX1RIUkVBRFM7ICsraSkgeworCWlmICh0bHNfZmxhZ1tpXSA9PSAwKQorCSAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGkgPT0gTUFYX1RIUkVBRFMpIAorCXJldHVybiBQSl9FVE9PTUFOWTsKKyAgICAKKyAgICB0bHNfZmxhZ1tpXSA9IDE7CisgICAgdGxzW2ldID0gTlVMTDsKKworICAgICpwX2luZGV4ID0gaTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbmRpZgorfQorCisvKgorICogcGpfdGhyZWFkX2xvY2FsX2ZyZWUoKQorICovCitQSl9ERUYodm9pZCkgcGpfdGhyZWFkX2xvY2FsX2ZyZWUobG9uZyBpbmRleCkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworI2lmIFBKX0hBU19USFJFQURTCisgICAgcHRocmVhZF9rZXlfZGVsZXRlKGluZGV4KTsKKyNlbHNlCisgICAgdGxzX2ZsYWdbaW5kZXhdID0gMDsKKyNlbmRpZgorfQorCisvKgorICogcGpfdGhyZWFkX2xvY2FsX3NldCgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2xvY2FsX3NldChsb25nIGluZGV4LCB2b2lkICp2YWx1ZSkKK3sKKyAgICAvL0Nhbid0IGNoZWNrIHN0YWNrIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlCisgICAgLy9iZWdpbm5pbmcgYmVmb3JlIG1haW4gdGhyZWFkIGlzIGluaXRpYWxpemVkLgorICAgIC8vUEpfQ0hFQ0tfU1RBQ0soKTsKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIGludCByYz1wdGhyZWFkX3NldHNwZWNpZmljKGluZGV4LCB2YWx1ZSk7CisgICAgcmV0dXJuIHJjPT0wID8gUEpfU1VDQ0VTUyA6IFBKX1JFVFVSTl9PU19FUlJPUihyYyk7CisjZWxzZQorICAgIHBqX2Fzc2VydChpbmRleCA+PSAwICYmIGluZGV4IDwgTUFYX1RIUkVBRFMpOworICAgIHRsc1tpbmRleF0gPSB2YWx1ZTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbmRpZgorfQorCitQSl9ERUYodm9pZCopIHBqX3RocmVhZF9sb2NhbF9nZXQobG9uZyBpbmRleCkKK3sKKyAgICAvL0Nhbid0IGNoZWNrIHN0YWNrIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKyAgICAvL2J5IFBKX0NIRUNLX1NUQUNLKCkgaXRzZWxmISEhCisgICAgLy9QSl9DSEVDS19TVEFDSygpOworI2lmIFBKX0hBU19USFJFQURTCisgICAgcmV0dXJuIHB0aHJlYWRfZ2V0c3BlY2lmaWMoaW5kZXgpOworI2Vsc2UKKyAgICBwal9hc3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8IE1BWF9USFJFQURTKTsKKyAgICByZXR1cm4gdGxzW2luZGV4XTsKKyNlbmRpZgorfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitQSl9ERUYodm9pZCkgcGpfZW50ZXJfY3JpdGljYWxfc2VjdGlvbih2b2lkKQoreworI2lmIFBKX0hBU19USFJFQURTCisgICAgcGpfbXV0ZXhfbG9jaygmY3JpdGljYWxfc2VjdGlvbik7CisjZW5kaWYKK30KKworUEpfREVGKHZvaWQpIHBqX2xlYXZlX2NyaXRpY2FsX3NlY3Rpb24odm9pZCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX211dGV4X3VubG9jaygmY3JpdGljYWxfc2VjdGlvbik7CisjZW5kaWYKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjaWYgZGVmaW5lZChQSl9MSU5VWCkgJiYgUEpfTElOVVghPTAKK1BKX0JFR0lOX0RFQ0wKK1BKX0RFQ0woaW50KSBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKHB0aHJlYWRfbXV0ZXhhdHRyX3QqLGludCk7CitQSl9FTkRfREVDTAorI2VuZGlmCisKK3N0YXRpYyBwal9zdGF0dXNfdCBpbml0X211dGV4KHBqX211dGV4X3QgKm11dGV4LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHB0aHJlYWRfbXV0ZXhhdHRyX3QgYXR0cjsKKyAgICBpbnQgcmM7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgcmMgPSBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZhdHRyKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHJjKTsKKworICAgIGlmICh0eXBlID09IFBKX01VVEVYX1NJTVBMRSkgeworI2lmIChkZWZpbmVkKFBKX0xJTlVYKSAmJiBQSl9MSU5VWCE9MCkgfHwgXAorICAgIGRlZmluZWQoUEpfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUpCisJcmMgPSBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZhdHRyLCBQVEhSRUFEX01VVEVYX0ZBU1RfTlApOworI2VsaWYgKGRlZmluZWQoUEpfUlRFTVMpICYmIFBKX1JURU1TIT0wKSB8fCBcCisgICAgICAgZGVmaW5lZChQSl9QVEhSRUFEX01VVEVYQVRUUl9UX0hBU19SRUNVUlNJVkUpCisJLyogTm90aGluZyB0byBkbywgZGVmYXVsdCBpcyBzaW1wbGUgKi8KKyNlbHNlCisJcmMgPSBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZhdHRyLCBQVEhSRUFEX01VVEVYX05PUk1BTCk7CisjZW5kaWYKKyAgICB9IGVsc2UgeworI2lmIChkZWZpbmVkKFBKX0xJTlVYKSAmJiBQSl9MSU5VWCE9MCkgfHwgXAorICAgICBkZWZpbmVkKFBKX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFKQorCXJjID0gcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmYXR0ciwgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlApOworI2VsaWYgKGRlZmluZWQoUEpfUlRFTVMpICYmIFBKX1JURU1TIT0wKSB8fCBcCisgICAgICAgZGVmaW5lZChQSl9QVEhSRUFEX01VVEVYQVRUUl9UX0hBU19SRUNVUlNJVkUpCisJLy8gUGhpbCBUb3JyZSA8cHRvcnJlQHpldHJvbi5jb20+OgorCS8vIFRoZSBSVEVNUyBpbXBsZW1lbnRhdGlvbiBvZiBQT1NJWCBtdXRleGVzIGRvZXNuJ3QgaW5jbHVkZSAKKwkvLyBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCksIHNvIHdoYXQgZm9sbG93cyBpcyBhIGhhY2sKKwkvLyB1bnRpbCBJIGdldCBSVEVNUyBwYXRjaGVkIHRvIHN1cHBvcnQgdGhlIHNldC9nZXQgZnVuY3Rpb25zLgorCS8vCisJLy8gTW9yZSBpbmZvOgorCS8vICAgbmV3bGliJ3MgcHRocmVhZCBhbHNvIGxhY2tzIHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoKSwKKwkvLyAgIGJ1dCBpdCBzZWVtcyB0byBoYXZlIG11dGV4YXR0ci5yZWN1cnNpdmUuCisJUEpfVE9ETyhGSVhfUlRFTVNfUkVDVVJTSVZFX01VVEVYX1RZUEUpCisJYXR0ci5yZWN1cnNpdmUgPSAxOworI2Vsc2UKKwlyYyA9IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJmF0dHIsIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICBpZiAocmMgIT0gMCkgeworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmMpOworICAgIH0KKworICAgIHJjID0gcHRocmVhZF9tdXRleF9pbml0KCZtdXRleC0+bXV0ZXgsICZhdHRyKTsKKyAgICBpZiAocmMgIT0gMCkgeworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmMpOworICAgIH0KKyAgICAKKyAgICByYyA9IHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3koJmF0dHIpOworICAgIGlmIChyYyAhPSAwKSB7CisJcGpfc3RhdHVzX3Qgc3RhdHVzID0gUEpfUkVUVVJOX09TX0VSUk9SKHJjKTsKKwlwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4LT5tdXRleCk7CisJcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyNpZiBQSl9ERUJVRworICAgIC8qIFNldCBvd25lci4gKi8KKyAgICBtdXRleC0+bmVzdGluZ19sZXZlbCA9IDA7CisgICAgbXV0ZXgtPm93bmVyID0gTlVMTDsKKyNlbmRpZgorCisgICAgLyogU2V0IG5hbWUuICovCisgICAgaWYgKCFuYW1lKSB7CisJbmFtZSA9ICJtdHglcCI7CisgICAgfQorICAgIGlmIChzdHJjaHIobmFtZSwgJyUnKSkgeworCXBqX2Fuc2lfc25wcmludGYobXV0ZXgtPm9ial9uYW1lLCBQSl9NQVhfT0JKX05BTUUsIG5hbWUsIG11dGV4KTsKKyAgICB9IGVsc2UgeworCXN0cm5jcHkobXV0ZXgtPm9ial9uYW1lLCBuYW1lLCBQSl9NQVhfT0JKX05BTUUpOworCW11dGV4LT5vYmpfbmFtZVtQSl9NQVhfT0JKX05BTUUtMV0gPSAnXDAnOworICAgIH0KKworICAgIFBKX0xPRyg2LCAobXV0ZXgtPm9ial9uYW1lLCAiTXV0ZXggY3JlYXRlZCIpKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbHNlIC8qIFBKX0hBU19USFJFQURTICovCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisjZW5kaWYKK30KKworLyoKKyAqIHBqX211dGV4X2NyZWF0ZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfY3JlYXRlKHBqX3Bvb2xfdCAqcG9vbCwgCisJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsIAorCQkJCSAgICBpbnQgdHlwZSwKKwkJCQkgICAgcGpfbXV0ZXhfdCAqKnB0cl9tdXRleCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX3N0YXR1c190IHJjOworICAgIHBqX211dGV4X3QgKm11dGV4OworCisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIHB0cl9tdXRleCwgUEpfRUlOVkFMKTsKKworICAgIG11dGV4ID0gUEpfUE9PTF9BTExPQ19UKHBvb2wsIHBqX211dGV4X3QpOworICAgIFBKX0FTU0VSVF9SRVRVUk4obXV0ZXgsIFBKX0VOT01FTSk7CisKKyAgICBpZiAoKHJjPWluaXRfbXV0ZXgobXV0ZXgsIG5hbWUsIHR5cGUpKSAhPSBQSl9TVUNDRVNTKQorCXJldHVybiByYzsKKyAgICAKKyAgICAqcHRyX211dGV4ID0gbXV0ZXg7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisjZWxzZSAvKiBQSl9IQVNfVEhSRUFEUyAqLworICAgICpwdHJfbXV0ZXggPSAocGpfbXV0ZXhfdCopMTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbmRpZgorfQorCisvKgorICogcGpfbXV0ZXhfY3JlYXRlX3NpbXBsZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfY3JlYXRlX3NpbXBsZSggcGpfcG9vbF90ICpwb29sLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJICAgIHBqX211dGV4X3QgKiptdXRleCApCit7CisgICAgcmV0dXJuIHBqX211dGV4X2NyZWF0ZShwb29sLCBuYW1lLCBQSl9NVVRFWF9TSU1QTEUsIG11dGV4KTsKK30KKworLyoKKyAqIHBqX211dGV4X2NyZWF0ZV9yZWN1cnNpdmUoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X2NyZWF0ZV9yZWN1cnNpdmUoIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSAgICAgICBwal9tdXRleF90ICoqbXV0ZXggKQoreworICAgIHJldHVybiBwal9tdXRleF9jcmVhdGUocG9vbCwgbmFtZSwgUEpfTVVURVhfUkVDVVJTRSwgbXV0ZXgpOworfQorCisvKgorICogcGpfbXV0ZXhfbG9jaygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfbG9jayhwal9tdXRleF90ICptdXRleCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihtdXRleCwgUEpfRUlOVkFMKTsKKworI2lmIFBKX0RFQlVHCisgICAgUEpfTE9HKDYsKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4OiB0aHJlYWQgJXMgaXMgd2FpdGluZyAobXV0ZXggb3duZXI9JXMpIiwgCisJCQkJcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUsCisJCQkJbXV0ZXgtPm93bmVyX25hbWUpKTsKKyNlbHNlCisgICAgUEpfTE9HKDYsKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4OiB0aHJlYWQgJXMgaXMgd2FpdGluZyIsIAorCQkJCXBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lKSk7CisjZW5kaWYKKworICAgIHN0YXR1cyA9IHB0aHJlYWRfbXV0ZXhfbG9jayggJm11dGV4LT5tdXRleCApOworCisKKyNpZiBQSl9ERUJVRworICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCW11dGV4LT5vd25lciA9IHBqX3RocmVhZF90aGlzKCk7CisJcGpfYW5zaV9zdHJjcHkobXV0ZXgtPm93bmVyX25hbWUsIG11dGV4LT5vd25lci0+b2JqX25hbWUpOworCSsrbXV0ZXgtPm5lc3RpbmdfbGV2ZWw7CisgICAgfQorCisgICAgUEpfTE9HKDYsKG11dGV4LT5vYmpfbmFtZSwgCisJICAgICAgKHN0YXR1cz09MCA/IAorCQkiTXV0ZXggYWNxdWlyZWQgYnkgdGhyZWFkICVzIChsZXZlbD0lZCkiIDogCisJCSJNdXRleCBhY3F1aXNpdGlvbiBGQUlMRUQgYnkgJXMgKGxldmVsPSVkKSIpLAorCSAgICAgIHBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lLAorCSAgICAgIG11dGV4LT5uZXN0aW5nX2xldmVsKSk7CisjZWxzZQorICAgIFBKX0xPRyg2LChtdXRleC0+b2JqX25hbWUsIAorCSAgICAgIChzdGF0dXM9PTAgPyAiTXV0ZXggYWNxdWlyZWQgYnkgdGhyZWFkICVzIiA6ICJGQUlMRUQgYnkgJXMiKSwKKwkgICAgICBwal90aHJlYWRfdGhpcygpLT5vYmpfbmFtZSkpOworI2VuZGlmCisKKyAgICBpZiAoc3RhdHVzID09IDApCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgZWxzZQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1Ioc3RhdHVzKTsKKyNlbHNlCS8qIFBKX0hBU19USFJFQURTICovCisgICAgcGpfYXNzZXJ0KCBtdXRleCA9PSAocGpfbXV0ZXhfdCopMSApOworICAgIHJldHVybiBQSl9TVUNDRVNTOworI2VuZGlmCit9CisKKy8qCisgKiBwal9tdXRleF91bmxvY2soKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X3VubG9jayhwal9tdXRleF90ICptdXRleCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihtdXRleCwgUEpfRUlOVkFMKTsKKworI2lmIFBKX0RFQlVHCisgICAgcGpfYXNzZXJ0KG11dGV4LT5vd25lciA9PSBwal90aHJlYWRfdGhpcygpKTsKKyAgICBpZiAoLS1tdXRleC0+bmVzdGluZ19sZXZlbCA9PSAwKSB7CisJbXV0ZXgtPm93bmVyID0gTlVMTDsKKwltdXRleC0+b3duZXJfbmFtZVswXSA9ICdcMCc7CisgICAgfQorCisgICAgUEpfTE9HKDYsKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4IHJlbGVhc2VkIGJ5IHRocmVhZCAlcyAobGV2ZWw9JWQpIiwgCisJCQkJcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUsIAorCQkJCW11dGV4LT5uZXN0aW5nX2xldmVsKSk7CisjZWxzZQorICAgIFBKX0xPRyg2LChtdXRleC0+b2JqX25hbWUsICJNdXRleCByZWxlYXNlZCBieSB0aHJlYWQgJXMiLCAKKwkJCQlwal90aHJlYWRfdGhpcygpLT5vYmpfbmFtZSkpOworI2VuZGlmCisKKyAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X3VubG9jayggJm11dGV4LT5tdXRleCApOworICAgIGlmIChzdGF0dXMgPT0gMCkKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICBlbHNlCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihzdGF0dXMpOworCisjZWxzZSAvKiBQSl9IQVNfVEhSRUFEUyAqLworICAgIHBqX2Fzc2VydCggbXV0ZXggPT0gKHBqX211dGV4X3QqKTEgKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbmRpZgorfQorCisvKgorICogcGpfbXV0ZXhfdHJ5bG9jaygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfdHJ5bG9jayhwal9tdXRleF90ICptdXRleCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIGludCBzdGF0dXM7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4obXV0ZXgsIFBKX0VJTlZBTCk7CisKKyAgICBQSl9MT0coNiwobXV0ZXgtPm9ial9uYW1lLCAiTXV0ZXg6IHRocmVhZCAlcyBpcyB0cnlpbmciLCAKKwkJCQlwal90aHJlYWRfdGhpcygpLT5vYmpfbmFtZSkpOworCisgICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF90cnlsb2NrKCAmbXV0ZXgtPm11dGV4ICk7CisKKyAgICBpZiAoc3RhdHVzPT0wKSB7CisjaWYgUEpfREVCVUcKKwltdXRleC0+b3duZXIgPSBwal90aHJlYWRfdGhpcygpOworCXBqX2Fuc2lfc3RyY3B5KG11dGV4LT5vd25lcl9uYW1lLCBtdXRleC0+b3duZXItPm9ial9uYW1lKTsKKwkrK211dGV4LT5uZXN0aW5nX2xldmVsOworCisJUEpfTE9HKDYsKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4IGFjcXVpcmVkIGJ5IHRocmVhZCAlcyAobGV2ZWw9JWQpIiwgCisJCQkJICAgcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUsCisJCQkJICAgbXV0ZXgtPm5lc3RpbmdfbGV2ZWwpKTsKKyNlbHNlCisJUEpfTE9HKDYsKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4IGFjcXVpcmVkIGJ5IHRocmVhZCAlcyIsIAorCQkJCSAgcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisJUEpfTE9HKDYsKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4OiB0aHJlYWQgJXMncyB0cnlsb2NrKCkgZmFpbGVkIiwgCisJCQkJICAgIHBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lKSk7CisgICAgfQorICAgIAorICAgIGlmIChzdGF0dXM9PTApCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgZWxzZQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1Ioc3RhdHVzKTsKKyNlbHNlCS8qIFBKX0hBU19USFJFQURTICovCisgICAgcGpfYXNzZXJ0KCBtdXRleCA9PSAocGpfbXV0ZXhfdCopMSk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisjZW5kaWYKK30KKworLyoKKyAqIHBqX211dGV4X2Rlc3Ryb3koKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X2Rlc3Ryb3kocGpfbXV0ZXhfdCAqbXV0ZXgpCit7CisgICAgZW51bSB7IFJFVFJZID0gNCB9OworICAgIGludCBzdGF0dXMgPSAwOworICAgIHVuc2lnbmVkIHJldHJ5OworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG11dGV4LCBQSl9FSU5WQUwpOworCisjaWYgUEpfSEFTX1RIUkVBRFMKKyAgICBQSl9MT0coNiwobXV0ZXgtPm9ial9uYW1lLCAiTXV0ZXggZGVzdHJveWVkIGJ5IHRocmVhZCAlcyIsCisJCQkgICAgICAgcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKworICAgIGZvciAocmV0cnk9MDsgcmV0cnk8UkVUUlk7ICsrcmV0cnkpIHsKKwlzdGF0dXMgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZtdXRleC0+bXV0ZXggKTsKKwlpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisJICAgIGJyZWFrOworCWVsc2UgaWYgKHJldHJ5PFJFVFJZLTEgJiYgc3RhdHVzID09IEVCVVNZKQorCSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgtPm11dGV4KTsKKyAgICB9CisKKyAgICBpZiAoc3RhdHVzID09IDApCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgZWxzZSB7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihzdGF0dXMpOworICAgIH0KKyNlbHNlCisgICAgcGpfYXNzZXJ0KCBtdXRleCA9PSAocGpfbXV0ZXhfdCopMSApOworICAgIHN0YXR1cyA9IFBKX1NVQ0NFU1M7CisgICAgcmV0dXJuIHN0YXR1czsKKyNlbmRpZgorfQorCisjaWYgUEpfREVCVUcKK1BKX0RFRihwal9ib29sX3QpIHBqX211dGV4X2lzX2xvY2tlZChwal9tdXRleF90ICptdXRleCkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHJldHVybiBtdXRleC0+b3duZXIgPT0gcGpfdGhyZWFkX3RoaXMoKTsKKyNlbHNlCisgICAgcmV0dXJuIDE7CisjZW5kaWYKK30KKyNlbmRpZgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvKgorICogSW5jbHVkZSBSZWFkL1dyaXRlIG11dGV4IGVtdWxhdGlvbiBmb3IgUE9TSVggcGxhdGZvcm1zIHRoYXQgbGFjayBpdCAoZS5nLgorICogUlRFTVMpLiBPdGhlcndpc2UgdXNlIFBPU0lYIHJ3bG9jay4KKyAqLworI2lmIGRlZmluZWQoUEpfRU1VTEFURV9SV01VVEVYKSAmJiBQSl9FTVVMQVRFX1JXTVVURVghPTAKKyAgICAvKiBXZSBuZWVkIHNlbWFwaG9yZSBmdW5jdGlvbmFsaXR5IHRvIGVtdWxhdGUgcndtdXRleCAqLworIyAgIGlmICFkZWZpbmVkKFBKX0hBU19TRU1BUEhPUkUpIHx8IFBKX0hBU19TRU1BUEhPUkU9PTAKKyMJZXJyb3IgIlNlbWFwaG9yZSBzdXBwb3J0IG5lZWRzIHRvIGJlIGVuYWJsZWQgdG8gZW11bGF0ZSByd211dGV4IgorIyAgIGVuZGlmCisjICAgaW5jbHVkZSAib3NfcndtdXRleC5jIgorI2Vsc2UKK3N0cnVjdCBwal9yd211dGV4X3QKK3sKKyAgICBwdGhyZWFkX3J3bG9ja190IHJ3bG9jazsKK307CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcndtdXRleF9jcmVhdGUocGpfcG9vbF90ICpwb29sLCBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgICAgIHBqX3J3bXV0ZXhfdCAqKnBfbXV0ZXgpCit7CisgICAgcGpfcndtdXRleF90ICpyd207CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfVU5VU0VEX0FSRyhuYW1lKTsKKyAgICAKKyAgICByd20gPSBQSl9QT09MX0FMTE9DX1QocG9vbCwgcGpfcndtdXRleF90KTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHJ3bSwgUEpfRU5PTUVNKTsKKworICAgIHN0YXR1cyA9IHB0aHJlYWRfcndsb2NrX2luaXQoJnJ3bS0+cndsb2NrLCBOVUxMKTsKKyAgICBpZiAoc3RhdHVzICE9IDApCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihzdGF0dXMpOworCisgICAgKnBfbXV0ZXggPSByd207CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBMb2NrIHRoZSBtdXRleCBmb3IgcmVhZGluZy4KKyAqCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcndtdXRleF9sb2NrX3JlYWQocGpfcndtdXRleF90ICptdXRleCkKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBwdGhyZWFkX3J3bG9ja19yZGxvY2soJm11dGV4LT5yd2xvY2spOworICAgIGlmIChzdGF0dXMgIT0gMCkKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHN0YXR1cyk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIExvY2sgdGhlIG11dGV4IGZvciB3cml0aW5nLgorICoKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9yd211dGV4X2xvY2tfd3JpdGUocGpfcndtdXRleF90ICptdXRleCkKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBwdGhyZWFkX3J3bG9ja193cmxvY2soJm11dGV4LT5yd2xvY2spOworICAgIGlmIChzdGF0dXMgIT0gMCkKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHN0YXR1cyk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIFJlbGVhc2UgcmVhZCBsb2NrLgorICoKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9yd211dGV4X3VubG9ja19yZWFkKHBqX3J3bXV0ZXhfdCAqbXV0ZXgpCit7CisgICAgcmV0dXJuIHBqX3J3bXV0ZXhfdW5sb2NrX3dyaXRlKG11dGV4KTsKK30KKworLyoKKyAqIFJlbGVhc2Ugd3JpdGUgbG9jay4KKyAqCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcndtdXRleF91bmxvY2tfd3JpdGUocGpfcndtdXRleF90ICptdXRleCkKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBwdGhyZWFkX3J3bG9ja191bmxvY2soJm11dGV4LT5yd2xvY2spOworICAgIGlmIChzdGF0dXMgIT0gMCkKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHN0YXR1cyk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIERlc3Ryb3kgcmVhZGVyL3dyaXRlciBtdXRleC4KKyAqCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcndtdXRleF9kZXN0cm95KHBqX3J3bXV0ZXhfdCAqbXV0ZXgpCit7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgc3RhdHVzID0gcHRocmVhZF9yd2xvY2tfZGVzdHJveSgmbXV0ZXgtPnJ3bG9jayk7CisgICAgaWYgKHN0YXR1cyAhPSAwKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1Ioc3RhdHVzKTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisjZW5kaWYJLyogUEpfRU1VTEFURV9SV01VVEVYICovCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI2lmIGRlZmluZWQoUEpfSEFTX1NFTUFQSE9SRSkgJiYgUEpfSEFTX1NFTUFQSE9SRSAhPSAwCisKKy8qCisgKiBwal9zZW1fY3JlYXRlKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zZW1fY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgdW5zaWduZWQgaW5pdGlhbCwgCisJCQkJICAgdW5zaWduZWQgbWF4LAorCQkJCSAgIHBqX3NlbV90ICoqcHRyX3NlbSkKK3sKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHBqX3NlbV90ICpzZW07CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocG9vbCAhPSBOVUxMICYmIHB0cl9zZW0gIT0gTlVMTCwgUEpfRUlOVkFMKTsKKworICAgIHNlbSA9IFBKX1BPT0xfQUxMT0NfVChwb29sLCBwal9zZW1fdCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzZW0sIFBKX0VOT01FTSk7CisKKyNpZiBkZWZpbmVkKFBKX0RBUldJTk9TKSAmJiBQSl9EQVJXSU5PUyE9MAorICAgIC8qIE1hY09TIFggZG9lc24ndCBzdXBwb3J0IGFub255bW91cyBzZW1hcGhvcmUgKi8KKyAgICB7CisJY2hhciBzZW1fbmFtZVtQSl9HVUlEX01BWF9MRU5HVEgrMV07CisJcGpfc3RyX3QgbmFtOworCisJLyogV2Ugc2hvdWxkIHVzZSBTRU1fTkFNRV9MRU4sIGJ1dCB0aGlzIGRvZXNuJ3Qgc2VlbSB0byBiZSAKKwkgKiBkZWNsYXJlZCBhbnl3aGVyZT8gVGhlIHZhbHVlIGhlcmUgaXMganVzdCBmcm9tIHRyaWFsIGFuZCBlcnJvcgorCSAqIHRvIGdldCB0aGUgbG9uZ2VzdCBuYW1lIHN1cHBvcnRlZC4KKwkgKi8KKyMJZGVmaW5lIE1BWF9TRU1fTkFNRV9MRU4JMjMKKworCS8qIENyZWF0ZSBhIHVuaXF1ZSBuYW1lIGZvciB0aGUgc2VtYXBob3JlLiAqLworCWlmIChQSl9HVUlEX1NUUklOR19MRU5HVEggPD0gTUFYX1NFTV9OQU1FX0xFTikgeworCSAgICBuYW0ucHRyID0gc2VtX25hbWU7CisJICAgIHBqX2dlbmVyYXRlX3VuaXF1ZV9zdHJpbmcoJm5hbSk7CisJICAgIHNlbV9uYW1lW25hbS5zbGVuXSA9ICdcMCc7CisJfSBlbHNlIHsKKwkgICAgcGpfY3JlYXRlX3JhbmRvbV9zdHJpbmcoc2VtX25hbWUsIE1BWF9TRU1fTkFNRV9MRU4pOworCSAgICBzZW1fbmFtZVtNQVhfU0VNX05BTUVfTEVOXSA9ICdcMCc7CisJfQorCisJLyogQ3JlYXRlIHNlbWFwaG9yZSAqLworCXNlbS0+c2VtID0gc2VtX29wZW4oc2VtX25hbWUsIE9fQ1JFQVR8T19FWENMLCBTX0lSVVNSfFNfSVdVU1IsIAorCQkJICAgIGluaXRpYWwpOworCWlmIChzZW0tPnNlbSA9PSBTRU1fRkFJTEVEKQorCSAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHBqX2dldF9uYXRpdmVfb3NfZXJyb3IoKSk7CisKKwkvKiBBbmQgaW1tZWRpYXRlbHkgcmVsZWFzZSB0aGUgbmFtZSBhcyB3ZSBkb24ndCBuZWVkIGl0ICovCisJc2VtX3VubGluayhzZW1fbmFtZSk7CisgICAgfQorI2Vsc2UKKyAgICBzZW0tPnNlbSA9IFBKX1BPT0xfQUxMT0NfVChwb29sLCBzZW1fdCk7CisgICAgaWYgKHNlbV9pbml0KCBzZW0tPnNlbSwgMCwgaW5pdGlhbCkgIT0gMCkgCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX29zX2Vycm9yKCkpOworI2VuZGlmCisgICAgCisgICAgLyogU2V0IG5hbWUuICovCisgICAgaWYgKCFuYW1lKSB7CisJbmFtZSA9ICJzZW0lcCI7CisgICAgfQorICAgIGlmIChzdHJjaHIobmFtZSwgJyUnKSkgeworCXBqX2Fuc2lfc25wcmludGYoc2VtLT5vYmpfbmFtZSwgUEpfTUFYX09CSl9OQU1FLCBuYW1lLCBzZW0pOworICAgIH0gZWxzZSB7CisJc3RybmNweShzZW0tPm9ial9uYW1lLCBuYW1lLCBQSl9NQVhfT0JKX05BTUUpOworCXNlbS0+b2JqX25hbWVbUEpfTUFYX09CSl9OQU1FLTFdID0gJ1wwJzsKKyAgICB9CisKKyAgICBQSl9MT0coNiwgKHNlbS0+b2JqX25hbWUsICJTZW1hcGhvcmUgY3JlYXRlZCIpKTsKKworICAgICpwdHJfc2VtID0gc2VtOworICAgIHJldHVybiBQSl9TVUNDRVNTOworI2Vsc2UKKyAgICAqcHRyX3NlbSA9IChwal9zZW1fdCopMTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbmRpZgorfQorCisvKgorICogcGpfc2VtX3dhaXQoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NlbV93YWl0KHBqX3NlbV90ICpzZW0pCit7CisjaWYgUEpfSEFTX1RIUkVBRFMKKyAgICBpbnQgcmVzdWx0OworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNlbSwgUEpfRUlOVkFMKTsKKworICAgIFBKX0xPRyg2LCAoc2VtLT5vYmpfbmFtZSwgIlNlbWFwaG9yZTogdGhyZWFkICVzIGlzIHdhaXRpbmciLCAKKwkJCSAgICAgIHBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lKSk7CisKKyAgICByZXN1bHQgPSBzZW1fd2FpdCggc2VtLT5zZW0gKTsKKyAgICAKKyAgICBpZiAocmVzdWx0ID09IDApIHsKKwlQSl9MT0coNiwgKHNlbS0+b2JqX25hbWUsICJTZW1hcGhvcmUgYWNxdWlyZWQgYnkgdGhyZWFkICVzIiwgCisJCQkJICBwal90aHJlYWRfdGhpcygpLT5vYmpfbmFtZSkpOworICAgIH0gZWxzZSB7CisJUEpfTE9HKDYsIChzZW0tPm9ial9uYW1lLCAiU2VtYXBob3JlOiB0aHJlYWQgJXMgRkFJTEVEIHRvIGFjcXVpcmUiLCAKKwkJCQkgIHBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lKSk7CisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSAwKQorCXJldHVybiBQSl9TVUNDRVNTOworICAgIGVsc2UKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHBqX2dldF9uYXRpdmVfb3NfZXJyb3IoKSk7CisjZWxzZQorICAgIHBqX2Fzc2VydCggc2VtID09IChwal9zZW1fdCopIDEgKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbmRpZgorfQorCisvKgorICogcGpfc2VtX3RyeXdhaXQoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NlbV90cnl3YWl0KHBqX3NlbV90ICpzZW0pCit7CisjaWYgUEpfSEFTX1RIUkVBRFMKKyAgICBpbnQgcmVzdWx0OworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNlbSwgUEpfRUlOVkFMKTsKKworICAgIHJlc3VsdCA9IHNlbV90cnl3YWl0KCBzZW0tPnNlbSApOworICAgIAorICAgIGlmIChyZXN1bHQgPT0gMCkgeworCVBKX0xPRyg2LCAoc2VtLT5vYmpfbmFtZSwgIlNlbWFwaG9yZSBhY3F1aXJlZCBieSB0aHJlYWQgJXMiLCAKKwkJCQkgIHBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lKSk7CisgICAgfSAKKyAgICBpZiAocmVzdWx0ID09IDApCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgZWxzZQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocGpfZ2V0X25hdGl2ZV9vc19lcnJvcigpKTsKKyNlbHNlCisgICAgcGpfYXNzZXJ0KCBzZW0gPT0gKHBqX3NlbV90KikxICk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisjZW5kaWYKK30KKworLyoKKyAqIHBqX3NlbV9wb3N0KCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zZW1fcG9zdChwal9zZW1fdCAqc2VtKQoreworI2lmIFBKX0hBU19USFJFQURTCisgICAgaW50IHJlc3VsdDsKKyAgICBQSl9MT0coNiwgKHNlbS0+b2JqX25hbWUsICJTZW1hcGhvcmUgcmVsZWFzZWQgYnkgdGhyZWFkICVzIiwKKwkJCSAgICAgIHBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lKSk7CisgICAgcmVzdWx0ID0gc2VtX3Bvc3QoIHNlbS0+c2VtICk7CisKKyAgICBpZiAocmVzdWx0ID09IDApCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgZWxzZQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocGpfZ2V0X25hdGl2ZV9vc19lcnJvcigpKTsKKyNlbHNlCisgICAgcGpfYXNzZXJ0KCBzZW0gPT0gKHBqX3NlbV90KikgMSk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisjZW5kaWYKK30KKworLyoKKyAqIHBqX3NlbV9kZXN0cm95KCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zZW1fZGVzdHJveShwal9zZW1fdCAqc2VtKQoreworI2lmIFBKX0hBU19USFJFQURTCisgICAgaW50IHJlc3VsdDsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzZW0sIFBKX0VJTlZBTCk7CisKKyAgICBQSl9MT0coNiwgKHNlbS0+b2JqX25hbWUsICJTZW1hcGhvcmUgZGVzdHJveWVkIGJ5IHRocmVhZCAlcyIsCisJCQkgICAgICBwal90aHJlYWRfdGhpcygpLT5vYmpfbmFtZSkpOworI2lmIGRlZmluZWQoUEpfREFSV0lOT1MpICYmIFBKX0RBUldJTk9TIT0wCisgICAgcmVzdWx0ID0gc2VtX2Nsb3NlKCBzZW0tPnNlbSApOworI2Vsc2UKKyAgICByZXN1bHQgPSBzZW1fZGVzdHJveSggc2VtLT5zZW0gKTsKKyNlbmRpZgorCisgICAgaWYgKHJlc3VsdCA9PSAwKQorCXJldHVybiBQSl9TVUNDRVNTOworICAgIGVsc2UKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHBqX2dldF9uYXRpdmVfb3NfZXJyb3IoKSk7CisjZWxzZQorICAgIHBqX2Fzc2VydCggc2VtID09IChwal9zZW1fdCopIDEgKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbmRpZgorfQorCisjZW5kaWYJLyogUEpfSEFTX1NFTUFQSE9SRSAqLworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjaWYgZGVmaW5lZChQSl9IQVNfRVZFTlRfT0JKKSAmJiBQSl9IQVNfRVZFTlRfT0JKICE9IDAKKworLyoKKyAqIHBqX2V2ZW50X2NyZWF0ZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZXZlbnRfY3JlYXRlKHBqX3Bvb2xfdCAqcG9vbCwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgcGpfYm9vbF90IG1hbnVhbF9yZXNldCwgcGpfYm9vbF90IGluaXRpYWwsCisJCQkJICAgIHBqX2V2ZW50X3QgKipwdHJfZXZlbnQpCit7CisgICAgcGpfZXZlbnRfdCAqZXZlbnQ7CisKKyAgICBldmVudCA9IFBKX1BPT0xfQUxMT0NfVChwb29sLCBwal9ldmVudF90KTsKKworICAgIGluaXRfbXV0ZXgoJmV2ZW50LT5tdXRleCwgbmFtZSwgUEpfTVVURVhfU0lNUExFKTsKKyAgICBwdGhyZWFkX2NvbmRfaW5pdCgmZXZlbnQtPmNvbmQsIDApOworICAgIGV2ZW50LT5hdXRvX3Jlc2V0ID0gIW1hbnVhbF9yZXNldDsKKyAgICBldmVudC0+dGhyZWFkc193YWl0aW5nID0gMDsKKworICAgIGlmIChpbml0aWFsKSB7CisJZXZlbnQtPnN0YXRlID0gRVZfU1RBVEVfU0VUOworCWV2ZW50LT50aHJlYWRzX3RvX3JlbGVhc2UgPSAxOworICAgIH0gZWxzZSB7CisJZXZlbnQtPnN0YXRlID0gRVZfU1RBVEVfT0ZGOworCWV2ZW50LT50aHJlYWRzX3RvX3JlbGVhc2UgPSAwOworICAgIH0KKworICAgICpwdHJfZXZlbnQgPSBldmVudDsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworc3RhdGljIHZvaWQgZXZlbnRfb25fb25lX3JlbGVhc2UocGpfZXZlbnRfdCAqZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5zdGF0ZSA9PSBFVl9TVEFURV9TRVQpIHsKKwlpZiAoZXZlbnQtPmF1dG9fcmVzZXQpIHsKKwkgICAgZXZlbnQtPnRocmVhZHNfdG9fcmVsZWFzZSA9IDA7CisJICAgIGV2ZW50LT5zdGF0ZSA9IEVWX1NUQVRFX09GRjsKKwl9IGVsc2UgeworCSAgICAvKiBNYW51YWwgcmVzZXQgcmVtYWlucyBvbiAqLworCX0KKyAgICB9IGVsc2UgeworCWlmIChldmVudC0+YXV0b19yZXNldCkgeworCSAgICAvKiBPbmx5IHJlbGVhc2Ugb25lICovCisJICAgIGV2ZW50LT50aHJlYWRzX3RvX3JlbGVhc2UgPSAwOworCSAgICBldmVudC0+c3RhdGUgPSBFVl9TVEFURV9PRkY7CisJfSBlbHNlIHsKKwkgICAgZXZlbnQtPnRocmVhZHNfdG9fcmVsZWFzZS0tOworCSAgICBwal9hc3NlcnQoZXZlbnQtPnRocmVhZHNfdG9fcmVsZWFzZSA+PSAwKTsKKwkgICAgaWYgKGV2ZW50LT50aHJlYWRzX3RvX3JlbGVhc2U9PTApCisJCWV2ZW50LT5zdGF0ZSA9IEVWX1NUQVRFX09GRjsKKwl9CisgICAgfQorfQorCisvKgorICogcGpfZXZlbnRfd2FpdCgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZXZlbnRfd2FpdChwal9ldmVudF90ICpldmVudCkKK3sKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmV2ZW50LT5tdXRleC5tdXRleCk7CisgICAgZXZlbnQtPnRocmVhZHNfd2FpdGluZysrOworICAgIHdoaWxlIChldmVudC0+c3RhdGUgPT0gRVZfU1RBVEVfT0ZGKQorCXB0aHJlYWRfY29uZF93YWl0KCZldmVudC0+Y29uZCwgJmV2ZW50LT5tdXRleC5tdXRleCk7CisgICAgZXZlbnQtPnRocmVhZHNfd2FpdGluZy0tOworICAgIGV2ZW50X29uX29uZV9yZWxlYXNlKGV2ZW50KTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZXZlbnQtPm11dGV4Lm11dGV4KTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIHBqX2V2ZW50X3RyeXdhaXQoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2V2ZW50X3RyeXdhaXQocGpfZXZlbnRfdCAqZXZlbnQpCit7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZldmVudC0+bXV0ZXgubXV0ZXgpOworICAgIHN0YXR1cyA9IGV2ZW50LT5zdGF0ZSAhPSBFVl9TVEFURV9PRkYgPyBQSl9TVUNDRVNTIDogLTE7CisgICAgaWYgKHN0YXR1cz09UEpfU1VDQ0VTUykgeworCWV2ZW50X29uX29uZV9yZWxlYXNlKGV2ZW50KTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmV2ZW50LT5tdXRleC5tdXRleCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisvKgorICogcGpfZXZlbnRfc2V0KCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9ldmVudF9zZXQocGpfZXZlbnRfdCAqZXZlbnQpCit7CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZldmVudC0+bXV0ZXgubXV0ZXgpOworICAgIGV2ZW50LT50aHJlYWRzX3RvX3JlbGVhc2UgPSAxOworICAgIGV2ZW50LT5zdGF0ZSA9IEVWX1NUQVRFX1NFVDsKKyAgICBpZiAoZXZlbnQtPmF1dG9fcmVzZXQpCisJcHRocmVhZF9jb25kX3NpZ25hbCgmZXZlbnQtPmNvbmQpOworICAgIGVsc2UKKwlwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZldmVudC0+Y29uZCk7CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmV2ZW50LT5tdXRleC5tdXRleCk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBwal9ldmVudF9wdWxzZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZXZlbnRfcHVsc2UocGpfZXZlbnRfdCAqZXZlbnQpCit7CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZldmVudC0+bXV0ZXgubXV0ZXgpOworICAgIGlmIChldmVudC0+dGhyZWFkc193YWl0aW5nKSB7CisJZXZlbnQtPnRocmVhZHNfdG9fcmVsZWFzZSA9IGV2ZW50LT5hdXRvX3Jlc2V0ID8gMSA6CisJCQkJCWV2ZW50LT50aHJlYWRzX3dhaXRpbmc7CisJZXZlbnQtPnN0YXRlID0gRVZfU1RBVEVfUFVMU0VEOworCWlmIChldmVudC0+dGhyZWFkc190b19yZWxlYXNlPT0xKQorCSAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZldmVudC0+Y29uZCk7CisJZWxzZQorCSAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZldmVudC0+Y29uZCk7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZldmVudC0+bXV0ZXgubXV0ZXgpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfZXZlbnRfcmVzZXQoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2V2ZW50X3Jlc2V0KHBqX2V2ZW50X3QgKmV2ZW50KQoreworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZXZlbnQtPm11dGV4Lm11dGV4KTsKKyAgICBldmVudC0+c3RhdGUgPSBFVl9TVEFURV9PRkY7CisgICAgZXZlbnQtPnRocmVhZHNfdG9fcmVsZWFzZSA9IDA7CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmV2ZW50LT5tdXRleC5tdXRleCk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBwal9ldmVudF9kZXN0cm95KCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9ldmVudF9kZXN0cm95KHBqX2V2ZW50X3QgKmV2ZW50KQoreworICAgIHBqX211dGV4X2Rlc3Ryb3koJmV2ZW50LT5tdXRleCk7CisgICAgcHRocmVhZF9jb25kX2Rlc3Ryb3koJmV2ZW50LT5jb25kKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworI2VuZGlmCS8qIFBKX0hBU19FVkVOVF9PQkogKi8KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI2lmIGRlZmluZWQoUEpfVEVSTV9IQVNfQ09MT1IpICYmIFBKX1RFUk1fSEFTX0NPTE9SICE9IDAKKy8qCisgKiBUZXJtaW5hbAorICovCisKKy8qKgorICogU2V0IHRlcm1pbmFsIGNvbG9yLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3Rlcm1fc2V0X2NvbG9yKHBqX2NvbG9yX3QgY29sb3IpCit7CisgICAgLyogcHV0IGJyaWdodCBwcmVmaXggdG8gYW5zaV9jb2xvciAqLworICAgIGNoYXIgYW5zaV9jb2xvclsxMl0gPSAiXDAzM1swMTszIjsKKworICAgIGlmIChjb2xvciAmIFBKX1RFUk1fQ09MT1JfQlJJR0hUKSB7CisJY29sb3IgXj0gUEpfVEVSTV9DT0xPUl9CUklHSFQ7CisgICAgfSBlbHNlIHsKKwlzdHJjcHkoYW5zaV9jb2xvciwgIlwwMzNbMDA7MyIpOworICAgIH0KKworICAgIHN3aXRjaCAoY29sb3IpIHsKKyAgICBjYXNlIDA6CisJLyogYmxhY2sgY29sb3IgKi8KKwlzdHJjYXQoYW5zaV9jb2xvciwgIjBtIik7CisJYnJlYWs7CisgICAgY2FzZSBQSl9URVJNX0NPTE9SX1I6CisJLyogcmVkIGNvbG9yICovCisJc3RyY2F0KGFuc2lfY29sb3IsICIxbSIpOworCWJyZWFrOworICAgIGNhc2UgUEpfVEVSTV9DT0xPUl9HOgorCS8qIGdyZWVuIGNvbG9yICovCisJc3RyY2F0KGFuc2lfY29sb3IsICIybSIpOworCWJyZWFrOworICAgIGNhc2UgUEpfVEVSTV9DT0xPUl9COgorCS8qIGJsdWUgY29sb3IgKi8KKwlzdHJjYXQoYW5zaV9jb2xvciwgIjRtIik7CisJYnJlYWs7CisgICAgY2FzZSBQSl9URVJNX0NPTE9SX1IgfCBQSl9URVJNX0NPTE9SX0c6CisJLyogeWVsbG93IGNvbG9yICovCisJc3RyY2F0KGFuc2lfY29sb3IsICIzbSIpOworCWJyZWFrOworICAgIGNhc2UgUEpfVEVSTV9DT0xPUl9SIHwgUEpfVEVSTV9DT0xPUl9COgorCS8qIG1hZ2VudGEgY29sb3IgKi8KKwlzdHJjYXQoYW5zaV9jb2xvciwgIjVtIik7CisJYnJlYWs7CisgICAgY2FzZSBQSl9URVJNX0NPTE9SX0cgfCBQSl9URVJNX0NPTE9SX0I6CisJLyogY3lhbiBjb2xvciAqLworCXN0cmNhdChhbnNpX2NvbG9yLCAiNm0iKTsKKwlicmVhazsKKyAgICBjYXNlIFBKX1RFUk1fQ09MT1JfUiB8IFBKX1RFUk1fQ09MT1JfRyB8IFBKX1RFUk1fQ09MT1JfQjoKKwkvKiB3aGl0ZSBjb2xvciAqLworCXN0cmNhdChhbnNpX2NvbG9yLCAiN20iKTsKKwlicmVhazsKKyAgICBkZWZhdWx0OgorCS8qIGRlZmF1bHQgY29uc29sZSBjb2xvciAqLworCXN0cmNweShhbnNpX2NvbG9yLCAiXDAzM1swMG0iKTsKKwlicmVhazsKKyAgICB9CisKKyAgICBmcHV0cyhhbnNpX2NvbG9yLCBzdGRvdXQpOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qKgorICogR2V0IGN1cnJlbnQgdGVybWluYWwgZm9yZWdyb3VuZCBjb2xvci4KKyAqLworUEpfREVGKHBqX2NvbG9yX3QpIHBqX3Rlcm1fZ2V0X2NvbG9yKHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgkvKiBQSl9URVJNX0hBU19DT0xPUiAqLworCisjaWYgIWRlZmluZWQoUEpfREFSV0lOT1MpIHx8IFBKX0RBUldJTk9TID09IDAKKy8qCisgKiBwal9ydW5fYXBwKCkKKyAqLworUEpfREVGKGludCkgcGpfcnVuX2FwcChwal9tYWluX2Z1bmNfcHRyIG1haW5fZnVuYywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgcmV0dXJuICgqbWFpbl9mdW5jKShhcmdjLCBhcmd2KTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX2NvcmVfd2luMzIuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI3ZDc4OQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19jb3JlX3dpbjMyLmMKQEAgLTAsMCArMSwxNDU3IEBACisvKiAkSWQ6IG9zX2NvcmVfd2luMzIuYyA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9ndWlkLmg+CisjaW5jbHVkZSA8cGovcmFuZC5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovZXhjZXB0Lmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2lmIGRlZmluZWQoUEpfSEFTX1dJTlNPQ0tfSCkgJiYgUEpfSEFTX1dJTlNPQ0tfSCAhPSAwCisjICBpbmNsdWRlIDx3aW5zb2NrLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX1dJTlNPQ0syX0gpICYmIFBKX0hBU19XSU5TT0NLMl9IICE9IDAKKyMgIGluY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYKKworLyogQWN0aXZhdGUgbXV0ZXggcmVsYXRlZCBsb2dnaW5nIGlmIFBKX0RFQlVHX01VVEVYIGlzIHNldCwgb3RoZXJ3aXNlCisgKiB1c2UgZGVmYXVsdCBsZXZlbCA2IGxvZ2dpbmcuCisgKi8KKyNpZiBkZWZpbmVkKFBKX0RFQlVHX01VVEVYKSAmJiBQSl9ERUJVR19NVVRFWAorIyAgIHVuZGVmIFBKX0RFQlVHCisjICAgZGVmaW5lIFBKX0RFQlVHCSAgICAxCisjICAgZGVmaW5lIExPR19NVVRFWChleHByKSAgUEpfTE9HKDUsZXhwcikKKyNlbHNlCisjICAgZGVmaW5lIExPR19NVVRFWChleHByKSAgUEpfTE9HKDYsZXhwcikKKyNlbmRpZgorCisjZGVmaW5lIFRISVNfRklMRQkib3NfY29yZV93aW4zMi5jIgorCisvKgorICogSW1wbGVtZW50YXRpb24gb2YgcGpfdGhyZWFkX3QuCisgKi8KK3N0cnVjdCBwal90aHJlYWRfdAoreworICAgIGNoYXIJICAgIG9ial9uYW1lW1BKX01BWF9PQkpfTkFNRV07CisgICAgSEFORExFCSAgICBodGhyZWFkOworICAgIERXT1JECSAgICBpZHRocmVhZDsKKyAgICBwal90aHJlYWRfcHJvYyAqcHJvYzsKKyAgICB2b2lkCSAgICphcmc7CisKKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisgICAgcGpfdWludDMyX3QJICAgIHN0a19zaXplOworICAgIHBqX3VpbnQzMl90CSAgICBzdGtfbWF4X3VzYWdlOworICAgIGNoYXIJICAgKnN0a19zdGFydDsKKyAgICBjb25zdCBjaGFyCSAgICpjYWxsZXJfZmlsZTsKKyAgICBpbnQJCSAgICBjYWxsZXJfbGluZTsKKyNlbmRpZgorfTsKKworCisvKgorICogSW1wbGVtZW50YXRpb24gb2YgcGpfbXV0ZXhfdC4KKyAqLworc3RydWN0IHBqX211dGV4X3QKK3sKKyNpZiBQSl9XSU4zMl9XSU5OVCA+PSAweDA0MDAKKyAgICBDUklUSUNBTF9TRUNUSU9OCWNyaXQ7CisjZWxzZQorICAgIEhBTkRMRQkJaE11dGV4OworI2VuZGlmCisgICAgY2hhcgkJb2JqX25hbWVbUEpfTUFYX09CSl9OQU1FXTsKKyNpZiBQSl9ERUJVRworICAgIGludAkJICAgICAgICBuZXN0aW5nX2xldmVsOworICAgIHBqX3RocmVhZF90CSAgICAgICAqb3duZXI7CisjZW5kaWYKK307CisKKy8qCisgKiBJbXBsZW1lbnRhdGlvbiBvZiBwal9zZW1fdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGpfc2VtX3QKK3sKKyAgICBIQU5ETEUJCWhTZW1hcGhvcmU7CisgICAgY2hhcgkJb2JqX25hbWVbUEpfTUFYX09CSl9OQU1FXTsKK30gcGpfbWVtX3Q7CisKKworLyoKKyAqIEltcGxlbWVudGF0aW9uIG9mIHBqX2V2ZW50X3QuCisgKi8KK3N0cnVjdCBwal9ldmVudF90Cit7CisgICAgSEFORExFCQloRXZlbnQ7CisgICAgY2hhcgkJb2JqX25hbWVbUEpfTUFYX09CSl9OQU1FXTsKK307CisKKy8qCisgKiBJbXBsZW1lbnRhdGlvbiBvZiBwal9hdG9taWNfdC4KKyAqLworc3RydWN0IHBqX2F0b21pY190Cit7CisgICAgbG9uZyB2YWx1ZTsKK307CisKKy8qCisgKiBGbGFnIGFuZCByZWZlcmVuY2UgY291bnRlciBmb3IgUEpMSUIgaW5zdGFuY2UuCisgKi8KK3N0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7CisKKy8qCisgKiBTdGF0aWMgZ2xvYmFsIHZhcmlhYmxlcy4KKyAqLworc3RhdGljIHBqX3RocmVhZF9kZXNjIG1haW5fdGhyZWFkOworc3RhdGljIGxvbmcgdGhyZWFkX3Rsc19pZCA9IC0xOworc3RhdGljIHBqX211dGV4X3QgY3JpdGljYWxfc2VjdGlvbl9tdXRleDsKK3N0YXRpYyB1bnNpZ25lZCBhdGV4aXRfY291bnQ7CitzdGF0aWMgdm9pZCAoKmF0ZXhpdF9mdW5jWzMyXSkodm9pZCk7CisKKy8qCisgKiBTb21lIHN0YXRpYyBwcm90b3R5cGVzLgorICovCitzdGF0aWMgcGpfc3RhdHVzX3QgaW5pdF9tdXRleChwal9tdXRleF90ICptdXRleCwgY29uc3QgY2hhciAqbmFtZSk7CisKKworLyoKKyAqIHBqX2luaXQodm9pZCkuCisgKiBJbml0IFBKTElCIQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2luaXQodm9pZCkKK3sKKyAgICBXU0FEQVRBIHdzYTsKKyAgICBjaGFyIGR1bW15X2d1aWRbMzJdOyAvKiB1c2UgbWF4aW11bSBHVUlEIGxlbmd0aCAqLworICAgIHBqX3N0cl90IGd1aWQ7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICAvKiBDaGVjayBpZiBQSkxJQiBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgKi8KKyAgICBpZiAoaW5pdGlhbGl6ZWQpIHsKKwkrK2luaXRpYWxpemVkOworCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0KKworICAgIC8qIEluaXQgV2luc29jay4uICovCisgICAgaWYgKFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwwKSwgJndzYSkgIT0gMCkgeworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoV1NBR2V0TGFzdEVycm9yKCkpOworICAgIH0KKworICAgIC8qIEluaXQgdGhpcyB0aHJlYWQncyBUTFMuICovCisgICAgaWYgKChyYz1wal90aHJlYWRfaW5pdCgpKSAhPSBQSl9TVUNDRVNTKSB7CisJcmV0dXJuIHJjOworICAgIH0KKyAgICAKKyAgICAvKiBJbml0IGxvZ2dpbmcgKi8KKyAgICBwal9sb2dfaW5pdCgpOworCisgICAgLyogSW5pdCByYW5kb20gc2VlZC4gKi8KKyAgICAvKiBPciBwcm9iYWJseSBub3QuIExldCBhcHBsaWNhdGlvbiBpbiBjaGFyZ2Ugb2YgdGhpcyAqLworICAgIC8qIHBqX3NyYW5kKCBHZXRDdXJyZW50UHJvY2Vzc0lkKCkgKTsgKi8KKworICAgIC8qIEluaXRpYWxpemUgY3JpdGljYWwgc2VjdGlvbi4gKi8KKyAgICBpZiAoKHJjPWluaXRfbXV0ZXgoJmNyaXRpY2FsX3NlY3Rpb25fbXV0ZXgsICJwaiVwIikpICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHJjOworCisgICAgLyogU3RhcnR1cCBHVUlELiAqLworICAgIGd1aWQucHRyID0gZHVtbXlfZ3VpZDsKKyAgICBwal9nZW5lcmF0ZV91bmlxdWVfc3RyaW5nKCAmZ3VpZCApOworCisgICAgLyogSW5pdGlhbGl6ZSBleGNlcHRpb24gSUQgZm9yIHRoZSBwb29sLiAKKyAgICAgKiBNdXN0IGRvIHNvIGFmdGVyIGNyaXRpY2FsIHNlY3Rpb24gaXMgY29uZmlndXJlZC4KKyAgICAgKi8KKyAgICByYyA9IHBqX2V4Y2VwdGlvbl9pZF9hbGxvYygiUEpMSUIvTm8gbWVtb3J5IiwgJlBKX05PX01FTU9SWV9FWENFUFRJT04pOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICAvKiBTdGFydHVwIHRpbWVzdGFtcCAqLworI2lmIGRlZmluZWQoUEpfSEFTX0hJR0hfUkVTX1RJTUVSKSAmJiBQSl9IQVNfSElHSF9SRVNfVElNRVIgIT0gMAorICAgIHsKKwlwal90aW1lc3RhbXAgZHVtbXlfdHM7CisJaWYgKChyYz1wal9nZXRfdGltZXN0YW1wX2ZyZXEoJmR1bW15X3RzKSkgIT0gUEpfU1VDQ0VTUykgeworCSAgICByZXR1cm4gcmM7CisJfQorCWlmICgocmM9cGpfZ2V0X3RpbWVzdGFtcCgmZHVtbXlfdHMpKSAhPSBQSl9TVUNDRVNTKSB7CisJICAgIHJldHVybiByYzsKKwl9CisgICAgfQorI2VuZGlmICAgCisKKyAgICAvKiBGbGFnIFBKTElCIGFzIGluaXRpYWxpemVkICovCisgICAgKytpbml0aWFsaXplZDsKKyAgICBwal9hc3NlcnQoaW5pdGlhbGl6ZWQgPT0gMSk7CisKKyAgICBQSl9MT0coNCwoVEhJU19GSUxFLCAicGpsaWIgJXMgZm9yIHdpbjMyIGluaXRpYWxpemVkIiwKKwkgICAgICBQSl9WRVJTSU9OKSk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIHBqX2F0ZXhpdCgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfYXRleGl0KHZvaWQgKCpmdW5jKSh2b2lkKSkKK3sKKyAgICBpZiAoYXRleGl0X2NvdW50ID49IFBKX0FSUkFZX1NJWkUoYXRleGl0X2Z1bmMpKQorCXJldHVybiBQSl9FVE9PTUFOWTsKKworICAgIGF0ZXhpdF9mdW5jW2F0ZXhpdF9jb3VudCsrXSA9IGZ1bmM7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworLyoKKyAqIHBqX3NodXRkb3duKHZvaWQpCisgKi8KK1BKX0RFRih2b2lkKSBwal9zaHV0ZG93bigpCit7CisgICAgaW50IGk7CisKKyAgICAvKiBPbmx5IHBlcmZvcm0gc2h1dGRvd24gb3BlcmF0aW9uIHdoZW4gJ2luaXRpYWxpemVkJyByZWFjaGVzIHplcm8gKi8KKyAgICBwal9hc3NlcnQoaW5pdGlhbGl6ZWQgPiAwKTsKKyAgICBpZiAoLS1pbml0aWFsaXplZCAhPSAwKQorCXJldHVybjsKKworICAgIC8qIERpc3BsYXkgc3RhY2sgdXNhZ2UgKi8KKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisgICAgeworCXBqX3RocmVhZF90ICpyZWMgPSAocGpfdGhyZWFkX3QqKW1haW5fdGhyZWFkOworCVBKX0xPRyg1LChyZWMtPm9ial9uYW1lLCAiTWFpbiB0aHJlYWQgc3RhY2sgbWF4IHVzYWdlPSV1IGJ5ICVzOiVkIiwgCisJCSAgcmVjLT5zdGtfbWF4X3VzYWdlLCByZWMtPmNhbGxlcl9maWxlLCByZWMtPmNhbGxlcl9saW5lKSk7CisgICAgfQorI2VuZGlmCisKKyAgICAvKiBDYWxsIGF0ZXhpdCgpIGZ1bmN0aW9ucyAqLworICAgIGZvciAoaT1hdGV4aXRfY291bnQtMTsgaT49MDsgLS1pKSB7CisJKCphdGV4aXRfZnVuY1tpXSkoKTsKKyAgICB9CisgICAgYXRleGl0X2NvdW50ID0gMDsKKworICAgIC8qIEZyZWUgZXhjZXB0aW9uIElEICovCisgICAgaWYgKFBKX05PX01FTU9SWV9FWENFUFRJT04gIT0gLTEpIHsKKwlwal9leGNlcHRpb25faWRfZnJlZShQSl9OT19NRU1PUllfRVhDRVBUSU9OKTsKKwlQSl9OT19NRU1PUllfRVhDRVBUSU9OID0gLTE7CisgICAgfQorCisgICAgLyogRGVzdHJveSBQSkxJQiBjcml0aWNhbCBzZWN0aW9uICovCisgICAgcGpfbXV0ZXhfZGVzdHJveSgmY3JpdGljYWxfc2VjdGlvbl9tdXRleCk7CisKKyAgICAvKiBGcmVlIFBKTElCIFRMUyAqLworICAgIGlmICh0aHJlYWRfdGxzX2lkICE9IC0xKSB7CisJcGpfdGhyZWFkX2xvY2FsX2ZyZWUodGhyZWFkX3Rsc19pZCk7CisJdGhyZWFkX3Rsc19pZCA9IC0xOworICAgIH0KKworICAgIC8qIENsZWFyIHN0YXRpYyB2YXJpYWJsZXMgKi8KKyAgICBwal9lcnJub19jbGVhcl9oYW5kbGVycygpOworCisgICAgLyogVGlja2V0ICMxMTMyOiBBc3NlcnRpb24gd2hlbiAocmUpc3RhcnRpbmcgUEpMSUIgb24gZGlmZmVyZW50IHRocmVhZCAqLworICAgIHBqX2J6ZXJvKG1haW5fdGhyZWFkLCBzaXplb2YobWFpbl90aHJlYWQpKTsKKworICAgIC8qIFNodXRkb3duIFdpbnNvY2sgKi8KKyAgICBXU0FDbGVhbnVwKCk7Cit9CisKKworLyoKKyAqIHBqX2dldHBpZCh2b2lkKQorICovCitQSl9ERUYocGpfdWludDMyX3QpIHBqX2dldHBpZCh2b2lkKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgcmV0dXJuIEdldEN1cnJlbnRQcm9jZXNzSWQoKTsKK30KKworLyoKKyAqIENoZWNrIGlmIHRoaXMgdGhyZWFkIGhhcyBiZWVuIHJlZ2lzdGVyZWQgdG8gUEpMSUIuCisgKi8KK1BKX0RFRihwal9ib29sX3QpIHBqX3RocmVhZF9pc19yZWdpc3RlcmVkKHZvaWQpCit7CisgICAgcmV0dXJuIHBqX3RocmVhZF9sb2NhbF9nZXQodGhyZWFkX3Rsc19pZCkgIT0gMDsKK30KKworCisvKgorICogR2V0IHRocmVhZCBwcmlvcml0eSB2YWx1ZSBmb3IgdGhlIHRocmVhZC4KKyAqLworUEpfREVGKGludCkgcGpfdGhyZWFkX2dldF9wcmlvKHBqX3RocmVhZF90ICp0aHJlYWQpCit7CisgICAgcmV0dXJuIEdldFRocmVhZFByaW9yaXR5KHRocmVhZC0+aHRocmVhZCk7Cit9CisKKworLyoKKyAqIFNldCB0aGUgdGhyZWFkIHByaW9yaXR5LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9zZXRfcHJpbyhwal90aHJlYWRfdCAqdGhyZWFkLCAgaW50IHByaW8pCit7CisjaWYgUEpfSEFTX1RIUkVBRFMKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHRocmVhZCwgUEpfRUlOVkFMKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHByaW8+PVRIUkVBRF9QUklPUklUWV9JRExFICYmIAorCQkJcHJpbzw9VEhSRUFEX1BSSU9SSVRZX1RJTUVfQ1JJVElDQUwsCisJCSAgICAgUEpfRUlOVkFMKTsKKworICAgIGlmIChTZXRUaHJlYWRQcmlvcml0eSh0aHJlYWQtPmh0aHJlYWQsIHByaW8pID09IEZBTFNFKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisKKyNlbHNlCisgICAgUEpfVU5VU0VEX0FSRyh0aHJlYWQpOworICAgIFBKX1VOVVNFRF9BUkcocHJpbyk7CisgICAgcGpfYXNzZXJ0KCJwal90aHJlYWRfc2V0X3ByaW8oKSBjYWxsZWQgaW4gbm9uLXRocmVhZGluZyBtb2RlISIpOworICAgIHJldHVybiBQSl9FSU5WQUxJRE9QOworI2VuZGlmCit9CisKKworLyoKKyAqIEdldCB0aGUgbG93ZXN0IHByaW9yaXR5IHZhbHVlIGF2YWlsYWJsZSBvbiB0aGlzIHN5c3RlbS4KKyAqLworUEpfREVGKGludCkgcGpfdGhyZWFkX2dldF9wcmlvX21pbihwal90aHJlYWRfdCAqdGhyZWFkKQoreworICAgIFBKX1VOVVNFRF9BUkcodGhyZWFkKTsKKyAgICByZXR1cm4gVEhSRUFEX1BSSU9SSVRZX0lETEU7Cit9CisKKworLyoKKyAqIEdldCB0aGUgaGlnaGVzdCBwcmlvcml0eSB2YWx1ZSBhdmFpbGFibGUgb24gdGhpcyBzeXN0ZW0uCisgKi8KK1BKX0RFRihpbnQpIHBqX3RocmVhZF9nZXRfcHJpb19tYXgocGpfdGhyZWFkX3QgKnRocmVhZCkKK3sKKyAgICBQSl9VTlVTRURfQVJHKHRocmVhZCk7CisgICAgcmV0dXJuIFRIUkVBRF9QUklPUklUWV9USU1FX0NSSVRJQ0FMOworfQorCisKKy8qCisgKiBHZXQgbmF0aXZlIHRocmVhZCBoYW5kbGUKKyAqLworUEpfREVGKHZvaWQqKSBwal90aHJlYWRfZ2V0X29zX2hhbmRsZShwal90aHJlYWRfdCAqdGhyZWFkKSAKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHRocmVhZCwgTlVMTCk7CisKKyNpZiBQSl9IQVNfVEhSRUFEUworICAgIHJldHVybiB0aHJlYWQtPmh0aHJlYWQ7CisjZWxzZQorICAgIHBqX2Fzc2VydCgicGpfdGhyZWFkX2lzX3JlZ2lzdGVyZWQoKSBjYWxsZWQgaW4gbm9uLXRocmVhZGluZyBtb2RlISIpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisKKy8qCisgKiBwal90aHJlYWRfcmVnaXN0ZXIoLi4pCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX3JlZ2lzdGVyICggY29uc3QgY2hhciAqY3N0cl90aHJlYWRfbmFtZSwKKwkJCQkJIHBqX3RocmVhZF9kZXNjIGRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3RocmVhZF90ICoqdGhyZWFkX3B0cikKK3sKKyAgICBjaGFyIHN0YWNrX3B0cjsKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICBwal90aHJlYWRfdCAqdGhyZWFkID0gKHBqX3RocmVhZF90ICopZGVzYzsKKyAgICBwal9zdHJfdCB0aHJlYWRfbmFtZSA9IHBqX3N0cigoY2hhciopY3N0cl90aHJlYWRfbmFtZSk7CisKKyAgICAvKiBTaXplIHNhbml0eSBjaGVjay4gKi8KKyAgICBpZiAoc2l6ZW9mKHBqX3RocmVhZF9kZXNjKSA8IHNpemVvZihwal90aHJlYWRfdCkpIHsKKwlwal9hc3NlcnQoISJOb3QgZW5vdWdoIHBqX3RocmVhZF9kZXNjIHNpemUhIik7CisJcmV0dXJuIFBKX0VCVUc7CisgICAgfQorCisgICAgLyogSWYgYSB0aHJlYWQgZGVzY3JpcHRvciBoYXMgYmVlbiByZWdpc3RlcmVkIGJlZm9yZSwganVzdCByZXR1cm4gaXQuICovCisgICAgaWYgKHBqX3RocmVhZF9sb2NhbF9nZXQgKHRocmVhZF90bHNfaWQpICE9IDApIHsKKwkvLyAyMDA2LTAyLTI2IGJlbm55bHA6CisJLy8gIFRoaXMgd291bGRuJ3Qgd29yayBpbiBhbGwgY2FzZXMhLgorCS8vICBJZiB0aHJlYWQgaXMgY3JlYXRlZCBieSBleHRlcm5hbCBtb2R1bGUgKGUuZy4gc291bmQgdGhyZWFkKSwKKwkvLyAgdGhyZWFkIG1heSBiZSByZXVzZWQgd2hpbGUgdGhlIHBvb2wgdXNlZCBmb3IgdGhlIHRocmVhZCBkZXNjcmlwdG9yCisJLy8gIGhhcyBiZWVuIGRlbGV0ZWQgYnkgYXBwbGljYXRpb24uCisJLy8qdGhyZWFkX3B0ciA9IChwal90aHJlYWRfdCopcGpfdGhyZWFkX2xvY2FsX2dldCAodGhyZWFkX3Rsc19pZCk7CisgICAgICAgIC8vcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBhbmQgc2V0IHRoZSB0aHJlYWQgZW50cnkuICovCisgICAgcGpfYnplcm8oZGVzYywgc2l6ZW9mKHN0cnVjdCBwal90aHJlYWRfdCkpOworICAgIHRocmVhZC0+aHRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKKyAgICB0aHJlYWQtPmlkdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZElkKCk7CisKKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisgICAgdGhyZWFkLT5zdGtfc3RhcnQgPSAmc3RhY2tfcHRyOworICAgIHRocmVhZC0+c3RrX3NpemUgPSAweEZGRkZGRkZGVUw7CisgICAgdGhyZWFkLT5zdGtfbWF4X3VzYWdlID0gMDsKKyNlbHNlCisgICAgc3RhY2tfcHRyID0gJ1wwJzsKKyNlbmRpZgorCisgICAgaWYgKGNzdHJfdGhyZWFkX25hbWUgJiYgcGpfc3RybGVuKCZ0aHJlYWRfbmFtZSkgPCBzaXplb2YodGhyZWFkLT5vYmpfbmFtZSktMSkKKwlwal9hbnNpX3NucHJpbnRmKHRocmVhZC0+b2JqX25hbWUsIHNpemVvZih0aHJlYWQtPm9ial9uYW1lKSwgCisJCQkgY3N0cl90aHJlYWRfbmFtZSwgdGhyZWFkLT5pZHRocmVhZCk7CisgICAgZWxzZQorCXBqX2Fuc2lfc25wcmludGYodGhyZWFkLT5vYmpfbmFtZSwgc2l6ZW9mKHRocmVhZC0+b2JqX25hbWUpLCAKKwkJICAgICAgICAgInRociVwIiwgKHZvaWQqKShwal9zc2l6ZV90KXRocmVhZC0+aWR0aHJlYWQpOworICAgIAorICAgIHJjID0gcGpfdGhyZWFkX2xvY2FsX3NldCh0aHJlYWRfdGxzX2lkLCB0aHJlYWQpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiByYzsKKworICAgICp0aHJlYWRfcHRyID0gdGhyZWFkOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfdGhyZWFkX2luaXQodm9pZCkKKyAqLworcGpfc3RhdHVzX3QgcGpfdGhyZWFkX2luaXQodm9pZCkKK3sKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICBwal90aHJlYWRfdCAqdGhyZWFkOworCisgICAgcmMgPSBwal90aHJlYWRfbG9jYWxfYWxsb2MoJnRocmVhZF90bHNfaWQpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiByYzsKKworICAgIHJldHVybiBwal90aHJlYWRfcmVnaXN0ZXIoInRociVwIiwgbWFpbl90aHJlYWQsICZ0aHJlYWQpOworfQorCitzdGF0aWMgRFdPUkQgV0lOQVBJIHRocmVhZF9tYWluKHZvaWQgKnBhcmFtKQoreworICAgIHBqX3RocmVhZF90ICpyZWMgPSBwYXJhbTsKKyAgICBEV09SRCByZXN1bHQ7CisKKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisgICAgcmVjLT5zdGtfc3RhcnQgPSAoY2hhciopJnJlYzsKKyNlbmRpZgorCisgICAgaWYgKHBqX3RocmVhZF9sb2NhbF9zZXQodGhyZWFkX3Rsc19pZCwgcmVjKSAhPSBQSl9TVUNDRVNTKSB7CisJcGpfYXNzZXJ0KCEiVExTIGlzIG5vdCBzZXQgKHBqX2luaXQoKSBlcnJvcj8pIik7CisgICAgfQorCisgICAgUEpfTE9HKDYsKHJlYy0+b2JqX25hbWUsICJUaHJlYWQgc3RhcnRlZCIpKTsKKworICAgIHJlc3VsdCA9ICgqcmVjLT5wcm9jKShyZWMtPmFyZyk7CisKKyAgICBQSl9MT0coNiwocmVjLT5vYmpfbmFtZSwgIlRocmVhZCBxdWl0dGluZyIpKTsKKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLIT0wCisgICAgUEpfTE9HKDUsKHJlYy0+b2JqX25hbWUsICJUaHJlYWQgc3RhY2sgbWF4IHVzYWdlPSV1IGJ5ICVzOiVkIiwgCisJICAgICAgcmVjLT5zdGtfbWF4X3VzYWdlLCByZWMtPmNhbGxlcl9maWxlLCByZWMtPmNhbGxlcl9saW5lKSk7CisjZW5kaWYKKworICAgIHJldHVybiAoRFdPUkQpcmVzdWx0OworfQorCisvKgorICogcGpfdGhyZWFkX2NyZWF0ZSguLi4pCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2NyZWF0ZSggcGpfcG9vbF90ICpwb29sLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGhyZWFkX25hbWUsCisJCQkJICAgICAgcGpfdGhyZWFkX3Byb2MgKnByb2MsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcsCisJCQkJICAgICAgcGpfc2l6ZV90IHN0YWNrX3NpemUsIAorCQkJCSAgICAgIHVuc2lnbmVkIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aHJlYWRfdCAqKnRocmVhZF9wdHIpCit7CisgICAgRFdPUkQgZHdmbGFncyA9IDA7CisgICAgcGpfdGhyZWFkX3QgKnJlYzsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIHByb2MgJiYgdGhyZWFkX3B0ciwgUEpfRUlOVkFMKTsKKworICAgIC8qIFNldCBmbGFncyAqLworICAgIGlmIChmbGFncyAmIFBKX1RIUkVBRF9TVVNQRU5ERUQpCisJZHdmbGFncyB8PSBDUkVBVEVfU1VTUEVOREVEOworCisgICAgLyogQ3JlYXRlIHRocmVhZCByZWNvcmQgYW5kIGFzc2lnbiBuYW1lIGZvciB0aGUgdGhyZWFkICovCisgICAgcmVjID0gKHN0cnVjdCBwal90aHJlYWRfdCopIHBqX3Bvb2xfY2FsbG9jKHBvb2wsIDEsIHNpemVvZihwal90aHJlYWRfdCkpOworICAgIGlmICghcmVjKQorCXJldHVybiBQSl9FTk9NRU07CisKKyAgICAvKiBTZXQgbmFtZS4gKi8KKyAgICBpZiAoIXRocmVhZF9uYW1lKQorCXRocmVhZF9uYW1lID0gInRociVwIjsKKworICAgIGlmIChzdHJjaHIodGhyZWFkX25hbWUsICclJykpIHsKKwlwal9hbnNpX3NucHJpbnRmKHJlYy0+b2JqX25hbWUsIFBKX01BWF9PQkpfTkFNRSwgdGhyZWFkX25hbWUsIHJlYyk7CisgICAgfSBlbHNlIHsKKwlwal9hbnNpX3N0cm5jcHkocmVjLT5vYmpfbmFtZSwgdGhyZWFkX25hbWUsIFBKX01BWF9PQkpfTkFNRSk7CisJcmVjLT5vYmpfbmFtZVtQSl9NQVhfT0JKX05BTUUtMV0gPSAnXDAnOworICAgIH0KKworICAgIFBKX0xPRyg2LCAocmVjLT5vYmpfbmFtZSwgIlRocmVhZCBjcmVhdGVkIikpOworCisjaWYgZGVmaW5lZChQSl9PU19IQVNfQ0hFQ0tfU1RBQ0spICYmIFBKX09TX0hBU19DSEVDS19TVEFDSyE9MAorICAgIHJlYy0+c3RrX3NpemUgPSBzdGFja19zaXplID8gKHBqX3VpbnQzMl90KXN0YWNrX3NpemUgOiAweEZGRkZGRkZGVUw7CisgICAgcmVjLT5zdGtfbWF4X3VzYWdlID0gMDsKKyNlbmRpZgorCisgICAgLyogQ3JlYXRlIHRoZSB0aHJlYWQuICovCisgICAgcmVjLT5wcm9jID0gcHJvYzsKKyAgICByZWMtPmFyZyA9IGFyZzsKKyAgICByZWMtPmh0aHJlYWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwgc3RhY2tfc2l6ZSwgCisJCQkJdGhyZWFkX21haW4sIHJlYywKKwkJCQlkd2ZsYWdzLCAmcmVjLT5pZHRocmVhZCk7CisgICAgaWYgKHJlYy0+aHRocmVhZCA9PSBOVUxMKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgLyogU3VjY2VzcyEgKi8KKyAgICAqdGhyZWFkX3B0ciA9IHJlYzsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIHBqX3RocmVhZC1nZXRfbmFtZSgpCisgKi8KK1BKX0RFRihjb25zdCBjaGFyKikgcGpfdGhyZWFkX2dldF9uYW1lKHBqX3RocmVhZF90ICpwKQoreworICAgIHBqX3RocmVhZF90ICpyZWMgPSAocGpfdGhyZWFkX3QqKXA7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocCwgIiIpOworCisgICAgcmV0dXJuIHJlYy0+b2JqX25hbWU7Cit9CisKKy8qCisgKiBwal90aHJlYWRfcmVzdW1lKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal90aHJlYWRfcmVzdW1lKHBqX3RocmVhZF90ICpwKQoreworICAgIHBqX3RocmVhZF90ICpyZWMgPSAocGpfdGhyZWFkX3QqKXA7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocCwgUEpfRUlOVkFMKTsKKworICAgIGlmIChSZXN1bWVUaHJlYWQocmVjLT5odGhyZWFkKSA9PSAoRFdPUkQpLTEpCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBwal90aHJlYWRfdGhpcygpCisgKi8KK1BKX0RFRihwal90aHJlYWRfdCopIHBqX3RocmVhZF90aGlzKHZvaWQpCit7CisgICAgcGpfdGhyZWFkX3QgKnJlYyA9IHBqX3RocmVhZF9sb2NhbF9nZXQodGhyZWFkX3Rsc19pZCk7CisKKyAgICBpZiAocmVjID09IE5VTEwpIHsKKwlwal9hc3NlcnQoISJDYWxsaW5nIHBqbGliIGZyb20gdW5rbm93bi9leHRlcm5hbCB0aHJlYWQuIFlvdSBtdXN0ICIKKwkJICAgInJlZ2lzdGVyIGV4dGVybmFsIHRocmVhZHMgd2l0aCBwal90aHJlYWRfcmVnaXN0ZXIoKSAiCisJCSAgICJiZWZvcmUgY2FsbGluZyBhbnkgcGpsaWIgZnVuY3Rpb25zLiIpOworICAgIH0KKworICAgIC8qCisgICAgICogTVVTVCBOT1QgY2hlY2sgc3RhY2sgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAorICAgICAqIGJ5IFBKX0NIRUNLX1NUQUNLKCkgaXRzZWxmISEhCisgICAgICoKKyAgICAgKi8KKworICAgIHJldHVybiByZWM7Cit9CisKKy8qCisgKiBwal90aHJlYWRfam9pbigpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2pvaW4ocGpfdGhyZWFkX3QgKnApCit7CisgICAgcGpfdGhyZWFkX3QgKnJlYyA9IChwal90aHJlYWRfdCAqKXA7CisgICAgRFdPUkQgcmM7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocCwgUEpfRUlOVkFMKTsKKworICAgIGlmIChwID09IHBqX3RocmVhZF90aGlzKCkpCisJcmV0dXJuIFBKX0VDQU5DRUxMRUQ7CisKKyAgICBQSl9MT0coNiwgKHBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lLCAiSm9pbmluZyB0aHJlYWQgJXMiLCBwLT5vYmpfbmFtZSkpOworCisgICAgcmMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KHJlYy0+aHRocmVhZCwgSU5GSU5JVEUpOworCisgICAgaWYgKHJjPT1XQUlUX09CSkVDVF8wKQorICAgICAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICBlbHNlIGlmIChyYz09V0FJVF9USU1FT1VUKQorICAgICAgICByZXR1cm4gUEpfRVRJTUVET1VUOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7Cit9CisKKy8qCisgKiBwal90aHJlYWRfZGVzdHJveSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2Rlc3Ryb3kocGpfdGhyZWFkX3QgKnApCit7CisgICAgcGpfdGhyZWFkX3QgKnJlYyA9IChwal90aHJlYWRfdCAqKXA7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocCwgUEpfRUlOVkFMKTsKKworICAgIGlmIChDbG9zZUhhbmRsZShyZWMtPmh0aHJlYWQpID09IFRSVUUpCisgICAgICAgIHJldHVybiBQSl9TVUNDRVNTOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7Cit9CisKKy8qCisgKiBwal90aHJlYWRfc2xlZXAoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RocmVhZF9zbGVlcCh1bnNpZ25lZCBtc2VjKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgU2xlZXAobXNlYyk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKyNpZiBkZWZpbmVkKFBKX09TX0hBU19DSEVDS19TVEFDSykgJiYgUEpfT1NfSEFTX0NIRUNLX1NUQUNLICE9IDAKKy8qCisgKiBwal90aHJlYWRfY2hlY2tfc3RhY2soKQorICogSW1wbGVtZW50YXRpb24gZm9yIFBKX0NIRUNLX1NUQUNLKCkKKyAqLworUEpfREVGKHZvaWQpIHBqX3RocmVhZF9jaGVja19zdGFjayhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSkKK3sKKyAgICBjaGFyIHN0a19wdHI7CisgICAgcGpfdWludDMyX3QgdXNhZ2U7CisgICAgcGpfdGhyZWFkX3QgKnRocmVhZCA9IHBqX3RocmVhZF90aGlzKCk7CisKKyAgICBwal9hc3NlcnQodGhyZWFkKTsKKworICAgIC8qIENhbGN1bGF0ZSBjdXJyZW50IHVzYWdlLiAqLworICAgIHVzYWdlID0gKCZzdGtfcHRyID4gdGhyZWFkLT5zdGtfc3RhcnQpID8gCisJCShwal91aW50MzJfdCkoJnN0a19wdHIgLSB0aHJlYWQtPnN0a19zdGFydCkgOgorCQkocGpfdWludDMyX3QpKHRocmVhZC0+c3RrX3N0YXJ0IC0gJnN0a19wdHIpOworCisgICAgLyogQXNzZXJ0IGlmIHN0YWNrIHVzYWdlIGlzIGRhbmdlcm91c2x5IGhpZ2guICovCisgICAgcGpfYXNzZXJ0KCJTVEFDSyBPVkVSRkxPVyEhICIgJiYgKHVzYWdlIDw9IHRocmVhZC0+c3RrX3NpemUgLSAxMjgpKTsKKworICAgIC8qIEtlZXAgc3RhdGlzdGljLiAqLworICAgIGlmICh1c2FnZSA+IHRocmVhZC0+c3RrX21heF91c2FnZSkgeworCXRocmVhZC0+c3RrX21heF91c2FnZSA9IHVzYWdlOworCXRocmVhZC0+Y2FsbGVyX2ZpbGUgPSBmaWxlOworCXRocmVhZC0+Y2FsbGVyX2xpbmUgPSBsaW5lOworICAgIH0KKworfQorCisvKgorICogcGpfdGhyZWFkX2dldF9zdGFja19tYXhfdXNhZ2UoKQorICovCitQSl9ERUYocGpfdWludDMyX3QpIHBqX3RocmVhZF9nZXRfc3RhY2tfbWF4X3VzYWdlKHBqX3RocmVhZF90ICp0aHJlYWQpCit7CisgICAgcmV0dXJuIHRocmVhZC0+c3RrX21heF91c2FnZTsKK30KKworLyoKKyAqIHBqX3RocmVhZF9nZXRfc3RhY2tfaW5mbygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2dldF9zdGFja19pbmZvKCBwal90aHJlYWRfdCAqdGhyZWFkLAorCQkJCQkgICAgICBjb25zdCBjaGFyICoqZmlsZSwKKwkJCQkJICAgICAgaW50ICpsaW5lICkKK3sKKyAgICBwal9hc3NlcnQodGhyZWFkKTsKKworICAgICpmaWxlID0gdGhyZWFkLT5jYWxsZXJfZmlsZTsKKyAgICAqbGluZSA9IHRocmVhZC0+Y2FsbGVyX2xpbmU7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgkvKiBQSl9PU19IQVNfQ0hFQ0tfU1RBQ0sgKi8KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8qCisgKiBwal9hdG9taWNfY3JlYXRlKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9hdG9taWNfY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9hdG9taWNfdmFsdWVfdCBpbml0aWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9hdG9taWNfdCAqKmF0b21pY19wdHIpCit7CisgICAgcGpfYXRvbWljX3QgKmF0b21pY192YXIgPSBwal9wb29sX2FsbG9jKHBvb2wsIHNpemVvZihwal9hdG9taWNfdCkpOworICAgIGlmICghYXRvbWljX3ZhcikKKwlyZXR1cm4gUEpfRU5PTUVNOworCisgICAgYXRvbWljX3Zhci0+dmFsdWUgPSBpbml0aWFsOworICAgICphdG9taWNfcHRyID0gYXRvbWljX3ZhcjsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfYXRvbWljX2Rlc3Ryb3koKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2F0b21pY19kZXN0cm95KCBwal9hdG9taWNfdCAqdmFyICkKK3sKKyAgICBQSl9VTlVTRURfQVJHKHZhcik7CisgICAgUEpfQVNTRVJUX1JFVFVSTih2YXIsIFBKX0VJTlZBTCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIHBqX2F0b21pY19zZXQoKQorICovCitQSl9ERUYodm9pZCkgcGpfYXRvbWljX3NldCggcGpfYXRvbWljX3QgKmF0b21pY192YXIsIHBqX2F0b21pY192YWx1ZV90IHZhbHVlKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBJbnRlcmxvY2tlZEV4Y2hhbmdlKCZhdG9taWNfdmFyLT52YWx1ZSwgdmFsdWUpOworfQorCisvKgorICogcGpfYXRvbWljX2dldCgpCisgKi8KK1BKX0RFRihwal9hdG9taWNfdmFsdWVfdCkgcGpfYXRvbWljX2dldChwal9hdG9taWNfdCAqYXRvbWljX3ZhcikKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oYXRvbWljX3ZhciwgMCk7CisKKyAgICByZXR1cm4gYXRvbWljX3Zhci0+dmFsdWU7Cit9CisKKy8qCisgKiBwal9hdG9taWNfaW5jX2FuZF9nZXQoKQorICovCitQSl9ERUYocGpfYXRvbWljX3ZhbHVlX3QpIHBqX2F0b21pY19pbmNfYW5kX2dldChwal9hdG9taWNfdCAqYXRvbWljX3ZhcikKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisjaWYgZGVmaW5lZChQSl9XSU4zMl9XSU5OVCkgJiYgUEpfV0lOMzJfV0lOTlQgPj0gMHgwNDAwCisgICAgcmV0dXJuIEludGVybG9ja2VkSW5jcmVtZW50KCZhdG9taWNfdmFyLT52YWx1ZSk7CisjZWxzZQorICAgIHJldHVybiBJbnRlcmxvY2tlZEluY3JlbWVudCgmYXRvbWljX3Zhci0+dmFsdWUpOworI2VuZGlmCit9CisKKy8qCisgKiBwal9hdG9taWNfaW5jKCkKKyAqLworUEpfREVGKHZvaWQpIHBqX2F0b21pY19pbmMocGpfYXRvbWljX3QgKmF0b21pY192YXIpCit7CisgICAgcGpfYXRvbWljX2luY19hbmRfZ2V0KGF0b21pY192YXIpOworfQorCisvKgorICogcGpfYXRvbWljX2RlY19hbmRfZ2V0KCkKKyAqLworUEpfREVGKHBqX2F0b21pY192YWx1ZV90KSBwal9hdG9taWNfZGVjX2FuZF9nZXQocGpfYXRvbWljX3QgKmF0b21pY192YXIpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworI2lmIGRlZmluZWQoUEpfV0lOMzJfV0lOTlQpICYmIFBKX1dJTjMyX1dJTk5UID49IDB4MDQwMAorICAgIHJldHVybiBJbnRlcmxvY2tlZERlY3JlbWVudCgmYXRvbWljX3Zhci0+dmFsdWUpOworI2Vsc2UKKyAgICByZXR1cm4gSW50ZXJsb2NrZWREZWNyZW1lbnQoJmF0b21pY192YXItPnZhbHVlKTsKKyNlbmRpZgorfQorCisvKgorICogcGpfYXRvbWljX2RlYygpCisgKi8KK1BKX0RFRih2b2lkKSBwal9hdG9taWNfZGVjKHBqX2F0b21pY190ICphdG9taWNfdmFyKQoreworICAgIHBqX2F0b21pY19kZWNfYW5kX2dldChhdG9taWNfdmFyKTsKK30KKworLyoKKyAqIHBqX2F0b21pY19hZGQoKQorICovCitQSl9ERUYodm9pZCkgcGpfYXRvbWljX2FkZCggcGpfYXRvbWljX3QgKmF0b21pY192YXIsCisJCQkgICAgcGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUgKQoreworI2lmIGRlZmluZWQoUEpfV0lOMzJfV0lOTlQpICYmIFBKX1dJTjMyX1dJTk5UID49IDB4MDQwMAorICAgIEludGVybG9ja2VkRXhjaGFuZ2VBZGQoICZhdG9taWNfdmFyLT52YWx1ZSwgdmFsdWUgKTsKKyNlbHNlCisgICAgSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCggJmF0b21pY192YXItPnZhbHVlLCB2YWx1ZSApOworI2VuZGlmCit9CisKKy8qCisgKiBwal9hdG9taWNfYWRkX2FuZF9nZXQoKQorICovCitQSl9ERUYocGpfYXRvbWljX3ZhbHVlX3QpIHBqX2F0b21pY19hZGRfYW5kX2dldCggcGpfYXRvbWljX3QgKmF0b21pY192YXIsCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgcGpfYXRvbWljX3ZhbHVlX3QgdmFsdWUpCit7CisjaWYgZGVmaW5lZChQSl9XSU4zMl9XSU5OVCkgJiYgUEpfV0lOMzJfV0lOTlQgPj0gMHgwNDAwCisgICAgbG9uZyBvbGRWYWx1ZSA9IEludGVybG9ja2VkRXhjaGFuZ2VBZGQoICZhdG9taWNfdmFyLT52YWx1ZSwgdmFsdWUpOworICAgIHJldHVybiBvbGRWYWx1ZSArIHZhbHVlOworI2Vsc2UKKyAgICBsb25nIG9sZFZhbHVlID0gSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCggJmF0b21pY192YXItPnZhbHVlLCB2YWx1ZSk7CisgICAgcmV0dXJuIG9sZFZhbHVlICsgdmFsdWU7CisjZW5kaWYKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLyoKKyAqIHBqX3RocmVhZF9sb2NhbF9hbGxvYygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2xvY2FsX2FsbG9jKGxvbmcgKmluZGV4KQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4oaW5kZXggIT0gTlVMTCwgUEpfRUlOVkFMKTsKKworICAgIC8vQ2FuJ3QgY2hlY2sgc3RhY2sgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiB0aGUKKyAgICAvL2JlZ2lubmluZyBiZWZvcmUgbWFpbiB0aHJlYWQgaXMgaW5pdGlhbGl6ZWQuCisgICAgLy9QSl9DSEVDS19TVEFDSygpOworCisgICAgKmluZGV4ID0gVGxzQWxsb2MoKTsKKworICAgIGlmICgqaW5kZXggPT0gVExTX09VVF9PRl9JTkRFWEVTKQorICAgICAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKEdldExhc3RFcnJvcigpKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfdGhyZWFkX2xvY2FsX2ZyZWUoKQorICovCitQSl9ERUYodm9pZCkgcGpfdGhyZWFkX2xvY2FsX2ZyZWUobG9uZyBpbmRleCkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFRsc0ZyZWUoaW5kZXgpOworfQorCisvKgorICogcGpfdGhyZWFkX2xvY2FsX3NldCgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGhyZWFkX2xvY2FsX3NldChsb25nIGluZGV4LCB2b2lkICp2YWx1ZSkKK3sKKyAgICBCT09MIHJjOworCisgICAgLy9DYW4ndCBjaGVjayBzdGFjayBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRoZQorICAgIC8vYmVnaW5uaW5nIGJlZm9yZSBtYWluIHRocmVhZCBpcyBpbml0aWFsaXplZC4KKyAgICAvL1BKX0NIRUNLX1NUQUNLKCk7CisgICAgcmMgPSBUbHNTZXRWYWx1ZShpbmRleCwgdmFsdWUpOworICAgIHJldHVybiByYyE9MCA/IFBKX1NVQ0NFU1MgOiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworfQorCisvKgorICogcGpfdGhyZWFkX2xvY2FsX2dldCgpCisgKi8KK1BKX0RFRih2b2lkKikgcGpfdGhyZWFkX2xvY2FsX2dldChsb25nIGluZGV4KQoreworICAgIC8vQ2FuJ3QgY2hlY2sgc3RhY2sgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAorICAgIC8vYnkgUEpfQ0hFQ0tfU1RBQ0soKSBpdHNlbGYhISEKKyAgICAvL1BKX0NIRUNLX1NUQUNLKCk7CisgICAgcmV0dXJuIFRsc0dldFZhbHVlKGluZGV4KTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHBqX3N0YXR1c190IGluaXRfbXV0ZXgocGpfbXV0ZXhfdCAqbXV0ZXgsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisjaWYgUEpfV0lOMzJfV0lOTlQgPj0gMHgwNDAwCisgICAgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigmbXV0ZXgtPmNyaXQpOworI2Vsc2UKKyAgICBtdXRleC0+aE11dGV4ID0gQ3JlYXRlTXV0ZXgoTlVMTCwgRkFMU0UsIE5VTEwpOworICAgIGlmICghbXV0ZXgtPmhNdXRleCkgeworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworICAgIH0KKyNlbmRpZgorCisjaWYgUEpfREVCVUcKKyAgICAvKiBTZXQgb3duZXIuICovCisgICAgbXV0ZXgtPm5lc3RpbmdfbGV2ZWwgPSAwOworICAgIG11dGV4LT5vd25lciA9IE5VTEw7CisjZW5kaWYKKworICAgIC8qIFNldCBuYW1lLiAqLworICAgIGlmICghbmFtZSkgeworCW5hbWUgPSAibXR4JXAiOworICAgIH0KKyAgICBpZiAoc3RyY2hyKG5hbWUsICclJykpIHsKKwlwal9hbnNpX3NucHJpbnRmKG11dGV4LT5vYmpfbmFtZSwgUEpfTUFYX09CSl9OQU1FLCBuYW1lLCBtdXRleCk7CisgICAgfSBlbHNlIHsKKwlwal9hbnNpX3N0cm5jcHkobXV0ZXgtPm9ial9uYW1lLCBuYW1lLCBQSl9NQVhfT0JKX05BTUUpOworCW11dGV4LT5vYmpfbmFtZVtQSl9NQVhfT0JKX05BTUUtMV0gPSAnXDAnOworICAgIH0KKworICAgIFBKX0xPRyg2LCAobXV0ZXgtPm9ial9uYW1lLCAiTXV0ZXggY3JlYXRlZCIpKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIHBqX211dGV4X2NyZWF0ZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfY3JlYXRlKHBqX3Bvb2xfdCAqcG9vbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfbXV0ZXhfdCAqKm11dGV4X3B0cikKK3sKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICBwal9tdXRleF90ICptdXRleDsKKworICAgIFBKX1VOVVNFRF9BUkcodHlwZSk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIG11dGV4X3B0ciwgUEpfRUlOVkFMKTsKKworICAgIG11dGV4ID0gcGpfcG9vbF9hbGxvYyhwb29sLCBzaXplb2YoKm11dGV4KSk7CisgICAgaWYgKCFtdXRleCkKKyAgICAgICAgcmV0dXJuIFBKX0VOT01FTTsKKworICAgIHJjID0gaW5pdF9tdXRleChtdXRleCwgbmFtZSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiByYzsKKworICAgICptdXRleF9wdHIgPSBtdXRleDsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogcGpfbXV0ZXhfY3JlYXRlX3NpbXBsZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfY3JlYXRlX3NpbXBsZSggcGpfcG9vbF90ICpwb29sLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJICAgIHBqX211dGV4X3QgKiptdXRleCApCit7CisgICAgcmV0dXJuIHBqX211dGV4X2NyZWF0ZShwb29sLCBuYW1lLCBQSl9NVVRFWF9TSU1QTEUsIG11dGV4KTsKK30KKworLyoKKyAqIHBqX211dGV4X2NyZWF0ZV9yZWN1cnNpdmUoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X2NyZWF0ZV9yZWN1cnNpdmUoIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSAgICAgICBwal9tdXRleF90ICoqbXV0ZXggKQoreworICAgIHJldHVybiBwal9tdXRleF9jcmVhdGUocG9vbCwgbmFtZSwgUEpfTVVURVhfUkVDVVJTRSwgbXV0ZXgpOworfQorCisvKgorICogcGpfbXV0ZXhfbG9jaygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfbG9jayhwal9tdXRleF90ICptdXRleCkKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4obXV0ZXgsIFBKX0VJTlZBTCk7CisKKyAgICBMT0dfTVVURVgoKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4OiB0aHJlYWQgJXMgaXMgd2FpdGluZyIsIAorCQkJCXBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lKSk7CisKKyNpZiBQSl9XSU4zMl9XSU5OVCA+PSAweDA0MDAKKyAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmbXV0ZXgtPmNyaXQpOworICAgIHN0YXR1cz1QSl9TVUNDRVNTOworI2Vsc2UKKyAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdChtdXRleC0+aE11dGV4LCBJTkZJTklURSk9PVdBSVRfT0JKRUNUXzApCisgICAgICAgIHN0YXR1cyA9IFBKX1NVQ0NFU1M7CisgICAgZWxzZQorICAgICAgICBzdGF0dXMgPSBQSl9TVEFUVVNfRlJPTV9PUyhHZXRMYXN0RXJyb3IoKSk7CisKKyNlbmRpZgorICAgIExPR19NVVRFWCgobXV0ZXgtPm9ial9uYW1lLCAKKwkgICAgICAoc3RhdHVzPT1QSl9TVUNDRVNTID8gIk11dGV4IGFjcXVpcmVkIGJ5IHRocmVhZCAlcyIgOiAiRkFJTEVEIGJ5ICVzIiksCisJICAgICAgcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKworI2lmIFBKX0RFQlVHCisgICAgaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKSB7CisJbXV0ZXgtPm93bmVyID0gcGpfdGhyZWFkX3RoaXMoKTsKKwkrK211dGV4LT5uZXN0aW5nX2xldmVsOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIHBqX211dGV4X3VubG9jaygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfdW5sb2NrKHBqX211dGV4X3QgKm11dGV4KQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihtdXRleCwgUEpfRUlOVkFMKTsKKworI2lmIFBKX0RFQlVHCisgICAgcGpfYXNzZXJ0KG11dGV4LT5vd25lciA9PSBwal90aHJlYWRfdGhpcygpKTsKKyAgICBpZiAoLS1tdXRleC0+bmVzdGluZ19sZXZlbCA9PSAwKSB7CisJbXV0ZXgtPm93bmVyID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKworICAgIExPR19NVVRFWCgobXV0ZXgtPm9ial9uYW1lLCAiTXV0ZXggcmVsZWFzZWQgYnkgdGhyZWFkICVzIiwgCisJCQkJcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKworI2lmIFBKX1dJTjMyX1dJTk5UID49IDB4MDQwMAorICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZtdXRleC0+Y3JpdCk7CisgICAgc3RhdHVzPVBKX1NVQ0NFU1M7CisjZWxzZQorICAgIHN0YXR1cyA9IFJlbGVhc2VNdXRleChtdXRleC0+aE11dGV4KSA/IFBKX1NVQ0NFU1MgOiAKKyAgICAgICAgICAgICAgICBQSl9TVEFUVVNfRlJPTV9PUyhHZXRMYXN0RXJyb3IoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisvKgorICogcGpfbXV0ZXhfdHJ5bG9jaygpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfbXV0ZXhfdHJ5bG9jayhwal9tdXRleF90ICptdXRleCkKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4obXV0ZXgsIFBKX0VJTlZBTCk7CisKKyAgICBMT0dfTVVURVgoKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4OiB0aHJlYWQgJXMgaXMgdHJ5aW5nIiwgCisJCQkJcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKworI2lmIFBKX1dJTjMyX1dJTk5UID49IDB4MDQwMAorICAgIHN0YXR1cz1UcnlFbnRlckNyaXRpY2FsU2VjdGlvbigmbXV0ZXgtPmNyaXQpID8gUEpfU1VDQ0VTUyA6IFBKX0VVTktOT1dOOworI2Vsc2UKKyAgICBzdGF0dXMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KG11dGV4LT5oTXV0ZXgsIDApPT1XQUlUX09CSkVDVF8wID8gCisgICAgICAgICAgICAgICAgUEpfU1VDQ0VTUyA6IFBKX0VUSU1FRE9VVDsKKyNlbmRpZgorICAgIGlmIChzdGF0dXM9PVBKX1NVQ0NFU1MpIHsKKwlMT0dfTVVURVgoKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4IGFjcXVpcmVkIGJ5IHRocmVhZCAlcyIsIAorCQkJCSAgcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKworI2lmIFBKX0RFQlVHCisJbXV0ZXgtPm93bmVyID0gcGpfdGhyZWFkX3RoaXMoKTsKKwkrK211dGV4LT5uZXN0aW5nX2xldmVsOworI2VuZGlmCisgICAgfSBlbHNlIHsKKwlMT0dfTVVURVgoKG11dGV4LT5vYmpfbmFtZSwgIk11dGV4OiB0aHJlYWQgJXMncyB0cnlsb2NrKCkgZmFpbGVkIiwgCisJCQkJICAgIHBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lKSk7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIHBqX211dGV4X2Rlc3Ryb3koKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX211dGV4X2Rlc3Ryb3kocGpfbXV0ZXhfdCAqbXV0ZXgpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG11dGV4LCBQSl9FSU5WQUwpOworCisgICAgTE9HX01VVEVYKChtdXRleC0+b2JqX25hbWUsICJNdXRleCBkZXN0cm95ZWQiKSk7CisKKyNpZiBQSl9XSU4zMl9XSU5OVCA+PSAweDA0MDAKKyAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJm11dGV4LT5jcml0KTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyNlbHNlCisgICAgcmV0dXJuIENsb3NlSGFuZGxlKG11dGV4LT5oTXV0ZXgpID8gUEpfU1VDQ0VTUyA6IAorICAgICAgICAgICAgUEpfUkVUVVJOX09TX0VSUk9SKEdldExhc3RFcnJvcigpKTsKKyNlbmRpZgorfQorCisvKgorICogcGpfbXV0ZXhfaXNfbG9ja2VkKCkKKyAqLworUEpfREVGKHBqX2Jvb2xfdCkgcGpfbXV0ZXhfaXNfbG9ja2VkKHBqX211dGV4X3QgKm11dGV4KQoreworI2lmIFBKX0RFQlVHCisgICAgcmV0dXJuIG11dGV4LT5vd25lciA9PSBwal90aHJlYWRfdGhpcygpOworI2Vsc2UKKyAgICBQSl9VTlVTRURfQVJHKG11dGV4KTsKKyAgICBwal9hc3NlcnQoISJQSl9ERUJVRyBpcyBub3Qgc2V0ISIpOworICAgIHJldHVybiAxOworI2VuZGlmCit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8qCisgKiBXaW4zMiBsYWNrcyBSZWFkL1dyaXRlIG11dGV4LCBzbyBpbmNsdWRlIHRoZSBlbXVsYXRpb24uCisgKi8KKyNpbmNsdWRlICJvc19yd211dGV4LmMiCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8qCisgKiBwal9lbnRlcl9jcml0aWNhbF9zZWN0aW9uKCkKKyAqLworUEpfREVGKHZvaWQpIHBqX2VudGVyX2NyaXRpY2FsX3NlY3Rpb24odm9pZCkKK3sKKyAgICBwal9tdXRleF9sb2NrKCZjcml0aWNhbF9zZWN0aW9uX211dGV4KTsKK30KKworCisvKgorICogcGpfbGVhdmVfY3JpdGljYWxfc2VjdGlvbigpCisgKi8KK1BKX0RFRih2b2lkKSBwal9sZWF2ZV9jcml0aWNhbF9zZWN0aW9uKHZvaWQpCit7CisgICAgcGpfbXV0ZXhfdW5sb2NrKCZjcml0aWNhbF9zZWN0aW9uX211dGV4KTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI2lmIGRlZmluZWQoUEpfSEFTX1NFTUFQSE9SRSkgJiYgUEpfSEFTX1NFTUFQSE9SRSAhPSAwCisKKy8qCisgKiBwal9zZW1fY3JlYXRlKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zZW1fY3JlYXRlKCBwal9wb29sX3QgKnBvb2wsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgIHVuc2lnbmVkIGluaXRpYWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NlbV90ICoqc2VtX3B0cikKK3sKKyAgICBwal9zZW1fdCAqc2VtOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBvb2wgJiYgc2VtX3B0ciwgUEpfRUlOVkFMKTsKKworICAgIHNlbSA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgc2l6ZW9mKCpzZW0pKTsgICAgCisgICAgc2VtLT5oU2VtYXBob3JlID0gQ3JlYXRlU2VtYXBob3JlKE5VTEwsIGluaXRpYWwsIG1heCwgTlVMTCk7CisgICAgaWYgKCFzZW0tPmhTZW1hcGhvcmUpCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICAvKiBTZXQgbmFtZS4gKi8KKyAgICBpZiAoIW5hbWUpIHsKKwluYW1lID0gInNlbSVwIjsKKyAgICB9CisgICAgaWYgKHN0cmNocihuYW1lLCAnJScpKSB7CisJcGpfYW5zaV9zbnByaW50ZihzZW0tPm9ial9uYW1lLCBQSl9NQVhfT0JKX05BTUUsIG5hbWUsIHNlbSk7CisgICAgfSBlbHNlIHsKKwlwal9hbnNpX3N0cm5jcHkoc2VtLT5vYmpfbmFtZSwgbmFtZSwgUEpfTUFYX09CSl9OQU1FKTsKKwlzZW0tPm9ial9uYW1lW1BKX01BWF9PQkpfTkFNRS0xXSA9ICdcMCc7CisgICAgfQorCisgICAgTE9HX01VVEVYKChzZW0tPm9ial9uYW1lLCAiU2VtYXBob3JlIGNyZWF0ZWQiKSk7CisKKyAgICAqc2VtX3B0ciA9IHNlbTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworc3RhdGljIHBqX3N0YXR1c190IHBqX3NlbV93YWl0X2Zvcihwal9zZW1fdCAqc2VtLCB1bnNpZ25lZCB0aW1lb3V0KQoreworICAgIERXT1JEIHJlc3VsdDsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzZW0sIFBKX0VJTlZBTCk7CisKKyAgICBMT0dfTVVURVgoKHNlbS0+b2JqX25hbWUsICJTZW1hcGhvcmU6IHRocmVhZCAlcyBpcyB3YWl0aW5nIiwgCisJCQkgICAgICBwal90aHJlYWRfdGhpcygpLT5vYmpfbmFtZSkpOworCisgICAgcmVzdWx0ID0gV2FpdEZvclNpbmdsZU9iamVjdChzZW0tPmhTZW1hcGhvcmUsIHRpbWVvdXQpOworICAgIGlmIChyZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCkgeworCUxPR19NVVRFWCgoc2VtLT5vYmpfbmFtZSwgIlNlbWFwaG9yZSBhY3F1aXJlZCBieSB0aHJlYWQgJXMiLCAKKwkJCQkgIHBqX3RocmVhZF90aGlzKCktPm9ial9uYW1lKSk7CisgICAgfSBlbHNlIHsKKwlMT0dfTVVURVgoKHNlbS0+b2JqX25hbWUsICJTZW1hcGhvcmU6IHRocmVhZCAlcyBGQUlMRUQgdG8gYWNxdWlyZSIsIAorCQkJCSAgcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0PT1XQUlUX09CSkVDVF8wKQorICAgICAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICBlbHNlIGlmIChyZXN1bHQ9PVdBSVRfVElNRU9VVCkKKyAgICAgICAgcmV0dXJuIFBKX0VUSU1FRE9VVDsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworfQorCisvKgorICogcGpfc2VtX3dhaXQoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NlbV93YWl0KHBqX3NlbV90ICpzZW0pCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNlbSwgUEpfRUlOVkFMKTsKKworICAgIHJldHVybiBwal9zZW1fd2FpdF9mb3Ioc2VtLCBJTkZJTklURSk7Cit9CisKKy8qCisgKiBwal9zZW1fdHJ5d2FpdCgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc2VtX3RyeXdhaXQocGpfc2VtX3QgKnNlbSkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc2VtLCBQSl9FSU5WQUwpOworCisgICAgcmV0dXJuIHBqX3NlbV93YWl0X2ZvcihzZW0sIDApOworfQorCisvKgorICogcGpfc2VtX3Bvc3QoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NlbV9wb3N0KHBqX3NlbV90ICpzZW0pCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNlbSwgUEpfRUlOVkFMKTsKKworICAgIExPR19NVVRFWCgoc2VtLT5vYmpfbmFtZSwgIlNlbWFwaG9yZSByZWxlYXNlZCBieSB0aHJlYWQgJXMiLAorCQkJICAgICAgcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKworICAgIGlmIChSZWxlYXNlU2VtYXBob3JlKHNlbS0+aFNlbWFwaG9yZSwgMSwgTlVMTCkpCisgICAgICAgIHJldHVybiBQSl9TVUNDRVNTOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7Cit9CisKKy8qCisgKiBwal9zZW1fZGVzdHJveSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc2VtX2Rlc3Ryb3kocGpfc2VtX3QgKnNlbSkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc2VtLCBQSl9FSU5WQUwpOworCisgICAgTE9HX01VVEVYKChzZW0tPm9ial9uYW1lLCAiU2VtYXBob3JlIGRlc3Ryb3llZCBieSB0aHJlYWQgJXMiLAorCQkJICAgICAgcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKworICAgIGlmIChDbG9zZUhhbmRsZShzZW0tPmhTZW1hcGhvcmUpKQorICAgICAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworfQorCisjZW5kaWYJLyogUEpfSEFTX1NFTUFQSE9SRSAqLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisKKyNpZiBkZWZpbmVkKFBKX0hBU19FVkVOVF9PQkopICYmIFBKX0hBU19FVkVOVF9PQkogIT0gMAorCisvKgorICogcGpfZXZlbnRfY3JlYXRlKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9ldmVudF9jcmVhdGUoIHBqX3Bvb2xfdCAqcG9vbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgIHBqX2Jvb2xfdCBtYW51YWxfcmVzZXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2Jvb2xfdCBpbml0aWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2V2ZW50X3QgKipldmVudF9wdHIpCit7CisgICAgcGpfZXZlbnRfdCAqZXZlbnQ7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocG9vbCAmJiBldmVudF9wdHIsIFBKX0VJTlZBTCk7CisKKyAgICBldmVudCA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgc2l6ZW9mKCpldmVudCkpOworICAgIGlmICghZXZlbnQpCisgICAgICAgIHJldHVybiBQSl9FTk9NRU07CisKKyAgICBldmVudC0+aEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgbWFudWFsX3Jlc2V0P1RSVUU6RkFMU0UsIAorCQkJCWluaXRpYWw/VFJVRTpGQUxTRSwgTlVMTCk7CisKKyAgICBpZiAoIWV2ZW50LT5oRXZlbnQpCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICAvKiBTZXQgbmFtZS4gKi8KKyAgICBpZiAoIW5hbWUpIHsKKwluYW1lID0gImV2dCVwIjsKKyAgICB9CisgICAgaWYgKHN0cmNocihuYW1lLCAnJScpKSB7CisJcGpfYW5zaV9zbnByaW50ZihldmVudC0+b2JqX25hbWUsIFBKX01BWF9PQkpfTkFNRSwgbmFtZSwgZXZlbnQpOworICAgIH0gZWxzZSB7CisJcGpfYW5zaV9zdHJuY3B5KGV2ZW50LT5vYmpfbmFtZSwgbmFtZSwgUEpfTUFYX09CSl9OQU1FKTsKKwlldmVudC0+b2JqX25hbWVbUEpfTUFYX09CSl9OQU1FLTFdID0gJ1wwJzsKKyAgICB9CisKKyAgICBQSl9MT0coNiwgKGV2ZW50LT5vYmpfbmFtZSwgIkV2ZW50IGNyZWF0ZWQiKSk7CisKKyAgICAqZXZlbnRfcHRyID0gZXZlbnQ7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBwal9zdGF0dXNfdCBwal9ldmVudF93YWl0X2Zvcihwal9ldmVudF90ICpldmVudCwgdW5zaWduZWQgdGltZW91dCkKK3sKKyAgICBEV09SRCByZXN1bHQ7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oZXZlbnQsIFBKX0VJTlZBTCk7CisKKyAgICBQSl9MT0coNiwgKGV2ZW50LT5vYmpfbmFtZSwgIkV2ZW50OiB0aHJlYWQgJXMgaXMgd2FpdGluZyIsIAorCQkJICAgICAgICBwal90aHJlYWRfdGhpcygpLT5vYmpfbmFtZSkpOworCisgICAgcmVzdWx0ID0gV2FpdEZvclNpbmdsZU9iamVjdChldmVudC0+aEV2ZW50LCB0aW1lb3V0KTsKKyAgICBpZiAocmVzdWx0ID09IFdBSVRfT0JKRUNUXzApIHsKKwlQSl9MT0coNiwgKGV2ZW50LT5vYmpfbmFtZSwgIkV2ZW50OiB0aHJlYWQgJXMgaXMgcmVsZWFzZWQiLCAKKwkJCQkgICAgcGpfdGhyZWFkX3RoaXMoKS0+b2JqX25hbWUpKTsKKyAgICB9IGVsc2UgeworCVBKX0xPRyg2LCAoZXZlbnQtPm9ial9uYW1lLCAiRXZlbnQ6IHRocmVhZCAlcyBGQUlMRUQgdG8gYWNxdWlyZSIsIAorCQkJCSAgICBwal90aHJlYWRfdGhpcygpLT5vYmpfbmFtZSkpOworICAgIH0KKworICAgIGlmIChyZXN1bHQ9PVdBSVRfT0JKRUNUXzApCisgICAgICAgIHJldHVybiBQSl9TVUNDRVNTOworICAgIGVsc2UgaWYgKHJlc3VsdD09V0FJVF9USU1FT1VUKQorICAgICAgICByZXR1cm4gUEpfRVRJTUVET1VUOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7Cit9CisKKy8qCisgKiBwal9ldmVudF93YWl0KCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9ldmVudF93YWl0KHBqX2V2ZW50X3QgKmV2ZW50KQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4oZXZlbnQsIFBKX0VJTlZBTCk7CisKKyAgICByZXR1cm4gcGpfZXZlbnRfd2FpdF9mb3IoZXZlbnQsIElORklOSVRFKTsKK30KKworLyoKKyAqIHBqX2V2ZW50X3RyeXdhaXQoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2V2ZW50X3RyeXdhaXQocGpfZXZlbnRfdCAqZXZlbnQpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihldmVudCwgUEpfRUlOVkFMKTsKKworICAgIHJldHVybiBwal9ldmVudF93YWl0X2ZvcihldmVudCwgMCk7Cit9CisKKy8qCisgKiBwal9ldmVudF9zZXQoKQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2V2ZW50X3NldChwal9ldmVudF90ICpldmVudCkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oZXZlbnQsIFBKX0VJTlZBTCk7CisKKyAgICBQSl9MT0coNiwgKGV2ZW50LT5vYmpfbmFtZSwgIlNldHRpbmcgZXZlbnQiKSk7CisKKyAgICBpZiAoU2V0RXZlbnQoZXZlbnQtPmhFdmVudCkpCisgICAgICAgIHJldHVybiBQSl9TVUNDRVNTOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7Cit9CisKKy8qCisgKiBwal9ldmVudF9wdWxzZSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZXZlbnRfcHVsc2UocGpfZXZlbnRfdCAqZXZlbnQpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGV2ZW50LCBQSl9FSU5WQUwpOworCisgICAgUEpfTE9HKDYsIChldmVudC0+b2JqX25hbWUsICJQdWxzaW5nIGV2ZW50IikpOworCisgICAgaWYgKFB1bHNlRXZlbnQoZXZlbnQtPmhFdmVudCkpCisgICAgICAgIHJldHVybiBQSl9TVUNDRVNTOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7Cit9CisKKy8qCisgKiBwal9ldmVudF9yZXNldCgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZXZlbnRfcmVzZXQocGpfZXZlbnRfdCAqZXZlbnQpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGV2ZW50LCBQSl9FSU5WQUwpOworCisgICAgUEpfTE9HKDYsIChldmVudC0+b2JqX25hbWUsICJFdmVudCBpcyByZXNldCIpKTsKKworICAgIGlmIChSZXNldEV2ZW50KGV2ZW50LT5oRXZlbnQpKQorICAgICAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworfQorCisvKgorICogcGpfZXZlbnRfZGVzdHJveSgpCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZXZlbnRfZGVzdHJveShwal9ldmVudF90ICpldmVudCkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oZXZlbnQsIFBKX0VJTlZBTCk7CisKKyAgICBQSl9MT0coNiwgKGV2ZW50LT5vYmpfbmFtZSwgIkV2ZW50IGlzIGRlc3Ryb3lpbmciKSk7CisKKyAgICBpZiAoQ2xvc2VIYW5kbGUoZXZlbnQtPmhFdmVudCkpCisgICAgICAgIHJldHVybiBQSl9TVUNDRVNTOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7Cit9CisKKyNlbmRpZgkvKiBQSl9IQVNfRVZFTlRfT0JKICovCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyNpZiBkZWZpbmVkKFBKX1RFUk1fSEFTX0NPTE9SKSAmJiBQSl9URVJNX0hBU19DT0xPUiAhPSAwCisvKgorICogVGVybWluYWwgY29sb3IKKyAqLworCitzdGF0aWMgV09SRCBwal9jb2xvcl90b19vc19hdHRyKHBqX2NvbG9yX3QgY29sb3IpCit7CisgICAgV09SRCBhdHRyID0gMDsKKworICAgIGlmIChjb2xvciAmIFBKX1RFUk1fQ09MT1JfUikKKwlhdHRyIHw9IEZPUkVHUk9VTkRfUkVEOworICAgIGlmIChjb2xvciAmIFBKX1RFUk1fQ09MT1JfRykKKwlhdHRyIHw9IEZPUkVHUk9VTkRfR1JFRU47CisgICAgaWYgKGNvbG9yICYgUEpfVEVSTV9DT0xPUl9CKQorCWF0dHIgfD0gRk9SRUdST1VORF9CTFVFOworICAgIGlmIChjb2xvciAmIFBKX1RFUk1fQ09MT1JfQlJJR0hUKQorCWF0dHIgfD0gRk9SRUdST1VORF9JTlRFTlNJVFk7CisKKyAgICByZXR1cm4gYXR0cjsKK30KKworc3RhdGljIHBqX2NvbG9yX3Qgb3NfYXR0cl90b19wal9jb2xvcihXT1JEIGF0dHIpCit7CisgICAgaW50IGNvbG9yID0gMDsKKworICAgIGlmIChhdHRyICYgRk9SRUdST1VORF9SRUQpCisJY29sb3IgfD0gUEpfVEVSTV9DT0xPUl9SOworICAgIGlmIChhdHRyICYgRk9SRUdST1VORF9HUkVFTikKKwljb2xvciB8PSBQSl9URVJNX0NPTE9SX0c7CisgICAgaWYgKGF0dHIgJiBGT1JFR1JPVU5EX0JMVUUpCisJY29sb3IgfD0gUEpfVEVSTV9DT0xPUl9COworICAgIGlmIChhdHRyICYgRk9SRUdST1VORF9JTlRFTlNJVFkpCisJY29sb3IgfD0gUEpfVEVSTV9DT0xPUl9CUklHSFQ7CisKKyAgICByZXR1cm4gY29sb3I7Cit9CisKKworLyoKKyAqIHBqX3Rlcm1fc2V0X2NvbG9yKCkKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal90ZXJtX3NldF9jb2xvcihwal9jb2xvcl90IGNvbG9yKQoreworICAgIEJPT0wgcmM7CisgICAgV09SRCBhdHRyID0gMDsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBhdHRyID0gcGpfY29sb3JfdG9fb3NfYXR0cihjb2xvcik7CisgICAgcmMgPSBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZSggR2V0U3RkSGFuZGxlKFNURF9PVVRQVVRfSEFORExFKSwgYXR0cik7CisgICAgcmV0dXJuIHJjID8gUEpfU1VDQ0VTUyA6IFBKX1JFVFVSTl9PU19FUlJPUihHZXRMYXN0RXJyb3IoKSk7Cit9CisKKy8qCisgKiBwal90ZXJtX2dldF9jb2xvcigpCisgKiBHZXQgY3VycmVudCB0ZXJtaW5hbCBmb3JlZ3JvdW5kIGNvbG9yLgorICovCitQSl9ERUYocGpfY29sb3JfdCkgcGpfdGVybV9nZXRfY29sb3Iodm9pZCkKK3sKKyAgICBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBpbmZvOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvKCBHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpLCAmaW5mbyk7CisgICAgcmV0dXJuIG9zX2F0dHJfdG9fcGpfY29sb3IoaW5mby53QXR0cmlidXRlcyk7Cit9CisKKyNlbmRpZgkvKiBQSl9URVJNX0hBU19DT0xPUiAqLworCisvKgorICogcGpfcnVuX2FwcCgpCisgKi8KK1BKX0RFRihpbnQpIHBqX3J1bl9hcHAocGpfbWFpbl9mdW5jX3B0ciBtYWluX2Z1bmMsIGludCBhcmdjLCBjaGFyICphcmd2W10sCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzKQoreworICAgIFBKX1VOVVNFRF9BUkcoZmxhZ3MpOworICAgIHJldHVybiAoKm1haW5fZnVuYykoYXJnYywgYXJndik7Cit9CmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfZXJyb3JfbGludXhfa2VybmVsLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfZXJyb3JfbGludXhfa2VybmVsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQyYWM5MAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19lcnJvcl9saW51eF9rZXJuZWwuYwpAQCAtMCwwICsxLDgxIEBACisvKiAkSWQ6IG9zX2Vycm9yX2xpbnV4X2tlcm5lbC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2lmIGRlZmluZWQoTU9EVkVSU0lPTlMpCisjaW5jbHVkZSA8bGludXgvbW9kdmVyc2lvbnMuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisKK2ludCBrZXJuZWxfZXJybm87CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X29zX2Vycm9yKHZvaWQpCit7CisgICAgcmV0dXJuIGVycm5vOworfQorCitQSl9ERUYodm9pZCkgcGpfc2V0X29zX2Vycm9yKHBqX3N0YXR1c190IGNvZGUpCit7CisgICAgZXJybm8gPSBjb2RlOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldF9uZXRvc19lcnJvcih2b2lkKQoreworICAgIHJldHVybiBlcnJubzsKK30KKworUEpfREVGKHZvaWQpIHBqX3NldF9uZXRvc19lcnJvcihwal9zdGF0dXNfdCBjb2RlKQoreworICAgIGVycm5vID0gY29kZTsKK30KKworLyogCisgKiBwbGF0Zm9ybV9zdHJlcnJvcigpCisgKgorICogUGxhdGZvcm0gc3BlY2lmaWMgZXJyb3IgbWVzc2FnZS4gVGhpcyBmaWxlIGlzIGNhbGxlZCBieSBwal9zdHJlcnJvcigpIAorICogaW4gZXJybm8uYyAKKyAqLworaW50IHBsYXRmb3JtX3N0cmVycm9yKCBwal9vc19lcnJfdHlwZSBvc19lcnJjb2RlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBwal9zaXplX3QgYnVmc2l6ZSkKK3sKKyAgICBjaGFyIGVycm1zZ1tQSl9FUlJfTVNHX1NJWkVdOworICAgIGludCBsZW47CisgICAgCisgICAgLyogSGFuZGxlIEVJTlZBTCBhcyBzcGVjaWFsIGNhc2Ugc28gdGhhdCBpdCdsbCBwYXNzIGVycm5vIHRlc3QuICovCisgICAgaWYgKG9zX2VycmNvZGU9PUVJTlZBTCkKKwlzdHJjcHkoZXJybXNnLCAiSW52YWxpZCB2YWx1ZSIpOworICAgIGVsc2UKKwlzbnByaW50ZihlcnJtc2csIHNpemVvZihlcnJtc2cpLCAiZXJybm89JWQiLCBvc19lcnJjb2RlKTsKKyAgICAKKyAgICBsZW4gPSBzdHJsZW4oZXJybXNnKTsKKworICAgIGlmIChsZW4gPj0gYnVmc2l6ZSkKKwlsZW4gPSBidWZzaXplLTE7CisKKyAgICBwal9tZW1jcHkoYnVmLCBlcnJtc2csIGxlbik7CisgICAgYnVmW2xlbl0gPSAnXDAnOworCisgICAgcmV0dXJuIGxlbjsKK30KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfZXJyb3Jfc3ltYmlhbi5jcHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfZXJyb3Jfc3ltYmlhbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwNTY5ZQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19lcnJvcl9zeW1iaWFuLmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyogJElkOiBvc19lcnJvcl9zeW1iaWFuLmNwcCA0NjEzIDIwMTMtMTAtMDggMDk6MDg6MTNaIGJlbm55bHAgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zdGRhcmcuaD4KKyNpbmNsdWRlIDxwai91bmljb2RlLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisKKyNpbmNsdWRlIDxlMzJlcnIuaD4KKyNpbmNsdWRlIDxpbl9zb2NrLmg+CisKKworI2lmIGRlZmluZWQoUEpfSEFTX0VSUk9SX1NUUklORykgJiYgKFBKX0hBU19FUlJPUl9TVFJJTkchPTApCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKyAgICBwal9vc19lcnJfdHlwZSBjb2RlOworICAgIGNvbnN0IGNoYXIgKm1zZzsKK30gZ2FFcnJvckxpc3RbXSA9IHsKKyAgICAvKgorICAgICAqIEdlbmVyaWMgZXJyb3IgLTEgdG8gLTQ2CisgICAgICovCisgICAgUEpfQlVJTERfRVJSKCBLRXJyTm90Rm91bmQsCSAgICAiVW5hYmxlIHRvIGZpbmQgdGhlIHNwZWNpZmllZCBvYmplY3QiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJHZW5lcmFsLAkgICAgIkdlbmVyYWwgKHVuc3BlY2lmaWVkKSBlcnJvciIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyckNhbmNlbCwJICAgICJUaGUgb3BlcmF0aW9uIHdhcyBjYW5jZWxsZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJOb01lbW9yeSwJICAgICJOb3QgZW5vdWdoIG1lbW9yeSIpLAorICAgIFBKX0JVSUxEX0VSUiggS0Vyck5vdFN1cHBvcnRlZCwgIlRoZSBvcGVyYXRpb24gcmVxdWVzdGVkIGlzIG5vdCBzdXBwb3J0ZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJBcmd1bWVudCwJICAgICJCYWQgcmVxdWVzdCIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyclRvdGFsTG9zc09mUHJlY2lzaW9uLCAiVG90YWwgbG9zcyBvZiBwcmVjaXNpb24iKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJCYWRIYW5kbGUsICAgICJCYWQgb2JqZWN0IiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyT3ZlcmZsb3csCSAgICAiT3ZlcmZsb3ciKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJVbmRlcmZsb3csICAgICJVbmRlcmZsb3ciKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJBbHJlYWR5RXhpc3RzLCJBbHJlYWR5IGV4aXN0cyIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyclBhdGhOb3RGb3VuZCwgIlVuYWJsZSB0byBmaW5kIHRoZSBzcGVjaWZpZWQgZm9sZGVyIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyRGllZCwJICAgICJDbG9zZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJJblVzZSwJICAgICJUaGUgc3BlY2lmaWVkIG9iamVjdCBpcyBjdXJyZW50bHkgaW4gdXNlIGJ5IGFub3RoZXIgcHJvZ3JhbSIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyclNlcnZlclRlcm1pbmF0ZWQsCSAgICAiU2VydmVyIGhhcyBjbG9zZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJTZXJ2ZXJCdXN5LCAgICJTZXJ2ZXIgYnVzeSIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyckNvbXBsZXRpb24sICAgIkNvbXBsZXRpb24gZXJyb3IiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJOb3RSZWFkeSwJICAgICJOb3QgcmVhZHkiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJVbmtub3duLAkgICAgIlVua25vd24gZXJyb3IiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJDb3JydXB0LAkgICAgIkNvcnJ1cHQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJBY2Nlc3NEZW5pZWQsICJBY2Nlc3MgZGVuaWVkIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyTG9ja2VkLAkgICAgIkxvY2tlZCIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VycldyaXRlLAkgICAgIkZhaWxlZCB0byB3cml0ZSIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyckRpc01vdW50ZWQsICAgIldyb25nIGRpc2sgcHJlc2VudCIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyckVvZiwJICAgICJVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyRGlza0Z1bGwsCSAgICAiRGlzayBmdWxsIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyQmFkRHJpdmVyLCAgICAiQmFkIGRldmljZSBkcml2ZXIiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJCYWROYW1lLAkgICAgIkJhZCBuYW1lIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyQ29tbXNMaW5lRmFpbCwiQ29tbXMgbGluZSBmYWlsZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJDb21tc0ZyYW1lLCAgICJDb21tcyBmcmFtZSBlcnJvciIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyckNvbW1zT3ZlcnJ1biwgIkNvbW1zIG92ZXJydW4gZXJyb3IiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJDb21tc1Bhcml0eSwgICJDb21tcyBwYXJpdHkgZXJyb3IiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJUaW1lZE91dCwJICAgICJUaW1lZCBvdXQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJDb3VsZE5vdENvbm5lY3QsICJGYWlsZWQgdG8gY29ubmVjdCIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyckNvdWxkTm90RGlzY29ubmVjdCwgIkZhaWxlZCB0byBkaXNjb25uZWN0IiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyRGlzY29ubmVjdGVkLCAiRGlzY29ubmVjdGVkIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyQmFkTGlicmFyeUVudHJ5UG9pbnQsICJCYWQgbGlicmFyeSBlbnRyeSBwb2ludCIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyckJhZERlc2NyaXB0b3IsIkJhZCBkZXNjcmlwdG9yIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyQWJvcnQsCSAgICAiSW50ZXJydXB0ZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJUb29CaWcsCSAgICAiVG9vIGJpZyIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyckRpdmlkZUJ5WmVybywgIkRpdmlkZSBieSB6ZXJvIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJyQmFkUG93ZXIsCSAgICAiQmF0dGVyaWVzIHRvbyBsb3ciKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJEaXJGdWxsLAkgICAgIkZvbGRlciBmdWxsIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJySGFyZHdhcmVOb3RBdmFpbGFibGUsICIiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJTZXNzaW9uQ2xvc2VkLAkgICAgIiIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyclBlcm1pc3Npb25EZW5pZWQsICAgICAiIiksCisKKyAgICAvKgorICAgICAqIFNvY2tldCBlcnJvcnMgKC0xOTAgLSAtMTAwMCkKKyAgICAgKi8KKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJOZXRVbnJlYWNoLCAgICJDb3VsZCBub3QgY29ubmVjdCB0byB0aGUgbmV0d29yay4gQ3VycmVudGx5IHVucmVhY2hhYmxlIiksCisgICAgUEpfQlVJTERfRVJSKCBLRXJySG9zdFVucmVhY2gsICAiQ291bGQgbm90IGNvbm5lY3QgdG8gdGhlIHNwZWNpZmllZCBzZXJ2ZXIiKSwKKyAgICBQSl9CVUlMRF9FUlIoIEtFcnJOb1Byb3RvY29sT3B0LCJUaGUgc3BlY2lmaWVkIHNlcnZlciByZWZ1c2VzIHRoZSBzZWxlY3RlZCBwcm90b2NvbCIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VyclVyZ2VudERhdGEsICAgIiIpLAorICAgIFBKX0JVSUxEX0VSUiggS0VycldvdWxkQmxvY2ssICAgIkNvbmZsaWN0cyB3aXRoIEtFcnJFeHRlbmRlZCwgYnV0IGNhbm5vdCBvY2N1ciBpbiBwcmFjdGljZSIpLAorCisgICAgezAsIE5VTEx9Cit9OworCisjZW5kaWYJLyogUEpfSEFTX0VSUk9SX1NUUklORyAqLworCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X29zX2Vycm9yKHZvaWQpCit7CisgICAgcmV0dXJuIC0xOworfQorCitQSl9ERUYodm9pZCkgcGpfc2V0X29zX2Vycm9yKHBqX3N0YXR1c190IGNvZGUpCit7CisgICAgUEpfVU5VU0VEX0FSRyhjb2RlKTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfbmV0b3NfZXJyb3Iodm9pZCkKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKK1BKX0RFRih2b2lkKSBwal9zZXRfbmV0b3NfZXJyb3IocGpfc3RhdHVzX3QgY29kZSkKK3sKKyAgICBQSl9VTlVTRURfQVJHKGNvZGUpOworfQorCitQSl9CRUdJTl9ERUNMCisKKyAgICBQSl9ERUNMKGludCkgcGxhdGZvcm1fc3RyZXJyb3IoIHBqX29zX2Vycl90eXBlIG9zX2VycmNvZGUsIAorICAgICAgICAgICAgICAgICAgICAgICAJCSAgICBjaGFyICpidWYsIHBqX3NpemVfdCBidWZzaXplKTsKK1BKX0VORF9ERUNMCisKKy8qIAorICogcGxhdGZvcm1fc3RyZXJyb3IoKQorICoKKyAqIFBsYXRmb3JtIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UuIFRoaXMgZmlsZSBpcyBjYWxsZWQgYnkgcGpfc3RyZXJyb3IoKSAKKyAqIGluIGVycm5vLmMgCisgKi8KK1BKX0RFRihpbnQpIHBsYXRmb3JtX3N0cmVycm9yKCBwal9vc19lcnJfdHlwZSBvc19lcnJjb2RlLCAKKwkJCSAgICAgICBjaGFyICpidWYsIHBqX3NpemVfdCBidWZzaXplKQoreworICAgIGludCBsZW4gPSAwOworCisgICAgcGpfYXNzZXJ0KGJ1ZiAhPSBOVUxMKTsKKyAgICBwal9hc3NlcnQoYnVmc2l6ZSA+PSAwKTsKKworICAgIC8qCisgICAgICogTVVTVCBOT1QgY2hlY2sgc3RhY2sgaGVyZS4KKyAgICAgKiBUaGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIFBKX0NIRUNLX1NUQUNLKCkgaXRzZWxmIQorICAgICAgIC8vUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICAgKi8KKworICAgIGlmICghbGVuKSB7CisjaWYgZGVmaW5lZChQSl9IQVNfRVJST1JfU1RSSU5HKSAmJiAoUEpfSEFTX0VSUk9SX1NUUklORyE9MCkKKwlpbnQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgZ2FFcnJvckxpc3RbaV0ubXNnOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChnYUVycm9yTGlzdFtpXS5jb2RlID09IG9zX2VycmNvZGUpIHsKKyAgICAgICAgICAgICAgICBsZW4gPSBzdHJsZW4oZ2FFcnJvckxpc3RbaV0ubXNnKTsKKwkJaWYgKChwal9zaXplX3QpbGVuID49IGJ1ZnNpemUpIHsKKwkJICAgIGxlbiA9IGJ1ZnNpemUtMTsKKwkJfQorCQlwal9tZW1jcHkoYnVmLCBnYUVycm9yTGlzdFtpXS5tc2csIGxlbik7CisJCWJ1ZltsZW5dID0gJ1wwJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCS8qIFBKX0hBU19FUlJPUl9TVFJJTkcgKi8KKworICAgIH0KKworICAgIGlmICghbGVuKSB7CisJbGVuID0gcGpfYW5zaV9zbnByaW50ZiggYnVmLCBidWZzaXplLTEsICJTeW1iaWFuIG5hdGl2ZSBlcnJvciAlZCIsCisJCQkJb3NfZXJyY29kZSk7CisJYnVmW2xlbl0gPSAnXDAnOworICAgIH0KKworICAgIHJldHVybiBsZW47Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19lcnJvcl91bml4LmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfZXJyb3JfdW5peC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1YzI3YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfZXJyb3JfdW5peC5jCkBAIC0wLDAgKzEsNjkgQEAKKy8qICRJZDogb3NfZXJyb3JfdW5peC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldF9vc19lcnJvcih2b2lkKQoreworICAgIHJldHVybiBQSl9TVEFUVVNfRlJPTV9PUyhlcnJubyk7Cit9CisKK1BKX0RFRih2b2lkKSBwal9zZXRfb3NfZXJyb3IocGpfc3RhdHVzX3QgY29kZSkKK3sKKyAgICBlcnJubyA9IFBKX1NUQVRVU19UT19PUyhjb2RlKTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfbmV0b3NfZXJyb3Iodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfU1RBVFVTX0ZST01fT1MoZXJybm8pOworfQorCitQSl9ERUYodm9pZCkgcGpfc2V0X25ldG9zX2Vycm9yKHBqX3N0YXR1c190IGNvZGUpCit7CisgICAgZXJybm8gPSBQSl9TVEFUVVNfVE9fT1MoY29kZSk7Cit9CisKK1BKX0JFR0lOX0RFQ0wKKworICAgIFBKX0RFQ0woaW50KSBwbGF0Zm9ybV9zdHJlcnJvcihwal9vc19lcnJfdHlwZSBjb2RlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICBjaGFyICpidWYsIHBqX3NpemVfdCBidWZzaXplICk7CitQSl9FTkRfREVDTAorCisvKiAKKyAqIHBsYXRmb3JtX3N0cmVycm9yKCkKKyAqCisgKiBQbGF0Zm9ybSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlLiBUaGlzIGZpbGUgaXMgY2FsbGVkIGJ5IHBqX3N0cmVycm9yKCkgCisgKiBpbiBlcnJuby5jIAorICovCitpbnQgcGxhdGZvcm1fc3RyZXJyb3IoIHBqX29zX2Vycl90eXBlIG9zX2VycmNvZGUsIAorICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIHBqX3NpemVfdCBidWZzaXplKQoreworICAgIGNvbnN0IGNoYXIgKnN5c2VyciA9IHN0cmVycm9yKG9zX2VycmNvZGUpOworICAgIHBqX3NpemVfdCBsZW4gPSBzeXNlcnIgPyBzdHJsZW4oc3lzZXJyKSA6IDA7CisKKyAgICBpZiAobGVuID49IGJ1ZnNpemUpIGxlbiA9IGJ1ZnNpemUgLSAxOworICAgIGlmIChsZW4gPiAwKQorCXBqX21lbWNweShidWYsIHN5c2VyciwgbGVuKTsKKyAgICBidWZbbGVuXSA9ICdcMCc7CisgICAgcmV0dXJuIGxlbjsKK30KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfZXJyb3Jfd2luMzIuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19lcnJvcl93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZGY0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfZXJyb3Jfd2luMzIuYwpAQCAtMCwwICsxLDIyMCBAQAorLyogJElkOiBvc19lcnJvcl93aW4zMi5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3N0ZGFyZy5oPgorI2luY2x1ZGUgPHBqL3VuaWNvZGUuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKworCisjaWYgZGVmaW5lZChQSl9IQVNfV0lOU09DSzJfSCkgJiYgUEpfSEFTX1dJTlNPQ0syX0ggIT0gMAorIyAgaW5jbHVkZSA8d2luc29jazIuaD4KKyNlbGlmIGRlZmluZWQoUEpfSEFTX1dJTlNPQ0tfSCkgJiYgUEpfSEFTX1dJTlNPQ0tfSCAhPSAwCisjICBpbmNsdWRlIDx3aW5zb2NrLmg+CisjZW5kaWYKKworCisvKgorICogRnJvbSBBcGFjaGUncyBBUFI6CisgKi8KKyNpZiBkZWZpbmVkKFBKX0hBU19FUlJPUl9TVFJJTkcpICYmIChQSl9IQVNfRVJST1JfU1RSSU5HIT0wKQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKyAgICBwal9vc19lcnJfdHlwZSBjb2RlOworICAgIGNvbnN0IGNoYXIgKm1zZzsKK30gZ2FFcnJvckxpc3RbXSA9IHsKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVJTlRSLCAgICAgICAgICAgIkludGVycnVwdGVkIHN5c3RlbSBjYWxsIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFQkFERiwgICAgICAgICAgICJCYWQgZmlsZSBudW1iZXIiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVBQ0NFUywgICAgICAgICAgIlBlcm1pc3Npb24gZGVuaWVkIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFRkFVTFQsICAgICAgICAgICJCYWQgYWRkcmVzcyIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRUlOVkFMLCAgICAgICAgICAiSW52YWxpZCBhcmd1bWVudCIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRU1GSUxFLCAgICAgICAgICAiVG9vIG1hbnkgb3BlbiBzb2NrZXRzIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFV09VTERCTE9DSywgICAgICJPcGVyYXRpb24gd291bGQgYmxvY2siKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVJTlBST0dSRVNTLCAgICAgIk9wZXJhdGlvbiBub3cgaW4gcHJvZ3Jlc3MiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVBTFJFQURZLCAgICAgICAgIk9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFTk9UU09DSywgICAgICAgICJTb2NrZXQgb3BlcmF0aW9uIG9uIG5vbi1zb2NrZXQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVERVNUQUREUlJFUSwgICAgIkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVNU0dTSVpFLCAgICAgICAgIk1lc3NhZ2UgdG9vIGxvbmciKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVQUk9UT1RZUEUsICAgICAgIlByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRU5PUFJPVE9PUFQsICAgICAiQmFkIHByb3RvY29sIG9wdGlvbiIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRVBST1RPTk9TVVBQT1JULCAiUHJvdG9jb2wgbm90IHN1cHBvcnRlZCIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRVNPQ0tUTk9TVVBQT1JULCAiU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZCIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRU9QTk9UU1VQUCwgICAgICAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gc29ja2V0IiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFUEZOT1NVUFBPUlQsICAgICJQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZCIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRUFGTk9TVVBQT1JULCAgICAiQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRUFERFJJTlVTRSwgICAgICAiQWRkcmVzcyBhbHJlYWR5IGluIHVzZSIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRUFERFJOT1RBVkFJTCwgICAiQ2FuJ3QgYXNzaWduIHJlcXVlc3RlZCBhZGRyZXNzIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFTkVURE9XTiwgICAgICAgICJOZXR3b3JrIGlzIGRvd24iKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVORVRVTlJFQUNILCAgICAgIk5ldHdvcmsgaXMgdW5yZWFjaGFibGUiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVORVRSRVNFVCwgICAgICAgIk5ldCBjb25uZWN0aW9uIHJlc2V0IiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFQ09OTkFCT1JURUQsICAgICJTb2Z0d2FyZSBjYXVzZWQgY29ubmVjdGlvbiBhYm9ydCIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRUNPTk5SRVNFVCwgICAgICAiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFTk9CVUZTLCAgICAgICAgICJObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFSVNDT05OLCAgICAgICAgICJTb2NrZXQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVOT1RDT05OLCAgICAgICAgIlNvY2tldCBpcyBub3QgY29ubmVjdGVkIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFU0hVVERPV04sICAgICAgICJDYW4ndCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93biIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRVRPT01BTllSRUZTLCAgICAiVG9vIG1hbnkgcmVmZXJlbmNlcywgY2FuJ3Qgc3BsaWNlIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFVElNRURPVVQsICAgICAgICJDb25uZWN0aW9uIHRpbWVkIG91dCIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRUNPTk5SRUZVU0VELCAgICAiQ29ubmVjdGlvbiByZWZ1c2VkIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFTE9PUCwgICAgICAgICAgICJUb28gbWFueSBsZXZlbHMgb2Ygc3ltYm9saWMgbGlua3MiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVOQU1FVE9PTE9ORywgICAgIkZpbGUgbmFtZSB0b28gbG9uZyIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBRUhPU1RET1dOLCAgICAgICAiSG9zdCBpcyBkb3duIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFSE9TVFVOUkVBQ0gsICAgICJObyByb3V0ZSB0byBob3N0IiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFTk9URU1QVFksICAgICAgICJEaXJlY3Rvcnkgbm90IGVtcHR5IiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFUFJPQ0xJTSwgICAgICAgICJUb28gbWFueSBwcm9jZXNzZXMiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVVU0VSUywgICAgICAgICAgIlRvbyBtYW55IHVzZXJzIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFRFFVT1QsICAgICAgICAgICJEaXNjIHF1b3RhIGV4Y2VlZGVkIiksCisgICAgUEpfQlVJTERfRVJSKCBXU0FFU1RBTEUsICAgICAgICAgICJTdGFsZSBORlMgZmlsZSBoYW5kbGUiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVSRU1PVEUsICAgICAgICAgIlRvbyBtYW55IGxldmVscyBvZiByZW1vdGUgaW4gcGF0aCIpLAorICAgIFBKX0JVSUxEX0VSUiggV1NBU1lTTk9UUkVBRFksICAgICAiTmV0d29yayBzeXN0ZW0gaXMgdW5hdmFpbGFibGUiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQVZFUk5PVFNVUFBPUlRFRCwgIldpbnNvY2sgdmVyc2lvbiBvdXQgb2YgcmFuZ2UiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQU5PVElOSVRJQUxJU0VELCAgIldTQVN0YXJ0dXAgbm90IHlldCBjYWxsZWQiKSwKKyAgICBQSl9CVUlMRF9FUlIoIFdTQUVESVNDT04sICAgICAgICAgIkdyYWNlZnVsIHNodXRkb3duIGluIHByb2dyZXNzIiksCisvKgorI2RlZmluZSBXU0FFTk9NT1JFICAgICAgICAgICAgICAoV1NBQkFTRUVSUisxMDIpCisjZGVmaW5lIFdTQUVDQU5DRUxMRUQgICAgICAgICAgIChXU0FCQVNFRVJSKzEwMykKKyNkZWZpbmUgV1NBRUlOVkFMSURQUk9DVEFCTEUgICAgKFdTQUJBU0VFUlIrMTA0KQorI2RlZmluZSBXU0FFSU5WQUxJRFBST1ZJREVSICAgICAoV1NBQkFTRUVSUisxMDUpCisjZGVmaW5lIFdTQUVQUk9WSURFUkZBSUxFRElOSVQgIChXU0FCQVNFRVJSKzEwNikKKyNkZWZpbmUgV1NBU1lTQ0FMTEZBSUxVUkUgICAgICAgKFdTQUJBU0VFUlIrMTA3KQorI2RlZmluZSBXU0FTRVJWSUNFX05PVF9GT1VORCAgICAoV1NBQkFTRUVSUisxMDgpCisjZGVmaW5lIFdTQVRZUEVfTk9UX0ZPVU5EICAgICAgIChXU0FCQVNFRVJSKzEwOSkKKyNkZWZpbmUgV1NBX0VfTk9fTU9SRSAgICAgICAgICAgKFdTQUJBU0VFUlIrMTEwKQorI2RlZmluZSBXU0FfRV9DQU5DRUxMRUQgICAgICAgICAoV1NBQkFTRUVSUisxMTEpCisjZGVmaW5lIFdTQUVSRUZVU0VEICAgICAgICAgICAgIChXU0FCQVNFRVJSKzExMikKKyAqLworICAgIFBKX0JVSUxEX0VSUiggV1NBSE9TVF9OT1RfRk9VTkQsICAiSG9zdCBub3QgZm91bmQiKSwKKy8qCisjZGVmaW5lIFdTQVRSWV9BR0FJTiAgICAgICAgICAgIChXU0FCQVNFRVJSKzEwMDIpCisjZGVmaW5lIFdTQU5PX1JFQ09WRVJZICAgICAgICAgIChXU0FCQVNFRVJSKzEwMDMpCisgKi8KKyAgICBQSl9CVUlMRF9FUlIoIFdTQU5PX0RBVEEsICAgICAgICAgIk5vIGhvc3QgZGF0YSBvZiB0aGF0IHR5cGUgd2FzIGZvdW5kIiksCisgICAgezAsIE5VTEx9Cit9OworCisjZW5kaWYJLyogUEpfSEFTX0VSUk9SX1NUUklORyAqLworCisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfb3NfZXJyb3Iodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfU1RBVFVTX0ZST01fT1MoR2V0TGFzdEVycm9yKCkpOworfQorCitQSl9ERUYodm9pZCkgcGpfc2V0X29zX2Vycm9yKHBqX3N0YXR1c190IGNvZGUpCit7CisgICAgU2V0TGFzdEVycm9yKFBKX1NUQVRVU19UT19PUyhjb2RlKSk7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X25ldG9zX2Vycm9yKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NUQVRVU19GUk9NX09TKFdTQUdldExhc3RFcnJvcigpKTsKK30KKworUEpfREVGKHZvaWQpIHBqX3NldF9uZXRvc19lcnJvcihwal9zdGF0dXNfdCBjb2RlKQoreworICAgIFdTQVNldExhc3RFcnJvcihQSl9TVEFUVVNfVE9fT1MoY29kZSkpOworfQorCisvKiAKKyAqIHBsYXRmb3JtX3N0cmVycm9yKCkKKyAqCisgKiBQbGF0Zm9ybSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlLiBUaGlzIGZpbGUgaXMgY2FsbGVkIGJ5IHBqX3N0cmVycm9yKCkgCisgKiBpbiBlcnJuby5jIAorICovCitpbnQgcGxhdGZvcm1fc3RyZXJyb3IoIHBqX29zX2Vycl90eXBlIG9zX2VycmNvZGUsIAorICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIHBqX3NpemVfdCBidWZzaXplKQoreworICAgIHBqX3NpemVfdCBsZW4gPSAwOworICAgIFBKX0RFQ0xfVU5JQ09ERV9URU1QX0JVRih3YnVmLDEyOCk7CisKKyAgICBwal9hc3NlcnQoYnVmICE9IE5VTEwpOworICAgIHBqX2Fzc2VydChidWZzaXplID49IDApOworCisgICAgLyoKKyAgICAgKiBNVVNUIE5PVCBjaGVjayBzdGFjayBoZXJlLgorICAgICAqIFRoaXMgZnVuY3Rpb24gbWlnaHQgYmUgY2FsbGVkIGZyb20gUEpfQ0hFQ0tfU1RBQ0soKSBpdHNlbGYhCisgICAgICAgLy9QSl9DSEVDS19TVEFDSygpOworICAgICAqLworCisgICAgaWYgKCFsZW4pIHsKKyNpZiBkZWZpbmVkKFBKX0hBU19FUlJPUl9TVFJJTkcpICYmIChQSl9IQVNfRVJST1JfU1RSSU5HIT0wKQorCWludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBnYUVycm9yTGlzdFtpXS5tc2c7ICsraSkgeworICAgICAgICAgICAgaWYgKGdhRXJyb3JMaXN0W2ldLmNvZGUgPT0gb3NfZXJyY29kZSkgeworICAgICAgICAgICAgICAgIGxlbiA9IHN0cmxlbihnYUVycm9yTGlzdFtpXS5tc2cpOworCQlpZiAoKHBqX3NpemVfdClsZW4gPj0gYnVmc2l6ZSkgeworCQkgICAgbGVuID0gYnVmc2l6ZS0xOworCQl9CisJCXBqX21lbWNweShidWYsIGdhRXJyb3JMaXN0W2ldLm1zZywgbGVuKTsKKwkJYnVmW2xlbl0gPSAnXDAnOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYJLyogUEpfSEFTX0VSUk9SX1NUUklORyAqLworCisgICAgfQorCisKKyAgICBpZiAoIWxlbikgeworI2lmIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERQorCWxlbiA9IEZvcm1hdE1lc3NhZ2UoIEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNIAorCQkJICAgICB8IEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTLAorCQkJICAgICBOVUxMLAorCQkJICAgICBvc19lcnJjb2RlLAorCQkJICAgICBNQUtFTEFOR0lEKExBTkdfTkVVVFJBTCwgU1VCTEFOR19ERUZBVUxUKSwgCisJCQkgICAgIHdidWYsCisJCQkgICAgIHNpemVvZih3YnVmKSwKKwkJCSAgICAgTlVMTCk7CisJaWYgKGxlbikgeworCSAgICBwal91bmljb2RlX3RvX2Fuc2kod2J1ZiwgbGVuLCBidWYsIGJ1ZnNpemUpOworCX0KKyNlbHNlCisJbGVuID0gRm9ybWF0TWVzc2FnZSggRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gCisJCQkgICAgIHwgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFMsCisJCQkgICAgIE5VTEwsCisJCQkgICAgIG9zX2VycmNvZGUsCisJCQkgICAgIE1BS0VMQU5HSUQoTEFOR19ORVVUUkFMLCBTVUJMQU5HX0RFRkFVTFQpLCAKKwkJCSAgICAgYnVmLAorCQkJICAgICAoaW50KWJ1ZnNpemUsCisJCQkgICAgIE5VTEwpOworCWJ1ZltidWZzaXplLTFdID0gJ1wwJzsKKyNlbmRpZgorCisJaWYgKGxlbikgeworCSAgICAvKiBSZW1vdmUgdHJhaWxpbmcgbmV3bGluZXMuICovCisJICAgIHdoaWxlIChsZW4gJiYgKGJ1ZltsZW4tMV0gPT0gJ1xuJyB8fCBidWZbbGVuLTFdID09ICdccicpKSB7CisJCWJ1ZltsZW4tMV0gPSAnXDAnOworCQktLWxlbjsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICBpZiAoIWxlbikgeworCWxlbiA9IHBqX2Fuc2lfc25wcmludGYoIGJ1ZiwgYnVmc2l6ZSwgIldpbjMyIGVycm9yIGNvZGUgJXUiLCAKKwkJCQkodW5zaWduZWQpb3NfZXJyY29kZSk7CisJaWYgKGxlbiA8IDAgfHwgbGVuID49IChpbnQpYnVmc2l6ZSkKKwkgICAgbGVuID0gYnVmc2l6ZS0xOworCWJ1ZltsZW5dID0gJ1wwJzsKKyAgICB9CisKKyAgICByZXR1cm4gKGludClsZW47Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19pbmZvLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViOTQyYzgKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfaW5mby5jCkBAIC0wLDAgKzEsMzI4IEBACisvKiAkSWQ6IG9zX2luZm8uYyA0NjEwIDIwMTMtMTAtMDMgMTA6MjY6MTRaIG1pbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2N0eXBlLmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKworLyoKKyAqIEZZSSB0aGVzZSBsaW5rcyBjb250YWluIHVzZWZ1bCBpbmZvcyBhYm91dCBwcmVkZWZpbmVkIG1hY3JvcyBhY3Jvc3MKKyAqIHBsYXRmb3JtczoKKyAqICAtIGh0dHA6Ly9wcmVkZWYuc291cmNlZm9yZ2UubmV0L3ByZW9zLmh0bWwKKyAqLworCisjaWYgZGVmaW5lZChQSl9IQVNfU1lTX1VUU05BTUVfSCkgJiYgUEpfSEFTX1NZU19VVFNOQU1FX0ggIT0gMAorLyogRm9yIHVuYW1lKCkgKi8KKyMgICBpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyAgIGRlZmluZSBQSl9IQVNfVU5BTUUJCTEKKyNlbmRpZgorCisjaWYgZGVmaW5lZChQSl9IQVNfTElNSVRTX0gpICYmIFBKX0hBU19MSU1JVFNfSCAhPSAwCisvKiBJbmNsdWRlIDxsaW1pdHMuaD4gdG8gZ2V0IDxmZWF0dXJlcy5oPiB0byBnZXQgdmFyaW91cyBnbGliYyBtYWNyb3MuCisgKiBTZWUgaHR0cDovL3ByZWRlZi5zb3VyY2Vmb3JnZS5uZXQvcHJlbGliLmh0bWwKKyAqLworIyAgIGluY2x1ZGUgPGxpbWl0cy5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorLyogRm9yIGFsbCBXaW5kb3dzIGluY2x1ZGluZyBtb2JpbGUgKi8KKyMgICBpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfREFSV0lOT1MpICYmIFBKX0RBUldJTk9TICE9IDAKKyMgICBpbmNsdWRlICJUYXJnZXRDb25kaXRpb25hbHMuaCIKKyNlbmRpZgorCisjaWZuZGVmIFBKX1NZU19JTkZPX0JVRkZFUl9TSVpFCisjICAgZGVmaW5lIFBKX1NZU19JTkZPX0JVRkZFUl9TSVpFCTY0CisjZW5kaWYKKworCisjaWYgZGVmaW5lZChQSl9EQVJXSU5PUykgJiYgUEpfREFSV0lOT1MgIT0gMCAmJiBUQVJHRVRfT1NfSVBIT05FCisjICAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjICAgaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorICAgIHZvaWQgcGpfaXBob25lX29zX2dldF9zeXNfaW5mbyhwal9zeXNfaW5mbyAqc2ksIHBqX3N0cl90ICpzaV9idWZmZXIpOworI2VuZGlmCisgICAgCisjaWYgZGVmaW5lZChQSl9TWU1CSUFOKSAmJiBQSl9TWU1CSUFOICE9IDAKKyAgICBQSl9CRUdJTl9ERUNMCisgICAgdW5zaWduZWQgcGpfc3ltYmlhbm9zX2dldF9tb2RlbF9pbmZvKGNoYXIgKmJ1ZiwgdW5zaWduZWQgYnVmX3NpemUpOworICAgIHVuc2lnbmVkIHBqX3N5bWJpYW5vc19nZXRfcGxhdGZvcm1faW5mbyhjaGFyICpidWYsIHVuc2lnbmVkIGJ1Zl9zaXplKTsKKyAgICB2b2lkIHBqX3N5bWJpYW5vc19nZXRfc2RrX2luZm8ocGpfc3RyX3QgKm5hbWUsIHBqX3VpbnQzMl90ICp2ZXIpOworICAgIFBKX0VORF9ERUNMCisjZW5kaWYKKworCitzdGF0aWMgY2hhciAqdmVyX2luZm8ocGpfdWludDMyX3QgdmVyLCBjaGFyICpidWYpCit7CisgICAgcGpfc2l6ZV90IGxlbjsKKworICAgIGlmICh2ZXIgPT0gMCkgeworCSpidWYgPSAnXDAnOworCXJldHVybiBidWY7CisgICAgfQorCisgICAgc3ByaW50ZihidWYsICItJXUuJXUiLAorCSAgICAodmVyICYgMHhGRjAwMDAwMCkgPj4gMjQsCisJICAgICh2ZXIgJiAweDAwRkYwMDAwKSA+PiAxNik7CisgICAgbGVuID0gc3RybGVuKGJ1Zik7CisKKyAgICBpZiAodmVyICYgMHhGRkZGKSB7CisJc3ByaW50ZihidWYrbGVuLCAiLiV1IiwgKHZlciAmIDB4RkYwMCkgPj4gOCk7CisJbGVuID0gc3RybGVuKGJ1Zik7CisKKwlpZiAodmVyICYgMHgwMEZGKSB7CisJICAgIHNwcmludGYoYnVmK2xlbiwgIi4ldSIsICh2ZXIgJiAweEZGKSk7CisJfQorICAgIH0KKworICAgIHJldHVybiBidWY7Cit9CisKK3N0YXRpYyBwal91aW50MzJfdCBwYXJzZV92ZXJzaW9uKGNoYXIgKnN0cikKK3sKKyAgICBjaGFyICp0b2s7CisgICAgaW50IGksIG1heHRvazsKKyAgICBwal91aW50MzJfdCB2ZXJzaW9uID0gMDsKKyAgICAKKyAgICB3aGlsZSAoKnN0ciAmJiAhcGpfaXNkaWdpdCgqc3RyKSkKKwlzdHIrKzsKKworICAgIG1heHRvayA9IDQ7CisgICAgZm9yICh0b2sgPSBzdHJ0b2soc3RyLCAiLi0iKSwgaT0wOyB0b2sgJiYgaTxtYXh0b2s7CisJICsraSwgdG9rPXN0cnRvayhOVUxMLCAiLi0iKSkKKyAgICB7CisJaW50IG47CisKKwlpZiAoIXBqX2lzZGlnaXQoKnRvaykpCisJICAgIGJyZWFrOworCQorCW4gPSBhdG9pKHRvayk7CisJdmVyc2lvbiB8PSAobiA8PCAoKDMtaSkqOCkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdmVyc2lvbjsKK30KKworUEpfREVGKGNvbnN0IHBqX3N5c19pbmZvKikgcGpfZ2V0X3N5c19pbmZvKHZvaWQpCit7CisgICAgc3RhdGljIGNoYXIgc2lfYnVmZmVyW1BKX1NZU19JTkZPX0JVRkZFUl9TSVpFXTsKKyAgICBzdGF0aWMgcGpfc3lzX2luZm8gc2k7CisgICAgc3RhdGljIHBqX2Jvb2xfdCBzaV9pbml0aWFsaXplZDsKKyAgICBwal9zaXplX3QgbGVmdCA9IFBKX1NZU19JTkZPX0JVRkZFUl9TSVpFLCBsZW47CisKKyAgICBpZiAoc2lfaW5pdGlhbGl6ZWQpCisJcmV0dXJuICZzaTsKKworICAgIHNpLm1hY2hpbmUucHRyID0gc2kub3NfbmFtZS5wdHIgPSBzaS5zZGtfbmFtZS5wdHIgPSBzaS5pbmZvLnB0ciA9ICIiOworCisjZGVmaW5lIEFMTE9DX0NQX1NUUihzdHIsZmllbGQpCVwKKwlkbyB7IFwKKwkgICAgbGVuID0gcGpfYW5zaV9zdHJsZW4oc3RyKTsgXAorCSAgICBpZiAobGVuICYmIGxlZnQgPj0gbGVuKzEpIHsgXAorCQlzaS5maWVsZC5wdHIgPSBzaV9idWZmZXIgKyBQSl9TWVNfSU5GT19CVUZGRVJfU0laRSAtIGxlZnQ7IFwKKwkJc2kuZmllbGQuc2xlbiA9IGxlbjsgXAorCQlwal9tZW1jcHkoc2kuZmllbGQucHRyLCBzdHIsIGxlbisxKTsgXAorCQlsZWZ0IC09IChsZW4rMSk7IFwKKwkgICAgfSBcCisJfSB3aGlsZSAoMCkKKworICAgIC8qCisgICAgICogTWFjaGluZSBhbmQgT1MgaW5mby4KKyAgICAgKi8KKyNpZiBkZWZpbmVkKFBKX0hBU19VTkFNRSkgJiYgUEpfSEFTX1VOQU1FCisgICAgI2lmIGRlZmluZWQoUEpfREFSV0lOT1MpICYmIFBKX0RBUldJTk9TICE9IDAgJiYgVEFSR0VUX09TX0lQSE9ORSAmJiBcCisJKCFkZWZpbmVkIFRBUkdFVF9JUEhPTkVfU0lNVUxBVE9SIHx8IFRBUkdFVF9JUEhPTkVfU0lNVUxBVE9SID09IDApCisgICAgeworCXBqX3N0cl90IGJ1ZiA9IHtzaV9idWZmZXIgKyBQSl9TWVNfSU5GT19CVUZGRVJfU0laRSAtIGxlZnQsIGxlZnR9OworCXBqX3N0cl90IG1hY2hpbmUgPSB7ImFybS0iLCA0fTsKKwlwal9zdHJfdCBzZGtfbmFtZSA9IHsiaU9TLVNESyIsIDd9OworICAgICAgICBzaXplX3Qgc2l6ZSA9IFBKX1NZU19JTkZPX0JVRkZFUl9TSVpFIC0gbWFjaGluZS5zbGVuOworCWNoYXIgdG1wW1BKX1NZU19JTkZPX0JVRkZFUl9TSVpFXTsKKyAgICAgICAgaW50IG5hbWVbXSA9IHtDVExfSFcsSFdfTUFDSElORX07CisKKwlwal9pcGhvbmVfb3NfZ2V0X3N5c19pbmZvKCZzaSwgJmJ1Zik7CisJbGVmdCAtPSBzaS5vc19uYW1lLnNsZW4gKyAxOworCisJc2kub3NfdmVyID0gcGFyc2VfdmVyc2lvbihzaS5tYWNoaW5lLnB0cik7CisKKwlwal9tZW1jcHkodG1wLCBtYWNoaW5lLnB0ciwgbWFjaGluZS5zbGVuKTsKKyAgICAgICAgc3lzY3RsKG5hbWUsIDIsIHRtcCttYWNoaW5lLnNsZW4sICZzaXplLCBOVUxMLCAwKTsKKyAgICAgICAgQUxMT0NfQ1BfU1RSKHRtcCwgbWFjaGluZSk7CisJc2kuc2RrX25hbWUgPSBzZGtfbmFtZTsKKworCSNpZmRlZiBQSl9TREtfTkFNRQorCXBqX21lbWNweSh0bXAsIFBKX1NES19OQU1FLCBwal9hbnNpX3N0cmxlbihQSl9TREtfTkFNRSkgKyAxKTsKKwlzaS5zZGtfdmVyID0gcGFyc2VfdmVyc2lvbih0bXApOworCSNlbmRpZgorICAgIH0KKyAgICAjZWxzZSAgICAKKyAgICB7CisJc3RydWN0IHV0c25hbWUgdTsKKworCS8qIFN1Y2Nlc3NmdWwgdW5hbWUoKSByZXR1cm5zIHplcm8gb24gTGludXggYW5kIHBvc2l0aXZlIHZhbHVlCisJICogb24gT3BlblNvbGFyaXMuCisJICovCisJaWYgKHVuYW1lKCZ1KSA9PSAtMSkKKwkgICAgZ290byBnZXRfc2RrX2luZm87CisKKwlBTExPQ19DUF9TVFIodS5tYWNoaW5lLCBtYWNoaW5lKTsKKwlBTExPQ19DUF9TVFIodS5zeXNuYW1lLCBvc19uYW1lKTsKKwkKKwlzaS5vc192ZXIgPSBwYXJzZV92ZXJzaW9uKHUucmVsZWFzZSk7CisgICAgfQorICAgICNlbmRpZgorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgICB7CisJT1NWRVJTSU9OSU5GTyBvdmk7CisKKwlvdmkuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZihvdmkpOworCisJaWYgKEdldFZlcnNpb25FeCgmb3ZpKSA9PSBGQUxTRSkKKwkgICAgZ290byBnZXRfc2RrX2luZm87CisKKwlzaS5vc192ZXIgPSAob3ZpLmR3TWFqb3JWZXJzaW9uIDw8IDI0KSB8CisJCSAgICAob3ZpLmR3TWlub3JWZXJzaW9uIDw8IDE2KTsKKwkjaWYgZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkgJiYgUEpfV0lOMzJfV0lOQ0UKKwkgICAgc2kub3NfbmFtZSA9IHBqX3N0cigid2luY2UiKTsKKwkjZWxzZQorCSAgICBzaS5vc19uYW1lID0gcGpfc3RyKCJ3aW4zMiIpOworCSNlbmRpZgorICAgIH0KKworICAgIHsKKwlTWVNURU1fSU5GTyB3c2k7CisKKwlHZXRTeXN0ZW1JbmZvKCZ3c2kpOworCXN3aXRjaCAod3NpLndQcm9jZXNzb3JBcmNoaXRlY3R1cmUpIHsKKyAgICAjaWYgZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkgJiYgUEpfV0lOMzJfV0lOQ0UKKwljYXNlIFBST0NFU1NPUl9BUkNISVRFQ1RVUkVfQVJNOgorCSAgICBzaS5tYWNoaW5lID0gcGpfc3RyKCJhcm0iKTsKKwkgICAgYnJlYWs7CisJY2FzZSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX1NIWDoKKwkgICAgc2kubWFjaGluZSA9IHBqX3N0cigic2h4Iik7CisJICAgIGJyZWFrOworICAgICNlbHNlCisJY2FzZSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FNRDY0OgorCSAgICBzaS5tYWNoaW5lID0gcGpfc3RyKCJ4ODZfNjQiKTsKKwkgICAgYnJlYWs7CisJY2FzZSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0lBNjQ6CisJICAgIHNpLm1hY2hpbmUgPSBwal9zdHIoImlhNjQiKTsKKwkgICAgYnJlYWs7CisJY2FzZSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0lOVEVMOgorCSAgICBzaS5tYWNoaW5lID0gcGpfc3RyKCJpMzg2Iik7CisJICAgIGJyZWFrOworICAgICNlbmRpZgkvKiBQSl9XSU4zMl9XSU5DRSAqLworCX0KKyAgICB9CisjZWxpZiBkZWZpbmVkKFBKX1NZTUJJQU4pICYmIFBKX1NZTUJJQU4gIT0gMAorICAgIHsKKwlwal9zeW1iaWFub3NfZ2V0X21vZGVsX2luZm8oc2lfYnVmZmVyLCBzaXplb2Yoc2lfYnVmZmVyKSk7CisJQUxMT0NfQ1BfU1RSKHNpX2J1ZmZlciwgbWFjaGluZSk7CisJCisJY2hhciAqcCA9IHNpX2J1ZmZlciArIHNpemVvZihzaV9idWZmZXIpIC0gbGVmdDsKKwl1bnNpZ25lZCBwbGVuOworCXBsZW4gPSBwal9zeW1iaWFub3NfZ2V0X3BsYXRmb3JtX2luZm8ocCwgbGVmdCk7CisJaWYgKHBsZW4pIHsKKwkgICAgLyogT3V0cHV0IGZvcm1hdCB3aWxsIGJlICJTZXJpZXM2MHZYLlgiICovCisJICAgIHNpLm9zX25hbWUgPSBwal9zdHIoIlM2MCIpOworCSAgICBzaS5vc192ZXIgID0gcGFyc2VfdmVyc2lvbihwKzkpOworCX0gZWxzZSB7CisJICAgIHNpLm9zX25hbWUgPSBwal9zdHIoIlVua25vd24iKTsKKwl9CisJCisJLyogQXZvaWQgY29tcGlsZSB3YXJuaW5nIG9uIFN5bWJpYW4uICovCisJZ290byBnZXRfc2RrX2luZm87CisgICAgfQorI2VuZGlmCisKKyAgICAvKgorICAgICAqIFNESyBpbmZvLgorICAgICAqLworZ2V0X3Nka19pbmZvOgorCisjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgc2kuc2RrX3ZlciA9IChfX0dMSUJDX18gPDwgMjQpIHwKKwkJIChfX0dMSUJDX01JTk9SX18gPDwgMTYpOworICAgIHNpLnNka19uYW1lID0gcGpfc3RyKCJnbGliYyIpOworI2VsaWYgZGVmaW5lZChfX0dOVV9MSUJSQVJZX18pCisgICAgc2kuc2RrX3ZlciA9IChfX0dOVV9MSUJSQVJZX18gPDwgMjQpIHwKKwkgICAgICAgICAoX19HTlVfTElCUkFSWV9NSU5PUl9fIDw8IDE2KTsKKyAgICBzaS5zZGtfbmFtZSA9IHBqX3N0cigibGliYyIpOworI2VsaWYgZGVmaW5lZChfX1VDTElCQ19fKQorICAgIHNpLnNka192ZXIgPSAoX19VQ0xJQkNfTUFKT1JfXyA8PCAyNCkgfAorICAgIAkgICAgICAgICAoX19VQ0xJQkNfTUlOT1JfXyA8PCAxNik7CisgICAgc2kuc2RrX25hbWUgPSBwal9zdHIoInVjbGliYyIpOworI2VsaWYgZGVmaW5lZChfV0lOMzJfV0NFKSAmJiBfV0lOMzJfV0NFCisgICAgLyogT2xkIHdpbmRvdyBtb2JpbGUgZGVjbGFyZXMgX1dJTjMyX1dDRSBhcyBkZWNpbWFsIChlLmcuIDMwMCwgNDIwLCBldGMuKSwKKyAgICAgKiBidXQgdGhlbiBpdCB3YXMgY2hhbmdlZCB0byB1c2UgaGV4LCBlLmcuIDB4NDIwLCBldGMuIFNlZQorICAgICAqIGh0dHA6Ly9zb2NpYWwubXNkbi5taWNyb3NvZnQuY29tL2ZvcnVtcy9lbi1VUy92c3NtYXJ0ZGV2aWNlc25hdGl2ZS90aHJlYWQvOGE5N2M1OWYtNWExYy00YmM2LTk5ZTYtNDI3ZjA2NWZmNDM5LworICAgICAqLworICAgICNpZiBfV0lOMzJfV0NFIDw9IDUwMAorCXNpLnNka192ZXIgPSAoIChfV0lOMzJfV0NFIC8gMTAwKSA8PCAyNCkgfAorCQkgICAgICggKChfV0lOMzJfV0NFICUgMTAwKSAvIDEwKSA8PCAxNikgfAorCQkgICAgICggKF9XSU4zMl9XQ0UgJSAxMCkgPDwgOCk7CisgICAgI2Vsc2UKKwlzaS5zZGtfdmVyID0gKCAoKF9XSU4zMl9XQ0UgJiAweEZGMDApID4+IDgpIDw8IDI0KSB8CisJCSAgICAgKCAoKF9XSU4zMl9XQ0UgJiAweDAwRjApID4+IDQpIDw8IDE2KSB8CisJCSAgICAgKCAoKF9XSU4zMl9XQ0UgJiAweDAwMEYpID4+IDApIDw8IDgpOworICAgICNlbmRpZgorICAgIHNpLnNka19uYW1lID0gcGpfc3RyKCJjZXNkayIpOworI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgICAvKiBObyBTREsgaW5mbyBpcyBlYXNpbHkgb2J0YWluYWJsZSBmb3IgVmlzdWFsIEMsIHNvIGxldHMganVzdCB1c2UKKyAgICAgKiBfTVNDX1ZFUi4gVGhlIF9NU0NfVkVSIG1hY3JvIHJlcG9ydHMgdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9ucworICAgICAqIG9mIHRoZSBjb21waWxlci4gRm9yIGV4YW1wbGUsIDEzMTAgZm9yIE1pY3Jvc29mdCBWaXN1YWwgQysrIC5ORVQgMjAwMy4KKyAgICAgKiAxMzEwIHJlcHJlc2VudHMgdmVyc2lvbiAxMyBhbmQgYSAxLjAgcG9pbnQgcmVsZWFzZS4KKyAgICAgKiBUaGUgVmlzdWFsIEMrKyAyMDA1IGNvbXBpbGVyIHZlcnNpb24gaXMgMTQwMC4KKyAgICAgKi8KKyAgICBzaS5zZGtfdmVyID0gKChfTVNDX1ZFUiAvIDEwMCkgPDwgMjQpIHwKKyAgICAJICAgICAgICAgKCgoX01TQ19WRVIgJSAxMDApIC8gMTApIDw8IDE2KSB8CisgICAgCSAgICAgICAgICgoX01TQ19WRVIgJSAxMCkgPDwgOCk7CisgICAgc2kuc2RrX25hbWUgPSBwal9zdHIoIm1zdmMiKTsKKyNlbGlmIGRlZmluZWQoUEpfU1lNQklBTikgJiYgUEpfU1lNQklBTiAhPSAwCisgICAgcGpfc3ltYmlhbm9zX2dldF9zZGtfaW5mbygmc2kuc2RrX25hbWUsICZzaS5zZGtfdmVyKTsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBCdWlsZCB0aGUgaW5mbyBzdHJpbmcuCisgICAgICovCisgICAgeworCWNoYXIgdG1wW1BKX1NZU19JTkZPX0JVRkZFUl9TSVpFXTsKKwljaGFyIG9zX3ZlclsyMF0sIHNka192ZXJbMjBdOworCWludCBjbnQ7CisKKwljbnQgPSBwal9hbnNpX3NucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksCisJCQkgICAgICAgIiVzJXMlcyVzJXMlcyVzIiwKKwkJCSAgICAgICBzaS5vc19uYW1lLnB0ciwKKwkJCSAgICAgICB2ZXJfaW5mbyhzaS5vc192ZXIsIG9zX3ZlciksCisJCQkgICAgICAgKHNpLm1hY2hpbmUuc2xlbiA/ICIvIiA6ICIiKSwKKwkJCSAgICAgICBzaS5tYWNoaW5lLnB0ciwKKwkJCSAgICAgICAoc2kuc2RrX25hbWUuc2xlbiA/ICIvIiA6ICIiKSwKKwkJCSAgICAgICBzaS5zZGtfbmFtZS5wdHIsCisJCQkgICAgICAgdmVyX2luZm8oc2kuc2RrX3Zlciwgc2RrX3ZlcikpOworCWlmIChjbnQgPiAwICYmIGNudCA8IChpbnQpc2l6ZW9mKHRtcCkpIHsKKwkgICAgQUxMT0NfQ1BfU1RSKHRtcCwgaW5mbyk7CisJfQorICAgIH0KKworICAgIHNpX2luaXRpYWxpemVkID0gUEpfVFJVRTsKKyAgICByZXR1cm4gJnNpOworfQpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX2luZm9faXBob25lLm0gYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfaW5mb19pcGhvbmUubQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzMxNWMxCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX2luZm9faXBob25lLm0KQEAgLTAsMCArMSw1MyBAQAorLyogJElkOiBvc19pbmZvX2lwaG9uZS5tIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSAiVGFyZ2V0Q29uZGl0aW9uYWxzLmgiCisKKyNpZiAhZGVmaW5lZCBUQVJHRVRfSVBIT05FX1NJTVVMQVRPUiB8fCBUQVJHRVRfSVBIT05FX1NJTVVMQVRPUiA9PSAwCisKKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorCisjaW5jbHVkZSA8VUlLaXQvVUlEZXZpY2UuaD4KKwordm9pZCBwal9pcGhvbmVfb3NfZ2V0X3N5c19pbmZvKHBqX3N5c19pbmZvICpzaSwgcGpfc3RyX3QgKnNpX2J1ZmZlcikKK3sKKyAgICB1bnNpZ25lZCBidWZfbGVuID0gc2lfYnVmZmVyLT5zbGVuLCBsZWZ0ID0gc2lfYnVmZmVyLT5zbGVuLCBsZW47CisgICAgVUlEZXZpY2UgKmRldmljZSA9IFtVSURldmljZSBjdXJyZW50RGV2aWNlXTsKKyAgICAKKyAgICBpZiAoW2RldmljZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlzTXVsdGl0YXNraW5nU3VwcG9ydGVkKV0pCisJc2ktPmZsYWdzIHw9IFBKX1NZU19IQVNfSU9TX0JHOworICAgIAorI2RlZmluZSBBTExPQ19DUF9TVFIoc3RyLGZpZWxkKQlcCisgICAgZG8geyBcCisJbGVuID0gW3N0ciBsZW5ndGhdOyBcCisJaWYgKGxlbiAmJiBsZWZ0ID49IGxlbisxKSB7IFwKKwkgICAgc2ktPmZpZWxkLnB0ciA9IHNpX2J1ZmZlci0+cHRyICsgYnVmX2xlbiAtIGxlZnQ7IFwKKwkgICAgc2ktPmZpZWxkLnNsZW4gPSBsZW47IFwKKwkgICAgW3N0ciBnZXRDU3RyaW5nOnNpLT5maWVsZC5wdHIgbWF4TGVuZ3RoOmxlbisxIFwKKwkJIGVuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ107IFwKKwkgICAgbGVmdCAtPSAobGVuKzEpOyBcCisJfSBcCisgICAgfSB3aGlsZSAoMCkKKworICAgIEFMTE9DX0NQX1NUUihbZGV2aWNlIHN5c3RlbU5hbWVdLCBvc19uYW1lKTsKKyAgICBBTExPQ19DUF9TVFIoW2RldmljZSBzeXN0ZW1WZXJzaW9uXSwgbWFjaGluZSk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX2luZm9fc3ltYmlhbi5jcHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfaW5mb19zeW1iaWFuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzg5ZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX2luZm9fc3ltYmlhbi5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qICRJZDogb3NfaW5mb19zeW1iaWFuLmNwcCAzNDM3IDIwMTEtMDMtMDggMDY6MzA6MzRaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWYgIWRlZmluZWQoUEpfU1lNQklBTikgfHwgUEpfU1lNQklBTiA9PSAwCisjICAgZXJyb3IgVGhpcyBmaWxlIGlzIG9ubHkgZm9yIFN5bWJpYW4gcGxhdGZvcm0KKyNlbmRpZgorCisjaW5jbHVkZSA8cGovY3R5cGUuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKworI2luY2x1ZGUgPGYzMmZpbGUuaD4JLyogbGluayBhZ2FpbnN0IGVmc3J2LmxpYgkqLworI2luY2x1ZGUgPGhhbC5oPgkvKiBsaW5rIGFnYWluc3QgaGFsLmxpYgkJKi8KKyNpbmNsdWRlIDx1dGYuaD4JLyogbGluayBhZ2FpbnN0IGNoYXJjb252LmxpYgkqLworCisKK1BKX0JFR0lOX0RFQ0wKK3Vuc2lnbmVkIHBqX3N5bWJpYW5vc19nZXRfbW9kZWxfaW5mbyhjaGFyICpidWYsIHVuc2lnbmVkIGJ1Zl9zaXplKTsKK3Vuc2lnbmVkIHBqX3N5bWJpYW5vc19nZXRfcGxhdGZvcm1faW5mbyhjaGFyICpidWYsIHVuc2lnbmVkIGJ1Zl9zaXplKTsKK3ZvaWQgcGpfc3ltYmlhbm9zX2dldF9zZGtfaW5mbyhwal9zdHJfdCAqbmFtZSwgcGpfdWludDMyX3QgKnZlcik7CitQSl9FTkRfREVDTAorCisKKy8qIEdldCBTeW1iaWFuIHBob25lIG1vZGVsIGluZm8sIHJldHVybmluZyBsZW5ndGggb2YgbW9kZWwgaW5mbyAqLwordW5zaWduZWQgcGpfc3ltYmlhbm9zX2dldF9tb2RlbF9pbmZvKGNoYXIgKmJ1ZiwgdW5zaWduZWQgYnVmX3NpemUpCit7CisgICAgcGpfc3RyX3QgbW9kZWxfbmFtZTsKKworICAgIC8qIEdldCBtYWNoaW5lIFVJRCAqLworICAgIFRJbnQgaGFsX3ZhbDsKKyAgICBIQUw6OkdldChIQUw6OkVNYWNoaW5lVWlkLCBoYWxfdmFsKTsKKyAgICBwal9hbnNpX3NucHJpbnRmKGJ1ZiwgYnVmX3NpemUsICIweCUwOFgiLCBoYWxfdmFsKTsKKyAgICBwal9zdHJzZXQyKCZtb2RlbF9uYW1lLCBidWYpOworCisgICAgLyogR2V0IG1vZGVsIG5hbWUgKi8KKyAgICBjb25zdCBwal9zdHJfdCBzdF9jb3B5cmlnaHQgPSB7IihDKSIsIDN9OworICAgIGNvbnN0IHBqX3N0cl90IHN0X25va2lhID0geyJOb2tpYSIsIDV9OworICAgIGNoYXIgdG1wX2J1Zls2NF07CisgICAgcGpfc3RyX3QgdG1wX3N0cjsKKworICAgIF9MSVQoS01vZGVsRmlsZW5hbWUsIlo6XFxyZXNvdXJjZVxcdmVyc2lvbnNcXG1vZGVsLnR4dCIpOworICAgIFJGaWxlIGZpbGU7CisgICAgUkZzIGZzOworICAgIFRJbnQgZXJyOworICAgIAorICAgIGZzLkNvbm5lY3QoMSk7CisgICAgZXJyID0gZmlsZS5PcGVuKGZzLCBLTW9kZWxGaWxlbmFtZSwgRUZpbGVSZWFkKTsKKyAgICBpZiAoZXJyID09IEtFcnJOb25lKSB7CisJVEZpbGVUZXh0IHRleHQ7CisJdGV4dC5TZXQoZmlsZSk7CisJVEJ1ZjE2PDY0PiBNb2RlbE5hbWUxNjsKKwllcnIgPSB0ZXh0LlJlYWQoTW9kZWxOYW1lMTYpOworCWlmIChlcnIgPT0gS0Vyck5vbmUpIHsKKwkgICAgVFB0cjggcHRyOCgoVFVpbnQ4Kil0bXBfYnVmLCBzaXplb2YodG1wX2J1ZikpOworCSAgICBwdHI4LkNvcHkoTW9kZWxOYW1lMTYpOworCSAgICBwal9zdHJzZXQoJnRtcF9zdHIsIHRtcF9idWYsIHB0cjguTGVuZ3RoKCkpOworCSAgICBwal9zdHJ0cmltKCZ0bXBfc3RyKTsKKwl9CisJZmlsZS5DbG9zZSgpOworICAgIH0KKyAgICBmcy5DbG9zZSgpOworICAgIGlmIChlcnIgIT0gS0Vyck5vbmUpCisJZ290byBvbl9yZXR1cm47CisgICAgCisgICAgLyogVGhlIHJldHJpZXZlZCBtb2RlbCBuYW1lIGlzIHVzdWFsbHkgaW4gbG9uZyBmb3JtYXQsIGUuZzogCisgICAgICogIqkgTm9raWEgTjk1ICgwMS4wMSkiLCAiKEMpIE5va2lhIEU1MiIuIEFzIHdlIG5lZWQgb25seQorICAgICAqIHRoZSBzaG9ydCB2ZXJzaW9uLCBsZXQncyBjbGVhbiBpdCB1cC4KKyAgICAgKi8KKyAgICAKKyAgICAvKiBSZW1vdmUgcHJlY2VkaW5nIG5vbi1BU0NJSSBjaGFycywgZS5nOiAiqSIgKi8KKyAgICBjaGFyICpwID0gdG1wX3N0ci5wdHI7CisgICAgd2hpbGUgKCFwal9pc2FzY2lpKCpwKSkgeyBwKys7IH0KKyAgICBwal9zdHJzZXQoJnRtcF9zdHIsIHAsIHRtcF9zdHIuc2xlbiAtIChwIC0gdG1wX3N0ci5wdHIpKTsKKyAgICAKKyAgICAvKiBSZW1vdmUgIihDKSIgKi8KKyAgICBwID0gcGpfc3RyaXN0cigmdG1wX3N0ciwgJnN0X2NvcHlyaWdodCk7CisgICAgaWYgKHApIHsKKwlwICs9IHN0X2NvcHlyaWdodC5zbGVuOworCXBqX3N0cnNldCgmdG1wX3N0ciwgcCwgdG1wX3N0ci5zbGVuIC0gKHAgLSB0bXBfc3RyLnB0cikpOworICAgIH0KKworICAgIC8qIFJlbW92ZSAiTm9raWEiICovCisgICAgcCA9IHBqX3N0cmlzdHIoJnRtcF9zdHIsICZzdF9ub2tpYSk7CisgICAgaWYgKHApIHsKKwlwICs9IHN0X25va2lhLnNsZW47CisJcGpfc3Ryc2V0KCZ0bXBfc3RyLCBwLCB0bXBfc3RyLnNsZW4gLSAocCAtIHRtcF9zdHIucHRyKSk7CisgICAgfQorICAgIAorICAgIC8qIFJlbW92ZSBsYW5ndWFnZSB2ZXJzaW9uLCBlLmc6ICIoMDEuMDEpIiAqLworICAgIHAgPSBwal9zdHJjaHIoJnRtcF9zdHIsICcoJyk7CisgICAgaWYgKHApIHsKKwl0bXBfc3RyLnNsZW4gPSBwIC0gdG1wX3N0ci5wdHI7CisgICAgfQorICAgIAorICAgIHBqX3N0cnRyaW0oJnRtcF9zdHIpOworICAgIAorICAgIGlmICh0bXBfc3RyLnNsZW4gPT0gMCkKKwlnb3RvIG9uX3JldHVybjsKKyAgICAKKyAgICBpZiAoKHVuc2lnbmVkKXRtcF9zdHIuc2xlbiA+IGJ1Zl9zaXplIC0gbW9kZWxfbmFtZS5zbGVuIC0gMykKKwl0bXBfc3RyLnNsZW4gPSBidWZfc2l6ZSAtIG1vZGVsX25hbWUuc2xlbiAtIDM7CisgICAgCisgICAgcGpfc3RyY2F0MigmbW9kZWxfbmFtZSwgIigiKTsKKyAgICBwal9zdHJjYXQoJm1vZGVsX25hbWUsICZ0bXBfc3RyKTsKKyAgICBwal9zdHJjYXQyKCZtb2RlbF9uYW1lLCAiKSIpOworICAgIAorICAgIC8qIFplcm8gdGVybWluYXRlICovCisgICAgYnVmW21vZGVsX25hbWUuc2xlbl0gPSAnXDAnOworICAgIAorb25fcmV0dXJuOgorICAgIHJldHVybiBtb2RlbF9uYW1lLnNsZW47Cit9CisKKworLyogR2V0IHBsYXRmb3JtIGluZm8sIHJldHVybmVkIGZvcm1hdCB3aWxsIGJlICJTZXJpZXM2MHZYLlgiICovCit1bnNpZ25lZCBwal9zeW1iaWFub3NfZ2V0X3BsYXRmb3JtX2luZm8oY2hhciAqYnVmLCB1bnNpZ25lZCBidWZfc2l6ZSkKK3sKKyAgICAvKiBPUyBpbmZvICovCisgICAgX0xJVChLUzYwUHJvZHVjdElERmlsZSwgIlNlcmllczYwdiouc2lzIik7CisgICAgX0xJVChLUk9NSW5zdGFsbERpciwgIno6XFxzeXN0ZW1cXGluc3RhbGxcXCIpOworCisgICAgUkZzIGZzOworICAgIFRGaW5kRmlsZSBmZihmcyk7CisgICAgQ0RpciogcmVzdWx0OworICAgIHBqX3N0cl90IHBsYXRfaW5mbyA9IHtOVUxMLCAwfTsKKyAgICBUSW50IGVycjsKKworICAgIGZzLkNvbm5lY3QoMSk7CisgICAgZXJyID0gZmYuRmluZFdpbGRCeURpcihLUzYwUHJvZHVjdElERmlsZSwgS1JPTUluc3RhbGxEaXIsIHJlc3VsdCk7CisgICAgaWYgKGVyciA9PSBLRXJyTm9uZSkgeworCWVyciA9IHJlc3VsdC0+U29ydChFU29ydEJ5TmFtZXxFRGVzY2VuZGluZyk7CisJaWYgKGVyciA9PSBLRXJyTm9uZSkgeworCSAgICBUUHRyOCB0bXBfcHRyOCgoVFVpbnQ4KilidWYsIGJ1Zl9zaXplKTsKKwkgICAgY29uc3QgcGpfc3RyX3QgdG1wX2V4dCA9IHsiLnNpcyIsIDR9OworCSAgICBjaGFyICpwOworCSAgICAKKwkgICAgdG1wX3B0cjguQ29weSgoKnJlc3VsdClbMF0uaU5hbWUpOworCSAgICBwal9zdHJzZXQoJnBsYXRfaW5mbywgYnVmLCAocGpfc2l6ZV90KXRtcF9wdHI4Lkxlbmd0aCgpKTsKKwkgICAgcCA9IHBqX3N0cmlzdHIoJnBsYXRfaW5mbywgJnRtcF9leHQpOworCSAgICBpZiAocCkKKwkJcGxhdF9pbmZvLnNsZW4gLT0gKHAgLSBwbGF0X2luZm8ucHRyKTsKKwl9CisJZGVsZXRlIHJlc3VsdDsKKyAgICB9CisgICAgZnMuQ2xvc2UoKTsKKyAgICBidWZbcGxhdF9pbmZvLnNsZW5dID0gJ1wwJzsKKyAgICAKKyAgICByZXR1cm4gcGxhdF9pbmZvLnNsZW47Cit9CisKKworLyogR2V0IFNESyBpbmZvICovCit2b2lkIHBqX3N5bWJpYW5vc19nZXRfc2RrX2luZm8ocGpfc3RyX3QgKm5hbWUsIHBqX3VpbnQzMl90ICp2ZXIpCit7CisgICAgY29uc3QgcGpfc3RyX3QgUzYwID0geyJTNjAiLCAzfTsKKyAgICAjaWYgZGVmaW5lZChfX1NFUklFUzYwXzMwX18pCisJKm5hbWUgPSBTNjA7CisJKnZlciAgPSAoMyA8PCAyNCk7CisgICAgI2VsaWYgZGVmaW5lZChfX1NFUklFUzYwXzMxX18pCisJKm5hbWUgPSBTNjA7CisJKnZlciAgPSAoMyA8PCAyNCkgfCAoMSA8PCAxNik7CisgICAgI2VsaWYgZGVmaW5lZChfX1M2MF8zMl9fKQorCSpuYW1lID0gUzYwOworCSp2ZXIgID0gKDMgPDwgMjQpIHwgKDIgPDwgMTYpOworICAgICNlbGlmIGRlZmluZWQoX19TNjBfNTBfXykKKwkqbmFtZSA9IFM2MDsKKwkqdmVyICA9ICg1IDw8IDI0KTsKKyAgICAjZWxpZiBkZWZpbmVkKF9fTk9LSUFfTjk3X18pCisJKm5hbWUgPSBwal9zdHIoIk45NyIpOworCSp2ZXIgID0gKDEgPDwgMjQpOworICAgICNlbHNlCisJKm5hbWUgPSBwal9zdHIoIlVua25vd24iKTsKKwkqdmVyICA9IDA7CisgICAgI2VuZGlmCit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19yd211dGV4LmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfcndtdXRleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzOTIzNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfcndtdXRleC5jCkBAIC0wLDAgKzEsMTYzIEBACisvKiAkSWQ6IG9zX3J3bXV0ZXguYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworCisvKiAKKyAqIE5vdGU6IAorICogCisgKiBETyBOT1QgQlVJTEQgVEhJUyBGSUxFIERJUkVDVExZLiBUSElTIEZJTEUgV0lMTCBCRSBJTkNMVURFRCBCWSBvc19jb3JlXyouYworICogV0hFTiBNQUNSTyBQSl9FTVVMQVRFX1JXTVVURVggSVMgU0VULgorICovCisKKy8qCisgKiBvc19yd211dGV4LmM6CisgKgorICogSW1wbGVtZW50YXRpb24gb2YgUmVhZC1Xcml0ZSBtdXRleCBmb3IgcGxhdGZvcm1zIHRoYXQgbGFjayBpdCAoZS5nLgorICogV2luMzIsIFJURU1TKS4KKyAqLworCisKK3N0cnVjdCBwal9yd211dGV4X3QKK3sKKyAgICBwal9tdXRleF90ICpyZWFkX2xvY2s7CisgICAgLyogd3JpdGVfbG9jayBtdXN0IHVzZSBzZW1hcGhvcmUsIGJlY2F1c2Ugd3JpdGVfbG9jayBtYXkgYmUgcmVsZWFzZWQKKyAgICAgKiBieSB0aHJlYWQgb3RoZXIgdGhhbiB0aGUgdGhyZWFkIHRoYXQgYWNxdWlyZSB0aGUgd3JpdGVfbG9jayBpbiB0aGUKKyAgICAgKiBmaXJzdCBwbGFjZS4KKyAgICAgKi8KKyAgICBwal9zZW1fdCAgICp3cml0ZV9sb2NrOworICAgIHBqX2ludDMyX3QgIHJlYWRlcl9jb3VudDsKK307CisKKy8qCisgKiBDcmVhdGUgcmVhZGVyL3dyaXRlciBtdXRleC4KKyAqCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcndtdXRleF9jcmVhdGUocGpfcG9vbF90ICpwb29sLCBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgICAgIHBqX3J3bXV0ZXhfdCAqKnBfbXV0ZXgpCit7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworICAgIHBqX3J3bXV0ZXhfdCAqcndtdXRleDsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4ocG9vbCAmJiBwX211dGV4LCBQSl9FSU5WQUwpOworCisgICAgKnBfbXV0ZXggPSBOVUxMOworICAgIHJ3bXV0ZXggPSBQSl9QT09MX0FMTE9DX1QocG9vbCwgcGpfcndtdXRleF90KTsKKworICAgIHN0YXR1cyA9IHBqX211dGV4X2NyZWF0ZV9zaW1wbGUocG9vbCwgbmFtZSwgJnJ3bXV0ZXggLT5yZWFkX2xvY2spOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gc3RhdHVzOworCisgICAgc3RhdHVzID0gcGpfc2VtX2NyZWF0ZShwb29sLCBuYW1lLCAxLCAxLCAmcndtdXRleC0+d3JpdGVfbG9jayk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJcGpfbXV0ZXhfZGVzdHJveShyd211dGV4LT5yZWFkX2xvY2spOworCXJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgcndtdXRleC0+cmVhZGVyX2NvdW50ID0gMDsKKyAgICAqcF9tdXRleCA9IHJ3bXV0ZXg7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBMb2NrIHRoZSBtdXRleCBmb3IgcmVhZGluZy4KKyAqCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcndtdXRleF9sb2NrX3JlYWQocGpfcndtdXRleF90ICptdXRleCkKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG11dGV4LCBQSl9FSU5WQUwpOworCisgICAgc3RhdHVzID0gcGpfbXV0ZXhfbG9jayhtdXRleC0+cmVhZF9sb2NrKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlwal9hc3NlcnQoISJUaGlzIHByZXR0eSBtdWNoIGlzIHVuZXhwZWN0ZWQiKTsKKwlyZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIG11dGV4LT5yZWFkZXJfY291bnQrKzsKKworICAgIHBqX2Fzc2VydChtdXRleC0+cmVhZGVyX2NvdW50IDwgMHg3RkZGRkZGMEwpOworCisgICAgaWYgKG11dGV4LT5yZWFkZXJfY291bnQgPT0gMSkKKwlwal9zZW1fd2FpdChtdXRleC0+d3JpdGVfbG9jayk7CisKKyAgICBzdGF0dXMgPSBwal9tdXRleF91bmxvY2sobXV0ZXgtPnJlYWRfbG9jayk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIExvY2sgdGhlIG11dGV4IGZvciB3cml0aW5nLgorICoKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9yd211dGV4X2xvY2tfd3JpdGUocGpfcndtdXRleF90ICptdXRleCkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG11dGV4LCBQSl9FSU5WQUwpOworICAgIHJldHVybiBwal9zZW1fd2FpdChtdXRleC0+d3JpdGVfbG9jayk7Cit9CisKKy8qCisgKiBSZWxlYXNlIHJlYWQgbG9jay4KKyAqCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcndtdXRleF91bmxvY2tfcmVhZChwal9yd211dGV4X3QgKm11dGV4KQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4obXV0ZXgsIFBKX0VJTlZBTCk7CisKKyAgICBzdGF0dXMgPSBwal9tdXRleF9sb2NrKG11dGV4LT5yZWFkX2xvY2spOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCXBqX2Fzc2VydCghIlRoaXMgcHJldHR5IG11Y2ggaXMgdW5leHBlY3RlZCIpOworCXJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgcGpfYXNzZXJ0KG11dGV4LT5yZWFkZXJfY291bnQgPj0gMSk7CisKKyAgICAtLW11dGV4LT5yZWFkZXJfY291bnQ7CisgICAgaWYgKG11dGV4LT5yZWFkZXJfY291bnQgPT0gMCkKKwlwal9zZW1fcG9zdChtdXRleC0+d3JpdGVfbG9jayk7CisKKyAgICBzdGF0dXMgPSBwal9tdXRleF91bmxvY2sobXV0ZXgtPnJlYWRfbG9jayk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIFJlbGVhc2Ugd3JpdGUgbG9jay4KKyAqCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcndtdXRleF91bmxvY2tfd3JpdGUocGpfcndtdXRleF90ICptdXRleCkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG11dGV4LCBQSl9FSU5WQUwpOworICAgIHBqX2Fzc2VydChtdXRleC0+cmVhZGVyX2NvdW50IDw9IDEpOworICAgIHJldHVybiBwal9zZW1fcG9zdChtdXRleC0+d3JpdGVfbG9jayk7Cit9CisKKworLyoKKyAqIERlc3Ryb3kgcmVhZGVyL3dyaXRlciBtdXRleC4KKyAqCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcndtdXRleF9kZXN0cm95KHBqX3J3bXV0ZXhfdCAqbXV0ZXgpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihtdXRleCwgUEpfRUlOVkFMKTsKKyAgICBwal9tdXRleF9kZXN0cm95KG11dGV4LT5yZWFkX2xvY2spOworICAgIHBqX3NlbV9kZXN0cm95KG11dGV4LT53cml0ZV9sb2NrKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX3N5bWJpYW4uaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19zeW1iaWFuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIzNTExYgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc19zeW1iaWFuLmgKQEAgLTAsMCArMSw0MjIgQEAKKy8qICRJZDogb3Nfc3ltYmlhbi5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaWZuZGVmIF9fT1NfU1lNQklBTl9IX18KKyNkZWZpbmUgX19PU19TWU1CSUFOX0hfXworCisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKworI2luY2x1ZGUgPGUzMmJhc2UuaD4KKyNpbmNsdWRlIDxlMzJjbW4uaD4KKyNpbmNsdWRlIDxlMzJzdGQuaD4KKyNpbmNsdWRlIDxlc19zb2NrLmg+CisjaW5jbHVkZSA8aW5fc29jay5oPgorI2luY2x1ZGUgPGNoYXJjb252Lmg+CisjaW5jbHVkZSA8dXRmLmg+CisjaW5jbHVkZSA8ZTMyY29ucy5oPgorCisvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucworY2xhc3MgQ1BqU29ja2V0UmVhZGVyOworCisjaWZuZGVmIFBKX1NZTUJJQU5fVElNRVJfUFJJT1JJVFkKKyMgICAgZGVmaW5lIFBKX1NZTUJJQU5fVElNRVJfUFJJT1JJVFkJRVByaW9yaXR5Tm9ybWFsCisjZW5kaWYKKworLy8KKy8vIFBKTElCIFN5bWJpYW4ncyBTb2NrZXQKKy8vCitjbGFzcyBDUGpTb2NrZXQKK3sKK3B1YmxpYzoKKyAgICBlbnVtCisgICAgeworCU1BWF9MRU4gPSAxNTAwLAorICAgIH07CisKKyAgICAvLyBDb25zdHJ1Y3QgQ1BqU29ja2V0CisgICAgQ1BqU29ja2V0KGludCBhZiwgaW50IHNvY2tfdHlwZSwgUlNvY2tldCAmc29jaykKKwk6IGFmXyhhZiksIHNvY2tfKHNvY2spLCBzb2NrX3R5cGVfKHNvY2tfdHlwZSksIGNvbm5lY3RlZF8oZmFsc2UpLCAKKwkgIHNvY2tSZWFkZXJfKE5VTEwpCisgICAgeyAKKyAgICB9CisKKyAgICAvLyBEZXN0cm95IENQalNvY2tldAorICAgIH5DUGpTb2NrZXQoKTsKKworICAgIC8vIEdldCBhZGRyZXNzIGZhbWlseQorICAgIGludCBHZXRBZigpIGNvbnN0IAorICAgIHsKKyAgICAJcmV0dXJuIGFmXzsJCisgICAgfQorICAgIAorICAgIC8vIEdldCB0aGUgaW50ZXJuYWwgUlNvY2tldAorICAgIFJTb2NrZXQmIFNvY2tldCgpCisgICAgeworCXJldHVybiBzb2NrXzsKKyAgICB9CisKKyAgICAvLyBHZXQgc29ja2V0IGNvbm5lY3RlZCBmbGFnLgorICAgIGJvb2wgSXNDb25uZWN0ZWQoKSBjb25zdAorICAgIHsKKwlyZXR1cm4gY29ubmVjdGVkXzsKKyAgICB9CisKKyAgICAvLyBTZXQgc29ja2V0IGNvbm5lY3RlZCBmbGFnLgorICAgIHZvaWQgU2V0Q29ubmVjdGVkKGJvb2wgY29ubmVjdGVkKQorICAgIHsKKwljb25uZWN0ZWRfID0gY29ubmVjdGVkOworICAgIH0KKworICAgIC8vIEdldCBzb2NrZXQgdHlwZQorICAgIGludCBHZXRTb2NrVHlwZSgpIGNvbnN0CisgICAgeworCXJldHVybiBzb2NrX3R5cGVfOworICAgIH0KKyAgICAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgc29ja2V0IGlzIGEgZGF0YWdyYW0KKyAgICBib29sIElzRGF0YWdyYW0oKSBjb25zdAorICAgIHsKKwlyZXR1cm4gc29ja190eXBlXyA9PSBLU29ja0RhdGFncmFtOworICAgIH0KKyAgICAKKyAgICAvLyBHZXQgc29ja2V0IHJlYWRlciwgaWYgYW55LgorICAgIC8vIE1heSByZXR1cm4gTlVMTC4KKyAgICBDUGpTb2NrZXRSZWFkZXIgKlJlYWRlcigpCisgICAgeworCXJldHVybiBzb2NrUmVhZGVyXzsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgc29ja2V0IHJlYWRlci4KKyAgICBDUGpTb2NrZXRSZWFkZXIgKkNyZWF0ZVJlYWRlcih1bnNpZ25lZCBtYXhfbGVuPUNQalNvY2tldDo6TUFYX0xFTik7CisKKyAgICAvLyBEZWxldGUgc29ja2V0IHJlYWRlciB3aGVuIGl0J3Mgbm90IHdhbnRlZC4KKyAgICB2b2lkIERlc3Ryb3lSZWFkZXIoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgaW50CQkgICAgIGFmXzsKKyAgICBSU29ja2V0CSAgICAgc29ja187CSAgICAvLyBNdXN0IG5vdCBiZSByZWZlcmVuY2UsIG9yIG90aGVyd2lzZQorCQkJCSAgICAvLyBpdCBtYXkgcG9pbnQgdG8gbG9jYWwgdmFyaWFibGUhCisgICAgdW5zaWduZWQgICAJICAgICBzb2NrX3R5cGVfOworICAgIAorICAgIGJvb2wJICAgICBjb25uZWN0ZWRfOworICAgIENQalNvY2tldFJlYWRlciAqc29ja1JlYWRlcl87Cit9OworCisKKy8vCisvLyBTb2NrZXQgcmVhZGVyLCB1c2VkIGJ5IHNlbGVjdCgpIGFuZCBpb3F1ZXVlIGFic3RyYWN0aW9uCisvLworY2xhc3MgQ1BqU29ja2V0UmVhZGVyIDogcHVibGljIENBY3RpdmUKK3sKK3B1YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3QuCisgICAgc3RhdGljIENQalNvY2tldFJlYWRlciAqTmV3TChDUGpTb2NrZXQgJnNvY2ssIHVuc2lnbmVkIG1heF9sZW49Q1BqU29ja2V0OjpNQVhfTEVOKTsKKworICAgIC8vIERlc3Ryb3k7CisgICAgfkNQalNvY2tldFJlYWRlcigpOworCisgICAgLy8gU3RhcnQgYXN5bmNocm9ub3VzIHJlYWQgZnJvbSB0aGUgc29ja2V0LgorICAgIHZvaWQgU3RhcnRSZWN2KHZvaWQgKCpjYikodm9pZCAqa2V5KT1OVUxMLCAKKwkJICAgdm9pZCAqa2V5PU5VTEwsIAorCQkgICBURGVzOCAqYURlc2MgPSBOVUxMLAorCQkgICBUVWludCBmbGFncyA9IDApOworCisgICAgLy8gU3RhcnQgYXN5bmNocm9ub3VzIHJlYWQgZnJvbSB0aGUgc29ja2V0LgorICAgIHZvaWQgU3RhcnRSZWN2RnJvbSh2b2lkICgqY2IpKHZvaWQgKmtleSk9TlVMTCwgCisJCSAgICAgICB2b2lkICprZXk9TlVMTCwgCisJCSAgICAgICBURGVzOCAqYURlc2MgPSBOVUxMLAorCQkgICAgICAgVFVpbnQgZmxhZ3MgPSAwLAorCQkgICAgICAgVFNvY2tBZGRyICpmcm9tQWRkciA9IE5VTEwpOworCisgICAgLy8gQ2FuY2VsIGFzeW5jaHJvbm91cyByZWFkLgorICAgIHZvaWQgRG9DYW5jZWwoKTsKKworICAgIC8vIEltcGxlbWVudGF0aW9uOiBjYWxsZWQgd2hlbiByZWFkIGhhcyBjb21wbGV0ZWQuCisgICAgdm9pZCBSdW5MKCk7CisKKyAgICAvLyBDaGVjayBpZiB0aGVyZSdzIHBlbmRpbmcgZGF0YS4KKyAgICBib29sIEhhc0RhdGEoKSBjb25zdAorICAgIHsKKwlyZXR1cm4gYnVmZmVyXy5MZW5ndGgoKSAhPSAwOworICAgIH0KKworICAgIC8vIEFwcGVuZCBkYXRhIHRvIGFEZXNjLCB1cCB0byBhRGVzYydzIG1heGltdW0gc2l6ZS4KKyAgICAvLyBJZiBzb2NrZXQgaXMgZGF0YWdyYW0gYmFzZWQsIGJ1ZmZlcl8gd2lsbCBiZSBjbGFyZWQuCisgICAgdm9pZCBSZWFkRGF0YShURGVzOCAmYURlc2MsIFRJbmV0QWRkciAqYWRkcj1OVUxMKTsKKworcHJpdmF0ZToKKyAgICBDUGpTb2NrZXQJICAgJnNvY2tfOworICAgIGJvb2wJICAgIGlzRGF0YWdyYW1fOworICAgIFRQdHI4CSAgICBidWZmZXJfOworICAgIFRJbmV0QWRkcgkgICAgcmVjdkFkZHJfOworCisgICAgdm9pZAkgICAoKnJlYWRDYl8pKHZvaWQgKmtleSk7CisgICAgdm9pZAkgICAgKmtleV87CisKKyAgICAvLworICAgIC8vIENvbnN0cnVjdG9yCisgICAgLy8KKyAgICBDUGpTb2NrZXRSZWFkZXIoQ1BqU29ja2V0ICZzb2NrKTsKKyAgICB2b2lkIENvbnN0cnVjdEwodW5zaWduZWQgbWF4X2xlbik7Cit9OworCisKKworLy8KKy8vIFRpbWUtb3V0IFRpbWVyIEFjdGl2ZSBPYmplY3QKKy8vCitjbGFzcyBDUGpUaW1lb3V0VGltZXIgOiBwdWJsaWMgQ0FjdGl2ZQoreworcHVibGljOgorICAgIHN0YXRpYyBDUGpUaW1lb3V0VGltZXIgKk5ld0woKTsKKyAgICB+Q1BqVGltZW91dFRpbWVyKCk7CisKKyAgICB2b2lkIFN0YXJ0VGltZXIoVFVpbnQgbWlsaVNlY29uZHMpOworICAgIGJvb2wgSGFzVGltZWRPdXQoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBSdW5MKCk7CisgICAgdmlydHVhbCB2b2lkIERvQ2FuY2VsKCk7CisgICAgdmlydHVhbCBUSW50IFJ1bkVycm9yKFRJbnQgYUVycm9yKTsKKworcHJpdmF0ZToKKyAgICBSVGltZXIJdGltZXJfOworICAgIHBqX2Jvb2xfdAloYXNUaW1lZE91dF87CisKKyAgICBDUGpUaW1lb3V0VGltZXIoKTsKKyAgICB2b2lkIENvbnN0cnVjdEwoKTsKK307CisKKworCisvLworLy8gU3ltYmlhbiBPUyBoZWxwZXIgZm9yIFBKTElCCisvLworY2xhc3MgUGpTeW1iaWFuT1MKK3sKK3B1YmxpYzoKKyAgICAvLworICAgIC8vIEdldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIFBqU3ltYmlhbk9TCisgICAgLy8KKyAgICBzdGF0aWMgUGpTeW1iaWFuT1MgKkluc3RhbmNlKCk7CisKKyAgICAvLworICAgIC8vIFNldCBwYXJhbWV0ZXJzCisgICAgLy8KKyAgICB2b2lkIFNldFBhcmFtZXRlcnMocGpfc3ltYmlhbm9zX3BhcmFtcyAqcGFyYW1zKTsKKyAgICAKKyAgICAvLworICAgIC8vIEluaXRpYWxpemUuCisgICAgLy8KKyAgICBUSW50IEluaXRpYWxpemUoKTsKKworICAgIC8vCisgICAgLy8gU2h1dGRvd24uCisgICAgLy8KKyAgICB2b2lkIFNodXRkb3duKCk7CisKKworICAgIC8vCisgICAgLy8gU29ja2V0IGhlbHBlci4KKyAgICAvLworCisgICAgLy8gR2V0IFJTb2NrZXRTZXJ2IGluc3RhbmNlIHRvIGJlIHVzZWQgYnkgYWxsIHNvY2tldHMuCisgICAgUlNvY2tldFNlcnYgJlNvY2tldFNlcnYoKQorICAgIHsKKwlyZXR1cm4gYXBwU29ja2V0U2Vydl8gPyAqYXBwU29ja2V0U2Vydl8gOiBzb2NrZXRTZXJ2XzsKKyAgICB9CisKKyAgICAvLyBHZXQgUkNvbm5lY3Rpb24gaW5zdGFuY2UsIGlmIGFueS4KKyAgICBSQ29ubmVjdGlvbiAqQ29ubmVjdGlvbigpIAorICAgIHsKKyAgICAJcmV0dXJuIGFwcENvbm5lY3Rpb25fOworICAgIH0KKyAgICAKKyAgICAvLyBDb252ZXJ0IFRJbmV0QWRkciB0byBwal9zb2NrYWRkcl9pbgorICAgIHN0YXRpYyBpbmxpbmUgcGpfc3RhdHVzX3QgQWRkcjJwaihjb25zdCBUSW5ldEFkZHIgJiBzeW1fYWRkciwKKwkJCSAgICAgICAJICAgICAgcGpfc29ja2FkZHIgJnBqX2FkZHIsCisJCQkgICAgICAgCSAgICAgIGludCAqYWRkcl9sZW4sCisJCQkgICAgICAgCSAgICAgIHBqX2Jvb2xfdCBjb252ZXJ0X2lwdjRfbWFwcGVkX2FkZHIgPSBQSl9GQUxTRSkKKyAgICB7CisgICAgVFVpbnQgZmFtID0gc3ltX2FkZHIuRmFtaWx5KCk7CisJcGpfYnplcm8oJnBqX2FkZHIsICphZGRyX2xlbik7CisJaWYgKGZhbSA9PSBQSl9BRl9JTkVUIHx8IAorCQkJKGNvbnZlcnRfaXB2NF9tYXBwZWRfYWRkciAmJiAKKwkJCSBmYW0gPT0gUEpfQUZfSU5FVDYgJiYgCisJCQkgc3ltX2FkZHIuSXNWNE1hcHBlZCgpKSkgCisJeworCQlwal9hZGRyLmFkZHIuc2FfZmFtaWx5ID0gUEpfQUZfSU5FVDsKKwkgICAgUEpfQVNTRVJUX1JFVFVSTigqYWRkcl9sZW4+PShpbnQpc2l6ZW9mKHBqX3NvY2thZGRyX2luKSwgUEpfRVRPT1NNQUxMKTsKKwkgICAgcGpfYWRkci5pcHY0LnNpbl9hZGRyLnNfYWRkciA9IHBqX2h0b25sKHN5bV9hZGRyLkFkZHJlc3MoKSk7CisJICAgIHBqX2FkZHIuaXB2NC5zaW5fcG9ydCA9IHBqX2h0b25zKChwal91aW50MTZfdCkgc3ltX2FkZHIuUG9ydCgpKTsKKwkgICAgKmFkZHJfbGVuID0gc2l6ZW9mKHBqX3NvY2thZGRyX2luKTsKKwl9IGVsc2UgaWYgKGZhbSA9PSBQSl9BRl9JTkVUNikgeworCSAgICBQSl9BU1NFUlRfUkVUVVJOKCphZGRyX2xlbj49KGludClzaXplb2YocGpfc29ja2FkZHJfaW42KSwgUEpfRVRPT1NNQUxMKTsKKwkgICAgY29uc3QgVElwNkFkZHIgJiBpcDYgPSBzeW1fYWRkci5JcDZBZGRyZXNzKCk7CisJICAgIHBqX2FkZHIuYWRkci5zYV9mYW1pbHkgPSBQSl9BRl9JTkVUNjsKKwkgICAgcGpfbWVtY3B5KCZwal9hZGRyLmlwdjYuc2luNl9hZGRyLCBpcDYudS5pQWRkcjgsIDE2KTsKKwkgICAgcGpfYWRkci5pcHY2LnNpbjZfcG9ydCA9IHBqX2h0b25zKChwal91aW50MTZfdCkgc3ltX2FkZHIuUG9ydCgpKTsKKwkgICAgcGpfYWRkci5pcHY2LnNpbjZfc2NvcGVfaWQgPSBwal9odG9ubChzeW1fYWRkci5TY29wZSgpKTsKKwkgICAgcGpfYWRkci5pcHY2LnNpbjZfZmxvd2luZm8gPSBwal9odG9ubChzeW1fYWRkci5GbG93TGFiZWwoKSk7CisJICAgICphZGRyX2xlbiA9IHNpemVvZihwal9zb2NrYWRkcl9pbjYpOworCX0gZWxzZSB7CisJICAgIHBqX2Fzc2VydCghIlVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CisJICAgIHJldHVybiBQSl9FQUZOT1RTVVA7CisJfQorCQorCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0KKworCisgICAgLy8gQ29udmVydCBwal9zb2NrYWRkcl9pbiB0byBUSW5ldEFkZHIKKyAgICBzdGF0aWMgaW5saW5lIHBqX3N0YXR1c190IHBqMkFkZHIoY29uc3QgcGpfc29ja2FkZHIgJnBqX2FkZHIsCisgICAgCQkJCSAgICAgIGludCBhZGRybGVuLAorCQkJICAgICAgIAkgICAgICBUSW5ldEFkZHIgJiBzeW1fYWRkcikKKyAgICB7CisgICAgCWlmIChwal9hZGRyLmFkZHIuc2FfZmFtaWx5ID09IFBKX0FGX0lORVQpIHsKKyAgICAJICAgIFBKX0FTU0VSVF9SRVRVUk4oYWRkcmxlbiA+PSAoaW50KXNpemVvZihwal9zb2NrYWRkcl9pbiksIFBKX0VJTlZBTCk7CisJICAgIHN5bV9hZGRyLkluaXQoS0FmSW5ldCk7CisgICAgCSAgICBzeW1fYWRkci5TZXRBZGRyZXNzKChUVWludDMyKXBqX250b2hsKHBqX2FkZHIuaXB2NC5zaW5fYWRkci5zX2FkZHIpKTsKKyAgICAJICAgIHN5bV9hZGRyLlNldFBvcnQocGpfbnRvaHMocGpfYWRkci5pcHY0LnNpbl9wb3J0KSk7CisgICAgCX0gZWxzZSBpZiAocGpfYWRkci5hZGRyLnNhX2ZhbWlseSA9PSBQSl9BRl9JTkVUNikgeworICAgIAkgICAgVElwNkFkZHIgaXA2OworICAgIAkKKyAgICAJICAgIFBKX0FTU0VSVF9SRVRVUk4oYWRkcmxlbj49KGludClzaXplb2YocGpfc29ja2FkZHJfaW42KSwgUEpfRUlOVkFMKTsKKyAgICAJICAgIHBqX21lbWNweShpcDYudS5pQWRkcjgsICZwal9hZGRyLmlwdjYuc2luNl9hZGRyLCAxNik7CisgICAgCSAgICBzeW1fYWRkci5Jbml0KEtBZkluZXQ2KTsKKyAgICAJICAgIHN5bV9hZGRyLlNldEFkZHJlc3MoaXA2KTsKKyAgICAJICAgIHN5bV9hZGRyLlNldFNjb3BlKHBqX250b2hsKHBqX2FkZHIuaXB2Ni5zaW42X3Njb3BlX2lkKSk7CisgICAgCSAgICBzeW1fYWRkci5TZXRGbG93TGFiZWwocGpfbnRvaGwocGpfYWRkci5pcHY2LnNpbjZfZmxvd2luZm8pKTsKKyAgICAJfSBlbHNlIHsKKyAgICAJICAgIHBqX2Fzc2VydCghIlVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgCX0KKyAgICAJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIFJlc29sdmVyIGhlbHBlcgorICAgIC8vCisKKyAgICAvLyBHZXQgUkhvc3RSZXNvbHZlciBpbnN0YW5jZQorICAgIFJIb3N0UmVzb2x2ZXIgJiBHZXRSZXNvbHZlcihpbnQgYWYpCisgICAgeworICAgIAlpZiAoYWY9PVBKX0FGX0lORVQ2KSB7CisgICAgCSAgICByZXR1cm4gYXBwSG9zdFJlc29sdmVyNl8gPyAqYXBwSG9zdFJlc29sdmVyNl8gOiBob3N0UmVzb2x2ZXI2XzsKKyAgICAJfSBlbHNlIHsKKyAgICAJICAgIHJldHVybiBhcHBIb3N0UmVzb2x2ZXJfID8gKmFwcEhvc3RSZXNvbHZlcl8gOiBob3N0UmVzb2x2ZXJfOworICAgIAl9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgYWNjZXNzIHBvaW50IGNvbm5lY3Rpb24gaXMgdXAKKyAgICAvLworICAgIGJvb2wgSXNDb25uZWN0aW9uVXAoKSBjb25zdAorICAgIHsKKwlyZXR1cm4gaXNDb25uZWN0aW9uVXBfOworICAgIH0KKworICAgIC8vCisgICAgLy8gU2V0IGFjY2VzcyBwb2ludCBjb25uZWN0aW9uIHN0YXR1cworICAgIC8vCisgICAgdm9pZCBTZXRDb25uZWN0aW9uU3RhdHVzKGJvb2wgdXApCisgICAgeworCWlzQ29ubmVjdGlvblVwXyA9IHVwOworICAgIH0KKworICAgIC8vCisgICAgLy8gVW5pY29kZSBDb252ZXJ0ZXIKKyAgICAvLworCisgICAgLy8gQ29udmVydCB0byBVbmljb2RlCisgICAgVEludCBDb252ZXJ0VG9Vbmljb2RlKFREZXMxNiAmYVVuaWNvZGUsIGNvbnN0IFREZXNDOCAmYUZvcmVpZ24pOworCisgICAgLy8gQ29udmVydCBmcm9tIFVuaWNvZGUKKyAgICBUSW50IENvbnZlcnRGcm9tVW5pY29kZShURGVzOCAmYUZvcmVpZ24sIGNvbnN0IFREZXNDMTYgJmFVbmljb2RlKTsKKworICAgIC8vCisgICAgLy8gR2V0IGNvbnNvbGUKKyAgICAvLworICAgIAorICAgIC8vIEdldCBjb25zb2xlCisgICAgQ0NvbnNvbGVCYXNlICpDb25zb2xlKCkKKyAgICB7CisJcmV0dXJuIGNvbnNvbGVfOworICAgIH0KKyAgICAKKyAgICAvLworICAgIC8vIEdldCBzZWxlY3QoKSB0aW1lb3V0IHRpbWVyLgorICAgIC8vCisgICAgQ1BqVGltZW91dFRpbWVyICpTZWxlY3RUaW1lb3V0VGltZXIoKQorICAgIHsKKwlyZXR1cm4gc2VsZWN0VGltZW91dFRpbWVyXzsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFdhaXQgZm9yIGFueSBhY3RpdmUgb2JqZWN0cyB0byBydW4uCisgICAgLy8KKyAgICB2b2lkIFdhaXRGb3JBY3RpdmVPYmplY3RzKFRJbnQgYVByaW9yaXR5ID0gQ0FjdGl2ZTo6RVByaW9yaXR5U3RhbmRhcmQpCisgICAgeworCVRJbnQgYUVycm9yOworCUNBY3RpdmVTY2hlZHVsZXI6OkN1cnJlbnQoKS0+V2FpdEZvckFueVJlcXVlc3QoKTsKKwlDQWN0aXZlU2NoZWR1bGVyOjpSdW5JZlJlYWR5KGFFcnJvciwgYVByaW9yaXR5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc0Nvbm5lY3Rpb25VcF87CisgICAgCisgICAgYm9vbCBpc1NvY2tldFNlcnZJbml0aWFsaXplZF87CisgICAgUlNvY2tldFNlcnYgc29ja2V0U2Vydl87CisKKyAgICBib29sIGlzUmVzb2x2ZXJJbml0aWFsaXplZF87CisgICAgUkhvc3RSZXNvbHZlciBob3N0UmVzb2x2ZXJfOworICAgIFJIb3N0UmVzb2x2ZXIgaG9zdFJlc29sdmVyNl87CisKKyAgICBDQ29uc29sZUJhc2UqIGNvbnNvbGVfOworCisgICAgQ1BqVGltZW91dFRpbWVyICpzZWxlY3RUaW1lb3V0VGltZXJfOworCisgICAgLy8gQXBwIHBhcmFtZXRlcnMKKyAgICBSU29ja2V0U2VydiAqYXBwU29ja2V0U2Vydl87CisgICAgUkNvbm5lY3Rpb24gKmFwcENvbm5lY3Rpb25fOworICAgIFJIb3N0UmVzb2x2ZXIgKmFwcEhvc3RSZXNvbHZlcl87CisgICAgUkhvc3RSZXNvbHZlciAqYXBwSG9zdFJlc29sdmVyNl87CisgICAgCitwcml2YXRlOgorICAgIFBqU3ltYmlhbk9TKCk7Cit9OworCisvLyBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gY2hlY2sgdGhlIGFjY2VzcyBwb2ludCBjb25uZWN0aW9uIHN0YXR1cyBhbmQgcmV0dXJuCisvLyBmYWlsdXJlIGlmIHRoZSBBUCBjb25uZWN0aW9uIGlzIGRvd24gb3IgdW51c2FibGUuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbgorLy8gb2YgcGpfc3ltYmlhbm9zX3NldF9jb25uZWN0aW9uX3N0YXR1cygpIGZvciBtb3JlIGluZm8KKyNkZWZpbmUgUEpfU1lNQklBTl9DSEVDS19DT05ORUNUSU9OKCkgXAorICAgIFBKX1NZTUJJQU5fQ0hFQ0tfQ09OTkVDVElPTjIoUEpfRUNBTkNFTExFRCkKKworI2RlZmluZSBQSl9TWU1CSUFOX0NIRUNLX0NPTk5FQ1RJT04yKHJldHZhbCkgXAorICAgIGRvIHsgXAorCWlmICghUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPklzQ29ubmVjdGlvblVwKCkpIFwKKwkgICAgcmV0dXJuIHJldHZhbDsgXAorICAgIH0gd2hpbGUgKDApOworCisjZW5kaWYJLyogX19PU19TWU1CSUFOX0hfXyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfdGltZV9ic2QuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lX2JzZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNDBjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfdGltZV9ic2QuYwpAQCAtMCwwICsxLDM2IEBACisvKiAkSWQ6IG9zX3RpbWVfYnNkLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC90aW1lLmg+CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXR0aW1lb2ZkYXkocGpfdGltZV92YWwgKnR2KQoreworICAgIHN0cnVjdCB0aW1lYiB0YjsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBmdGltZSgmdGIpOworICAgIHR2LT5zZWMgPSB0Yi50aW1lOworICAgIHR2LT5tc2VjID0gdGIubWlsbGl0bTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX3RpbWVfY29tbW9uLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfdGltZV9jb21tb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWRhNzAxCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX3RpbWVfY29tbW9uLmMKQEAgLTAsMCArMSw4NiBAQAorLyogJElkOiBvc190aW1lX2NvbW1vbi5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvdGltZS5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RpbWVfZGVjb2RlKGNvbnN0IHBqX3RpbWVfdmFsICp0diwgcGpfcGFyc2VkX3RpbWUgKnB0KQoreworICAgIHN0cnVjdCB0bSAqbG9jYWxfdGltZTsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBsb2NhbF90aW1lID0gbG9jYWx0aW1lKCh0aW1lX3QqKSZ0di0+c2VjKTsKKworICAgIHB0LT55ZWFyID0gbG9jYWxfdGltZS0+dG1feWVhcisxOTAwOworICAgIHB0LT5tb24gPSBsb2NhbF90aW1lLT50bV9tb247CisgICAgcHQtPmRheSA9IGxvY2FsX3RpbWUtPnRtX21kYXk7CisgICAgcHQtPmhvdXIgPSBsb2NhbF90aW1lLT50bV9ob3VyOworICAgIHB0LT5taW4gPSBsb2NhbF90aW1lLT50bV9taW47CisgICAgcHQtPnNlYyA9IGxvY2FsX3RpbWUtPnRtX3NlYzsKKyAgICBwdC0+d2RheSA9IGxvY2FsX3RpbWUtPnRtX3dkYXk7CisgICAgcHQtPm1zZWMgPSB0di0+bXNlYzsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKioKKyAqIEVuY29kZSBwYXJzZWQgdGltZSB0byB0aW1lIHZhbHVlLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RpbWVfZW5jb2RlKGNvbnN0IHBqX3BhcnNlZF90aW1lICpwdCwgcGpfdGltZV92YWwgKnR2KQoreworICAgIHN0cnVjdCB0bSBsb2NhbF90aW1lOworCisgICAgbG9jYWxfdGltZS50bV95ZWFyID0gcHQtPnllYXItMTkwMDsKKyAgICBsb2NhbF90aW1lLnRtX21vbiA9IHB0LT5tb247CisgICAgbG9jYWxfdGltZS50bV9tZGF5ID0gcHQtPmRheTsKKyAgICBsb2NhbF90aW1lLnRtX2hvdXIgPSBwdC0+aG91cjsKKyAgICBsb2NhbF90aW1lLnRtX21pbiA9IHB0LT5taW47CisgICAgbG9jYWxfdGltZS50bV9zZWMgPSBwdC0+c2VjOworICAgIGxvY2FsX3RpbWUudG1faXNkc3QgPSAwOworICAgIAorICAgIHR2LT5zZWMgPSBta3RpbWUoJmxvY2FsX3RpbWUpOworICAgIHR2LT5tc2VjID0gcHQtPm1zZWM7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoqCisgKiBDb252ZXJ0IGxvY2FsIHRpbWUgdG8gR01ULgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RpbWVfbG9jYWxfdG9fZ210KHBqX3RpbWVfdmFsICp0dikKK3sKKyAgICBQSl9VTlVTRURfQVJHKHR2KTsKKyAgICByZXR1cm4gUEpfRUJVRzsKK30KKworLyoqCisgKiBDb252ZXJ0IEdNVCB0byBsb2NhbCB0aW1lLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RpbWVfZ210X3RvX2xvY2FsKHBqX3RpbWVfdmFsICp0dikKK3sKKyAgICBQSl9VTlVTRURfQVJHKHR2KTsKKyAgICByZXR1cm4gUEpfRUJVRzsKK30KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfdGltZV9saW51eF9rZXJuZWwuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lX2xpbnV4X2tlcm5lbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNzcyYTAKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfdGltZV9saW51eF9rZXJuZWwuYwpAQCAtMCwwICsxLDY2IEBACisvKiAkSWQ6IG9zX3RpbWVfbGludXhfa2VybmVsLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldHRpbWVvZmRheShwal90aW1lX3ZhbCAqdHYpCit7CisgICAgc3RydWN0IHRpbWV2YWwgdHZhbDsKKyAgCisgICAgZG9fZ2V0dGltZW9mZGF5KCZ0dmFsKTsKKyAgICB0di0+c2VjID0gdHZhbC50dl9zZWM7CisgICAgdHYtPm1zZWMgPSB0dmFsLnR2X3VzZWMgLyAxMDAwOworCisgICAgcmV0dXJuIDA7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGltZV9kZWNvZGUoY29uc3QgcGpfdGltZV92YWwgKnR2LCBwal9wYXJzZWRfdGltZSAqcHQpCit7CisgICAgcHQtPnllYXIgPSAyMDA1OworICAgIHB0LT5tb24gPSA4OworICAgIHB0LT5kYXkgPSAyMDsKKyAgICBwdC0+aG91ciA9IDE2OworICAgIHB0LT5taW4gPSAzMDsKKyAgICBwdC0+c2VjID0gMzA7CisgICAgcHQtPndkYXkgPSAzOworICAgIHB0LT55ZGF5ID0gMjAwOworICAgIHB0LT5tc2VjID0gNzc3OworCisgICAgcmV0dXJuIC0xOworfQorCisvKioKKyAqIEVuY29kZSBwYXJzZWQgdGltZSB0byB0aW1lIHZhbHVlLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RpbWVfZW5jb2RlKGNvbnN0IHBqX3BhcnNlZF90aW1lICpwdCwgcGpfdGltZV92YWwgKnR2KTsKKworLyoqCisgKiBDb252ZXJ0IGxvY2FsIHRpbWUgdG8gR01ULgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RpbWVfbG9jYWxfdG9fZ210KHBqX3RpbWVfdmFsICp0dik7CisKKy8qKgorICogQ29udmVydCBHTVQgdG8gbG9jYWwgdGltZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal90aW1lX2dtdF90b19sb2NhbChwal90aW1lX3ZhbCAqdHYpOworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lX3VuaXguYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lX3VuaXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjMxMzliCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX3RpbWVfdW5peC5jCkBAIC0wLDAgKzEsNDcgQEAKKy8qICRJZDogb3NfdGltZV91bml4LmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3RpbWUuaD4KKworI2lmIGRlZmluZWQoUEpfSEFTX1VOSVNURF9IKSAmJiBQSl9IQVNfVU5JU1REX0ghPTAKKyMgICAgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGVycm5vLmg+CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXR0aW1lb2ZkYXkocGpfdGltZV92YWwgKnBfdHYpCit7CisgICAgc3RydWN0IHRpbWV2YWwgdGhlX3RpbWU7CisgICAgaW50IHJjOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIHJjID0gZ2V0dGltZW9mZGF5KCZ0aGVfdGltZSwgTlVMTCk7CisgICAgaWYgKHJjICE9IDApCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX29zX2Vycm9yKCkpOworCisgICAgcF90di0+c2VjID0gdGhlX3RpbWUudHZfc2VjOworICAgIHBfdHYtPm1zZWMgPSB0aGVfdGltZS50dl91c2VjIC8gMTAwMDsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX3RpbWVfd2luMzIuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0M2UyZQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lX3dpbjMyLmMKQEAgLTAsMCArMSwzMDMgQEAKKy8qICRJZDogb3NfdGltZV93aW4zMi5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworI2RlZmluZSBTRUNTX1RPX0ZUX01VTFQgMTAwMDAwMDAKKworc3RhdGljIExBUkdFX0lOVEVHRVIgYmFzZV90aW1lOworCisjaWYgZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkgJiYgUEpfV0lOMzJfV0lOQ0UKKyMgICBkZWZpbmUgV0lOQ0VfVElNRQorI2VuZGlmCisKKyNpZmRlZiBXSU5DRV9USU1FCisvKiBOb3RlOgorICogIEluIFdpbmRvd3MgQ0UvV2luZG93cyBNb2JpbGUgcGxhdGZvcm1zLCB0aGUgYXZhaWxhYmlsaXR5IG9mIG1pbGxpc2Vjb25kcworICogIHRpbWUgcmVzb2x1dGlvbiBpbiBTWVNURU1USU1FLndNaWxsaXNlY29uZHMgZGVwZW5kcyBvbiB0aGUgT0VNLCBhbmQgbW9zdAorICogIGxpa2VseSBpdCB3b24ndCBiZSBhdmFpbGFibGUuIFdoZW4gaXQncyBub3QgYXZhaWxhYmxlLCB0aGUgCisgKiAgU1lTVEVNVElNRS53TWlsbGlzZWNvbmRzIHdpbGwgY29udGFpbiBhIGNvbnN0YW50IGFyYml0cmFyeSB2YWx1ZS4KKyAqCisgKiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBuZWVkIHRvIGVtdWxhdGUgdGhlIG1pbGxpc2Vjb25kcyB0aW1lIHJlc29sdXRpb24KKyAqICB1c2luZyBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigpICh2aWEgcGpfZ2V0X3RpbWVzdGFtcCgpIEFQSSkuIEhvd2V2ZXIgCisgKiAgdGhlcmUgaXMgbGltaXRhdGlvbiBvbiB1c2luZyB0aGlzLCBpLmUuIHRoZSB0aW1lIHJldHVybmVkIGJ5IAorICogIHBqX2dldHRpbWVvZmRheSgpIG1heSBiZSBvZmYgYnkgdXAgdG8gcGx1cy9taW51cyA5OTkgbXNlYyAodGhlIHNlY29uZAorICogIHBhcnQgd2lsbCBiZSBjb3JyZWN0LCBob3dldmVyIHRoZSBtc2VjIHBhcnQgbWF5IGJlIG9mZiksIGJlY2F1c2Ugd2UncmUgCisgKiAgbm90IHN5bmNocm9uaXppbmcgdGhlIG1zZWMgZmllbGQgd2l0aCB0aGUgY2hhbmdlIG9mIHZhbHVlIG9mIHRoZSAic2Vjb25kIgorICogIGZpZWxkIG9mIHRoZSBzeXN0ZW0gdGltZS4KKyAqCisgKiAgQWxzbyB0aGVyZSBpcyBvdGhlciBjYXZlYXQgd2hpY2ggbmVlZCB0byBiZSBoYW5kbGVkIChhbmQgdGhleSBhcmUgCisgKiAgaGFuZGxlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uKToKKyAqICAgLSB1c2VyIG1heSBjaGFuZ2Ugc3lzdGVtIHRpbWUsIHNvIHBqX2dldHRpbWVvZmRheSgpIG5lZWRzIHRvIHBlcmlvZGljYWxseQorICogICAgIGNoZWNrcyBpZiBzeXN0ZW0gdGltZSBoYXMgY2hhbmdlZC4gVGhlIHBlcmlvZCBvbiB3aGljaCBzeXN0ZW0gdGltZSBpcworICogICAgIGNoZWNrZWQgaXMgY29udHJvbGxlZCBieSBQSl9XSU5DRV9USU1FX0NIRUNLX0lOVEVSVkFMIG1hY3JvLgorICovCitzdGF0aWMgTEFSR0VfSU5URUdFUiBnX3N0YXJ0X3RpbWU7ICAvKiBUaW1lIGdldHRpbWVvZmRheSgpIGlzIGZpcnN0IGNhbGxlZCAgKi8KK3N0YXRpYyBwal90aW1lc3RhbXAgIGdfc3RhcnRfdGljazsgIC8qIFRTIGdldHRpbWVvZmRheSgpIGlzIGZpcnN0IGNhbGxlZCAgKi8KK3N0YXRpYyBwal90aW1lc3RhbXAgIGdfbGFzdF91cGRhdGU7IC8qIExhc3QgdGltZSBjaGVja19zeXN0ZW1fdGltZSgpIGlzIAorCQkJCSAgICAgICBjYWxsZWQsIHRvIHBlcmlvZGljYWxseSBzeW5jaHJvbml6ZQorCQkJCSAgICAgICB3aXRoIHVwLXRvLWRhdGUgc3lzdGVtIHRpbWUgKGluIGNhc2UKKwkJCQkgICAgICAgdXNlciBjaGFuZ2VzIHN5c3RlbSB0aW1lKS4JICAgICovCitzdGF0aWMgcGpfdWludDY0X3QgICBnX3VwZGF0ZV9wZXJpb2Q7IC8qIFBlcmlvZCAoaW4gVFMpIGNoZWNrX3N5c3RlbV90aW1lKCkKKwkJCQkgICAgICAgICBzaG91bGQgYmUgY2FsbGVkLgkJICAgICovCisKKy8qIFBlcmlvZCBvbiB3aGljaCBjaGVja19zeXN0ZW1fdGltZSgpIGlzIGNhbGxlZCwgaW4gc2Vjb25kcwkJICAgICovCisjaWZuZGVmIFBKX1dJTkNFX1RJTUVfQ0hFQ0tfSU5URVJWQUwKKyMgICBkZWZpbmUgUEpfV0lOQ0VfVElNRV9DSEVDS19JTlRFUlZBTCAoMTApCisjZW5kaWYKKworI2VuZGlmCisKKyNpZmRlZiBXSU5DRV9USU1FCitzdGF0aWMgcGpfc3RhdHVzX3QgaW5pdF9zdGFydF90aW1lKHZvaWQpCit7CisgICAgU1lTVEVNVElNRSBzdDsKKyAgICBGSUxFVElNRSBmdDsKKyAgICBwal90aW1lc3RhbXAgZnJlcTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBHZXRMb2NhbFRpbWUoJnN0KTsKKyAgICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgmc3QsICZmdCk7CisKKyAgICBnX3N0YXJ0X3RpbWUuTG93UGFydCA9IGZ0LmR3TG93RGF0ZVRpbWU7CisgICAgZ19zdGFydF90aW1lLkhpZ2hQYXJ0ID0gZnQuZHdIaWdoRGF0ZVRpbWU7CisgICAgZ19zdGFydF90aW1lLlF1YWRQYXJ0IC89IFNFQ1NfVE9fRlRfTVVMVDsKKyAgICBnX3N0YXJ0X3RpbWUuUXVhZFBhcnQgLT0gYmFzZV90aW1lLlF1YWRQYXJ0OworCisgICAgc3RhdHVzID0gcGpfZ2V0X3RpbWVzdGFtcCgmZ19zdGFydF90aWNrKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHN0YXR1czsKKworICAgIGdfbGFzdF91cGRhdGUudTY0ID0gZ19zdGFydF90aWNrLnU2NDsKKworICAgIHN0YXR1cyA9IHBqX2dldF90aW1lc3RhbXBfZnJlcSgmZnJlcSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisKKyAgICBnX3VwZGF0ZV9wZXJpb2QgPSBQSl9XSU5DRV9USU1FX0NIRUNLX0lOVEVSVkFMICogZnJlcS51NjQ7CisKKyAgICBQSl9MT0coNCwoIm9zX3RpbWVfd2luMzIuYyIsICJXaW5DRSB0aW1lIChyZSlzdGFydGVkIikpOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBwal9zdGF0dXNfdCBjaGVja19zeXN0ZW1fdGltZShwal91aW50NjRfdCB0c19lbGFwc2VkKQoreworICAgIGVudW0geyBNSVMgPSA1IH07CisgICAgU1lTVEVNVElNRSBzdDsKKyAgICBGSUxFVElNRSBmdDsKKyAgICBMQVJHRV9JTlRFR0VSIGN1ciwgY2FsYzsKKyAgICBEV09SRCBkaWZmOworICAgIHBqX3RpbWVzdGFtcCBmcmVxOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIC8qIEdldCBzeXN0ZW0ncyBjdXJyZW50IHRpbWUgKi8KKyAgICBHZXRMb2NhbFRpbWUoJnN0KTsKKyAgICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgmc3QsICZmdCk7CisgICAgCisgICAgY3VyLkxvd1BhcnQgPSBmdC5kd0xvd0RhdGVUaW1lOworICAgIGN1ci5IaWdoUGFydCA9IGZ0LmR3SGlnaERhdGVUaW1lOworICAgIGN1ci5RdWFkUGFydCAvPSBTRUNTX1RPX0ZUX01VTFQ7CisgICAgY3VyLlF1YWRQYXJ0IC09IGJhc2VfdGltZS5RdWFkUGFydDsKKworICAgIC8qIEdldCBvdXIgY2FsY3VsYXRlZCBzeXN0ZW0gdGltZSAqLworICAgIHN0YXR1cyA9IHBqX2dldF90aW1lc3RhbXBfZnJlcSgmZnJlcSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisKKyAgICBjYWxjLlF1YWRQYXJ0ID0gZ19zdGFydF90aW1lLlF1YWRQYXJ0ICsgdHNfZWxhcHNlZCAvIGZyZXEudTY0OworCisgICAgLyogU2VlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY2FsY3VsYXRlZCBhbmQgYWN0dWFsIHN5c3RlbSB0aW1lICovCisgICAgaWYgKGNhbGMuUXVhZFBhcnQgPj0gY3VyLlF1YWRQYXJ0KSB7CisJZGlmZiA9IChEV09SRCkoY2FsYy5RdWFkUGFydCAtIGN1ci5RdWFkUGFydCk7CisgICAgfSBlbHNlIHsKKwlkaWZmID0gKERXT1JEKShjdXIuUXVhZFBhcnQgLSBjYWxjLlF1YWRQYXJ0KTsKKyAgICB9CisKKyAgICBpZiAoZGlmZiA+IE1JUykgeworCS8qIFN5c3RlbSB0aW1lIGhhcyBjaGFuZ2VkICovCisJUEpfTE9HKDMsKCJvc190aW1lX3dpbjMyLmMiLCAiV2luQ0Ugc3lzdGVtIHRpbWUgY2hhbmdlZCBkZXRlY3RlZCAiCisJCQkJICAgICAgIihkaWZmPSV1KSIsIGRpZmYpKTsKKwlzdGF0dXMgPSBpbml0X3N0YXJ0X3RpbWUoKTsKKyAgICB9IGVsc2UgeworCXN0YXR1cyA9IFBKX1NVQ0NFU1M7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworI2VuZGlmCisKKy8vIEZpbmQgMXN0IEphbiAxOTcwIGFzIGEgRklMRVRJTUUgCitzdGF0aWMgcGpfc3RhdHVzX3QgZ2V0X2Jhc2VfdGltZSh2b2lkKQoreworICAgIFNZU1RFTVRJTUUgc3Q7CisgICAgRklMRVRJTUUgZnQ7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzID0gUEpfU1VDQ0VTUzsKKworICAgIG1lbXNldCgmc3QsMCxzaXplb2Yoc3QpKTsKKyAgICBzdC53WWVhcj0xOTcwOworICAgIHN0LndNb250aD0xOworICAgIHN0LndEYXk9MTsKKyAgICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgmc3QsICZmdCk7CisgICAgCisgICAgYmFzZV90aW1lLkxvd1BhcnQgPSBmdC5kd0xvd0RhdGVUaW1lOworICAgIGJhc2VfdGltZS5IaWdoUGFydCA9IGZ0LmR3SGlnaERhdGVUaW1lOworICAgIGJhc2VfdGltZS5RdWFkUGFydCAvPSBTRUNTX1RPX0ZUX01VTFQ7CisKKyNpZmRlZiBXSU5DRV9USU1FCisgICAgcGpfZW50ZXJfY3JpdGljYWxfc2VjdGlvbigpOworICAgIHN0YXR1cyA9IGluaXRfc3RhcnRfdGltZSgpOworICAgIHBqX2xlYXZlX2NyaXRpY2FsX3NlY3Rpb24oKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXR0aW1lb2ZkYXkocGpfdGltZV92YWwgKnR2KQoreworI2lmZGVmIFdJTkNFX1RJTUUKKyAgICBwal90aW1lc3RhbXAgdGljazsKKyAgICBwal91aW50NjRfdCBtc2VjX2VsYXBzZWQ7CisjZWxzZQorICAgIFNZU1RFTVRJTUUgc3Q7CisgICAgRklMRVRJTUUgZnQ7CisgICAgTEFSR0VfSU5URUdFUiBsaTsKKyNlbmRpZgorICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIGlmIChiYXNlX3RpbWUuUXVhZFBhcnQgPT0gMCkgeworCXN0YXR1cyA9IGdldF9iYXNlX3RpbWUoKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisjaWZkZWYgV0lOQ0VfVElNRQorICAgIGRvIHsKKwlzdGF0dXMgPSBwal9nZXRfdGltZXN0YW1wKCZ0aWNrKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJICAgIHJldHVybiBzdGF0dXM7CisKKwlpZiAodGljay51NjQgLSBnX2xhc3RfdXBkYXRlLnU2NCA+PSBnX3VwZGF0ZV9wZXJpb2QpIHsKKwkgICAgcGpfZW50ZXJfY3JpdGljYWxfc2VjdGlvbigpOworCSAgICBpZiAodGljay51NjQgLSBnX2xhc3RfdXBkYXRlLnU2NCA+PSBnX3VwZGF0ZV9wZXJpb2QpIHsKKwkJZ19sYXN0X3VwZGF0ZS51NjQgPSB0aWNrLnU2NDsKKwkJY2hlY2tfc3lzdGVtX3RpbWUodGljay51NjQgLSBnX3N0YXJ0X3RpY2sudTY0KTsKKwkgICAgfQorCSAgICBwal9sZWF2ZV9jcml0aWNhbF9zZWN0aW9uKCk7CisJfSBlbHNlIHsKKwkgICAgYnJlYWs7CisJfQorICAgIH0gd2hpbGUgKDEpOworCisgICAgbXNlY19lbGFwc2VkID0gcGpfZWxhcHNlZF9tc2VjNjQoJmdfc3RhcnRfdGljaywgJnRpY2spOworCisgICAgdHYtPnNlYyA9IChsb25nKShnX3N0YXJ0X3RpbWUuUXVhZFBhcnQgKyBtc2VjX2VsYXBzZWQvMTAwMCk7CisgICAgdHYtPm1zZWMgPSAobG9uZykobXNlY19lbGFwc2VkICUgMTAwMCk7CisjZWxzZQorICAgIC8qIFN0YW5kYXJkIFdpbjMyIEdldExvY2FsVGltZSAqLworICAgIEdldExvY2FsVGltZSgmc3QpOworICAgIFN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZzdCwgJmZ0KTsKKworICAgIGxpLkxvd1BhcnQgPSBmdC5kd0xvd0RhdGVUaW1lOworICAgIGxpLkhpZ2hQYXJ0ID0gZnQuZHdIaWdoRGF0ZVRpbWU7CisgICAgbGkuUXVhZFBhcnQgLz0gU0VDU19UT19GVF9NVUxUOworICAgIGxpLlF1YWRQYXJ0IC09IGJhc2VfdGltZS5RdWFkUGFydDsKKworICAgIHR2LT5zZWMgPSBsaS5Mb3dQYXJ0OworICAgIHR2LT5tc2VjID0gc3Qud01pbGxpc2Vjb25kczsKKyNlbmRpZgkvKiBXSU5DRV9USU1FICovCisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal90aW1lX2RlY29kZShjb25zdCBwal90aW1lX3ZhbCAqdHYsIHBqX3BhcnNlZF90aW1lICpwdCkKK3sKKyAgICBMQVJHRV9JTlRFR0VSIGxpOworICAgIEZJTEVUSU1FIGZ0OworICAgIFNZU1RFTVRJTUUgc3Q7CisKKyAgICBsaS5RdWFkUGFydCA9IHR2LT5zZWM7CisgICAgbGkuUXVhZFBhcnQgKz0gYmFzZV90aW1lLlF1YWRQYXJ0OworICAgIGxpLlF1YWRQYXJ0ICo9IFNFQ1NfVE9fRlRfTVVMVDsKKworICAgIGZ0LmR3TG93RGF0ZVRpbWUgPSBsaS5Mb3dQYXJ0OworICAgIGZ0LmR3SGlnaERhdGVUaW1lID0gbGkuSGlnaFBhcnQ7CisgICAgRmlsZVRpbWVUb1N5c3RlbVRpbWUoJmZ0LCAmc3QpOworCisgICAgcHQtPnllYXIgPSBzdC53WWVhcjsKKyAgICBwdC0+bW9uID0gc3Qud01vbnRoLTE7CisgICAgcHQtPmRheSA9IHN0LndEYXk7CisgICAgcHQtPndkYXkgPSBzdC53RGF5T2ZXZWVrOworCisgICAgcHQtPmhvdXIgPSBzdC53SG91cjsKKyAgICBwdC0+bWluID0gc3Qud01pbnV0ZTsKKyAgICBwdC0+c2VjID0gc3Qud1NlY29uZDsKKyAgICBwdC0+bXNlYyA9IHR2LT5tc2VjOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qKgorICogRW5jb2RlIHBhcnNlZCB0aW1lIHRvIHRpbWUgdmFsdWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGltZV9lbmNvZGUoY29uc3QgcGpfcGFyc2VkX3RpbWUgKnB0LCBwal90aW1lX3ZhbCAqdHYpCit7CisgICAgU1lTVEVNVElNRSBzdDsKKyAgICBGSUxFVElNRSBmdDsKKyAgICBMQVJHRV9JTlRFR0VSIGxpOworCisgICAgcGpfYnplcm8oJnN0LCBzaXplb2Yoc3QpKTsKKyAgICBzdC53WWVhciA9IChwal91aW50MTZfdCkgcHQtPnllYXI7CisgICAgc3Qud01vbnRoID0gKHBqX3VpbnQxNl90KSAocHQtPm1vbiArIDEpOworICAgIHN0LndEYXkgPSAocGpfdWludDE2X3QpIHB0LT5kYXk7CisgICAgc3Qud0hvdXIgPSAocGpfdWludDE2X3QpIHB0LT5ob3VyOworICAgIHN0LndNaW51dGUgPSAocGpfdWludDE2X3QpIHB0LT5taW47CisgICAgc3Qud1NlY29uZCA9IChwal91aW50MTZfdCkgcHQtPnNlYzsKKyAgICBzdC53TWlsbGlzZWNvbmRzID0gKHBqX3VpbnQxNl90KSBwdC0+bXNlYzsKKyAgICAKKyAgICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgmc3QsICZmdCk7CisKKyAgICBsaS5Mb3dQYXJ0ID0gZnQuZHdMb3dEYXRlVGltZTsKKyAgICBsaS5IaWdoUGFydCA9IGZ0LmR3SGlnaERhdGVUaW1lOworICAgIGxpLlF1YWRQYXJ0IC89IFNFQ1NfVE9fRlRfTVVMVDsKKyAgICBsaS5RdWFkUGFydCAtPSBiYXNlX3RpbWUuUXVhZFBhcnQ7CisKKyAgICB0di0+c2VjID0gbGkuTG93UGFydDsKKyAgICB0di0+bXNlYyA9IHN0LndNaWxsaXNlY29uZHM7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoqCisgKiBDb252ZXJ0IGxvY2FsIHRpbWUgdG8gR01ULgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RpbWVfbG9jYWxfdG9fZ210KHBqX3RpbWVfdmFsICp0dik7CisKKy8qKgorICogQ29udmVydCBHTVQgdG8gbG9jYWwgdGltZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal90aW1lX2dtdF90b19sb2NhbChwal90aW1lX3ZhbCAqdHYpOworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lc3RhbXBfY29tbW9uLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfdGltZXN0YW1wX2NvbW1vbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNWU0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfdGltZXN0YW1wX2NvbW1vbi5jCkBAIC0wLDAgKzEsMjA2IEBACisvKiAkSWQ6IG9zX3RpbWVzdGFtcF9jb21tb24uYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L2hpZ2hfcHJlY2lzaW9uLmg+CisKKyNpZiBkZWZpbmVkKFBKX0hBU19ISUdIX1JFU19USU1FUikgJiYgUEpfSEFTX0hJR0hfUkVTX1RJTUVSICE9IDAKKworI2RlZmluZSBVMzJNQVggICgweEZGRkZGRkZGVUwpCisjZGVmaW5lIE5BTk9TRUMgKDEwMDAwMDAwMDBVTCkKKyNkZWZpbmUgVVNFQyAgICAoMTAwMDAwMFVMKQorI2RlZmluZSBNU0VDICAgICgxMDAwKQorCisjZGVmaW5lIHU2NHRvaGlnaHByZWModTY0KQkoKHBqX2hpZ2hwcmVjX3QpKChwal9pbnQ2NF90KSh1NjQpKSkKKworc3RhdGljIHBqX2hpZ2hwcmVjX3QgZ2V0X2VsYXBzZWQoIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGpfdGltZXN0YW1wICpzdG9wICkKK3sKKyNpZiBkZWZpbmVkKFBKX0hBU19JTlQ2NCkgJiYgUEpfSEFTX0lOVDY0IT0wCisgICAgcmV0dXJuIHU2NHRvaGlnaHByZWMoc3RvcC0+dTY0IC0gc3RhcnQtPnU2NCk7CisjZWxzZQorICAgIHBqX2hpZ2hwcmVjX3QgZWxhcHNlZF9oaSwgZWxhcHNlZF9sbzsKKworICAgIGVsYXBzZWRfaGkgPSBzdG9wLT51MzIuaGkgLSBzdGFydC0+dTMyLmhpOworICAgIGVsYXBzZWRfbG8gPSBzdG9wLT51MzIubG8gLSBzdGFydC0+dTMyLmxvOworCisgICAgLyogZWxhcHNlZF9oaSA9IGVsYXBzZWRfaGkgKiBVMzJNQVggKi8KKyAgICBwal9oaWdocHJlY19tdWwoZWxhcHNlZF9oaSwgVTMyTUFYKTsKKworICAgIHJldHVybiBlbGFwc2VkX2hpICsgZWxhcHNlZF9sbzsKKyNlbmRpZgorfQorCitzdGF0aWMgcGpfaGlnaHByZWNfdCBlbGFwc2VkX21zZWMoIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RvcCApCit7CisgICAgcGpfdGltZXN0YW1wIHRzX2ZyZXE7CisgICAgcGpfaGlnaHByZWNfdCBmcmVxLCBlbGFwc2VkOworCisgICAgaWYgKHBqX2dldF90aW1lc3RhbXBfZnJlcSgmdHNfZnJlcSkgIT0gUEpfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBDb252ZXJ0IGZyZXF1ZW5jeSB0aW1lc3RhbXAgKi8KKyNpZiBkZWZpbmVkKFBKX0hBU19JTlQ2NCkgJiYgUEpfSEFTX0lOVDY0IT0wCisgICAgZnJlcSA9IHU2NHRvaGlnaHByZWModHNfZnJlcS51NjQpOworI2Vsc2UKKyAgICBmcmVxID0gdHNfZnJlcS51MzIuaGk7CisgICAgcGpfaGlnaHByZWNfbXVsKGZyZXEsIFUzMk1BWCk7CisgICAgZnJlcSArPSB0c19mcmVxLnUzMi5sbzsKKyNlbmRpZgorCisgICAgLyogQXZvaWQgZGl2aXNpb24gYnkgemVyby4gKi8KKyAgICBpZiAoZnJlcSA9PSAwKSBmcmVxID0gMTsKKworICAgIC8qIEdldCBlbGFwc2VkIHRpbWUgaW4gY3ljbGVzLiAqLworICAgIGVsYXBzZWQgPSBnZXRfZWxhcHNlZChzdGFydCwgc3RvcCk7CisKKyAgICAvKiB1c2VjID0gZWxhcHNlZCAqIE1TRUMgLyBmcmVxICovCisgICAgcGpfaGlnaHByZWNfbXVsKGVsYXBzZWQsIE1TRUMpOworICAgIHBqX2hpZ2hwcmVjX2RpdihlbGFwc2VkLCBmcmVxKTsKKworICAgIHJldHVybiBlbGFwc2VkOworfQorCitzdGF0aWMgcGpfaGlnaHByZWNfdCBlbGFwc2VkX3VzZWMoIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RvcCApCit7CisgICAgcGpfdGltZXN0YW1wIHRzX2ZyZXE7CisgICAgcGpfaGlnaHByZWNfdCBmcmVxLCBlbGFwc2VkOworCisgICAgaWYgKHBqX2dldF90aW1lc3RhbXBfZnJlcSgmdHNfZnJlcSkgIT0gUEpfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBDb252ZXJ0IGZyZXF1ZW5jeSB0aW1lc3RhbXAgKi8KKyNpZiBkZWZpbmVkKFBKX0hBU19JTlQ2NCkgJiYgUEpfSEFTX0lOVDY0IT0wCisgICAgZnJlcSA9IHU2NHRvaGlnaHByZWModHNfZnJlcS51NjQpOworI2Vsc2UKKyAgICBmcmVxID0gdHNfZnJlcS51MzIuaGk7CisgICAgcGpfaGlnaHByZWNfbXVsKGZyZXEsIFUzMk1BWCk7CisgICAgZnJlcSArPSB0c19mcmVxLnUzMi5sbzsKKyNlbmRpZgorCisgICAgLyogQXZvaWQgZGl2aXNpb24gYnkgemVyby4gKi8KKyAgICBpZiAoZnJlcSA9PSAwKSBmcmVxID0gMTsKKworICAgIC8qIEdldCBlbGFwc2VkIHRpbWUgaW4gY3ljbGVzLiAqLworICAgIGVsYXBzZWQgPSBnZXRfZWxhcHNlZChzdGFydCwgc3RvcCk7CisKKyAgICAvKiB1c2VjID0gZWxhcHNlZCAqIFVTRUMgLyBmcmVxICovCisgICAgcGpfaGlnaHByZWNfbXVsKGVsYXBzZWQsIFVTRUMpOworICAgIHBqX2hpZ2hwcmVjX2RpdihlbGFwc2VkLCBmcmVxKTsKKworICAgIHJldHVybiBlbGFwc2VkOworfQorCitQSl9ERUYocGpfdWludDMyX3QpIHBqX2VsYXBzZWRfbmFub3NlYyggY29uc3QgcGpfdGltZXN0YW1wICpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwal90aW1lc3RhbXAgKnN0b3AgKQoreworICAgIHBqX3RpbWVzdGFtcCB0c19mcmVxOworICAgIHBqX2hpZ2hwcmVjX3QgZnJlcSwgZWxhcHNlZDsKKworICAgIGlmIChwal9nZXRfdGltZXN0YW1wX2ZyZXEoJnRzX2ZyZXEpICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogQ29udmVydCBmcmVxdWVuY3kgdGltZXN0YW1wICovCisjaWYgZGVmaW5lZChQSl9IQVNfSU5UNjQpICYmIFBKX0hBU19JTlQ2NCE9MAorICAgIGZyZXEgPSB1NjR0b2hpZ2hwcmVjKHRzX2ZyZXEudTY0KTsKKyNlbHNlCisgICAgZnJlcSA9IHRzX2ZyZXEudTMyLmhpOworICAgIHBqX2hpZ2hwcmVjX211bChmcmVxLCBVMzJNQVgpOworICAgIGZyZXEgKz0gdHNfZnJlcS51MzIubG87CisjZW5kaWYKKworICAgIC8qIEF2b2lkIGRpdmlzaW9uIGJ5IHplcm8uICovCisgICAgaWYgKGZyZXEgPT0gMCkgZnJlcSA9IDE7CisKKyAgICAvKiBHZXQgZWxhcHNlZCB0aW1lIGluIGN5Y2xlcy4gKi8KKyAgICBlbGFwc2VkID0gZ2V0X2VsYXBzZWQoc3RhcnQsIHN0b3ApOworCisgICAgLyogdXNlYyA9IGVsYXBzZWQgKiBVU0VDIC8gZnJlcSAqLworICAgIHBqX2hpZ2hwcmVjX211bChlbGFwc2VkLCBOQU5PU0VDKTsKKyAgICBwal9oaWdocHJlY19kaXYoZWxhcHNlZCwgZnJlcSk7CisKKyAgICByZXR1cm4gKHBqX3VpbnQzMl90KWVsYXBzZWQ7Cit9CisKK1BKX0RFRihwal91aW50MzJfdCkgcGpfZWxhcHNlZF91c2VjKCBjb25zdCBwal90aW1lc3RhbXAgKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RvcCApCit7CisgICAgcmV0dXJuIChwal91aW50MzJfdCllbGFwc2VkX3VzZWMoc3RhcnQsIHN0b3ApOworfQorCitQSl9ERUYocGpfdWludDMyX3QpIHBqX2VsYXBzZWRfbXNlYyggY29uc3QgcGpfdGltZXN0YW1wICpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwal90aW1lc3RhbXAgKnN0b3AgKQoreworICAgIHJldHVybiAocGpfdWludDMyX3QpZWxhcHNlZF9tc2VjKHN0YXJ0LCBzdG9wKTsKK30KKworUEpfREVGKHBqX3VpbnQ2NF90KSBwal9lbGFwc2VkX21zZWM2NChjb25zdCBwal90aW1lc3RhbXAgKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwal90aW1lc3RhbXAgKnN0b3AgKQoreworICAgIHJldHVybiAocGpfdWludDY0X3QpZWxhcHNlZF9tc2VjKHN0YXJ0LCBzdG9wKTsKK30KKworUEpfREVGKHBqX3RpbWVfdmFsKSBwal9lbGFwc2VkX3RpbWUoIGNvbnN0IHBqX3RpbWVzdGFtcCAqc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGpfdGltZXN0YW1wICpzdG9wICkKK3sKKyAgICBwal9oaWdocHJlY190IGVsYXBzZWQgPSBlbGFwc2VkX21zZWMoc3RhcnQsIHN0b3ApOworICAgIHBqX3RpbWVfdmFsIHR2X2VsYXBzZWQ7CisKKyAgICBpZiAoUEpfSElHSFBSRUNfVkFMVUVfSVNfWkVSTyhlbGFwc2VkKSkgeworICAgICAgICB0dl9lbGFwc2VkLnNlYyA9IHR2X2VsYXBzZWQubXNlYyA9IDA7CisgICAgICAgIHJldHVybiB0dl9lbGFwc2VkOworICAgIH0gZWxzZSB7CisgICAgICAgIHBqX2hpZ2hwcmVjX3Qgc2VjLCBtc2VjOworCisgICAgICAgIHNlYyA9IGVsYXBzZWQ7CisgICAgICAgIHBqX2hpZ2hwcmVjX2RpdihzZWMsIE1TRUMpOworICAgICAgICB0dl9lbGFwc2VkLnNlYyA9IChsb25nKXNlYzsKKworICAgICAgICBtc2VjID0gZWxhcHNlZDsKKyAgICAgICAgcGpfaGlnaHByZWNfbW9kKG1zZWMsIE1TRUMpOworICAgICAgICB0dl9lbGFwc2VkLm1zZWMgPSAobG9uZyltc2VjOworCisgICAgICAgIHJldHVybiB0dl9lbGFwc2VkOworICAgIH0KK30KKworUEpfREVGKHBqX3VpbnQzMl90KSBwal9lbGFwc2VkX2N5Y2xlKCBjb25zdCBwal90aW1lc3RhbXAgKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwal90aW1lc3RhbXAgKnN0b3AgKQoreworICAgIHJldHVybiBzdG9wLT51MzIubG8gLSBzdGFydC0+dTMyLmxvOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldHRpY2tjb3VudChwal90aW1lX3ZhbCAqdHYpCit7CisgICAgcGpfdGltZXN0YW1wIHRzLCBzdGFydDsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBpZiAoKHN0YXR1cyA9IHBqX2dldF90aW1lc3RhbXAoJnRzKSkgIT0gUEpfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKworICAgIHBqX3NldF90aW1lc3RhbXAzMigmc3RhcnQsIDAsIDApOworICAgICp0diA9IHBqX2VsYXBzZWRfdGltZSgmc3RhcnQsICZ0cyk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworI2VuZGlmICAvKiBQSl9IQVNfSElHSF9SRVNfVElNRVIgKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX3RpbWVzdGFtcF9saW51eF9rZXJuZWwuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lc3RhbXBfbGludXhfa2VybmVsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ2MDllYQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lc3RhbXBfbGludXhfa2VybmVsLmMKQEAgLTAsMCArMSw3OSBAQAorLyogJElkOiBvc190aW1lc3RhbXBfbGludXhfa2VybmVsLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KKworI2lmIDAKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcChwal90aW1lc3RhbXAgKnRzKQoreworICAgIHRzLT51MzIuaGkgPSAwOworICAgIHRzLT51MzIubG8gPSBqaWZmaWVzOworICAgIHJldHVybiAwOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldF90aW1lc3RhbXBfZnJlcShwal90aW1lc3RhbXAgKmZyZXEpCit7CisgICAgZnJlcS0+dTMyLmhpID0gMDsKKyAgICBmcmVxLT51MzIubG8gPSBIWjsKKyAgICByZXR1cm4gMDsKK30KKyNlbGlmIDAKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcChwal90aW1lc3RhbXAgKnRzKQoreworICAgIHN0cnVjdCB0aW1lc3BlYyB0djsKKyAgICAKKyAgICB0diA9IENVUlJFTlRfVElNRTsKKworICAgIHRzLT51NjQgPSB0di50dl9zZWM7CisgICAgdHMtPnU2NCAqPSBOU0VDX1BFUl9TRUM7CisgICAgdHMtPnU2NCArPSB0di50dl9uc2VjOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcF9mcmVxKHBqX3RpbWVzdGFtcCAqZnJlcSkKK3sKKyAgICBmcmVxLT51MzIuaGkgPSAwOworICAgIGZyZXEtPnUzMi5sbyA9IE5TRUNfUEVSX1NFQzsKKyAgICByZXR1cm4gMDsKK30KKyNlbHNlCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldF90aW1lc3RhbXAocGpfdGltZXN0YW1wICp0cykKK3sKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICAKKyAgICBkb19nZXR0aW1lb2ZkYXkoJnR2KTsKKworICAgIHRzLT51NjQgPSB0di50dl9zZWM7CisgICAgdHMtPnU2NCAqPSBVU0VDX1BFUl9TRUM7CisgICAgdHMtPnU2NCArPSB0di50dl91c2VjOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcF9mcmVxKHBqX3RpbWVzdGFtcCAqZnJlcSkKK3sKKyAgICBmcmVxLT51MzIuaGkgPSAwOworICAgIGZyZXEtPnUzMi5sbyA9IFVTRUNfUEVSX1NFQzsKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lc3RhbXBfcG9zaXguYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9vc190aW1lc3RhbXBfcG9zaXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTU1ODljCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX3RpbWVzdGFtcF9wb3NpeC5jCkBAIC0wLDAgKzEsMjIwIEBACisvKiAkSWQ6IG9zX3RpbWVzdGFtcF9wb3NpeC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKworI2lmIGRlZmluZWQoUEpfSEFTX1VOSVNURF9IKSAmJiBQSl9IQVNfVU5JU1REX0ggIT0gMAorIyAgIGluY2x1ZGUgPHVuaXN0ZC5oPgorCisjICAgaWYgZGVmaW5lZChfUE9TSVhfVElNRVJTKSAmJiBfUE9TSVhfVElNRVJTID4gMCAmJiBcCisgICAgICAgZGVmaW5lZChfUE9TSVhfTU9OT1RPTklDX0NMT0NLKQorIyAgICAgICBkZWZpbmUgVVNFX1BPU0lYX1RJTUVSUyAxCisjICAgZW5kaWYKKworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19QRU5USVVNKSAmJiBQSl9IQVNfUEVOVElVTSE9MCAmJiBcCisgICAgZGVmaW5lZChQSl9USU1FU1RBTVBfVVNFX1JEVFNDKSAmJiBQSl9USU1FU1RBTVBfVVNFX1JEVFNDIT0wICYmIFwKKyAgICBkZWZpbmVkKFBKX01fSTM4NikgJiYgUEpfTV9JMzg2IT0wICYmIFwKKyAgICBkZWZpbmVkKFBKX0xJTlVYKSAmJiBQSl9MSU5VWCE9MAorc3RhdGljIGludCBtYWNoaW5lX3NwZWVkX21oejsKK3N0YXRpYyBwal90aW1lc3RhbXAgbWFjaGluZV9zcGVlZDsKKworc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIGludCByZHRzYygpCit7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGludCB4OworICAgIF9fYXNtX18gdm9sYXRpbGUgKCIuYnl0ZSAweDBmLCAweDMxIiA6ICI9QSIgKHgpKTsKKyAgICByZXR1cm4geDsKK30KKworLyogRGV0ZXJtaW5lIG1hY2hpbmUncyBDUFUgTUh6IHRvIGdldCB0aGUgY291bnRlcidzIGZyZXF1ZW5jeS4KKyAqLworc3RhdGljIGludCBnZXRfbWFjaGluZV9zcGVlZF9taHooKQoreworICAgIEZJTEUgKnN0cm07CisgICAgY2hhciBidWZbNTEyXTsKKyAgICBpbnQgbGVuOworICAgIGNoYXIgKnBvcywgKmVuZDsKKwkKKyAgICBQSl9DSEVDS19TVEFDSygpOworCQorICAgIC8qIE9wZW4gL3Byb2MvY3B1aW5mbyBhbmQgcmVhZCB0aGUgZmlsZSAqLworICAgIHN0cm0gPSBmb3BlbigiL3Byb2MvY3B1aW5mbyIsICJyIik7CisgICAgaWYgKCFzdHJtKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbGVuID0gZnJlYWQoYnVmLCAxLCBzaXplb2YoYnVmKSwgc3RybSk7CisgICAgZmNsb3NlKHN0cm0pOworICAgIGlmIChsZW4gPCAxKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYnVmW2xlbl0gPSAnXDAnOworCisgICAgLyogTG9jYXRlIHRoZSBNSHogZGlnaXQuICovCisgICAgcG9zID0gc3Ryc3RyKGJ1ZiwgImNwdSBNSHoiKTsKKyAgICBpZiAoIXBvcykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHBvcyA9IHN0cmNocihwb3MsICc6Jyk7CisgICAgaWYgKCFwb3MpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbmQgPSAocG9zICs9IDIpOworICAgIHdoaWxlIChpc2RpZ2l0KCplbmQpKSArK2VuZDsKKyAgICAqZW5kID0gJ1wwJzsKKworICAgIC8qIFJldHVybiB0aGUgTWh6IHBhcnQsIGFuZCBnaXZlIGl0IGEgKzEuICovCisgICAgcmV0dXJuIGF0b2kocG9zKSsxOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldF90aW1lc3RhbXAocGpfdGltZXN0YW1wICp0cykKK3sKKyAgICBpZiAobWFjaGluZV9zcGVlZF9taHogPT0gMCkgeworCW1hY2hpbmVfc3BlZWRfbWh6ID0gZ2V0X21hY2hpbmVfc3BlZWRfbWh6KCk7CisJaWYgKG1hY2hpbmVfc3BlZWRfbWh6ID4gMCkgeworCSAgICBtYWNoaW5lX3NwZWVkLnU2NCA9IG1hY2hpbmVfc3BlZWRfbWh6ICogMTAwMDAwMC4wOworCX0KKyAgICB9CisgICAgCisgICAgaWYgKG1hY2hpbmVfc3BlZWRfbWh6ID09IC0xKSB7CisJdHMtPnU2NCA9IDA7CisJcmV0dXJuIC0xOworICAgIH0gCisgICAgdHMtPnU2NCA9IHJkdHNjKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcF9mcmVxKHBqX3RpbWVzdGFtcCAqZnJlcSkKK3sKKyAgICBpZiAobWFjaGluZV9zcGVlZF9taHogPT0gMCkgeworCW1hY2hpbmVfc3BlZWRfbWh6ID0gZ2V0X21hY2hpbmVfc3BlZWRfbWh6KCk7CisJaWYgKG1hY2hpbmVfc3BlZWRfbWh6ID4gMCkgeworCSAgICBtYWNoaW5lX3NwZWVkLnU2NCA9IG1hY2hpbmVfc3BlZWRfbWh6ICogMTAwMDAwMC4wOworCX0KKyAgICB9CisgICAgCisgICAgaWYgKG1hY2hpbmVfc3BlZWRfbWh6ID09IC0xKSB7CisJZnJlcS0+dTY0ID0gMTsJLyogcmV0dXJuIDEgdG8gcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvIGluIGFwcHMuICovCisJcmV0dXJuIC0xOworICAgIH0gCisKKyAgICBmcmVxLT51NjQgPSBtYWNoaW5lX3NwZWVkLnU2NDsKKyAgICByZXR1cm4gMDsKK30KKworI2VsaWYgZGVmaW5lZChQSl9EQVJXSU5PUykgJiYgUEpfREFSV0lOT1MgIT0gMAorI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUgPG1hY2gvY2xvY2suaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCisjZGVmaW5lIE5TRUNfUEVSX1NFQwkxMDAwMDAwMDAwCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcChwal90aW1lc3RhbXAgKnRzKQoreworICAgIG1hY2hfdGltZXNwZWNfdCB0cDsKKyAgICBpbnQgcmV0OworICAgIGNsb2NrX3NlcnZfdCBzZXJ2OworCisgICAgcmV0ID0gaG9zdF9nZXRfY2xvY2tfc2VydmljZShtYWNoX2hvc3Rfc2VsZigpLCBTWVNURU1fQ0xPQ0ssICZzZXJ2KTsKKyAgICBpZiAocmV0ICE9IEtFUk5fU1VDQ0VTUykgeworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoRUlOVkFMKTsKKyAgICB9CisKKyAgICByZXQgPSBjbG9ja19nZXRfdGltZShzZXJ2LCAmdHApOworICAgIGlmIChyZXQgIT0gS0VSTl9TVUNDRVNTKSB7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihFSU5WQUwpOworICAgIH0KKworICAgIHRzLT51NjQgPSB0cC50dl9zZWM7CisgICAgdHMtPnU2NCAqPSBOU0VDX1BFUl9TRUM7CisgICAgdHMtPnU2NCArPSB0cC50dl9uc2VjOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcF9mcmVxKHBqX3RpbWVzdGFtcCAqZnJlcSkKK3sKKyAgICBmcmVxLT51MzIuaGkgPSAwOworICAgIGZyZXEtPnUzMi5sbyA9IE5TRUNfUEVSX1NFQzsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisjZWxpZiBkZWZpbmVkKFVTRV9QT1NJWF9USU1FUlMpICYmIFVTRV9QT1NJWF9USU1FUlMgIT0gMAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNkZWZpbmUgTlNFQ19QRVJfU0VDCTEwMDAwMDAwMDAKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfdGltZXN0YW1wKHBqX3RpbWVzdGFtcCAqdHMpCit7CisgICAgc3RydWN0IHRpbWVzcGVjIHRwOworCisgICAgaWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHApICE9IDApIHsKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHBqX2dldF9uYXRpdmVfb3NfZXJyb3IoKSk7CisgICAgfQorCisgICAgdHMtPnU2NCA9IHRwLnR2X3NlYzsKKyAgICB0cy0+dTY0ICo9IE5TRUNfUEVSX1NFQzsKKyAgICB0cy0+dTY0ICs9IHRwLnR2X25zZWM7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfdGltZXN0YW1wX2ZyZXEocGpfdGltZXN0YW1wICpmcmVxKQoreworICAgIGZyZXEtPnUzMi5oaSA9IDA7CisgICAgZnJlcS0+dTMyLmxvID0gTlNFQ19QRVJfU0VDOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKyNlbHNlCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCisjZGVmaW5lIFVTRUNfUEVSX1NFQwkxMDAwMDAwCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcChwal90aW1lc3RhbXAgKnRzKQoreworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworCisgICAgaWYgKGdldHRpbWVvZmRheSgmdHYsIE5VTEwpICE9IDApIHsKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHBqX2dldF9uYXRpdmVfb3NfZXJyb3IoKSk7CisgICAgfQorCisgICAgdHMtPnU2NCA9IHR2LnR2X3NlYzsKKyAgICB0cy0+dTY0ICo9IFVTRUNfUEVSX1NFQzsKKyAgICB0cy0+dTY0ICs9IHR2LnR2X3VzZWM7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfdGltZXN0YW1wX2ZyZXEocGpfdGltZXN0YW1wICpmcmVxKQoreworICAgIGZyZXEtPnUzMi5oaSA9IDA7CisgICAgZnJlcS0+dTMyLmxvID0gVVNFQ19QRVJfU0VDOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX3RpbWVzdGFtcF93aW4zMi5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL29zX3RpbWVzdGFtcF93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNDJhYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovb3NfdGltZXN0YW1wX3dpbjMyLmMKQEAgLTAsMCArMSwyOTUgQEAKKy8qICRJZDogb3NfdGltZXN0YW1wX3dpbjMyLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorCisjZGVmaW5lIFRISVNfRklMRSAgICJvc190aW1lc3RhbXBfd2luMzIuYyIKKworCisjaWYgMQorIyAgIGRlZmluZSBUUkFDRV8oeCkJICAgIFBKX0xPRygzLHgpCisjZWxzZQorIyAgIGRlZmluZSBUUkFDRV8oeCkJICAgIDsKKyNlbmRpZgorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyNpZiBkZWZpbmVkKFBKX1RJTUVTVEFNUF9VU0VfUkRUU0MpICYmIFBKX1RJTUVTVEFNUF9VU0VfUkRUU0MhPTAgJiYgXAorICAgIGRlZmluZWQoUEpfTV9JMzg2KSAmJiBQSl9NX0kzODYgIT0gMCAmJiBcCisgICAgZGVmaW5lZChQSl9IQVNfUEVOVElVTSkgJiYgUEpfSEFTX1BFTlRJVU0hPTAgJiYgXAorICAgIGRlZmluZWQoX01TQ19WRVIpCisKKy8qCisgKiBVc2UgcmR0c2MgdG8gZ2V0IHRoZSBPUyB0aW1lc3RhbXAuCisgKi8KK3N0YXRpYyBMT05HIENwdU1oejsKK3N0YXRpYyBwal9pbnQ2NF90IENwdUh6OworIAorc3RhdGljIHBqX3N0YXR1c190IEdldENwdUh6KHZvaWQpCit7CisgICAgSEtFWSBrZXk7CisgICAgTE9ORyByYzsKKyAgICBEV09SRCBzaXplOworCisjaWYgZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkgJiYgUEpfV0lOMzJfV0lOQ0UhPTAKKyAgICByYyA9IFJlZ09wZW5LZXlFeChIS0VZX0xPQ0FMX01BQ0hJTkUsCisJCSAgICAgIEwiSEFSRFdBUkVcXERFU0NSSVBUSU9OXFxTeXN0ZW1cXENlbnRyYWxQcm9jZXNzb3JcXDAiLAorCQkgICAgICAwLCAwLCAma2V5KTsKKyNlbHNlCisgICAgcmMgPSBSZWdPcGVuS2V5KCBIS0VZX0xPQ0FMX01BQ0hJTkUsCisJCSAgICAgIkhBUkRXQVJFXFxERVNDUklQVElPTlxcU3lzdGVtXFxDZW50cmFsUHJvY2Vzc29yXFwwIiwKKwkJICAgICAma2V5KTsKKyNlbmRpZgorCisgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihyYyk7CisKKyAgICBzaXplID0gc2l6ZW9mKENwdU1oeik7CisgICAgcmMgPSBSZWdRdWVyeVZhbHVlRXgoa2V5LCAifk1IeiIsIE5VTEwsIE5VTEwsIChCWVRFKikmQ3B1TWh6LCAmc2l6ZSk7CisgICAgUmVnQ2xvc2VLZXkoa2V5KTsKKworICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKSB7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihyYyk7CisgICAgfQorCisgICAgQ3B1SHogPSBDcHVNaHo7CisgICAgQ3B1SHogPSBDcHVIeiAqIDEwMDAwMDA7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyogX19pbnQ2NCBpcyBuaWNlbHkgcmV0dXJuZWQgaW4gRURYOkVBWCAqLworX19kZWNsc3BlYyhuYWtlZCkgX19pbnQ2NCByZHRzYygpIAoreworICAgIF9fYXNtIAorICAgIHsKKwlSRFRTQworCVJFVAorICAgIH0KK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfdGltZXN0YW1wKHBqX3RpbWVzdGFtcCAqdHMpCit7CisgICAgdHMtPnU2NCA9IHJkdHNjKCk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0X3RpbWVzdGFtcF9mcmVxKHBqX3RpbWVzdGFtcCAqZnJlcSkKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBpZiAoQ3B1SHogPT0gMCkgeworCXN0YXR1cyA9IEdldENwdUh6KCk7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCSAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIGZyZXEtPnU2NCA9IENwdUh6OworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisjZWxpZiBkZWZpbmVkKFBKX1RJTUVTVEFNUF9XSU4zMl9VU0VfU0FGRV9RUEMpICYmIFwKKyAgICAgICAgIFBKX1RJTUVTVEFNUF9XSU4zMl9VU0VfU0FGRV9RUEMhPTAKKworLyogVXNlIHNhZmUgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIuCisgKiBUaGlzIGltcGxlbWVudGF0aW9uIGhhcyBzb21lIHByb3RlY3Rpb24gYWdhaW5zdCBidWcgaW4gS0IgUTI3NDMyMzoKKyAqICAgUGVyZm9ybWFuY2UgY291bnRlciB2YWx1ZSBtYXkgdW5leHBlY3RlZGx5IGxlYXAgZm9yd2FyZAorICogICBodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2RlZmF1bHQuYXNweD9zY2lkPUtCO0VOLVVTO1EyNzQzMjMKKyAqCisgKiBUSElTIFNIT1VMRCBOT1QgQkUgVVNFRCBZRVQgQVMgSVQgRE9FU04nVCBIQU5ETEUgU1lTVEVNIFRJTUUKKyAqIENIQU5HRS4KKyAqLworCitzdGF0aWMgcGpfdGltZXN0YW1wIGdfdHNfZnJlcTsKK3N0YXRpYyBwal90aW1lc3RhbXAgZ190c19iYXNlOworc3RhdGljIHBqX2ludDY0X3QgICBnX3RpbWVfYmFzZTsKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfdGltZXN0YW1wKHBqX3RpbWVzdGFtcCAqdHMpCit7CisgICAgZW51bSB7IE1BWF9SRVRSWSA9IDEwIH07CisgICAgdW5zaWduZWQgaTsKKworCisgICAgLyogcGpfZ2V0X3RpbWVzdGFtcF9mcmVxKCkgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZS4KKyAgICAgKiBUaGlzIGlzIGRvbmUgd2hlbiBhcHBsaWNhdGlvbiBjYWxsZWQgcGpfaW5pdCgpLgorICAgICAqLworICAgIHBqX2Fzc2VydChnX3RzX2ZyZXEudTY0ICE9IDApOworCisgICAgLyogUmV0cnkgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKSB1bnRpbCB3ZSdyZSBzdXJlIHRoYXQgdGhlCisgICAgICogdmFsdWUgcmV0dXJuZWQgbWFrZXMgc2Vuc2UuCisgICAgICovCisgICAgaSA9IDA7CisgICAgZG8geworCUxBUkdFX0lOVEVHRVIgdmFsOworCXBqX2ludDY0X3QgY291bnRlcjY0LCB0aW1lNjQsIGRpZmY7CisJcGpfdGltZV92YWwgdGltZV9ub3c7CisKKwkvKiBSZXRyaWV2ZSB0aGUgY291bnRlciAqLworCWlmICghUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJnZhbCkpCisJICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisJLyogUmVnYXJkbGVzcyBvZiB0aGUgZ29vZG5lc3Mgb2YgdGhlIHZhbHVlLCB3ZSBzaG91bGQgcHV0CisJICogdGhlIGNvdW50ZXIgaGVyZSwgYmVjYXVzZSBub3JtYWxseSBhcHBsaWNhdGlvbiB3b3VsZG4ndAorCSAqIGNoZWNrIHRoZSBlcnJvciByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbi4KKwkgKi8KKwl0cy0+dTY0ID0gdmFsLlF1YWRQYXJ0OworCisJLyogUmV0cmlldmUgdGltZSAqLworCXBqX2dldHRpbWVvZmRheSgmdGltZV9ub3cpOworCisJLyogR2V0IHRoZSBjb3VudGVyIGVsYXBzZWQgdGltZSBpbiBtaWxpc2Vjb25kcyAqLworCWNvdW50ZXI2NCA9ICh2YWwuUXVhZFBhcnQgLSBnX3RzX2Jhc2UudTY0KSAqIDEwMDAgLyBnX3RzX2ZyZXEudTY0OworCQorCS8qIEdldCB0aGUgdGltZSBlbGFwc2VkIGluIG1pbGlzZWNvbmRzLiAKKwkgKiBXZSBkb24ndCB3YW50IHRvIHVzZSBQSl9USU1FX1ZBTF9NU0VDKCkgc2luY2UgaXQncyB1c2luZworCSAqIDMyYml0IGNhbGN1bGF0aW9uLCB3aGljaCBsaW1pdHMgdGhlIG1heGltdW0gZWxhcHNlZCB0aW1lCisJICogdG8gYXJvdW5kIDQ5IGRheXMgb25seS4KKwkgKi8KKwl0aW1lNjQgPSB0aW1lX25vdy5zZWM7CisJdGltZTY0ID0gdGltZTY0ICogMTAwMCArIHRpbWVfbm93Lm1zZWM7CisJLy90aW1lNjQgPSBHZXRUaWNrQ291bnQoKTsKKworCS8qIEl0J3MgZ29vZCBpZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBjbG9ja3MgYXJlIHdpdGhpbgorCSAqIHNvbWUgY29tcGlsZSB0aW1lIGNvbnN0YW50IChkZWZhdWx0OiAyMG1zLCB3aGljaCB0byBhbGxvdworCSAqIGNvbnRleHQgc3dpdGNoIGhhcHBlbiBiZXR3ZWVuIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyIGFuZAorCSAqIHBqX2dldHRpbWVvZmRheSgpKS4KKwkgKi8KKwlkaWZmID0gKHRpbWU2NCAtIGdfdGltZV9iYXNlKSAtIGNvdW50ZXI2NDsKKwlpZiAoZGlmZiA+PSAtMjAgJiYgZGlmZiA8PSAyMCkgeworCSAgICAvKiBJdCdzIGdvb2QgKi8KKwkgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisJfQorCisJKytpOworCisgICAgfSB3aGlsZSAoaSA8IE1BWF9SRVRSWSk7CisKKyAgICBUUkFDRV8oKFRISVNfRklMRSwgIlF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyIHJldHVybmVkIGJhZCB2YWx1ZSIpKTsKKyAgICByZXR1cm4gUEpfRVRJTUVET1VUOworfQorCitzdGF0aWMgcGpfc3RhdHVzX3QgaW5pdF9wZXJmb3JtYW5jZV9jb3VudGVyKHZvaWQpCit7CisgICAgTEFSR0VfSU5URUdFUiB2YWw7CisgICAgcGpfdGltZV92YWwgdGltZV9iYXNlOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIC8qIEdldCB0aGUgZnJlcXVlbmN5ICovCisgICAgaWYgKCFRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCZ2YWwpKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgZ190c19mcmVxLnU2NCA9IHZhbC5RdWFkUGFydDsKKworICAgIC8qIEdldCB0aGUgYmFzZSB0aW1lc3RhbXAgKi8KKyAgICBpZiAoIVF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZ2YWwpKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgZ190c19iYXNlLnU2NCA9IHZhbC5RdWFkUGFydDsKKworCisgICAgLyogR2V0IHRoZSBiYXNlIHRpbWUgKi8KKyAgICBzdGF0dXMgPSBwal9nZXR0aW1lb2ZkYXkoJnRpbWVfYmFzZSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisKKyAgICAvKiBDb252ZXJ0IHRpbWUgYmFzZSB0byA2NGJpdCB2YWx1ZSBpbiBtc2VjICovCisgICAgZ190aW1lX2Jhc2UgPSB0aW1lX2Jhc2Uuc2VjOworICAgIGdfdGltZV9iYXNlICA9IGdfdGltZV9iYXNlICogMTAwMCArIHRpbWVfYmFzZS5tc2VjOworICAgIC8vZ190aW1lX2Jhc2UgPSBHZXRUaWNrQ291bnQoKTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldF90aW1lc3RhbXBfZnJlcShwal90aW1lc3RhbXAgKmZyZXEpCit7CisgICAgaWYgKGdfdHNfZnJlcS51NjQgPT0gMCkgeworCWVudW0geyBNQVhfUkVQRUFUID0gMTAgfTsKKwl1bnNpZ25lZCBpOworCXBqX3N0YXR1c190IHN0YXR1czsKKworCS8qIE1ha2UgdW5lbGxlZ2FudCBjb21waWxlciBoYXBweSAqLworCXN0YXR1cyA9IDA7CisKKwkvKiBSZXBlYXQgaW5pdGlhbGl6aW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIgdW50aWwgd2UncmUgc3VyZQorCSAqIHRoZSBiYXNlIHRpbWluZyBpcyBjb3JyZWN0LiBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBzeXN0ZW0KKwkgKiByZXR1cm5zIGJhZCBjb3VudGVyIGR1cmluZyB0aGlzIGluaXRpYWxpemF0aW9uIQorCSAqLworCWZvciAoaT0wOyBpPE1BWF9SRVBFQVQ7ICsraSkgeworCisJICAgIHBqX3RpbWVzdGFtcCBkdW1teTsKKworCSAgICAvKiBJbml0IGJhc2UgdGltZSAqLworCSAgICBzdGF0dXMgPSBpbml0X3BlcmZvcm1hbmNlX2NvdW50ZXIoKTsKKwkgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCQlyZXR1cm4gc3RhdHVzOworCisJICAgIC8qIFRyeSB0aGUgYmFzZSB0aW1lICovCisJICAgIHN0YXR1cyA9IHBqX2dldF90aW1lc3RhbXAoJmR1bW15KTsKKwkgICAgaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKQorCQlicmVhazsKKwl9CisKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgZnJlcS0+dTY0ID0gZ190c19mcmVxLnU2NDsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworI2Vsc2UKKworLyoKKyAqIFVzZSBRdWVyeVBlcmZvcm1hbmNlQ291bnRlciBhbmQgUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeS4KKyAqIFRoaXMgc2hvdWxkIGJlIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHRvIGJlIHVzZWQgb24gV2luZG93cy4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfdGltZXN0YW1wKHBqX3RpbWVzdGFtcCAqdHMpCit7CisgICAgTEFSR0VfSU5URUdFUiB2YWw7CisKKyAgICBpZiAoIVF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZ2YWwpKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgdHMtPnU2NCA9IHZhbC5RdWFkUGFydDsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9nZXRfdGltZXN0YW1wX2ZyZXEocGpfdGltZXN0YW1wICpmcmVxKQoreworICAgIExBUkdFX0lOVEVHRVIgdmFsOworCisgICAgaWYgKCFRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCZ2YWwpKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoR2V0TGFzdEVycm9yKCkpOworCisgICAgZnJlcS0+dTY0ID0gdmFsLlF1YWRQYXJ0OworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKyNlbmRpZgkvKiBQSl9USU1FU1RBTVBfVVNFX1JEVFNDICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9wb29sLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMjQyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbC5jCkBAIC0wLDAgKzEsMzAxIEBACisvKiAkSWQ6IHBvb2wuYyA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9wb29sLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovZXhjZXB0Lmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKworI2lmICFQSl9IQVNfUE9PTF9BTFRfQVBJCisKKworLyogSW5jbHVkZSBpbmxpbmUgZGVmaW5pdGlvbnMgd2hlbiBpbmxpbmluZyBpcyBkaXNhYmxlZC4gKi8KKyNpZiAhUEpfRlVOQ1RJT05TX0FSRV9JTkxJTkVECisjICBpbmNsdWRlIDxwai9wb29sX2kuaD4KKyNlbmRpZgorCisjZGVmaW5lIExPRyhleHByKSAgIAkJICAgIFBKX0xPRyg2LGV4cHIpCisjZGVmaW5lIEFMSUdOX1BUUihQVFIsQUxJR05NRU5UKSAgICAoUFRSICsgKC0ocGpfc3NpemVfdCkoUFRSKSAmIChBTElHTk1FTlQtMSkpKQorCitQSl9ERUZfREFUQShpbnQpIFBKX05PX01FTU9SWV9FWENFUFRJT047CisKK1BKX0RFRihpbnQpIHBqX05PX01FTU9SWV9FWENFUFRJT04oKQoreworICAgIHJldHVybiBQSl9OT19NRU1PUllfRVhDRVBUSU9OOworfQorCisvKgorICogQ3JlYXRlIG5ldyBibG9jay4KKyAqIENyZWF0ZSBhIG5ldyBiaWcgY2h1bmsgb2YgbWVtb3J5IGJsb2NrLCBmcm9tIHdoaWNoIHVzZXIgYWxsb2NhdGlvbiB3aWxsIGJlCisgKiB0YWtlbiBmcm9tLgorICovCitzdGF0aWMgcGpfcG9vbF9ibG9jayAqcGpfcG9vbF9jcmVhdGVfYmxvY2soIHBqX3Bvb2xfdCAqcG9vbCwgcGpfc2l6ZV90IHNpemUpCit7CisgICAgcGpfcG9vbF9ibG9jayAqYmxvY2s7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIHBqX2Fzc2VydChzaXplID49IHNpemVvZihwal9wb29sX2Jsb2NrKSk7CisKKyAgICBMT0coKHBvb2wtPm9ial9uYW1lLCAiY3JlYXRlX2Jsb2NrKHN6PSV1KSwgY3VyLmNhcD0ldSwgY3VyLnVzZWQ9JXUiLCAKKwkgc2l6ZSwgcG9vbC0+Y2FwYWNpdHksIHBqX3Bvb2xfZ2V0X3VzZWRfc2l6ZShwb29sKSkpOworCisgICAgLyogUmVxdWVzdCBtZW1vcnkgZnJvbSBhbGxvY2F0b3IuICovCisgICAgYmxvY2sgPSAocGpfcG9vbF9ibG9jayopIAorCSgqcG9vbC0+ZmFjdG9yeS0+cG9saWN5LmJsb2NrX2FsbG9jKShwb29sLT5mYWN0b3J5LCBzaXplKTsKKyAgICBpZiAoYmxvY2sgPT0gTlVMTCkgeworCSgqcG9vbC0+Y2FsbGJhY2spKHBvb2wsIHNpemUpOworCXJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEFkZCBjYXBhY2l0eS4gKi8KKyAgICBwb29sLT5jYXBhY2l0eSArPSBzaXplOworCisgICAgLyogU2V0IHN0YXJ0IGFuZCBlbmQgb2YgYnVmZmVyLiAqLworICAgIGJsb2NrLT5idWYgPSAoKHVuc2lnbmVkIGNoYXIqKWJsb2NrKSArIHNpemVvZihwal9wb29sX2Jsb2NrKTsKKyAgICBibG9jay0+ZW5kID0gKCh1bnNpZ25lZCBjaGFyKilibG9jaykgKyBzaXplOworCisgICAgLyogU2V0IHRoZSBzdGFydCBwb2ludGVyLCBhbGlnbmluZyBpdCBhcyBuZWVkZWQgKi8KKyAgICBibG9jay0+Y3VyID0gQUxJR05fUFRSKGJsb2NrLT5idWYsIFBKX1BPT0xfQUxJR05NRU5UKTsKKworICAgIC8qIEluc2VydCBpbiB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuICovCisgICAgcGpfbGlzdF9pbnNlcnRfYWZ0ZXIoJnBvb2wtPmJsb2NrX2xpc3QsIGJsb2NrKTsKKworICAgIExPRygocG9vbC0+b2JqX25hbWUsIiBibG9jayBjcmVhdGVkLCBidWZmZXI9JXAtJXAiLGJsb2NrLT5idWYsIGJsb2NrLT5lbmQpKTsKKworICAgIHJldHVybiBibG9jazsKK30KKworLyoKKyAqIEFsbG9jYXRlIG1lbW9yeSBjaHVuayBmb3IgdXNlciBmcm9tIGF2YWlsYWJsZSBibG9ja3MuCisgKiBUaGlzIHdpbGwgaXRlcmF0ZSB0aHJvdWdoIGJsb2NrIGxpc3QgdG8gZmluZCBzcGFjZSB0byBhbGxvY2F0ZSB0aGUgY2h1bmsuCisgKiBJZiBubyBzcGFjZSBpcyBhdmFpbGFibGUgaW4gYWxsIHRoZSBibG9ja3MsIGEgbmV3IGJsb2NrIG1pZ2h0IGJlIGNyZWF0ZWQKKyAqIChkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgcG9vbCBpcyBhbGxvd2VkIHRvIHJlc2l6ZSkuCisgKi8KK1BKX0RFRih2b2lkKikgcGpfcG9vbF9hbGxvY2F0ZV9maW5kKHBqX3Bvb2xfdCAqcG9vbCwgcGpfc2l6ZV90IHNpemUpCit7CisgICAgcGpfcG9vbF9ibG9jayAqYmxvY2sgPSBwb29sLT5ibG9ja19saXN0Lm5leHQ7CisgICAgdm9pZCAqcDsKKyAgICBwal9zaXplX3QgYmxvY2tfc2l6ZTsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICB3aGlsZSAoYmxvY2sgIT0gJnBvb2wtPmJsb2NrX2xpc3QpIHsKKwlwID0gcGpfcG9vbF9hbGxvY19mcm9tX2Jsb2NrKGJsb2NrLCBzaXplKTsKKwlpZiAocCAhPSBOVUxMKQorCSAgICByZXR1cm4gcDsKKwlibG9jayA9IGJsb2NrLT5uZXh0OworICAgIH0KKyAgICAvKiBObyBhdmFpbGFibGUgc3BhY2UgaW4gYWxsIGJsb2Nrcy4gKi8KKworICAgIC8qIElmIHBvb2wgaXMgY29uZmlndXJlZCBOT1QgdG8gZXhwYW5kLCByZXR1cm4gZXJyb3IuICovCisgICAgaWYgKHBvb2wtPmluY3JlbWVudF9zaXplID09IDApIHsKKwlMT0coKHBvb2wtPm9ial9uYW1lLCAiQ2FuJ3QgZXhwYW5kIHBvb2wgdG8gYWxsb2NhdGUgJXUgYnl0ZXMgIgorCSAgICAgIih1c2VkPSV1LCBjYXA9JXUpIiwKKwkgICAgIHNpemUsIHBqX3Bvb2xfZ2V0X3VzZWRfc2l6ZShwb29sKSwgcG9vbC0+Y2FwYWNpdHkpKTsKKwkoKnBvb2wtPmNhbGxiYWNrKShwb29sLCBzaXplKTsKKwlyZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBJZiBwb29sIGlzIGNvbmZpZ3VyZWQgdG8gZXhwYW5kLCBidXQgdGhlIGluY3JlbWVudCBzaXplCisgICAgICogaXMgbGVzcyB0aGFuIHRoZSByZXF1aXJlZCBzaXplLCBleHBhbmQgdGhlIHBvb2wgYnkgbXVsdGlwbGUKKyAgICAgKiBpbmNyZW1lbnQgc2l6ZS4gQWxzbyBjb3VudCB0aGUgc2l6ZSB3YXN0ZWQgZHVlIHRvIGFsaWduaW5nCisgICAgICogdGhlIGJsb2NrLgorICAgICAqLworICAgIGlmIChwb29sLT5pbmNyZW1lbnRfc2l6ZSA8IAorCSAgICBzaXplICsgc2l6ZW9mKHBqX3Bvb2xfYmxvY2spICsgUEpfUE9PTF9BTElHTk1FTlQpIAorICAgIHsKKyAgICAgICAgcGpfc2l6ZV90IGNvdW50OworICAgICAgICBjb3VudCA9IChzaXplICsgcG9vbC0+aW5jcmVtZW50X3NpemUgKyBzaXplb2YocGpfcG9vbF9ibG9jaykgKworICAgICAgICAgICAgICAgICBQSl9QT09MX0FMSUdOTUVOVCkgLyAKKyAgICAgICAgICAgICAgICBwb29sLT5pbmNyZW1lbnRfc2l6ZTsKKyAgICAgICAgYmxvY2tfc2l6ZSA9IGNvdW50ICogcG9vbC0+aW5jcmVtZW50X3NpemU7CisKKyAgICB9IGVsc2UgeworICAgICAgICBibG9ja19zaXplID0gcG9vbC0+aW5jcmVtZW50X3NpemU7CisgICAgfQorCisgICAgTE9HKChwb29sLT5vYmpfbmFtZSwgCisJICIldSBieXRlcyByZXF1ZXN0ZWQsIHJlc2l6aW5nIHBvb2wgYnkgJXUgYnl0ZXMgKHVzZWQ9JXUsIGNhcD0ldSkiLAorCSBzaXplLCBibG9ja19zaXplLCBwal9wb29sX2dldF91c2VkX3NpemUocG9vbCksIHBvb2wtPmNhcGFjaXR5KSk7CisKKyAgICBibG9jayA9IHBqX3Bvb2xfY3JlYXRlX2Jsb2NrKHBvb2wsIGJsb2NrX3NpemUpOworICAgIGlmICghYmxvY2spCisJcmV0dXJuIE5VTEw7CisKKyAgICBwID0gcGpfcG9vbF9hbGxvY19mcm9tX2Jsb2NrKGJsb2NrLCBzaXplKTsKKyAgICBwal9hc3NlcnQocCAhPSBOVUxMKTsKKyNpZiBQSl9ERUJVRworICAgIGlmIChwID09IE5VTEwpIHsKKwlwID0gcDsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gcDsKK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIGluaXRpYWxpemUgcG9vbC4KKyAqLworUEpfREVGKHZvaWQpIHBqX3Bvb2xfaW5pdF9pbnQoICBwal9wb29sX3QgKnBvb2wsIAorCQkJCWNvbnN0IGNoYXIgKm5hbWUsCisJCQkJcGpfc2l6ZV90IGluY3JlbWVudF9zaXplLAorCQkJCXBqX3Bvb2xfY2FsbGJhY2sgKmNhbGxiYWNrKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBwb29sLT5pbmNyZW1lbnRfc2l6ZSA9IGluY3JlbWVudF9zaXplOworICAgIHBvb2wtPmNhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBpZiAobmFtZSkgeworCWlmIChzdHJjaHIobmFtZSwgJyUnKSAhPSBOVUxMKSB7CisJICAgIHBqX2Fuc2lfc25wcmludGYocG9vbC0+b2JqX25hbWUsIHNpemVvZihwb29sLT5vYmpfbmFtZSksIAorCQkJICAgICBuYW1lLCBwb29sKTsKKwl9IGVsc2UgeworCSAgICBwal9hbnNpX3N0cm5jcHkocG9vbC0+b2JqX25hbWUsIG5hbWUsIFBKX01BWF9PQkpfTkFNRSk7CisJICAgIHBvb2wtPm9ial9uYW1lW1BKX01BWF9PQkpfTkFNRS0xXSA9ICdcMCc7CisJfQorICAgIH0gZWxzZSB7CisJcG9vbC0+b2JqX25hbWVbMF0gPSAnXDAnOworICAgIH0KK30KKworLyoKKyAqIENyZWF0ZSBuZXcgbWVtb3J5IHBvb2wuCisgKi8KK1BKX0RFRihwal9wb29sX3QqKSBwal9wb29sX2NyZWF0ZV9pbnQoIHBqX3Bvb2xfZmFjdG9yeSAqZiwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgICAgcGpfc2l6ZV90IGluaXRpYWxfc2l6ZSwgCisJCQkJICAgICAgIHBqX3NpemVfdCBpbmNyZW1lbnRfc2l6ZSwKKwkJCQkgICAgICAgcGpfcG9vbF9jYWxsYmFjayAqY2FsbGJhY2spCit7CisgICAgcGpfcG9vbF90ICpwb29sOworICAgIHBqX3Bvb2xfYmxvY2sgKmJsb2NrOworICAgIHBqX3VpbnQ4X3QgKmJ1ZmZlcjsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvKiBTaXplIG11c3QgYmUgYXQgbGVhc3Qgc2l6ZW9mKHBqX3Bvb2wpK3NpemVvZihwal9wb29sX2Jsb2NrKSAqLworICAgIFBKX0FTU0VSVF9SRVRVUk4oaW5pdGlhbF9zaXplID49IHNpemVvZihwal9wb29sX3QpK3NpemVvZihwal9wb29sX2Jsb2NrKSwKKwkJICAgICBOVUxMKTsKKworICAgIC8qIElmIGNhbGxiYWNrIGlzIE5VTEwsIHNldCBjYWxiYWNrIGZyb20gdGhlIHBvbGljeSAqLworICAgIGlmIChjYWxsYmFjayA9PSBOVUxMKQorCWNhbGxiYWNrID0gZi0+cG9saWN5LmNhbGxiYWNrOworCisgICAgLyogQWxsb2NhdGUgaW5pdGlhbCBibG9jayAqLworICAgIGJ1ZmZlciA9IChwal91aW50OF90KikgKCpmLT5wb2xpY3kuYmxvY2tfYWxsb2MpKGYsIGluaXRpYWxfc2l6ZSk7CisgICAgaWYgKCFidWZmZXIpCisJcmV0dXJuIE5VTEw7CisKKyAgICAvKiBTZXQgcG9vbCBhZG1pbmlzdHJhdGl2ZSBkYXRhLiAqLworICAgIHBvb2wgPSAocGpfcG9vbF90KilidWZmZXI7CisgICAgcGpfYnplcm8ocG9vbCwgc2l6ZW9mKCpwb29sKSk7CisKKyAgICBwal9saXN0X2luaXQoJnBvb2wtPmJsb2NrX2xpc3QpOworICAgIHBvb2wtPmZhY3RvcnkgPSBmOworCisgICAgLyogQ3JlYXRlIHRoZSBmaXJzdCBibG9jayBmcm9tIHRoZSBtZW1vcnkuICovCisgICAgYmxvY2sgPSAocGpfcG9vbF9ibG9jayopIChidWZmZXIgKyBzaXplb2YoKnBvb2wpKTsKKyAgICBibG9jay0+YnVmID0gKCh1bnNpZ25lZCBjaGFyKilibG9jaykgKyBzaXplb2YocGpfcG9vbF9ibG9jayk7CisgICAgYmxvY2stPmVuZCA9IGJ1ZmZlciArIGluaXRpYWxfc2l6ZTsKKworICAgIC8qIFNldCB0aGUgc3RhcnQgcG9pbnRlciwgYWxpZ25pbmcgaXQgYXMgbmVlZGVkICovCisgICAgYmxvY2stPmN1ciA9IEFMSUdOX1BUUihibG9jay0+YnVmLCBQSl9QT09MX0FMSUdOTUVOVCk7CisKKyAgICBwal9saXN0X2luc2VydF9hZnRlcigmcG9vbC0+YmxvY2tfbGlzdCwgYmxvY2spOworCisgICAgcGpfcG9vbF9pbml0X2ludChwb29sLCBuYW1lLCBpbmNyZW1lbnRfc2l6ZSwgY2FsbGJhY2spOworCisgICAgLyogUG9vbCBpbml0aWFsIGNhcGFjaXR5IGFuZCB1c2VkIHNpemUgKi8KKyAgICBwb29sLT5jYXBhY2l0eSA9IGluaXRpYWxfc2l6ZTsKKworICAgIExPRygocG9vbC0+b2JqX25hbWUsICJwb29sIGNyZWF0ZWQsIHNpemU9JXUiLCBwb29sLT5jYXBhY2l0eSkpOworICAgIHJldHVybiBwb29sOworfQorCisvKgorICogUmVzZXQgdGhlIHBvb2wgdG8gdGhlIHN0YXRlIHdoZW4gaXQgd2FzIGNyZWF0ZWQuCisgKiBBbGwgYmxvY2tzIHdpbGwgYmUgZGVhbGxvY2F0ZWQgZXhjZXB0IHRoZSBmaXJzdCBibG9jay4gQWxsIG1lbW9yeSBhcmVhcworICogYXJlIG1hcmtlZCBhcyBmcmVlLgorICovCitzdGF0aWMgdm9pZCByZXNldF9wb29sKHBqX3Bvb2xfdCAqcG9vbCkKK3sKKyAgICBwal9wb29sX2Jsb2NrICpibG9jazsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBibG9jayA9IHBvb2wtPmJsb2NrX2xpc3QucHJldjsKKyAgICBpZiAoYmxvY2sgPT0gJnBvb2wtPmJsb2NrX2xpc3QpCisJcmV0dXJuOworCisgICAgLyogU2tpcCB0aGUgZmlyc3QgYmxvY2sgYmVjYXVzZSBpdCBpcyBvY2N1cHlpbmcgdGhlIHNhbWUgbWVtb3J5CisgICAgICAgYXMgdGhlIHBvb2wgaXRzZWxmLgorICAgICovCisgICAgYmxvY2sgPSBibG9jay0+cHJldjsKKyAgICAKKyAgICB3aGlsZSAoYmxvY2sgIT0gJnBvb2wtPmJsb2NrX2xpc3QpIHsKKwlwal9wb29sX2Jsb2NrICpwcmV2ID0gYmxvY2stPnByZXY7CisJcGpfbGlzdF9lcmFzZShibG9jayk7CisJKCpwb29sLT5mYWN0b3J5LT5wb2xpY3kuYmxvY2tfZnJlZSkocG9vbC0+ZmFjdG9yeSwgYmxvY2ssIAorCQkJCQkgICAgYmxvY2stPmVuZCAtICh1bnNpZ25lZCBjaGFyKilibG9jayk7CisJYmxvY2sgPSBwcmV2OworICAgIH0KKworICAgIGJsb2NrID0gcG9vbC0+YmxvY2tfbGlzdC5uZXh0OworCisgICAgLyogU2V0IHRoZSBzdGFydCBwb2ludGVyLCBhbGlnbmluZyBpdCBhcyBuZWVkZWQgKi8KKyAgICBibG9jay0+Y3VyID0gQUxJR05fUFRSKGJsb2NrLT5idWYsIFBKX1BPT0xfQUxJR05NRU5UKTsKKworICAgIHBvb2wtPmNhcGFjaXR5ID0gYmxvY2stPmVuZCAtICh1bnNpZ25lZCBjaGFyKilwb29sOworfQorCisvKgorICogVGhlIHB1YmxpYyBmdW5jdGlvbiB0byByZXNldCBwb29sLgorICovCitQSl9ERUYodm9pZCkgcGpfcG9vbF9yZXNldChwal9wb29sX3QgKnBvb2wpCit7CisgICAgTE9HKChwb29sLT5vYmpfbmFtZSwgInJlc2V0KCk6IGNhcD0lZCwgdXNlZD0lZCglZCUlKSIsIAorCXBvb2wtPmNhcGFjaXR5LCBwal9wb29sX2dldF91c2VkX3NpemUocG9vbCksIAorCXBqX3Bvb2xfZ2V0X3VzZWRfc2l6ZShwb29sKSoxMDAvcG9vbC0+Y2FwYWNpdHkpKTsKKworICAgIHJlc2V0X3Bvb2wocG9vbCk7Cit9CisKKy8qCisgKiBEZXN0cm95IHRoZSBwb29sLgorICovCitQSl9ERUYodm9pZCkgcGpfcG9vbF9kZXN0cm95X2ludChwal9wb29sX3QgKnBvb2wpCit7CisgICAgcGpfc2l6ZV90IGluaXRpYWxfc2l6ZTsKKworICAgIExPRygocG9vbC0+b2JqX25hbWUsICJkZXN0cm95KCk6IGNhcD0lZCwgdXNlZD0lZCglZCUlKSwgYmxvY2swPSVwLSVwIiwgCisJcG9vbC0+Y2FwYWNpdHksIHBqX3Bvb2xfZ2V0X3VzZWRfc2l6ZShwb29sKSwgCisJcGpfcG9vbF9nZXRfdXNlZF9zaXplKHBvb2wpKjEwMC9wb29sLT5jYXBhY2l0eSwKKwkoKHBqX3Bvb2xfYmxvY2sqKXBvb2wtPmJsb2NrX2xpc3QubmV4dCktPmJ1ZiwgCisJKChwal9wb29sX2Jsb2NrKilwb29sLT5ibG9ja19saXN0Lm5leHQpLT5lbmQpKTsKKworICAgIHJlc2V0X3Bvb2wocG9vbCk7CisgICAgaW5pdGlhbF9zaXplID0gKChwal9wb29sX2Jsb2NrKilwb29sLT5ibG9ja19saXN0Lm5leHQpLT5lbmQgLSAKKwkJICAgKHVuc2lnbmVkIGNoYXIqKXBvb2w7CisgICAgaWYgKHBvb2wtPmZhY3RvcnktPnBvbGljeS5ibG9ja19mcmVlKQorCSgqcG9vbC0+ZmFjdG9yeS0+cG9saWN5LmJsb2NrX2ZyZWUpKHBvb2wtPmZhY3RvcnksIHBvb2wsIGluaXRpYWxfc2l6ZSk7Cit9CisKKworI2VuZGlmCS8qIFBKX0hBU19QT09MX0FMVF9BUEkgKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3Bvb2xfYnVmLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbF9idWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzkxMDZlCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3Bvb2xfYnVmLmMKQEAgLTAsMCArMSwxMTUgQEAKKy8qICRJZDogcG9vbF9idWYuYyA0NjI0IDIwMTMtMTAtMjEgMDY6Mzc6MzBaIG1pbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9wb29sX2J1Zi5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisKK3N0cnVjdCBwal9wb29sX2ZhY3Rvcnkgc3RhY2tfYmFzZWRfZmFjdG9yeTsKKworc3RydWN0IGNyZWF0aW9uX3BhcmFtCit7CisgICAgdm9pZAkqc3RhY2tfYnVmOworICAgIHBqX3NpemVfdAkgc2l6ZTsKK307CisKK3N0YXRpYyBpbnQgaXNfaW5pdGlhbGl6ZWQ7CitzdGF0aWMgbG9uZyB0bHMgPSAtMTsKK3N0YXRpYyB2b2lkKiBzdGFja19hbGxvYyhwal9wb29sX2ZhY3RvcnkgKmZhY3RvcnksIHBqX3NpemVfdCBzaXplKTsKKworc3RhdGljIHZvaWQgcG9vbF9idWZfY2xlYW51cCh2b2lkKQoreworICAgIGlmICh0bHMgIT0gLTEpIHsKKwlwal90aHJlYWRfbG9jYWxfZnJlZSh0bHMpOworCXRscyA9IC0xOworICAgIH0KKyAgICBpZiAoaXNfaW5pdGlhbGl6ZWQpCisJaXNfaW5pdGlhbGl6ZWQgPSAwOworfQorCitzdGF0aWMgcGpfc3RhdHVzX3QgcG9vbF9idWZfaW5pdGlhbGl6ZSh2b2lkKQoreworICAgIHBqX2F0ZXhpdCgmcG9vbF9idWZfY2xlYW51cCk7CisKKyAgICBzdGFja19iYXNlZF9mYWN0b3J5LnBvbGljeS5ibG9ja19hbGxvYyA9ICZzdGFja19hbGxvYzsKKyAgICByZXR1cm4gcGpfdGhyZWFkX2xvY2FsX2FsbG9jKCZ0bHMpOworfQorCitzdGF0aWMgdm9pZCogc3RhY2tfYWxsb2MocGpfcG9vbF9mYWN0b3J5ICpmYWN0b3J5LCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICBzdHJ1Y3QgY3JlYXRpb25fcGFyYW0gKnBhcmFtOworICAgIHZvaWQgKmJ1ZjsKKworICAgIFBKX1VOVVNFRF9BUkcoZmFjdG9yeSk7CisKKyAgICBwYXJhbSA9IChzdHJ1Y3QgY3JlYXRpb25fcGFyYW0qKSBwal90aHJlYWRfbG9jYWxfZ2V0KHRscyk7CisgICAgaWYgKHBhcmFtID09IE5VTEwpIHsKKwkvKiBEb24ndCBhc3NlcnQoKSwgdGhpcyBpcyBub3JtYWwgbm8tbWVtb3J5IHNpdHVhdGlvbiAqLworCXJldHVybiBOVUxMOworICAgIH0KKworICAgIHBqX3RocmVhZF9sb2NhbF9zZXQodGxzLCBOVUxMKTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oc2l6ZSA8PSBwYXJhbS0+c2l6ZSwgTlVMTCk7CisKKyAgICBidWYgPSBwYXJhbS0+c3RhY2tfYnVmOworCisgICAgLyogUHJldmVudCB0aGUgYnVmZmVyIGZyb20gYmVpbmcgcmV1c2VkICovCisgICAgcGFyYW0tPnN0YWNrX2J1ZiA9IE5VTEw7CisKKyAgICByZXR1cm4gYnVmOworfQorCisKK1BKX0RFRihwal9wb29sX3QqKSBwal9wb29sX2NyZWF0ZV9vbl9idWYoY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJIHZvaWQgKmJ1ZiwKKwkJCQkJIHBqX3NpemVfdCBzaXplKQoreworI2lmIFBKX0hBU19QT09MX0FMVF9BUEkgPT0gMAorICAgIHN0cnVjdCBjcmVhdGlvbl9wYXJhbSBwYXJhbTsKKyAgICBwal9zaXplX3QgYWxpZ25fZGlmZjsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oYnVmICYmIHNpemUsIE5VTEwpOworCisgICAgaWYgKCFpc19pbml0aWFsaXplZCkgeworCWlmIChwb29sX2J1Zl9pbml0aWFsaXplKCkgIT0gUEpfU1VDQ0VTUykKKwkgICAgcmV0dXJuIE5VTEw7CisJaXNfaW5pdGlhbGl6ZWQgPSAxOworICAgIH0KKworICAgIC8qIENoZWNrIGFuZCBhbGlnbiBidWZmZXIgKi8KKyAgICBhbGlnbl9kaWZmID0gKHBqX3NpemVfdClidWY7CisgICAgaWYgKGFsaWduX2RpZmYgJiAoUEpfUE9PTF9BTElHTk1FTlQtMSkpIHsKKwlhbGlnbl9kaWZmICY9IChQSl9QT09MX0FMSUdOTUVOVC0xKTsKKwlidWYgPSAodm9pZCopICgoKGNoYXIqKWJ1ZikgKyBhbGlnbl9kaWZmKTsKKwlzaXplIC09IGFsaWduX2RpZmY7CisgICAgfQorCisgICAgcGFyYW0uc3RhY2tfYnVmID0gYnVmOworICAgIHBhcmFtLnNpemUgPSBzaXplOworICAgIHBqX3RocmVhZF9sb2NhbF9zZXQodGxzLCAmcGFyYW0pOworCisgICAgcmV0dXJuIHBqX3Bvb2xfY3JlYXRlX2ludCgmc3RhY2tfYmFzZWRfZmFjdG9yeSwgbmFtZSwgc2l6ZSwgMCwgCisJCQkgICAgICBwal9wb29sX2ZhY3RvcnlfZGVmYXVsdF9wb2xpY3kuY2FsbGJhY2spOworI2Vsc2UKKyAgICBQSl9VTlVTRURfQVJHKGJ1Zik7CisgICAgcmV0dXJuIHBqX3Bvb2xfY3JlYXRlKE5VTEwsIG5hbWUsIHNpemUsIHNpemUsIE5VTEwpOworI2VuZGlmCit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9wb29sX2NhY2hpbmcuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9wb29sX2NhY2hpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDc4MGUxCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3Bvb2xfY2FjaGluZy5jCkBAIC0wLDAgKzEsMzM4IEBACisvKiAkSWQ6IHBvb2xfY2FjaGluZy5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9sb2NrLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9wb29sX2J1Zi5oPgorCisjaWYgIVBKX0hBU19QT09MX0FMVF9BUEkKKworc3RhdGljIHBqX3Bvb2xfdCogY3Bvb2xfY3JlYXRlX3Bvb2wocGpfcG9vbF9mYWN0b3J5ICpwZiwgCisJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgIHBqX3NpemVfdCBpbml0aWFsX3NpemUsIAorCQkJCSAgICBwal9zaXplX3QgaW5jcmVtZW50X3N6LAorCQkJCSAgICBwal9wb29sX2NhbGxiYWNrICpjYWxsYmFjayk7CitzdGF0aWMgdm9pZCBjcG9vbF9yZWxlYXNlX3Bvb2wocGpfcG9vbF9mYWN0b3J5ICpwZiwgcGpfcG9vbF90ICpwb29sKTsKK3N0YXRpYyB2b2lkIGNwb29sX2R1bXBfc3RhdHVzKHBqX3Bvb2xfZmFjdG9yeSAqZmFjdG9yeSwgcGpfYm9vbF90IGRldGFpbCApOworc3RhdGljIHBqX2Jvb2xfdCBjcG9vbF9vbl9ibG9ja19hbGxvYyhwal9wb29sX2ZhY3RvcnkgKmYsIHBqX3NpemVfdCBzeik7CitzdGF0aWMgdm9pZCBjcG9vbF9vbl9ibG9ja19mcmVlKHBqX3Bvb2xfZmFjdG9yeSAqZiwgcGpfc2l6ZV90IHN6KTsKKworCitzdGF0aWMgcGpfc2l6ZV90IHBvb2xfc2l6ZXNbUEpfQ0FDSElOR19QT09MX0FSUkFZX1NJWkVdID0gCit7CisgICAgMjU2LCA1MTIsIDEwMjQsIDIwNDgsIDQwOTYsIDgxOTIsIDEyMjg4LCAxNjM4NCwgCisgICAgMjA0ODAsIDI0NTc2LCAyODY3MiwgMzI3NjgsIDQwOTYwLCA0OTE1MiwgNTczNDQsIDY1NTM2Cit9OworCisvKiBJbmRleCB3aGVyZSB0aGUgc2VhcmNoIGZvciBzaXplIHNob3VsZCBiZWdpbi4KKyAqIFN0YXJ0IHdpdGggcG9vbF9zaXplc1s1XSwgd2hpY2ggaXMgODE5Mi4KKyAqLworI2RlZmluZSBTVEFSVF9TSVpFICA1CisKKworUEpfREVGKHZvaWQpIHBqX2NhY2hpbmdfcG9vbF9pbml0KCBwal9jYWNoaW5nX3Bvb2wgKmNwLCAKKwkJCQkgICBjb25zdCBwal9wb29sX2ZhY3RvcnlfcG9saWN5ICpwb2xpY3ksCisJCQkJICAgcGpfc2l6ZV90IG1heF9jYXBhY2l0eSkKK3sKKyAgICBpbnQgaTsKKyAgICBwal9wb29sX3QgKnBvb2w7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgcGpfYnplcm8oY3AsIHNpemVvZigqY3ApKTsKKyAgICAKKyAgICBjcC0+bWF4X2NhcGFjaXR5ID0gbWF4X2NhcGFjaXR5OworICAgIHBqX2xpc3RfaW5pdCgmY3AtPnVzZWRfbGlzdCk7CisgICAgZm9yIChpPTA7IGk8UEpfQ0FDSElOR19QT09MX0FSUkFZX1NJWkU7ICsraSkKKwlwal9saXN0X2luaXQoJmNwLT5mcmVlX2xpc3RbaV0pOworCisgICAgaWYgKHBvbGljeSA9PSBOVUxMKSB7CisgICAgCXBvbGljeSA9ICZwal9wb29sX2ZhY3RvcnlfZGVmYXVsdF9wb2xpY3k7CisgICAgfQorICAgIAorICAgIHBqX21lbWNweSgmY3AtPmZhY3RvcnkucG9saWN5LCBwb2xpY3ksIHNpemVvZihwal9wb29sX2ZhY3RvcnlfcG9saWN5KSk7CisgICAgY3AtPmZhY3RvcnkuY3JlYXRlX3Bvb2wgPSAmY3Bvb2xfY3JlYXRlX3Bvb2w7CisgICAgY3AtPmZhY3RvcnkucmVsZWFzZV9wb29sID0gJmNwb29sX3JlbGVhc2VfcG9vbDsKKyAgICBjcC0+ZmFjdG9yeS5kdW1wX3N0YXR1cyA9ICZjcG9vbF9kdW1wX3N0YXR1czsKKyAgICBjcC0+ZmFjdG9yeS5vbl9ibG9ja19hbGxvYyA9ICZjcG9vbF9vbl9ibG9ja19hbGxvYzsKKyAgICBjcC0+ZmFjdG9yeS5vbl9ibG9ja19mcmVlID0gJmNwb29sX29uX2Jsb2NrX2ZyZWU7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGVfb25fYnVmKCJjYWNoaW5ncG9vbCIsIGNwLT5wb29sX2J1Ziwgc2l6ZW9mKGNwLT5wb29sX2J1ZikpOworICAgIHBqX2xvY2tfY3JlYXRlX3NpbXBsZV9tdXRleChwb29sLCAiY2FjaGluZ3Bvb2wiLCAmY3AtPmxvY2spOworfQorCitQSl9ERUYodm9pZCkgcGpfY2FjaGluZ19wb29sX2Rlc3Ryb3koIHBqX2NhY2hpbmdfcG9vbCAqY3AgKQoreworICAgIGludCBpOworICAgIHBqX3Bvb2xfdCAqcG9vbDsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvKiBEZWxldGUgYWxsIHBvb2wgaW4gZnJlZSBsaXN0ICovCisgICAgZm9yIChpPTA7IGkgPCBQSl9DQUNISU5HX1BPT0xfQVJSQVlfU0laRTsgKytpKSB7CisJcGpfcG9vbF90ICpwb29sID0gKHBqX3Bvb2xfdCopIGNwLT5mcmVlX2xpc3RbaV0ubmV4dDsKKwlwal9wb29sX3QgKm5leHQ7CisJZm9yICg7IHBvb2wgIT0gKHZvaWQqKSZjcC0+ZnJlZV9saXN0W2ldOyBwb29sID0gbmV4dCkgeworCSAgICBuZXh0ID0gcG9vbC0+bmV4dDsKKwkgICAgcGpfbGlzdF9lcmFzZShwb29sKTsKKwkgICAgcGpfcG9vbF9kZXN0cm95X2ludChwb29sKTsKKwl9CisgICAgfQorCisgICAgLyogRGVsZXRlIGFsbCBwb29scyBpbiB1c2VkIGxpc3QgKi8KKyAgICBwb29sID0gKHBqX3Bvb2xfdCopIGNwLT51c2VkX2xpc3QubmV4dDsKKyAgICB3aGlsZSAocG9vbCAhPSAocGpfcG9vbF90KikgJmNwLT51c2VkX2xpc3QpIHsKKwlwal9wb29sX3QgKm5leHQgPSBwb29sLT5uZXh0OworCXBqX2xpc3RfZXJhc2UocG9vbCk7CisJUEpfTE9HKDQsKHBvb2wtPm9ial9uYW1lLCAKKwkJICAiUG9vbCBpcyBub3QgcmVsZWFzZWQgYnkgYXBwbGljYXRpb24sIHJlbGVhc2luZyBub3ciKSk7CisJcGpfcG9vbF9kZXN0cm95X2ludChwb29sKTsKKwlwb29sID0gbmV4dDsKKyAgICB9CisKKyAgICBpZiAoY3AtPmxvY2spIHsKKwlwal9sb2NrX2Rlc3Ryb3koY3AtPmxvY2spOworCXBqX2xvY2tfY3JlYXRlX251bGxfbXV0ZXgoTlVMTCwgImNhY2hpbmdwb29sIiwgJmNwLT5sb2NrKTsKKyAgICB9Cit9CisKK3N0YXRpYyBwal9wb29sX3QqIGNwb29sX2NyZWF0ZV9wb29sKHBqX3Bvb2xfZmFjdG9yeSAqcGYsIAorCQkJCQkgICAgICBjb25zdCBjaGFyICpuYW1lLCAKKwkJCQkJICAgICAgcGpfc2l6ZV90IGluaXRpYWxfc2l6ZSwgCisJCQkJCSAgICAgIHBqX3NpemVfdCBpbmNyZW1lbnRfc3osIAorCQkJCQkgICAgICBwal9wb29sX2NhbGxiYWNrICpjYWxsYmFjaykKK3sKKyAgICBwal9jYWNoaW5nX3Bvb2wgKmNwID0gKHBqX2NhY2hpbmdfcG9vbCopcGY7CisgICAgcGpfcG9vbF90ICpwb29sOworICAgIGludCBpZHg7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgcGpfbG9ja19hY3F1aXJlKGNwLT5sb2NrKTsKKworICAgIC8qIFVzZSBwb29sIGZhY3RvcnkncyBwb2xpY3kgd2hlbiBjYWxsYmFjayBpcyBOVUxMICovCisgICAgaWYgKGNhbGxiYWNrID09IE5VTEwpIHsKKwljYWxsYmFjayA9IHBmLT5wb2xpY3kuY2FsbGJhY2s7CisgICAgfQorCisgICAgLyogU2VhcmNoIHRoZSBzdWl0YWJsZSBzaXplIGZvciB0aGUgcG9vbC4gCisgICAgICogV2UnbGwganVzdCBkbyBsaW5lYXIgc2VhcmNoIHRvIHRoZSBzaXplIGFycmF5LCBhcyB0aGUgYXJyYXkgc2l6ZSBpdHNlbGYKKyAgICAgKiBpcyBvbmx5IGEgZmV3IGVsZW1lbnRzLiBCaW5hcnkgc2VhcmNoIEkgc3VzcGVjdCB3aWxsIGJlIGxlc3MgZWZmaWNpZW50CisgICAgICogZm9yIHRoaXMgcHVycG9zZS4KKyAgICAgKi8KKyAgICBpZiAoaW5pdGlhbF9zaXplIDw9IHBvb2xfc2l6ZXNbU1RBUlRfU0laRV0pIHsKKwlmb3IgKGlkeD1TVEFSVF9TSVpFLTE7IAorCSAgICAgaWR4ID49IDAgJiYgcG9vbF9zaXplc1tpZHhdID49IGluaXRpYWxfc2l6ZTsKKwkgICAgIC0taWR4KQorCSAgICA7CisJKytpZHg7CisgICAgfSBlbHNlIHsKKwlmb3IgKGlkeD1TVEFSVF9TSVpFKzE7IAorCSAgICAgaWR4IDwgUEpfQ0FDSElOR19QT09MX0FSUkFZX1NJWkUgJiYgCisJCSAgcG9vbF9zaXplc1tpZHhdIDwgaW5pdGlhbF9zaXplOworCSAgICAgKytpZHgpCisJICAgIDsKKyAgICB9CisKKyAgICAvKiBDaGVjayB3aGV0aGVyIHRoZXJlJ3MgYSBwb29sIGluIHRoZSBsaXN0LiAqLworICAgIGlmIChpZHg9PVBKX0NBQ0hJTkdfUE9PTF9BUlJBWV9TSVpFIHx8IHBqX2xpc3RfZW1wdHkoJmNwLT5mcmVlX2xpc3RbaWR4XSkpIHsKKwkvKiBObyBwb29sIGlzIGF2YWlsYWJsZS4gKi8KKwkvKiBTZXQgbWluaW11bSBzaXplLiAqLworCWlmIChpZHggPCBQSl9DQUNISU5HX1BPT0xfQVJSQVlfU0laRSkKKwkgICAgaW5pdGlhbF9zaXplID0gIHBvb2xfc2l6ZXNbaWR4XTsKKworCS8qIENyZWF0ZSBuZXcgcG9vbCAqLworCXBvb2wgPSBwal9wb29sX2NyZWF0ZV9pbnQoJmNwLT5mYWN0b3J5LCBuYW1lLCBpbml0aWFsX3NpemUsIAorCQkJCSAgaW5jcmVtZW50X3N6LCBjYWxsYmFjayk7CisJaWYgKCFwb29sKSB7CisJICAgIHBqX2xvY2tfcmVsZWFzZShjcC0+bG9jayk7CisJICAgIHJldHVybiBOVUxMOworCX0KKworICAgIH0gZWxzZSB7CisJLyogR2V0IG9uZSBwb29sIGZyb20gdGhlIGxpc3QuICovCisJcG9vbCA9IChwal9wb29sX3QqKSBjcC0+ZnJlZV9saXN0W2lkeF0ubmV4dDsKKwlwal9saXN0X2VyYXNlKHBvb2wpOworCisJLyogSW5pdGlhbGl6ZSB0aGUgcG9vbC4gKi8KKwlwal9wb29sX2luaXRfaW50KHBvb2wsIG5hbWUsIGluY3JlbWVudF9zeiwgY2FsbGJhY2spOworCisJLyogVXBkYXRlIHBvb2wgbWFuYWdlcidzIGZyZWUgY2FwYWNpdHkuICovCisJaWYgKGNwLT5jYXBhY2l0eSA+IHBqX3Bvb2xfZ2V0X2NhcGFjaXR5KHBvb2wpKSB7CisJICAgIGNwLT5jYXBhY2l0eSAtPSBwal9wb29sX2dldF9jYXBhY2l0eShwb29sKTsKKwl9IGVsc2UgeworCSAgICBjcC0+Y2FwYWNpdHkgPSAwOworCX0KKworCVBKX0xPRyg2LCAocG9vbC0+b2JqX25hbWUsICJwb29sIHJldXNlZCwgc2l6ZT0ldSIsIHBvb2wtPmNhcGFjaXR5KSk7CisgICAgfQorCisgICAgLyogUHV0IGluIHVzZWQgbGlzdC4gKi8KKyAgICBwal9saXN0X2luc2VydF9iZWZvcmUoICZjcC0+dXNlZF9saXN0LCBwb29sICk7CisKKyAgICAvKiBNYXJrIGZhY3RvcnkgZGF0YSAqLworICAgIHBvb2wtPmZhY3RvcnlfZGF0YSA9ICh2b2lkKikgKHBqX3NzaXplX3QpIGlkeDsKKworICAgIC8qIEluY3JlbWVudCB1c2VkIGNvdW50LiAqLworICAgICsrY3AtPnVzZWRfY291bnQ7CisKKyAgICBwal9sb2NrX3JlbGVhc2UoY3AtPmxvY2spOworICAgIHJldHVybiBwb29sOworfQorCitzdGF0aWMgdm9pZCBjcG9vbF9yZWxlYXNlX3Bvb2woIHBqX3Bvb2xfZmFjdG9yeSAqcGYsIHBqX3Bvb2xfdCAqcG9vbCkKK3sKKyAgICBwal9jYWNoaW5nX3Bvb2wgKmNwID0gKHBqX2NhY2hpbmdfcG9vbCopcGY7CisgICAgcGpfc2l6ZV90IHBvb2xfY2FwYWNpdHk7CisgICAgdW5zaWduZWQgaTsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBQSl9BU1NFUlRfT05fRkFJTChwZiAmJiBwb29sLCByZXR1cm4pOworCisgICAgcGpfbG9ja19hY3F1aXJlKGNwLT5sb2NrKTsKKworI2lmIFBKX1NBRkVfUE9PTAorICAgIC8qIE1ha2Ugc3VyZSBwb29sIGlzIHN0aWxsIGluIG91ciB1c2VkIGxpc3QgKi8KKyAgICBpZiAocGpfbGlzdF9maW5kX25vZGUoJmNwLT51c2VkX2xpc3QsIHBvb2wpICE9IHBvb2wpIHsKKwlwal9hc3NlcnQoISJBdHRlbXB0IHRvIGRlc3Ryb3kgcG9vbCB0aGF0IGhhcyBiZWVuIGRlc3Ryb3llZCBiZWZvcmUiKTsKKwlyZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICAvKiBFcmFzZSBmcm9tIHRoZSB1c2VkIGxpc3QuICovCisgICAgcGpfbGlzdF9lcmFzZShwb29sKTsKKworICAgIC8qIERlY3JlbWVudCB1c2VkIGNvdW50LiAqLworICAgIC0tY3AtPnVzZWRfY291bnQ7CisKKyAgICBwb29sX2NhcGFjaXR5ID0gcGpfcG9vbF9nZXRfY2FwYWNpdHkocG9vbCk7CisKKyAgICAvKiBEZXN0cm95IHRoZSBwb29sIGlmIHRoZSBzaXplIGlzIGdyZWF0ZXIgdGhhbiBvdXIgc2l6ZSBvciBpZiB0aGUgdG90YWwKKyAgICAgKiBjYXBhY2l0eSBpbiBvdXIgcmVjeWNsZSBsaXN0IChwbHVzIHRoZSBzaXplIG9mIHRoZSBwb29sKSBleGNlZWRzIAorICAgICAqIG1heGltdW0gY2FwYWNpdHkuCisgICAuICovCisgICAgaWYgKHBvb2xfY2FwYWNpdHkgPiBwb29sX3NpemVzW1BKX0NBQ0hJTkdfUE9PTF9BUlJBWV9TSVpFLTFdIHx8CisJY3AtPmNhcGFjaXR5ICsgcG9vbF9jYXBhY2l0eSA+IGNwLT5tYXhfY2FwYWNpdHkpCisgICAgeworCXBqX3Bvb2xfZGVzdHJveV9pbnQocG9vbCk7CisJcGpfbG9ja19yZWxlYXNlKGNwLT5sb2NrKTsKKwlyZXR1cm47CisgICAgfQorCisgICAgLyogUmVzZXQgcG9vbC4gKi8KKyAgICBQSl9MT0coNiwgKHBvb2wtPm9ial9uYW1lLCAicmVjeWNsZSgpOiBjYXA9JWQsIHVzZWQ9JWQoJWQlJSkiLCAKKwkgICAgICAgcG9vbF9jYXBhY2l0eSwgcGpfcG9vbF9nZXRfdXNlZF9zaXplKHBvb2wpLCAKKwkgICAgICAgcGpfcG9vbF9nZXRfdXNlZF9zaXplKHBvb2wpKjEwMC9wb29sX2NhcGFjaXR5KSk7CisgICAgcGpfcG9vbF9yZXNldChwb29sKTsKKworICAgIHBvb2xfY2FwYWNpdHkgPSBwal9wb29sX2dldF9jYXBhY2l0eShwb29sKTsKKworICAgIC8qCisgICAgICogT3RoZXJ3aXNlIHB1dCB0aGUgcG9vbCBpbiBvdXIgcmVjeWNsZSBsaXN0LgorICAgICAqLworICAgIGkgPSAodW5zaWduZWQpICh1bnNpZ25lZCBsb25nKSAocGpfc3NpemVfdCkgcG9vbC0+ZmFjdG9yeV9kYXRhOworCisgICAgcGpfYXNzZXJ0KGk8UEpfQ0FDSElOR19QT09MX0FSUkFZX1NJWkUpOworICAgIGlmIChpID49IFBKX0NBQ0hJTkdfUE9PTF9BUlJBWV9TSVpFICkgeworCS8qIFNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZyB3aXRoIHRoZSBwb29sLiAqLworCXBqX3Bvb2xfZGVzdHJveV9pbnQocG9vbCk7CisJcGpfbG9ja19yZWxlYXNlKGNwLT5sb2NrKTsKKwlyZXR1cm47CisgICAgfQorCisgICAgcGpfbGlzdF9pbnNlcnRfYWZ0ZXIoJmNwLT5mcmVlX2xpc3RbaV0sIHBvb2wpOworICAgIGNwLT5jYXBhY2l0eSArPSBwb29sX2NhcGFjaXR5OworCisgICAgcGpfbG9ja19yZWxlYXNlKGNwLT5sb2NrKTsKK30KKworc3RhdGljIHZvaWQgY3Bvb2xfZHVtcF9zdGF0dXMocGpfcG9vbF9mYWN0b3J5ICpmYWN0b3J5LCBwal9ib29sX3QgZGV0YWlsICkKK3sKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDMKKyAgICBwal9jYWNoaW5nX3Bvb2wgKmNwID0gKHBqX2NhY2hpbmdfcG9vbCopZmFjdG9yeTsKKworICAgIHBqX2xvY2tfYWNxdWlyZShjcC0+bG9jayk7CisKKyAgICBQSl9MT0coMywoImNhY2hwb29sIiwgIiBEdW1waW5nIGNhY2hpbmcgcG9vbDoiKSk7CisgICAgUEpfTE9HKDMsKCJjYWNocG9vbCIsICIgICBDYXBhY2l0eT0ldSwgbWF4X2NhcGFjaXR5PSV1LCB1c2VkX2NudD0ldSIsIFwKKwkJCSAgICAgY3AtPmNhcGFjaXR5LCBjcC0+bWF4X2NhcGFjaXR5LCBjcC0+dXNlZF9jb3VudCkpOworICAgIGlmIChkZXRhaWwpIHsKKwlwal9wb29sX3QgKnBvb2wgPSAocGpfcG9vbF90KikgY3AtPnVzZWRfbGlzdC5uZXh0OworCXBqX3NpemVfdCB0b3RhbF91c2VkID0gMCwgdG90YWxfY2FwYWNpdHkgPSAwOworICAgICAgICBQSl9MT0coMywoImNhY2hwb29sIiwgIiAgRHVtcGluZyBhbGwgYWN0aXZlIHBvb2xzOiIpKTsKKwl3aGlsZSAocG9vbCAhPSAodm9pZCopJmNwLT51c2VkX2xpc3QpIHsKKwkgICAgcGpfc2l6ZV90IHBvb2xfY2FwYWNpdHkgPSBwal9wb29sX2dldF9jYXBhY2l0eShwb29sKTsKKwkgICAgUEpfTE9HKDMsKCJjYWNocG9vbCIsICIgICAlMTZzOiAlOGQgb2YgJThkICglZCUlKSB1c2VkIiwgCisJCQkJICBwal9wb29sX2dldG9iam5hbWUocG9vbCksIAorCQkJCSAgcGpfcG9vbF9nZXRfdXNlZF9zaXplKHBvb2wpLCAKKwkJCQkgIHBvb2xfY2FwYWNpdHksCisJCQkJICBwal9wb29sX2dldF91c2VkX3NpemUocG9vbCkqMTAwL3Bvb2xfY2FwYWNpdHkpKTsKKwkgICAgdG90YWxfdXNlZCArPSBwal9wb29sX2dldF91c2VkX3NpemUocG9vbCk7CisJICAgIHRvdGFsX2NhcGFjaXR5ICs9IHBvb2xfY2FwYWNpdHk7CisJICAgIHBvb2wgPSBwb29sLT5uZXh0OworCX0KKwlpZiAodG90YWxfY2FwYWNpdHkpIHsKKwkgICAgUEpfTE9HKDMsKCJjYWNocG9vbCIsICIgIFRvdGFsICU5ZCBvZiAlOWQgKCVkICUlKSB1c2VkISIsCisJCQkJICB0b3RhbF91c2VkLCB0b3RhbF9jYXBhY2l0eSwKKwkJCQkgIHRvdGFsX3VzZWQgKiAxMDAgLyB0b3RhbF9jYXBhY2l0eSkpOworCX0KKyAgICB9CisKKyAgICBwal9sb2NrX3JlbGVhc2UoY3AtPmxvY2spOworI2Vsc2UKKyAgICBQSl9VTlVTRURfQVJHKGZhY3RvcnkpOworICAgIFBKX1VOVVNFRF9BUkcoZGV0YWlsKTsKKyNlbmRpZgorfQorCisKK3N0YXRpYyBwal9ib29sX3QgY3Bvb2xfb25fYmxvY2tfYWxsb2MocGpfcG9vbF9mYWN0b3J5ICpmLCBwal9zaXplX3Qgc3opCit7CisgICAgcGpfY2FjaGluZ19wb29sICpjcCA9IChwal9jYWNoaW5nX3Bvb2wqKWY7CisKKyAgICAvL0Nhbid0IGxvY2sgYmVjYXVzZSBtdXRleCBpcyBub3QgcmVjdXJzaXZlCisgICAgLy9pZiAoY3AtPm11dGV4KSBwal9tdXRleF9sb2NrKGNwLT5tdXRleCk7CisKKyAgICBjcC0+dXNlZF9zaXplICs9IHN6OworICAgIGlmIChjcC0+dXNlZF9zaXplID4gY3AtPnBlYWtfdXNlZF9zaXplKQorCWNwLT5wZWFrX3VzZWRfc2l6ZSA9IGNwLT51c2VkX3NpemU7CisKKyAgICAvL2lmIChjcC0+bXV0ZXgpIHBqX211dGV4X3VubG9jayhjcC0+bXV0ZXgpOworCisgICAgcmV0dXJuIFBKX1RSVUU7Cit9CisKKworc3RhdGljIHZvaWQgY3Bvb2xfb25fYmxvY2tfZnJlZShwal9wb29sX2ZhY3RvcnkgKmYsIHBqX3NpemVfdCBzeikKK3sKKyAgICBwal9jYWNoaW5nX3Bvb2wgKmNwID0gKHBqX2NhY2hpbmdfcG9vbCopZjsKKworICAgIC8vcGpfbXV0ZXhfbG9jayhjcC0+bXV0ZXgpOworICAgIGNwLT51c2VkX3NpemUgLT0gc3o7CisgICAgLy9wal9tdXRleF91bmxvY2soY3AtPm11dGV4KTsKK30KKworCisjZW5kaWYJLyogUEpfSEFTX1BPT0xfQUxUX0FQSSAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbF9kYmcuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9wb29sX2RiZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYmQzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbF9kYmcuYwpAQCAtMCwwICsxLDE5MSBAQAorLyogJElkOiBwb29sX2RiZy5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKworI2lmIFBKX0hBU19QT09MX0FMVF9BUEkKKworI2lmIFBKX0hBU19NQUxMT0NfSAorIyAgIGluY2x1ZGUgPG1hbGxvYy5oPgorI2VuZGlmCisKKworI2lmIFBKX0hBU19TVERMSUJfSAorIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKKworI2lmICgoZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIhPTApIHx8IFwKKyAgICAgKGRlZmluZWQoUEpfV0lONjQpICYmIFBKX1dJTjY0ICE9IDApKSAmJiBcCisgICAgIGRlZmluZWQoUEpfREVCVUcpICYmIFBKX0RFQlVHIT0wICYmICFQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUKKyMgICBpbmNsdWRlIDx3aW5kb3dzLmg+CisjICAgZGVmaW5lIFRSQUNFXyhtc2cpCU91dHB1dERlYnVnU3RyaW5nKG1zZykKKyNlbmRpZgorCisvKiBVbmNvbW1lbnQgdGhpcyB0byBlbmFibGUgVFJBQ0VfICovCisvLyN1bmRlZiBUUkFDRV8KKworCisKK2ludCBQSl9OT19NRU1PUllfRVhDRVBUSU9OOworCisKK1BKX0RFRihpbnQpIHBqX05PX01FTU9SWV9FWENFUFRJT04oKQoreworICAgIHJldHVybiBQSl9OT19NRU1PUllfRVhDRVBUSU9OOworfQorCisvKiBDcmVhdGUgcG9vbCAqLworUEpfREVGKHBqX3Bvb2xfdCopIHBqX3Bvb2xfY3JlYXRlX2ltcCggY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsCisJCQkJICAgICAgIHZvaWQgKmZhY3RvcnksCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgICAgIHBqX3NpemVfdCBpbml0aWFsX3NpemUsCisJCQkJICAgICAgIHBqX3NpemVfdCBpbmNyZW1lbnRfc2l6ZSwKKwkJCQkgICAgICAgcGpfcG9vbF9jYWxsYmFjayAqY2FsbGJhY2spCit7CisgICAgcGpfcG9vbF90ICpwb29sOworCisgICAgUEpfVU5VU0VEX0FSRyhmaWxlKTsKKyAgICBQSl9VTlVTRURfQVJHKGxpbmUpOworICAgIFBKX1VOVVNFRF9BUkcoZmFjdG9yeSk7CisgICAgUEpfVU5VU0VEX0FSRyhpbml0aWFsX3NpemUpOworICAgIFBKX1VOVVNFRF9BUkcoaW5jcmVtZW50X3NpemUpOworCisgICAgcG9vbCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHBqX3Bvb2xfdCkpOworICAgIGlmICghcG9vbCkKKwlyZXR1cm4gTlVMTDsKKworICAgIGlmIChuYW1lKSB7CisJcGpfYW5zaV9zdHJuY3B5KHBvb2wtPm9ial9uYW1lLCBuYW1lLCBzaXplb2YocG9vbC0+b2JqX25hbWUpKTsKKwlwb29sLT5vYmpfbmFtZVtzaXplb2YocG9vbC0+b2JqX25hbWUpLTFdID0gJ1wwJzsKKyAgICB9IGVsc2UgeworCXN0cmNweShwb29sLT5vYmpfbmFtZSwgImFsdHBvb2wiKTsKKyAgICB9CisKKyAgICBwb29sLT5mYWN0b3J5ID0gTlVMTDsKKyAgICBwb29sLT5maXJzdF9tZW0gPSBOVUxMOworICAgIHBvb2wtPnVzZWRfc2l6ZSA9IDA7CisgICAgcG9vbC0+Y2IgPSBjYWxsYmFjazsKKworICAgIHJldHVybiBwb29sOworfQorCisKKy8qIFJlbGVhc2UgcG9vbCAqLworUEpfREVGKHZvaWQpIHBqX3Bvb2xfcmVsZWFzZV9pbXAocGpfcG9vbF90ICpwb29sKQoreworICAgIHBqX3Bvb2xfcmVzZXQocG9vbCk7CisgICAgZnJlZShwb29sKTsKK30KKworLyogR2V0IHBvb2wgbmFtZSAqLworUEpfREVGKGNvbnN0IGNoYXIqKSBwal9wb29sX2dldG9iam5hbWVfaW1wKHBqX3Bvb2xfdCAqcG9vbCkKK3sKKyAgICBQSl9VTlVTRURfQVJHKHBvb2wpOworICAgIHJldHVybiAicG9vbGRiZyI7Cit9CisKKy8qIFJlc2V0IHBvb2wgKi8KK1BKX0RFRih2b2lkKSBwal9wb29sX3Jlc2V0X2ltcChwal9wb29sX3QgKnBvb2wpCit7CisgICAgc3RydWN0IHBqX3Bvb2xfbWVtICptZW07CisKKyAgICBtZW0gPSBwb29sLT5maXJzdF9tZW07CisgICAgd2hpbGUgKG1lbSkgeworCXN0cnVjdCBwal9wb29sX21lbSAqbmV4dCA9IG1lbS0+bmV4dDsKKwlmcmVlKG1lbSk7CisJbWVtID0gbmV4dDsKKyAgICB9CisKKyAgICBwb29sLT5maXJzdF9tZW0gPSBOVUxMOworfQorCisvKiBHZXQgY2FwYWNpdHkgKi8KK1BKX0RFRihwal9zaXplX3QpIHBqX3Bvb2xfZ2V0X2NhcGFjaXR5X2ltcChwal9wb29sX3QgKnBvb2wpCit7CisgICAgUEpfVU5VU0VEX0FSRyhwb29sKTsKKworICAgIC8qIFVubGltaXRlZCBjYXBhY2l0eSAqLworICAgIHJldHVybiAweDdGRkZGRkZGVUw7Cit9CisKKy8qIEdldCB0b3RhbCB1c2VkIHNpemUgKi8KK1BKX0RFRihwal9zaXplX3QpIHBqX3Bvb2xfZ2V0X3VzZWRfc2l6ZV9pbXAocGpfcG9vbF90ICpwb29sKQoreworICAgIHJldHVybiBwb29sLT51c2VkX3NpemU7Cit9CisKKy8qIEFsbG9jYXRlIG1lbW9yeSBmcm9tIHRoZSBwb29sICovCitQSl9ERUYodm9pZCopIHBqX3Bvb2xfYWxsb2NfaW1wKCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgCisJCQkJIHBqX3Bvb2xfdCAqcG9vbCwgcGpfc2l6ZV90IHN6KQoreworICAgIHN0cnVjdCBwal9wb29sX21lbSAqbWVtOworCisgICAgUEpfVU5VU0VEX0FSRyhmaWxlKTsKKyAgICBQSl9VTlVTRURfQVJHKGxpbmUpOworCisgICAgbWVtID0gbWFsbG9jKHN6ICsgc2l6ZW9mKHN0cnVjdCBwal9wb29sX21lbSkpOworICAgIGlmICghbWVtKSB7CisJaWYgKHBvb2wtPmNiKQorCSAgICAoKnBvb2wtPmNiKShwb29sLCBzeik7CisJcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtLT5uZXh0ID0gcG9vbC0+Zmlyc3RfbWVtOworICAgIHBvb2wtPmZpcnN0X21lbSA9IG1lbTsKKworI2lmZGVmIFRSQUNFXworICAgIHsKKwljaGFyIG1zZ1sxMjBdOworCXBqX2Fuc2lfc3ByaW50Zihtc2csICJNZW0gJVggKCVkKyVkIGJ5dGVzKSBhbGxvY2F0ZWQgYnkgJXM6JWRcclxuIiwKKwkJCW1lbSwgc3osIHNpemVvZihzdHJ1Y3QgcGpfcG9vbF9tZW0pLCAKKwkJCWZpbGUsIGxpbmUpOworCVRSQUNFXyhtc2cpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuICgoY2hhciopbWVtKSArIHNpemVvZihzdHJ1Y3QgcGpfcG9vbF9tZW0pOworfQorCisvKiBBbGxvY2F0ZSBtZW1vcnkgZnJvbSB0aGUgcG9vbCBhbmQgemVybyB0aGUgbWVtb3J5ICovCitQSl9ERUYodm9pZCopIHBqX3Bvb2xfY2FsbG9jX2ltcCggY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIAorCQkJCSAgcGpfcG9vbF90ICpwb29sLCB1bnNpZ25lZCBjbnQsIAorCQkJCSAgdW5zaWduZWQgZWxlbXN6KQoreworICAgIHZvaWQgKm1lbTsKKworICAgIG1lbSA9IHBqX3Bvb2xfYWxsb2NfaW1wKGZpbGUsIGxpbmUsIHBvb2wsIGNudCplbGVtc3opOworICAgIGlmICghbWVtKQorCXJldHVybiBOVUxMOworCisgICAgcGpfYnplcm8obWVtLCBjbnQqZWxlbXN6KTsKKyAgICByZXR1cm4gbWVtOworfQorCisvKiBBbGxvY2F0ZSBtZW1vcnkgZnJvbSB0aGUgcG9vbCBhbmQgemVybyB0aGUgbWVtb3J5ICovCitQSl9ERUYodm9pZCopIHBqX3Bvb2xfemFsbG9jX2ltcCggY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIAorCQkJCSAgcGpfcG9vbF90ICpwb29sLCBwal9zaXplX3Qgc3opCit7CisgICAgcmV0dXJuIHBqX3Bvb2xfY2FsbG9jX2ltcChmaWxlLCBsaW5lLCBwb29sLCAxLCBzeik7IAorfQorCisKKworI2VuZGlmCS8qIFBKX0hBU19QT09MX0FMVF9BUEkgKi8KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9wb29sX3BvbGljeV9rbWFsbG9jLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbF9wb2xpY3lfa21hbGxvYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNWVjNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbF9wb2xpY3lfa21hbGxvYy5jCkBAIC0wLDAgKzEsNjQgQEAKKy8qICRJZDogcG9vbF9wb2xpY3lfa21hbGxvYy5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovcG9vbC5oPgorI2luY2x1ZGUgPHBqL2V4Y2VwdC5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisKKworc3RhdGljIHZvaWQgKmRlZmF1bHRfYmxvY2tfYWxsb2MocGpfcG9vbF9mYWN0b3J5ICpmYWN0b3J5LCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX1VOVVNFRF9BUkcoZmFjdG9yeSk7CisKKyAgICByZXR1cm4ga21hbGxvYyhzaXplLCBHRlBfQVRPTUlDKTsKK30KKworc3RhdGljIHZvaWQgZGVmYXVsdF9ibG9ja19mcmVlKHBqX3Bvb2xfZmFjdG9yeSAqZmFjdG9yeSwgCisJCQkgICAgICAgdm9pZCAqbWVtLCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX1VOVVNFRF9BUkcoZmFjdG9yeSk7CisgICAgUEpfVU5VU0VEX0FSRyhzaXplKTsKKworICAgIGtmcmVlKG1lbSk7Cit9CisKK3N0YXRpYyB2b2lkIGRlZmF1bHRfcG9vbF9jYWxsYmFjayhwal9wb29sX3QgKnBvb2wsIHBqX3NpemVfdCBzaXplKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfVU5VU0VEX0FSRyhwb29sKTsKKyAgICBQSl9VTlVTRURfQVJHKHNpemUpOworCisgICAgUEpfVEhST1coUEpfTk9fTUVNT1JZX0VYQ0VQVElPTik7Cit9CisKK3BqX3Bvb2xfZmFjdG9yeV9wb2xpY3kgcGpfcG9vbF9mYWN0b3J5X2RlZmF1bHRfcG9saWN5ID0gCit7CisgICAgJmRlZmF1bHRfYmxvY2tfYWxsb2MsCisgICAgJmRlZmF1bHRfYmxvY2tfZnJlZSwKKyAgICAmZGVmYXVsdF9wb29sX2NhbGxiYWNrLAorICAgIDAKK307CisKK1BKX0RFRihjb25zdCBwal9wb29sX2ZhY3RvcnlfcG9saWN5KikgcGpfcG9vbF9mYWN0b3J5X2dldF9kZWZhdWx0X3BvbGljeSh2b2lkKQoreworICAgIHJldHVybiAmcGpfcG9vbF9mYWN0b3J5X2RlZmF1bHRfcG9saWN5OworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbF9wb2xpY3lfbWFsbG9jLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbF9wb2xpY3lfbWFsbG9jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiYTkxZAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9wb29sX3BvbGljeV9tYWxsb2MuYwpAQCAtMCwwICsxLDEwNCBAQAorLyogJElkOiBwb29sX3BvbGljeV9tYWxsb2MuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9leGNlcHQuaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9tYWxsb2MuaD4KKworI2lmICFQSl9IQVNfUE9PTF9BTFRfQVBJCisKKy8qCisgKiBUaGlzIGZpbGUgY29udGFpbnMgcG9vbCBkZWZhdWx0IHBvbGljeSBkZWZpbml0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbi4KKyAqLworI2luY2x1ZGUgInBvb2xfc2lnbmF0dXJlLmgiCisKKworc3RhdGljIHZvaWQgKmRlZmF1bHRfYmxvY2tfYWxsb2MocGpfcG9vbF9mYWN0b3J5ICpmYWN0b3J5LCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICB2b2lkICpwOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGlmIChmYWN0b3J5LT5vbl9ibG9ja19hbGxvYykgeworCWludCByYzsKKwlyYyA9IGZhY3RvcnktPm9uX2Jsb2NrX2FsbG9jKGZhY3RvcnksIHNpemUpOworCWlmICghcmMpCisJICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHAgPSBtYWxsb2Moc2l6ZSsoU0lHX1NJWkUgPDwgMSkpOworCisgICAgaWYgKHAgPT0gTlVMTCkgeworCWlmIChmYWN0b3J5LT5vbl9ibG9ja19mcmVlKSAKKwkgICAgZmFjdG9yeS0+b25fYmxvY2tfZnJlZShmYWN0b3J5LCBzaXplKTsKKyAgICB9IGVsc2UgeworCS8qIEFwcGx5IHNpZ25hdHVyZSB3aGVuIFBKX1NBRkVfUE9PTCBpcyBzZXQuIEl0IHdpbGwgbW92ZQorCSAqICJwIiBwb2ludGVyIGZvcndhcmQuCisJICovCisJQVBQTFlfU0lHKHAsIHNpemUpOworICAgIH0KKworICAgIHJldHVybiBwOworfQorCitzdGF0aWMgdm9pZCBkZWZhdWx0X2Jsb2NrX2ZyZWUocGpfcG9vbF9mYWN0b3J5ICpmYWN0b3J5LCB2b2lkICptZW0sIAorCQkJICAgICAgIHBqX3NpemVfdCBzaXplKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBpZiAoZmFjdG9yeS0+b25fYmxvY2tfZnJlZSkgCisgICAgICAgIGZhY3RvcnktPm9uX2Jsb2NrX2ZyZWUoZmFjdG9yeSwgc2l6ZSk7CisKKyAgICAvKiBDaGVjayBhbmQgcmVtb3ZlIHNpZ25hdHVyZSB3aGVuIFBKX1NBRkVfUE9PTCBpcyBzZXQuIEl0IHdpbGwKKyAgICAgKiBtb3ZlICJtZW0iIHBvaW50ZXIgYmFja3dhcmQuCisgICAgICovCisgICAgUkVNT1ZFX1NJRyhtZW0sIHNpemUpOworCisgICAgLyogTm90ZSB0aGF0IHdoZW4gUEpfU0FGRV9QT09MIGlzIHNldCwgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBibG9jaworICAgICAqIGlzIHNpemUgKyBTSUdfU0laRSoyLgorICAgICAqLworCisgICAgZnJlZShtZW0pOworfQorCitzdGF0aWMgdm9pZCBkZWZhdWx0X3Bvb2xfY2FsbGJhY2socGpfcG9vbF90ICpwb29sLCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX1VOVVNFRF9BUkcocG9vbCk7CisgICAgUEpfVU5VU0VEX0FSRyhzaXplKTsKKworICAgIFBKX1RIUk9XKFBKX05PX01FTU9SWV9FWENFUFRJT04pOworfQorCitQSl9ERUZfREFUQShwal9wb29sX2ZhY3RvcnlfcG9saWN5KSBwal9wb29sX2ZhY3RvcnlfZGVmYXVsdF9wb2xpY3kgPQoreworICAgICZkZWZhdWx0X2Jsb2NrX2FsbG9jLAorICAgICZkZWZhdWx0X2Jsb2NrX2ZyZWUsCisgICAgJmRlZmF1bHRfcG9vbF9jYWxsYmFjaywKKyAgICAwCit9OworCitQSl9ERUYoY29uc3QgcGpfcG9vbF9mYWN0b3J5X3BvbGljeSopIHBqX3Bvb2xfZmFjdG9yeV9nZXRfZGVmYXVsdF9wb2xpY3kodm9pZCkKK3sKKyAgICByZXR1cm4gJnBqX3Bvb2xfZmFjdG9yeV9kZWZhdWx0X3BvbGljeTsKK30KKworCisjZW5kaWYJLyogUEpfSEFTX1BPT0xfQUxUX0FQSSAqLwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3Bvb2xfcG9saWN5X25ldy5jcHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcG9vbF9wb2xpY3lfbmV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDllYjlmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3Bvb2xfcG9saWN5X25ldy5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qICRJZDogcG9vbF9wb2xpY3lfbmV3LmNwcCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9leGNlcHQuaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorCisjaWYgIVBKX0hBU19QT09MX0FMVF9BUEkKKworLyoKKyAqIFRoaXMgZmlsZSBjb250YWlucyBwb29sIGRlZmF1bHQgcG9saWN5IGRlZmluaXRpb24gYW5kIGltcGxlbWVudGF0aW9uLgorICovCisjaW5jbHVkZSAicG9vbF9zaWduYXR1cmUuaCIKKyAKKworc3RhdGljIHZvaWQgKm9wZXJhdG9yX25ldyhwal9wb29sX2ZhY3RvcnkgKmZhY3RvcnksIHBqX3NpemVfdCBzaXplKQoreworICAgIHZvaWQgKm1lbTsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBpZiAoZmFjdG9yeS0+b25fYmxvY2tfYWxsb2MpIHsKKwkJaW50IHJjOworCQlyYyA9IGZhY3RvcnktPm9uX2Jsb2NrX2FsbG9jKGZhY3RvcnksIHNpemUpOworCQlpZiAoIXJjKQorCQkgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIG1lbSA9ICh2b2lkKikgbmV3IGNoYXJbc2l6ZSsoU0lHX1NJWkUgPDwgMSldOworICAgIAorICAgIC8qIEV4Y2VwdGlvbiBmb3IgbmV3IG9wZXJhdG9yIG1heSBiZSBkaXNhYmxlZCwgc28uLiAqLworICAgIGlmIChtZW0pIHsKKwkvKiBBcHBseSBzaWduYXR1cmUgd2hlbiBQSl9TQUZFX1BPT0wgaXMgc2V0LiBJdCB3aWxsIG1vdmUKKwkgKiAibWVtIiBwb2ludGVyIGZvcndhcmQuCisJICovCisJQVBQTFlfU0lHKG1lbSwgc2l6ZSk7CisgICAgfQorCisgICAgcmV0dXJuIG1lbTsKK30KKworc3RhdGljIHZvaWQgb3BlcmF0b3JfZGVsZXRlKHBqX3Bvb2xfZmFjdG9yeSAqZmFjdG9yeSwgdm9pZCAqbWVtLCBwal9zaXplX3Qgc2l6ZSkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgaWYgKGZhY3RvcnktPm9uX2Jsb2NrX2ZyZWUpIAorICAgICAgICBmYWN0b3J5LT5vbl9ibG9ja19mcmVlKGZhY3RvcnksIHNpemUpOworICAgIAorICAgIC8qIENoZWNrIGFuZCByZW1vdmUgc2lnbmF0dXJlIHdoZW4gUEpfU0FGRV9QT09MIGlzIHNldC4gSXQgd2lsbAorICAgICAqIG1vdmUgIm1lbSIgcG9pbnRlciBiYWNrd2FyZC4KKyAgICAgKi8KKyAgICBSRU1PVkVfU0lHKG1lbSwgc2l6ZSk7CisKKyAgICAvKiBOb3RlIHRoYXQgd2hlbiBQSl9TQUZFX1BPT0wgaXMgc2V0LCB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGJsb2NrCisgICAgICogaXMgc2l6ZSArIFNJR19TSVpFKjIuCisgICAgICovCisKKyAgICBjaGFyICpwID0gKGNoYXIqKW1lbTsKKyAgICBkZWxldGUgW10gcDsKK30KKworc3RhdGljIHZvaWQgZGVmYXVsdF9wb29sX2NhbGxiYWNrKHBqX3Bvb2xfdCAqcG9vbCwgcGpfc2l6ZV90IHNpemUpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9VTlVTRURfQVJHKHBvb2wpOworICAgIFBKX1VOVVNFRF9BUkcoc2l6ZSk7CisKKyAgICBQSl9USFJPVyhQSl9OT19NRU1PUllfRVhDRVBUSU9OKTsKK30KKworUEpfREVGX0RBVEEocGpfcG9vbF9mYWN0b3J5X3BvbGljeSkgcGpfcG9vbF9mYWN0b3J5X2RlZmF1bHRfcG9saWN5ID0gCit7CisgICAgJm9wZXJhdG9yX25ldywKKyAgICAmb3BlcmF0b3JfZGVsZXRlLAorICAgICZkZWZhdWx0X3Bvb2xfY2FsbGJhY2ssCisgICAgMAorfTsKKworUEpfREVGKGNvbnN0IHBqX3Bvb2xfZmFjdG9yeV9wb2xpY3kqKSBwal9wb29sX2ZhY3RvcnlfZ2V0X2RlZmF1bHRfcG9saWN5KHZvaWQpCit7CisgICAgcmV0dXJuICZwal9wb29sX2ZhY3RvcnlfZGVmYXVsdF9wb2xpY3k7Cit9CisKKyAKKyNlbmRpZgkvKiBQSl9IQVNfUE9PTF9BTFRfQVBJICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9wb29sX3NpZ25hdHVyZS5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3Bvb2xfc2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQwZDQzMgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9wb29sX3NpZ25hdHVyZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qICRJZDogcG9vbF9zaWduYXR1cmUuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorCisjaWYgUEpfU0FGRV9QT09MCisjICAgZGVmaW5lIFNJR19TSVpFCQlzaXplb2YocGpfdWludDMyX3QpCisKK3N0YXRpYyB2b2lkIGFwcGx5X3NpZ25hdHVyZSh2b2lkICpwLCBwal9zaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCBjaGVja19wb29sX3NpZ25hdHVyZSh2b2lkICpwLCBwal9zaXplX3Qgc2l6ZSk7CisKKyMgICBkZWZpbmUgQVBQTFlfU0lHKHAsc3opCWFwcGx5X3NpZ25hdHVyZShwLHN6KSwgXAorCQkJCXA9KHZvaWQqKSgoKGNoYXIqKXApK1NJR19TSVpFKQorIyAgIGRlZmluZSBSRU1PVkVfU0lHKHAsc3opCWNoZWNrX3Bvb2xfc2lnbmF0dXJlKHAsc3opLCBcCisJCQkJcD0odm9pZCopKCgoY2hhciopcCktU0lHX1NJWkUpCisKKyMgICBkZWZpbmUgU0lHX0JFR0lOCSAgICAweDYwMERDMERFCisjICAgZGVmaW5lIFNJR19FTkQJICAgIDB4MEJBREMwREUKKworc3RhdGljIHZvaWQgYXBwbHlfc2lnbmF0dXJlKHZvaWQgKnAsIHBqX3NpemVfdCBzaXplKQoreworICAgIHBqX3VpbnQzMl90IHNpZzsKKworICAgIHNpZyA9IFNJR19CRUdJTjsKKyAgICBwal9tZW1jcHkocCwgJnNpZywgU0lHX1NJWkUpOworCisgICAgc2lnID0gU0lHX0VORDsKKyAgICBwal9tZW1jcHkoKChjaGFyKilwKStTSUdfU0laRStzaXplLCAmc2lnLCBTSUdfU0laRSk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX3Bvb2xfc2lnbmF0dXJlKHZvaWQgKnAsIHBqX3NpemVfdCBzaXplKQoreworICAgIHBqX3VpbnQzMl90IHNpZzsKKyAgICBwal91aW50OF90ICptZW0gPSAocGpfdWludDhfdCopcDsKKworICAgIC8qIENoZWNrIHRoYXQgc2lnbmF0dXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgYmxvY2sgaXMgc3RpbGwgaW50YWN0ICovCisgICAgc2lnID0gU0lHX0JFR0lOOworICAgIHBqX2Fzc2VydCghcGpfbWVtY21wKG1lbS1TSUdfU0laRSwgJnNpZywgU0lHX1NJWkUpKTsKKworICAgIC8qIENoZWNrIHRoYXQgc2lnbmF0dXJlIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrIGlzIHN0aWxsIGludGFjdC4KKyAgICAgKiBOb3RlIHRoYXQgIm1lbSIgaGFzIGJlZW4gaW5jcmVtZW50ZWQgYnkgU0lHX1NJWkUgCisgICAgICovCisgICAgc2lnID0gU0lHX0VORDsKKyAgICBwal9hc3NlcnQoIXBqX21lbWNtcChtZW0rc2l6ZSwgJnNpZywgU0lHX1NJWkUpKTsKK30KKworI2Vsc2UKKyMgICBkZWZpbmUgU0lHX1NJWkUJICAgIDAKKyMgICBkZWZpbmUgQVBQTFlfU0lHKHAsc3opCisjICAgZGVmaW5lIFJFTU9WRV9TSUcocCxzeikKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3JhbmQuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9yYW5kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTliYWQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9yYW5kLmMKQEAgLTAsMCArMSwzNSBAQAorLyogJElkOiByYW5kLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9yYW5kLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvcmFuZC5oPgorCitQSl9ERUYodm9pZCkgcGpfc3JhbmQodW5zaWduZWQgaW50IHNlZWQpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBwbGF0Zm9ybV9zcmFuZChzZWVkKTsKK30KKworUEpfREVGKGludCkgcGpfcmFuZCh2b2lkKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtX3JhbmQoKTsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3JidHJlZS5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3JidHJlZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3Yzk3N2UKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovcmJ0cmVlLmMKQEAgLTAsMCArMSw0MjggQEAKKy8qICRJZDogcmJ0cmVlLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9yYnRyZWUuaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorCitzdGF0aWMgdm9pZCBsZWZ0X3JvdGF0ZSggcGpfcmJ0cmVlICp0cmVlLCBwal9yYnRyZWVfbm9kZSAqbm9kZSApIAoreworICAgIHBqX3JidHJlZV9ub2RlICpybm9kZSwgKnBhcmVudDsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBybm9kZSA9IG5vZGUtPnJpZ2h0OworICAgIGlmIChybm9kZSA9PSB0cmVlLT5udWxsKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbm9kZS0+cmlnaHQgPSBybm9kZS0+bGVmdDsKKyAgICBpZiAocm5vZGUtPmxlZnQgIT0gdHJlZS0+bnVsbCkKKyAgICAgICAgcm5vZGUtPmxlZnQtPnBhcmVudCA9IG5vZGU7CisgICAgcGFyZW50ID0gbm9kZS0+cGFyZW50OworICAgIHJub2RlLT5wYXJlbnQgPSBwYXJlbnQ7CisgICAgaWYgKHBhcmVudCAhPSB0cmVlLT5udWxsKSB7CisgICAgICAgIGlmIChwYXJlbnQtPmxlZnQgPT0gbm9kZSkKKwkgICBwYXJlbnQtPmxlZnQgPSBybm9kZTsKKyAgICAgICAgZWxzZQorCSAgIHBhcmVudC0+cmlnaHQgPSBybm9kZTsKKyAgICB9IGVsc2UgeworICAgICAgICB0cmVlLT5yb290ID0gcm5vZGU7CisgICAgfQorICAgIHJub2RlLT5sZWZ0ID0gbm9kZTsKKyAgICBub2RlLT5wYXJlbnQgPSBybm9kZTsKK30KKworc3RhdGljIHZvaWQgcmlnaHRfcm90YXRlKCBwal9yYnRyZWUgKnRyZWUsIHBqX3JidHJlZV9ub2RlICpub2RlICkgCit7CisgICAgcGpfcmJ0cmVlX25vZGUgKmxub2RlLCAqcGFyZW50OworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGxub2RlID0gbm9kZS0+bGVmdDsKKyAgICBpZiAobG5vZGUgPT0gdHJlZS0+bnVsbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbm9kZS0+bGVmdCA9IGxub2RlLT5yaWdodDsKKyAgICBpZiAobG5vZGUtPnJpZ2h0ICE9IHRyZWUtPm51bGwpCisJbG5vZGUtPnJpZ2h0LT5wYXJlbnQgPSBub2RlOworICAgIHBhcmVudCA9IG5vZGUtPnBhcmVudDsKKyAgICBsbm9kZS0+cGFyZW50ID0gcGFyZW50OworCisgICAgaWYgKHBhcmVudCAhPSB0cmVlLT5udWxsKSB7CisgICAgICAgIGlmIChwYXJlbnQtPmxlZnQgPT0gbm9kZSkKKwkgICAgcGFyZW50LT5sZWZ0ID0gbG5vZGU7CisJZWxzZQorCSAgICBwYXJlbnQtPnJpZ2h0ID0gbG5vZGU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHJlZS0+cm9vdCA9IGxub2RlOworICAgIH0KKyAgICBsbm9kZS0+cmlnaHQgPSBub2RlOworICAgIG5vZGUtPnBhcmVudCA9IGxub2RlOworfQorCitzdGF0aWMgdm9pZCBpbnNlcnRfZml4dXAoIHBqX3JidHJlZSAqdHJlZSwgcGpfcmJ0cmVlX25vZGUgKm5vZGUgKSAKK3sKKyAgICBwal9yYnRyZWVfbm9kZSAqdGVtcCwgKnBhcmVudDsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICB3aGlsZSAobm9kZSAhPSB0cmVlLT5yb290ICYmIG5vZGUtPnBhcmVudC0+Y29sb3IgPT0gUEpfUkJDT0xPUl9SRUQpIHsKKyAgICAgICAgcGFyZW50ID0gbm9kZS0+cGFyZW50OworICAgICAgICBpZiAocGFyZW50ID09IHBhcmVudC0+cGFyZW50LT5sZWZ0KSB7CisJICAgIHRlbXAgPSBwYXJlbnQtPnBhcmVudC0+cmlnaHQ7CisJICAgIGlmICh0ZW1wLT5jb2xvciA9PSBQSl9SQkNPTE9SX1JFRCkgeworCSAgICAgICAgdGVtcC0+Y29sb3IgPSBQSl9SQkNPTE9SX0JMQUNLOworCSAgICAgICAgbm9kZSA9IHBhcmVudDsKKwkgICAgICAgIG5vZGUtPmNvbG9yID0gUEpfUkJDT0xPUl9CTEFDSzsKKwkgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnQ7CisJICAgICAgICBub2RlLT5jb2xvciA9IFBKX1JCQ09MT1JfUkVEOworCSAgICB9IGVsc2UgeworCSAgICAgICAgaWYgKG5vZGUgPT0gcGFyZW50LT5yaWdodCkgeworCQkgICBub2RlID0gcGFyZW50OworCQkgICBsZWZ0X3JvdGF0ZSh0cmVlLCBub2RlKTsKKwkgICAgICAgIH0KKwkgICAgICAgIHRlbXAgPSBub2RlLT5wYXJlbnQ7CisJICAgICAgICB0ZW1wLT5jb2xvciA9IFBKX1JCQ09MT1JfQkxBQ0s7CisJICAgICAgICB0ZW1wID0gdGVtcC0+cGFyZW50OworCSAgICAgICAgdGVtcC0+Y29sb3IgPSBQSl9SQkNPTE9SX1JFRDsKKwkgICAgICAgIHJpZ2h0X3JvdGF0ZSggdHJlZSwgdGVtcCk7CisJICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKwkgICAgdGVtcCA9IHBhcmVudC0+cGFyZW50LT5sZWZ0OworCSAgICBpZiAodGVtcC0+Y29sb3IgPT0gUEpfUkJDT0xPUl9SRUQpIHsKKwkgICAgICAgIHRlbXAtPmNvbG9yID0gUEpfUkJDT0xPUl9CTEFDSzsKKwkgICAgICAgIG5vZGUgPSBwYXJlbnQ7CisJICAgICAgICBub2RlLT5jb2xvciA9IFBKX1JCQ09MT1JfQkxBQ0s7CisJICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50OworCSAgICAgICAgbm9kZS0+Y29sb3IgPSBQSl9SQkNPTE9SX1JFRDsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIGlmIChub2RlID09IHBhcmVudC0+bGVmdCkgeworCQkgICAgbm9kZSA9IHBhcmVudDsKKwkJICAgIHJpZ2h0X3JvdGF0ZSh0cmVlLCBub2RlKTsKKwkgICAgICAgIH0KKwkgICAgICAgIHRlbXAgPSBub2RlLT5wYXJlbnQ7CisJICAgICAgICB0ZW1wLT5jb2xvciA9IFBKX1JCQ09MT1JfQkxBQ0s7CisJICAgICAgICB0ZW1wID0gdGVtcC0+cGFyZW50OworCSAgICAgICAgdGVtcC0+Y29sb3IgPSBQSl9SQkNPTE9SX1JFRDsKKwkgICAgICAgIGxlZnRfcm90YXRlKHRyZWUsIHRlbXApOworCSAgIH0KKyAgICAgICAgfQorICAgIH0KKwkKKyAgICB0cmVlLT5yb290LT5jb2xvciA9IFBKX1JCQ09MT1JfQkxBQ0s7Cit9CisKKworc3RhdGljIHZvaWQgZGVsZXRlX2ZpeHVwKCBwal9yYnRyZWUgKnRyZWUsIHBqX3JidHJlZV9ub2RlICpub2RlICkKK3sKKyAgICBwal9yYnRyZWVfbm9kZSAqdGVtcDsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICB3aGlsZSAobm9kZSAhPSB0cmVlLT5yb290ICYmIG5vZGUtPmNvbG9yID09IFBKX1JCQ09MT1JfQkxBQ0spIHsKKyAgICAgICAgaWYgKG5vZGUtPnBhcmVudC0+bGVmdCA9PSBub2RlKSB7CisJICAgIHRlbXAgPSBub2RlLT5wYXJlbnQtPnJpZ2h0OworCSAgICBpZiAodGVtcC0+Y29sb3IgPT0gUEpfUkJDT0xPUl9SRUQpIHsKKwkgICAgICAgIHRlbXAtPmNvbG9yID0gUEpfUkJDT0xPUl9CTEFDSzsKKwkgICAgICAgIG5vZGUtPnBhcmVudC0+Y29sb3IgPSBQSl9SQkNPTE9SX1JFRDsKKwkgICAgICAgIGxlZnRfcm90YXRlKHRyZWUsIG5vZGUtPnBhcmVudCk7CisJICAgICAgICB0ZW1wID0gbm9kZS0+cGFyZW50LT5yaWdodDsKKwkgICAgfQorCSAgICBpZiAodGVtcC0+bGVmdC0+Y29sb3IgPT0gUEpfUkJDT0xPUl9CTEFDSyAmJiAKKwkgICAgICAgIHRlbXAtPnJpZ2h0LT5jb2xvciA9PSBQSl9SQkNPTE9SX0JMQUNLKSAKKwkgICAgeworCSAgICAgICAgdGVtcC0+Y29sb3IgPSBQSl9SQkNPTE9SX1JFRDsKKwkgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnQ7CisJICAgIH0gZWxzZSB7CisJICAgICAgICBpZiAodGVtcC0+cmlnaHQtPmNvbG9yID09IFBKX1JCQ09MT1JfQkxBQ0spIHsKKwkJICAgIHRlbXAtPmxlZnQtPmNvbG9yID0gUEpfUkJDT0xPUl9CTEFDSzsKKwkJICAgIHRlbXAtPmNvbG9yID0gUEpfUkJDT0xPUl9SRUQ7CisJCSAgICByaWdodF9yb3RhdGUoIHRyZWUsIHRlbXApOworCQkgICAgdGVtcCA9IG5vZGUtPnBhcmVudC0+cmlnaHQ7CisJICAgICAgICB9CisJICAgICAgICB0ZW1wLT5jb2xvciA9IG5vZGUtPnBhcmVudC0+Y29sb3I7CisJICAgICAgICB0ZW1wLT5yaWdodC0+Y29sb3IgPSBQSl9SQkNPTE9SX0JMQUNLOworCSAgICAgICAgbm9kZS0+cGFyZW50LT5jb2xvciA9IFBKX1JCQ09MT1JfQkxBQ0s7CisJICAgICAgICBsZWZ0X3JvdGF0ZSh0cmVlLCBub2RlLT5wYXJlbnQpOworCSAgICAgICAgbm9kZSA9IHRyZWUtPnJvb3Q7CisJICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKwkgICAgdGVtcCA9IG5vZGUtPnBhcmVudC0+bGVmdDsKKwkgICAgaWYgKHRlbXAtPmNvbG9yID09IFBKX1JCQ09MT1JfUkVEKSB7CisJICAgICAgICB0ZW1wLT5jb2xvciA9IFBKX1JCQ09MT1JfQkxBQ0s7CisJICAgICAgICBub2RlLT5wYXJlbnQtPmNvbG9yID0gUEpfUkJDT0xPUl9SRUQ7CisJICAgICAgICByaWdodF9yb3RhdGUoIHRyZWUsIG5vZGUtPnBhcmVudCk7CisJICAgICAgICB0ZW1wID0gbm9kZS0+cGFyZW50LT5sZWZ0OworCSAgICB9CisJICAgIGlmICh0ZW1wLT5yaWdodC0+Y29sb3IgPT0gUEpfUkJDT0xPUl9CTEFDSyAmJiAKKwkJdGVtcC0+bGVmdC0+Y29sb3IgPT0gUEpfUkJDT0xPUl9CTEFDSykgCisJICAgIHsKKwkgICAgICAgIHRlbXAtPmNvbG9yID0gUEpfUkJDT0xPUl9SRUQ7CisJICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50OworCSAgICB9IGVsc2UgeworCSAgICAgICAgaWYgKHRlbXAtPmxlZnQtPmNvbG9yID09IFBKX1JCQ09MT1JfQkxBQ0spIHsKKwkJICAgIHRlbXAtPnJpZ2h0LT5jb2xvciA9IFBKX1JCQ09MT1JfQkxBQ0s7CisJCSAgICB0ZW1wLT5jb2xvciA9IFBKX1JCQ09MT1JfUkVEOworCQkgICAgbGVmdF9yb3RhdGUoIHRyZWUsIHRlbXApOworCQkgICAgdGVtcCA9IG5vZGUtPnBhcmVudC0+bGVmdDsKKwkgICAgICAgIH0KKwkgICAgICAgIHRlbXAtPmNvbG9yID0gbm9kZS0+cGFyZW50LT5jb2xvcjsKKwkgICAgICAgIG5vZGUtPnBhcmVudC0+Y29sb3IgPSBQSl9SQkNPTE9SX0JMQUNLOworCSAgICAgICAgdGVtcC0+bGVmdC0+Y29sb3IgPSBQSl9SQkNPTE9SX0JMQUNLOworCSAgICAgICAgcmlnaHRfcm90YXRlKHRyZWUsIG5vZGUtPnBhcmVudCk7CisJICAgICAgICBub2RlID0gdHJlZS0+cm9vdDsKKwkgICAgfQorICAgICAgICB9CisgICAgfQorCQorICAgIG5vZGUtPmNvbG9yID0gUEpfUkJDT0xPUl9CTEFDSzsKK30KKworCitQSl9ERUYodm9pZCkgcGpfcmJ0cmVlX2luaXQoIHBqX3JidHJlZSAqdHJlZSwgcGpfcmJ0cmVlX2NvbXAgKmNvbXAgKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICB0cmVlLT5udWxsID0gdHJlZS0+cm9vdCA9ICZ0cmVlLT5udWxsX25vZGU7CisgICAgdHJlZS0+bnVsbC0+a2V5ID0gTlVMTDsKKyAgICB0cmVlLT5udWxsLT51c2VyX2RhdGEgPSBOVUxMOworICAgIHRyZWUtPnNpemUgPSAwOworICAgIHRyZWUtPm51bGwtPmxlZnQgPSB0cmVlLT5udWxsLT5yaWdodCA9IHRyZWUtPm51bGwtPnBhcmVudCA9IHRyZWUtPm51bGw7CisgICAgdHJlZS0+bnVsbC0+Y29sb3IgPSBQSl9SQkNPTE9SX0JMQUNLOworICAgIHRyZWUtPmNvbXAgPSBjb21wOworfQorCitQSl9ERUYocGpfcmJ0cmVlX25vZGUqKSBwal9yYnRyZWVfZmlyc3QoIHBqX3JidHJlZSAqdHJlZSApCit7CisgICAgcmVnaXN0ZXIgcGpfcmJ0cmVlX25vZGUgKm5vZGUgPSB0cmVlLT5yb290OworICAgIHJlZ2lzdGVyIHBqX3JidHJlZV9ub2RlICpudWxsID0gdHJlZS0+bnVsbDsKKyAgICAKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgd2hpbGUgKG5vZGUtPmxlZnQgIT0gbnVsbCkKKwlub2RlID0gbm9kZS0+bGVmdDsKKyAgICByZXR1cm4gbm9kZSAhPSBudWxsID8gbm9kZSA6IE5VTEw7Cit9CisKK1BKX0RFRihwal9yYnRyZWVfbm9kZSopIHBqX3JidHJlZV9sYXN0KCBwal9yYnRyZWUgKnRyZWUgKQoreworICAgIHJlZ2lzdGVyIHBqX3JidHJlZV9ub2RlICpub2RlID0gdHJlZS0+cm9vdDsKKyAgICByZWdpc3RlciBwal9yYnRyZWVfbm9kZSAqbnVsbCA9IHRyZWUtPm51bGw7CisgICAgCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIHdoaWxlIChub2RlLT5yaWdodCAhPSBudWxsKQorCW5vZGUgPSBub2RlLT5yaWdodDsKKyAgICByZXR1cm4gbm9kZSAhPSBudWxsID8gbm9kZSA6IE5VTEw7Cit9CisKK1BKX0RFRihwal9yYnRyZWVfbm9kZSopIHBqX3JidHJlZV9uZXh0KCBwal9yYnRyZWUgKnRyZWUsIAorCQkJCQlyZWdpc3RlciBwal9yYnRyZWVfbm9kZSAqbm9kZSApCit7CisgICAgcmVnaXN0ZXIgcGpfcmJ0cmVlX25vZGUgKm51bGwgPSB0cmVlLT5udWxsOworICAgIAorICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBpZiAobm9kZS0+cmlnaHQgIT0gbnVsbCkgeworCWZvciAobm9kZT1ub2RlLT5yaWdodDsgbm9kZS0+bGVmdCE9bnVsbDsgbm9kZSA9IG5vZGUtPmxlZnQpCisJICAgIC8qIHZvaWQgKi87CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVnaXN0ZXIgcGpfcmJ0cmVlX25vZGUgKnRlbXAgPSBub2RlLT5wYXJlbnQ7CisgICAgICAgIHdoaWxlICh0ZW1wIT1udWxsICYmIHRlbXAtPnJpZ2h0PT1ub2RlKSB7CisJICAgIG5vZGUgPSB0ZW1wOworCSAgICB0ZW1wID0gdGVtcC0+cGFyZW50OworCX0KKwlub2RlID0gdGVtcDsKKyAgICB9ICAgIAorICAgIHJldHVybiBub2RlICE9IG51bGwgPyBub2RlIDogTlVMTDsKK30KKworUEpfREVGKHBqX3JidHJlZV9ub2RlKikgcGpfcmJ0cmVlX3ByZXYoIHBqX3JidHJlZSAqdHJlZSwgCisJCQkJCXJlZ2lzdGVyIHBqX3JidHJlZV9ub2RlICpub2RlICkKK3sKKyAgICByZWdpc3RlciBwal9yYnRyZWVfbm9kZSAqbnVsbCA9IHRyZWUtPm51bGw7CisgICAgCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGlmIChub2RlLT5sZWZ0ICE9IG51bGwpIHsKKyAgICAgICAgZm9yIChub2RlPW5vZGUtPmxlZnQ7IG5vZGUtPnJpZ2h0IT1udWxsOyBub2RlPW5vZGUtPnJpZ2h0KQorCSAgIC8qIHZvaWQgKi87CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVnaXN0ZXIgcGpfcmJ0cmVlX25vZGUgKnRlbXAgPSBub2RlLT5wYXJlbnQ7CisgICAgICAgIHdoaWxlICh0ZW1wIT1udWxsICYmIHRlbXAtPmxlZnQ9PW5vZGUpIHsKKwkgICAgbm9kZSA9IHRlbXA7CisJICAgIHRlbXAgPSB0ZW1wLT5wYXJlbnQ7CisgICAgICAgIH0KKyAgICAgICAgbm9kZSA9IHRlbXA7CisgICAgfSAgICAKKyAgICByZXR1cm4gbm9kZSAhPSBudWxsID8gbm9kZSA6IE5VTEw7Cit9CisKK1BKX0RFRihpbnQpIHBqX3JidHJlZV9pbnNlcnQoIHBqX3JidHJlZSAqdHJlZSwgCisJCQkgICAgICBwal9yYnRyZWVfbm9kZSAqZWxlbWVudCApCit7CisgICAgaW50IHJ2ID0gMDsKKyAgICBwal9yYnRyZWVfbm9kZSAqbm9kZSwgKnBhcmVudCA9IHRyZWUtPm51bGwsIAorCQkgICAqbnVsbCA9IHRyZWUtPm51bGw7CisgICAgcGpfcmJ0cmVlX2NvbXAgKmNvbXAgPSB0cmVlLT5jb21wOworCQorICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBub2RlID0gdHJlZS0+cm9vdDsJCisgICAgd2hpbGUgKG5vZGUgIT0gbnVsbCkgeworICAgICAgICBydiA9ICgqY29tcCkoZWxlbWVudC0+a2V5LCBub2RlLT5rZXkpOworICAgICAgICBpZiAocnYgPT0gMCkgeworCSAgICAvKiBmb3VuZCBtYXRjaCwgaS5lLiBlbnRyeSB3aXRoIGVxdWFsIGtleSBhbHJlYWR5IGV4aXN0ICovCisJICAgIHJldHVybiAtMTsKKwl9ICAgIAorCXBhcmVudCA9IG5vZGU7CisgICAgICAgIG5vZGUgPSBydiA8IDAgPyBub2RlLT5sZWZ0IDogbm9kZS0+cmlnaHQ7CisgICAgfQorCisgICAgZWxlbWVudC0+Y29sb3IgPSBQSl9SQkNPTE9SX1JFRDsKKyAgICBlbGVtZW50LT5sZWZ0ID0gZWxlbWVudC0+cmlnaHQgPSBudWxsOworCisgICAgbm9kZSA9IGVsZW1lbnQ7CisgICAgaWYgKHBhcmVudCAhPSBudWxsKSB7CisgICAgICAgIG5vZGUtPnBhcmVudCA9IHBhcmVudDsKKyAgICAgICAgaWYgKHJ2IDwgMCkKKwkgICBwYXJlbnQtPmxlZnQgPSBub2RlOworICAgICAgICBlbHNlCisJICAgcGFyZW50LT5yaWdodCA9IG5vZGU7CisgICAgICAgIGluc2VydF9maXh1cCggdHJlZSwgbm9kZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHJlZS0+cm9vdCA9IG5vZGU7CisgICAgICAgIG5vZGUtPnBhcmVudCA9IG51bGw7CisgICAgICAgIG5vZGUtPmNvbG9yID0gUEpfUkJDT0xPUl9CTEFDSzsKKyAgICB9CisJCisgICAgKyt0cmVlLT5zaXplOworICAgIHJldHVybiAwOworfQorCisKK1BKX0RFRihwal9yYnRyZWVfbm9kZSopIHBqX3JidHJlZV9maW5kKCBwal9yYnRyZWUgKnRyZWUsCisJCQkJCWNvbnN0IHZvaWQgKmtleSApCit7CisgICAgaW50IHJ2OworICAgIHBqX3JidHJlZV9ub2RlICpub2RlID0gdHJlZS0+cm9vdDsKKyAgICBwal9yYnRyZWVfbm9kZSAqbnVsbCA9IHRyZWUtPm51bGw7CisgICAgcGpfcmJ0cmVlX2NvbXAgKmNvbXAgPSB0cmVlLT5jb21wOworICAgIAorICAgIHdoaWxlIChub2RlICE9IG51bGwpIHsKKyAgICAgICAgcnYgPSAoKmNvbXApKGtleSwgbm9kZS0+a2V5KTsKKyAgICAgICAgaWYgKHJ2ID09IDApCisJICAgIHJldHVybiBub2RlOworICAgICAgICBub2RlID0gcnYgPCAwID8gbm9kZS0+bGVmdCA6IG5vZGUtPnJpZ2h0OworICAgIH0KKyAgICByZXR1cm4gbm9kZSAhPSBudWxsID8gbm9kZSA6IE5VTEw7Cit9CisKK1BKX0RFRihwal9yYnRyZWVfbm9kZSopIHBqX3JidHJlZV9lcmFzZSggcGpfcmJ0cmVlICp0cmVlLAorCQkJCQkgcGpfcmJ0cmVlX25vZGUgKm5vZGUgKQoreworICAgIHBqX3JidHJlZV9ub2RlICpzdWNjOworICAgIHBqX3JidHJlZV9ub2RlICpudWxsID0gdHJlZS0+bnVsbDsKKyAgICBwal9yYnRyZWVfbm9kZSAqY2hpbGQ7CisgICAgcGpfcmJ0cmVlX25vZGUgKnBhcmVudDsKKyAgICAKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgaWYgKG5vZGUtPmxlZnQgPT0gbnVsbCB8fCBub2RlLT5yaWdodCA9PSBudWxsKSB7CisgICAgICAgIHN1Y2MgPSBub2RlOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoc3VjYz1ub2RlLT5yaWdodDsgc3VjYy0+bGVmdCE9bnVsbDsgc3VjYz1zdWNjLT5sZWZ0KQorCSAgIC8qIHZvaWQgKi87CisgICAgfQorCisgICAgY2hpbGQgPSBzdWNjLT5sZWZ0ICE9IG51bGwgPyBzdWNjLT5sZWZ0IDogc3VjYy0+cmlnaHQ7CisgICAgcGFyZW50ID0gc3VjYy0+cGFyZW50OworICAgIGNoaWxkLT5wYXJlbnQgPSBwYXJlbnQ7CisgICAgCisgICAgaWYgKHBhcmVudCAhPSBudWxsKSB7CisJaWYgKHBhcmVudC0+bGVmdCA9PSBzdWNjKQorCSAgICBwYXJlbnQtPmxlZnQgPSBjaGlsZDsKKyAgICAgICAgZWxzZQorCSAgIHBhcmVudC0+cmlnaHQgPSBjaGlsZDsKKyAgICB9IGVsc2UKKyAgICAgICAgdHJlZS0+cm9vdCA9IGNoaWxkOworCisgICAgaWYgKHN1Y2MgIT0gbm9kZSkgeworICAgICAgICBzdWNjLT5wYXJlbnQgPSBub2RlLT5wYXJlbnQ7CisgICAgICAgIHN1Y2MtPmxlZnQgPSBub2RlLT5sZWZ0OworICAgICAgICBzdWNjLT5yaWdodCA9IG5vZGUtPnJpZ2h0OworICAgICAgICBzdWNjLT5jb2xvciA9IG5vZGUtPmNvbG9yOworCisgICAgICAgIHBhcmVudCA9IG5vZGUtPnBhcmVudDsKKyAgICAgICAgaWYgKHBhcmVudCAhPSBudWxsKSB7CisJICAgaWYgKHBhcmVudC0+bGVmdD09bm9kZSkKKwkgICAgICAgIHBhcmVudC0+bGVmdD1zdWNjOworCSAgIGVsc2UKKwkJcGFyZW50LT5yaWdodD1zdWNjOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5sZWZ0ICE9IG51bGwpCisJICAgbm9kZS0+bGVmdC0+cGFyZW50ID0gc3VjYzs7CisgICAgICAgIGlmIChub2RlLT5yaWdodCAhPSBudWxsKQorCSAgICBub2RlLT5yaWdodC0+cGFyZW50ID0gc3VjYzsKKworICAgICAgICBpZiAodHJlZS0+cm9vdCA9PSBub2RlKQorCSAgIHRyZWUtPnJvb3QgPSBzdWNjOworICAgIH0KKworICAgIGlmIChzdWNjLT5jb2xvciA9PSBQSl9SQkNPTE9SX0JMQUNLKSB7CisJaWYgKGNoaWxkICE9IG51bGwpIAorCSAgICBkZWxldGVfZml4dXAodHJlZSwgY2hpbGQpOworICAgICAgICB0cmVlLT5udWxsLT5jb2xvciA9IFBKX1JCQ09MT1JfQkxBQ0s7CisgICAgfQorCisgICAgLS10cmVlLT5zaXplOworICAgIHJldHVybiBub2RlOworfQorCisKK1BKX0RFRih1bnNpZ25lZCkgcGpfcmJ0cmVlX21heF9oZWlnaHQoIHBqX3JidHJlZSAqdHJlZSwKKwkJCQkgICAgICAgcGpfcmJ0cmVlX25vZGUgKm5vZGUgKQoreworICAgIHVuc2lnbmVkIGwsIHI7CisgICAgCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGlmIChub2RlPT1OVUxMKSAKKwlub2RlID0gdHJlZS0+cm9vdDsKKyAgICAKKyAgICBsID0gbm9kZS0+bGVmdCAhPSB0cmVlLT5udWxsID8gcGpfcmJ0cmVlX21heF9oZWlnaHQodHJlZSxub2RlLT5sZWZ0KSsxIDogMDsKKyAgICByID0gbm9kZS0+cmlnaHQgIT0gdHJlZS0+bnVsbCA/IHBqX3JidHJlZV9tYXhfaGVpZ2h0KHRyZWUsbm9kZS0+cmlnaHQpKzEgOiAwOworICAgIHJldHVybiBsID4gciA/IGwgOiByOworfQorCitQSl9ERUYodW5zaWduZWQpIHBqX3JidHJlZV9taW5faGVpZ2h0KCBwal9yYnRyZWUgKnRyZWUsCisJCQkJICAgICAgIHBqX3JidHJlZV9ub2RlICpub2RlICkKK3sKKyAgICB1bnNpZ25lZCBsLCByOworICAgIAorICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBpZiAobm9kZT09TlVMTCkgCisJbm9kZT10cmVlLT5yb290OworICAgIAorICAgIGwgPSAobm9kZS0+bGVmdCAhPSB0cmVlLT5udWxsKSA/IHBqX3JidHJlZV9tYXhfaGVpZ2h0KHRyZWUsbm9kZS0+bGVmdCkrMSA6IDA7CisgICAgciA9IChub2RlLT5yaWdodCAhPSB0cmVlLT5udWxsKSA/IHBqX3JidHJlZV9tYXhfaGVpZ2h0KHRyZWUsbm9kZS0+cmlnaHQpKzEgOiAwOworICAgIHJldHVybiBsID4gciA/IHIgOiBsOworfQorCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX2JzZC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NvY2tfYnNkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRkN2QzOAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX2JzZC5jCkBAIC0wLDAgKzEsODUwIEBACisvKiAkSWQ6IHNvY2tfYnNkLmMgNDUzNyAyMDEzLTA2LTE5IDA2OjQ3OjQzWiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovc29jay5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3NvY2tldC5oPgorI2luY2x1ZGUgPHBqL2FkZHJfcmVzb2x2Lmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai91bmljb2RlLmg+CisKKy8qCisgKiBBZGRyZXNzIGZhbWlsaWVzIGNvbnZlcnNpb24uCisgKiBUaGUgdmFsdWVzIGhlcmUgYXJlIGluZGV4ZWQgYmFzZWQgb24gcGpfYWRkcl9mYW1pbHkuCisgKi8KK2NvbnN0IHBqX3VpbnQxNl90IFBKX0FGX1VOU1BFQwk9IEFGX1VOU1BFQzsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0FGX1VOSVgJPSBBRl9VTklYOworY29uc3QgcGpfdWludDE2X3QgUEpfQUZfSU5FVAk9IEFGX0lORVQ7Citjb25zdCBwal91aW50MTZfdCBQSl9BRl9JTkVUNgk9IEFGX0lORVQ2OworI2lmZGVmIEFGX1BBQ0tFVAorY29uc3QgcGpfdWludDE2X3QgUEpfQUZfUEFDS0VUCT0gQUZfUEFDS0VUOworI2Vsc2UKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0FGX1BBQ0tFVAk9IDB4RkZGRjsKKyNlbmRpZgorI2lmZGVmIEFGX0lSREEKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0FGX0lSREEJPSBBRl9JUkRBOworI2Vsc2UKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0FGX0lSREEJPSAweEZGRkY7CisjZW5kaWYKKworLyoKKyAqIFNvY2tldCB0eXBlcyBjb252ZXJzaW9uLgorICogVGhlIHZhbHVlcyBoZXJlIGFyZSBpbmRleGVkIGJhc2VkIG9uIHBqX3NvY2tfdHlwZQorICovCitjb25zdCBwal91aW50MTZfdCBQSl9TT0NLX1NUUkVBTT0gU09DS19TVFJFQU07Citjb25zdCBwal91aW50MTZfdCBQSl9TT0NLX0RHUkFNCT0gU09DS19ER1JBTTsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPQ0tfUkFXCT0gU09DS19SQVc7Citjb25zdCBwal91aW50MTZfdCBQSl9TT0NLX1JETQk9IFNPQ0tfUkRNOworCisvKgorICogU29ja2V0IGxldmVsIHZhbHVlcy4KKyAqLworY29uc3QgcGpfdWludDE2X3QgUEpfU09MX1NPQ0tFVAk9IFNPTF9TT0NLRVQ7CisjaWZkZWYgU09MX0lQCitjb25zdCBwal91aW50MTZfdCBQSl9TT0xfSVAJPSBTT0xfSVA7CisjZWxpZiAoZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIpIHx8IChkZWZpbmVkKFBKX1dJTjY0KSAmJiBQSl9XSU42NCkgCitjb25zdCBwal91aW50MTZfdCBQSl9TT0xfSVAJPSBJUFBST1RPX0lQOworI2Vsc2UKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9JUAk9IDA7CisjZW5kaWYgLyogU09MX0lQICovCisKKyNpZiBkZWZpbmVkKFNPTF9UQ1ApCitjb25zdCBwal91aW50MTZfdCBQSl9TT0xfVENQCT0gU09MX1RDUDsKKyNlbGlmIGRlZmluZWQoSVBQUk9UT19UQ1ApCitjb25zdCBwal91aW50MTZfdCBQSl9TT0xfVENQCT0gSVBQUk9UT19UQ1A7CisjZWxpZiAoZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIpIHx8IChkZWZpbmVkKFBKX1dJTjY0KSAmJiBQSl9XSU42NCkKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9UQ1AJPSBJUFBST1RPX1RDUDsKKyNlbHNlCitjb25zdCBwal91aW50MTZfdCBQSl9TT0xfVENQCT0gNjsKKyNlbmRpZiAvKiBTT0xfVENQICovCisKKyNpZmRlZiBTT0xfVURQCitjb25zdCBwal91aW50MTZfdCBQSl9TT0xfVURQCT0gU09MX1VEUDsKKyNlbGlmIGRlZmluZWQoSVBQUk9UT19VRFApCitjb25zdCBwal91aW50MTZfdCBQSl9TT0xfVURQCT0gSVBQUk9UT19VRFA7CisjZWxpZiAoZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIpIHx8IChkZWZpbmVkKFBKX1dJTjY0KSAmJiBQSl9XSU42NCkKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9VRFAJPSBJUFBST1RPX1VEUDsKKyNlbHNlCitjb25zdCBwal91aW50MTZfdCBQSl9TT0xfVURQCT0gMTc7CisjZW5kaWYgLyogU09MX1VEUCAqLworCisjaWZkZWYgU09MX0lQVjYKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9JUFY2CT0gU09MX0lQVjY7CisjZWxpZiAoZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIpIHx8IChkZWZpbmVkKFBKX1dJTjY0KSAmJiBQSl9XSU42NCkKKyMgICBpZiBkZWZpbmVkKElQUFJPVE9fSVBWNikgfHwgKF9XSU4zMl9XSU5OVCA+PSAweDA1MDEpCisJY29uc3QgcGpfdWludDE2X3QgUEpfU09MX0lQVjYJPSBJUFBST1RPX0lQVjY7CisjICAgZWxzZQorCWNvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9JUFY2CT0gNDE7CisjICAgZW5kaWYKKyNlbHNlCitjb25zdCBwal91aW50MTZfdCBQSl9TT0xfSVBWNgk9IDQxOworI2VuZGlmIC8qIFNPTF9JUFY2ICovCisKKy8qIElQX1RPUyAqLworI2lmZGVmIElQX1RPUworY29uc3QgcGpfdWludDE2X3QgUEpfSVBfVE9TCT0gSVBfVE9TOworI2Vsc2UKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX1RPUwk9IDE7CisjZW5kaWYKKworCisvKiBUT1Mgc2V0dGluZ3MgKGRlY2xhcmVkIGluIG5ldGluZXQvaXAuaCkgKi8KKyNpZmRlZiBJUFRPU19MT1dERUxBWQorY29uc3QgcGpfdWludDE2X3QgUEpfSVBUT1NfTE9XREVMQVkJPSBJUFRPU19MT1dERUxBWTsKKyNlbHNlCitjb25zdCBwal91aW50MTZfdCBQSl9JUFRPU19MT1dERUxBWQk9IDB4MTA7CisjZW5kaWYKKyNpZmRlZiBJUFRPU19USFJPVUdIUFVUCitjb25zdCBwal91aW50MTZfdCBQSl9JUFRPU19USFJPVUdIUFVUCT0gSVBUT1NfVEhST1VHSFBVVDsKKyNlbHNlCitjb25zdCBwal91aW50MTZfdCBQSl9JUFRPU19USFJPVUdIUFVUCT0gMHgwODsKKyNlbmRpZgorI2lmZGVmIElQVE9TX1JFTElBQklMSVRZCitjb25zdCBwal91aW50MTZfdCBQSl9JUFRPU19SRUxJQUJJTElUWQk9IElQVE9TX1JFTElBQklMSVRZOworI2Vsc2UKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQVE9TX1JFTElBQklMSVRZCT0gMHgwNDsKKyNlbmRpZgorI2lmZGVmIElQVE9TX01JTkNPU1QKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQVE9TX01JTkNPU1QJPSBJUFRPU19NSU5DT1NUOworI2Vsc2UKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQVE9TX01JTkNPU1QJPSAweDAyOworI2VuZGlmCisKKworLyogb3B0bmFtZSB2YWx1ZXMuICovCitjb25zdCBwal91aW50MTZfdCBQSl9TT19UWVBFICAgID0gU09fVFlQRTsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPX1JDVkJVRiAgPSBTT19SQ1ZCVUY7Citjb25zdCBwal91aW50MTZfdCBQSl9TT19TTkRCVUYgID0gU09fU05EQlVGOworY29uc3QgcGpfdWludDE2X3QgUEpfVENQX05PREVMQVk9IFRDUF9OT0RFTEFZOworY29uc3QgcGpfdWludDE2X3QgUEpfU09fUkVVU0VBRERSPSBTT19SRVVTRUFERFI7CisjaWZkZWYgU09fTk9TSUdQSVBFCitjb25zdCBwal91aW50MTZfdCBQSl9TT19OT1NJR1BJUEUgPSBTT19OT1NJR1BJUEU7CisjZWxzZQorY29uc3QgcGpfdWludDE2X3QgUEpfU09fTk9TSUdQSVBFID0gMHhGRkZGOworI2VuZGlmCisjaWYgZGVmaW5lZChTT19QUklPUklUWSkKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPX1BSSU9SSVRZID0gU09fUFJJT1JJVFk7CisjZWxzZQorLyogVGhpcyBpcyBmcm9tIExpbnV4LCBZTU1WICovCitjb25zdCBwal91aW50MTZfdCBQSl9TT19QUklPUklUWSA9IDEyOworI2VuZGlmCisKKy8qIE11bHRpY2FzdGluZyBpcyBub3Qgc3VwcG9ydGVkIGUuZy4gaW4gUG9ja2V0UEMgMjAwMyBTREsgKi8KKyNpZmRlZiBJUF9NVUxUSUNBU1RfSUYKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX01VTFRJQ0FTVF9JRiAgICA9IElQX01VTFRJQ0FTVF9JRjsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX01VTFRJQ0FTVF9UVEwgICA9IElQX01VTFRJQ0FTVF9UVEw7Citjb25zdCBwal91aW50MTZfdCBQSl9JUF9NVUxUSUNBU1RfTE9PUCAgPSBJUF9NVUxUSUNBU1RfTE9PUDsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX0FERF9NRU1CRVJTSElQICA9IElQX0FERF9NRU1CRVJTSElQOworY29uc3QgcGpfdWludDE2X3QgUEpfSVBfRFJPUF9NRU1CRVJTSElQID0gSVBfRFJPUF9NRU1CRVJTSElQOworI2Vsc2UKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX01VTFRJQ0FTVF9JRiAgICA9IDB4RkZGRjsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX01VTFRJQ0FTVF9UVEwgICA9IDB4RkZGRjsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX01VTFRJQ0FTVF9MT09QICA9IDB4RkZGRjsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX0FERF9NRU1CRVJTSElQICA9IDB4RkZGRjsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX0RST1BfTUVNQkVSU0hJUCA9IDB4RkZGRjsKKyNlbmRpZgorCisvKiByZWN2KCkgYW5kIHNlbmQoKSBmbGFncyAqLworY29uc3QgaW50IFBKX01TR19PT0IJCT0gTVNHX09PQjsKK2NvbnN0IGludCBQSl9NU0dfUEVFSwkJPSBNU0dfUEVFSzsKK2NvbnN0IGludCBQSl9NU0dfRE9OVFJPVVRFCT0gTVNHX0RPTlRST1VURTsKKworCisjaWYgMAorc3RhdGljIHZvaWQgQ0hFQ0tfQUREUl9MRU4oY29uc3QgcGpfc29ja2FkZHIgKmFkZHIsIGludCBsZW4pCit7CisgICAgcGpfc29ja2FkZHIgKmEgPSAocGpfc29ja2FkZHIqKWFkZHI7CisgICAgcGpfYXNzZXJ0KChhLT5hZGRyLnNhX2ZhbWlseT09UEpfQUZfSU5FVCAmJiBsZW49PXNpemVvZihwal9zb2NrYWRkcl9pbikpIHx8CisJICAgICAgKGEtPmFkZHIuc2FfZmFtaWx5PT1QSl9BRl9JTkVUNiAmJiBsZW49PXNpemVvZihwal9zb2NrYWRkcl9pbjYpKSk7CisKK30KKyNlbHNlCisjZGVmaW5lIENIRUNLX0FERFJfTEVOKGFkZHIsbGVuKQorI2VuZGlmCisKKy8qCisgKiBDb252ZXJ0IDE2LWJpdCB2YWx1ZSBmcm9tIG5ldHdvcmsgYnl0ZSBvcmRlciB0byBob3N0IGJ5dGUgb3JkZXIuCisgKi8KK1BKX0RFRihwal91aW50MTZfdCkgcGpfbnRvaHMocGpfdWludDE2X3QgbmV0c2hvcnQpCit7CisgICAgcmV0dXJuIG50b2hzKG5ldHNob3J0KTsKK30KKworLyoKKyAqIENvbnZlcnQgMTYtYml0IHZhbHVlIGZyb20gaG9zdCBieXRlIG9yZGVyIHRvIG5ldHdvcmsgYnl0ZSBvcmRlci4KKyAqLworUEpfREVGKHBqX3VpbnQxNl90KSBwal9odG9ucyhwal91aW50MTZfdCBob3N0c2hvcnQpCit7CisgICAgcmV0dXJuIGh0b25zKGhvc3RzaG9ydCk7Cit9CisKKy8qCisgKiBDb252ZXJ0IDMyLWJpdCB2YWx1ZSBmcm9tIG5ldHdvcmsgYnl0ZSBvcmRlciB0byBob3N0IGJ5dGUgb3JkZXIuCisgKi8KK1BKX0RFRihwal91aW50MzJfdCkgcGpfbnRvaGwocGpfdWludDMyX3QgbmV0bG9uZykKK3sKKyAgICByZXR1cm4gbnRvaGwobmV0bG9uZyk7Cit9CisKKy8qCisgKiBDb252ZXJ0IDMyLWJpdCB2YWx1ZSBmcm9tIGhvc3QgYnl0ZSBvcmRlciB0byBuZXR3b3JrIGJ5dGUgb3JkZXIuCisgKi8KK1BKX0RFRihwal91aW50MzJfdCkgcGpfaHRvbmwocGpfdWludDMyX3QgaG9zdGxvbmcpCit7CisgICAgcmV0dXJuIGh0b25sKGhvc3Rsb25nKTsKK30KKworLyoKKyAqIENvbnZlcnQgYW4gSW50ZXJuZXQgaG9zdCBhZGRyZXNzIGdpdmVuIGluIG5ldHdvcmsgYnl0ZSBvcmRlcgorICogdG8gc3RyaW5nIGluIHN0YW5kYXJkIG51bWJlcnMgYW5kIGRvdHMgbm90YXRpb24uCisgKi8KK1BKX0RFRihjaGFyKikgcGpfaW5ldF9udG9hKHBqX2luX2FkZHIgaW5hZGRyKQoreworI2lmICFkZWZpbmVkKFBKX0xJTlVYKSAmJiAhZGVmaW5lZChQSl9MSU5VWF9LRVJORUwpCisgICAgcmV0dXJuIGluZXRfbnRvYSgqKHN0cnVjdCBpbl9hZGRyKikmaW5hZGRyKTsKKyNlbHNlCisgICAgc3RydWN0IGluX2FkZHIgYWRkcjsKKyAgICBhZGRyLnNfYWRkciA9IGluYWRkci5zX2FkZHI7CisgICAgcmV0dXJuIGluZXRfbnRvYShhZGRyKTsKKyNlbmRpZgorfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyB0aGUgSW50ZXJuZXQgaG9zdCBhZGRyZXNzIGNwIGZyb20gdGhlIHN0YW5kYXJkCisgKiBudW1iZXJzLWFuZC1kb3RzIG5vdGF0aW9uIGludG8gYmluYXJ5IGRhdGEgYW5kIHN0b3JlcyBpdCBpbiB0aGUgc3RydWN0dXJlCisgKiB0aGF0IGlucCBwb2ludHMgdG8uIAorICovCitQSl9ERUYoaW50KSBwal9pbmV0X2F0b24oY29uc3QgcGpfc3RyX3QgKmNwLCBzdHJ1Y3QgcGpfaW5fYWRkciAqaW5wKQoreworICAgIGNoYXIgdGVtcGFkZHJbUEpfSU5FVF9BRERSU1RSTEVOXTsKKworICAgIC8qIEluaXRpYWxpemUgb3V0cHV0IHdpdGggUEpfSU5BRERSX05PTkUuCisgICAgICogU29tZSBhcHBzIHJlbGllcyBvbiB0aGlzIGluc3RlYWQgb2YgdGhlIHJldHVybiB2YWx1ZQorICAgICAqIChhbmQgYW55d2F5IHRoZSByZXR1cm4gdmFsdWUgaXMgcXVpdGUgY29uZnVzaW5nISkKKyAgICAgKi8KKyAgICBpbnAtPnNfYWRkciA9IFBKX0lOQUREUl9OT05FOworCisgICAgLyogQ2F1dGlvbjoKKyAgICAgKgl0aGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIGNhbGxlZCB3aXRoIGNwLT5zbGVuID49IDE2CisgICAgICogIChpLmUuIHdoZW4gY2FsbGVkIHdpdGggaG9zdG5hbWUgdG8gY2hlY2sgaWYgaXQncyBhbiBJUCBhZGRyKS4KKyAgICAgKi8KKyAgICBQSl9BU1NFUlRfUkVUVVJOKGNwICYmIGNwLT5zbGVuICYmIGlucCwgMCk7CisgICAgaWYgKGNwLT5zbGVuID49IFBKX0lORVRfQUREUlNUUkxFTikgeworCXJldHVybiAwOworICAgIH0KKworICAgIHBqX21lbWNweSh0ZW1wYWRkciwgY3AtPnB0ciwgY3AtPnNsZW4pOworICAgIHRlbXBhZGRyW2NwLT5zbGVuXSA9ICdcMCc7CisKKyNpZiBkZWZpbmVkKFBKX1NPQ0tfSEFTX0lORVRfQVRPTikgJiYgUEpfU09DS19IQVNfSU5FVF9BVE9OICE9IDAKKyAgICByZXR1cm4gaW5ldF9hdG9uKHRlbXBhZGRyLCAoc3RydWN0IGluX2FkZHIqKWlucCk7CisjZWxzZQorICAgIGlucC0+c19hZGRyID0gaW5ldF9hZGRyKHRlbXBhZGRyKTsKKyAgICByZXR1cm4gaW5wLT5zX2FkZHIgPT0gUEpfSU5BRERSX05PTkUgPyAwIDogMTsKKyNlbmRpZgorfQorCisvKgorICogQ29udmVydCB0ZXh0IHRvIElQdjQvSVB2NiBhZGRyZXNzLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2luZXRfcHRvbihpbnQgYWYsIGNvbnN0IHBqX3N0cl90ICpzcmMsIHZvaWQgKmRzdCkKK3sKKyAgICBjaGFyIHRlbXBhZGRyW1BKX0lORVQ2X0FERFJTVFJMRU5dOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZj09UEpfQUZfSU5FVCB8fCBhZj09UEpfQUZfSU5FVDYsIFBKX0VBRk5PVFNVUCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzcmMgJiYgc3JjLT5zbGVuICYmIGRzdCwgUEpfRUlOVkFMKTsKKworICAgIC8qIEluaXRpYWxpemUgb3V0cHV0IHdpdGggUEpfSU5fQUREUl9OT05FIGZvciBJUHY0ICh0byBiZSAKKyAgICAgKiBjb21wYXRpYmxlIHdpdGggcGpfaW5ldF9hdG9uKCkKKyAgICAgKi8KKyAgICBpZiAoYWY9PVBKX0FGX0lORVQpIHsKKwkoKHBqX2luX2FkZHIqKWRzdCktPnNfYWRkciA9IFBKX0lOQUREUl9OT05FOworICAgIH0KKworICAgIC8qIENhdXRpb246CisgICAgICoJdGhpcyBmdW5jdGlvbiBtaWdodCBiZSBjYWxsZWQgd2l0aCBjcC0+c2xlbiA+PSA0NgorICAgICAqICAoaS5lLiB3aGVuIGNhbGxlZCB3aXRoIGhvc3RuYW1lIHRvIGNoZWNrIGlmIGl0J3MgYW4gSVAgYWRkcikuCisgICAgICovCisgICAgaWYgKHNyYy0+c2xlbiA+PSBQSl9JTkVUNl9BRERSU1RSTEVOKSB7CisJcmV0dXJuIFBKX0VOQU1FVE9PTE9ORzsKKyAgICB9CisKKyAgICBwal9tZW1jcHkodGVtcGFkZHIsIHNyYy0+cHRyLCBzcmMtPnNsZW4pOworICAgIHRlbXBhZGRyW3NyYy0+c2xlbl0gPSAnXDAnOworCisjaWYgZGVmaW5lZChQSl9TT0NLX0hBU19JTkVUX1BUT04pICYmIFBKX1NPQ0tfSEFTX0lORVRfUFRPTiAhPSAwCisgICAgLyoKKyAgICAgKiBJbXBsZW1lbnRhdGlvbiB1c2luZyBpbmV0X3B0b24oKQorICAgICAqLworICAgIGlmIChpbmV0X3B0b24oYWYsIHRlbXBhZGRyLCBkc3QpICE9IDEpIHsKKwlwal9zdGF0dXNfdCBzdGF0dXMgPSBwal9nZXRfbmV0b3NfZXJyb3IoKTsKKwlpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisJICAgIHN0YXR1cyA9IFBKX0VVTktOT1dOOworCisJcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKworI2VsaWYgZGVmaW5lZChQSl9XSU4zMikgfHwgZGVmaW5lZChQSl9XSU42NCkgfHwgZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkKKyAgICAvKgorICAgICAqIEltcGxlbWVudGF0aW9uIG9uIFdpbmRvd3MsIHVzaW5nIFdTQVN0cmluZ1RvQWRkcmVzcygpLgorICAgICAqIFNob3VsZCBhbHNvIHdvcmsgb24gVW5pY29kZSBzeXN0ZW1zLgorICAgICAqLworICAgIHsKKwlQSl9ERUNMX1VOSUNPREVfVEVNUF9CVUYod3RlbXBhZGRyLFBKX0lORVQ2X0FERFJTVFJMRU4pCisJcGpfc29ja2FkZHIgc29ja19hZGRyOworCWludCBhZGRyX2xlbiA9IHNpemVvZihzb2NrX2FkZHIpOworCWludCByYzsKKworCXNvY2tfYWRkci5hZGRyLnNhX2ZhbWlseSA9IChwal91aW50MTZfdClhZjsKKwlyYyA9IFdTQVN0cmluZ1RvQWRkcmVzcygKKwkJUEpfU1RSSU5HX1RPX05BVElWRSh0ZW1wYWRkcix3dGVtcGFkZHIsc2l6ZW9mKHd0ZW1wYWRkcikpLCAKKwkJYWYsIE5VTEwsIChMUFNPQ0tBRERSKSZzb2NrX2FkZHIsICZhZGRyX2xlbik7CisJaWYgKHJjICE9IDApIHsKKwkgICAgLyogSWYgeW91IGdldCByYyAxMzAwMjIgSW52YWxpZCBhcmd1bWVudCAoV1NBRUlOVkFMKSB3aXRoIElQdjYsCisJICAgICAqIGNoZWNrIHRoYXQgeW91IGhhdmUgSVB2NiBlbmFibGVkIChpbnN0YWxsIGl0IGluIHRoZSBuZXR3b3JrCisJICAgICAqIGFkYXB0ZXIpLgorCSAgICAgKi8KKwkgICAgcGpfc3RhdHVzX3Qgc3RhdHVzID0gcGpfZ2V0X25ldG9zX2Vycm9yKCk7CisJICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykKKwkJc3RhdHVzID0gUEpfRVVOS05PV047CisKKwkgICAgcmV0dXJuIHN0YXR1czsKKwl9CisKKwlpZiAoc29ja19hZGRyLmFkZHIuc2FfZmFtaWx5ID09IFBKX0FGX0lORVQpIHsKKwkgICAgcGpfbWVtY3B5KGRzdCwgJnNvY2tfYWRkci5pcHY0LnNpbl9hZGRyLCA0KTsKKwkgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisJfSBlbHNlIGlmIChzb2NrX2FkZHIuYWRkci5zYV9mYW1pbHkgPT0gUEpfQUZfSU5FVDYpIHsKKwkgICAgcGpfbWVtY3B5KGRzdCwgJnNvY2tfYWRkci5pcHY2LnNpbjZfYWRkciwgMTYpOworCSAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKwl9IGVsc2UgeworCSAgICBwal9hc3NlcnQoISJTaG91bGRuJ3QgaGFwcGVuIik7CisJICAgIHJldHVybiBQSl9FQlVHOworCX0KKyAgICB9CisjZWxpZiAhZGVmaW5lZChQSl9IQVNfSVBWNikgfHwgUEpfSEFTX0lQVjY9PTAKKyAgICAvKiBJUHY2IHN1cHBvcnQgaXMgZGlzYWJsZWQsIGp1c3QgcmV0dXJuIGVycm9yIHdpdGhvdXQgcmFpc2luZyBhc3NlcnRpb24gKi8KKyAgICByZXR1cm4gUEpfRUlQVjZOT1RTVVA7CisjZWxzZQorICAgIHBqX2Fzc2VydCghIk5vdCBzdXBwb3J0ZWQiKTsKKyAgICByZXR1cm4gUEpfRUlQVjZOT1RTVVA7CisjZW5kaWYKK30KKworLyoKKyAqIENvbnZlcnQgSVB2NC9JUHY2IGFkZHJlc3MgdG8gdGV4dC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9pbmV0X250b3AoaW50IGFmLCBjb25zdCB2b2lkICpzcmMsCisJCQkJIGNoYXIgKmRzdCwgaW50IHNpemUpCisKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNyYyAmJiBkc3QgJiYgc2l6ZSwgUEpfRUlOVkFMKTsKKworICAgICpkc3QgPSAnXDAnOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZj09UEpfQUZfSU5FVCB8fCBhZj09UEpfQUZfSU5FVDYsIFBKX0VBRk5PVFNVUCk7CisKKyNpZiBkZWZpbmVkKFBKX1NPQ0tfSEFTX0lORVRfTlRPUCkgJiYgUEpfU09DS19IQVNfSU5FVF9OVE9QICE9IDAKKyAgICAvKgorICAgICAqIEltcGxlbWVudGF0aW9uIHVzaW5nIGluZXRfbnRvcCgpCisgICAgICovCisgICAgaWYgKGluZXRfbnRvcChhZiwgc3JjLCBkc3QsIHNpemUpID09IE5VTEwpIHsKKwlwal9zdGF0dXNfdCBzdGF0dXMgPSBwal9nZXRfbmV0b3NfZXJyb3IoKTsKKwlpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisJICAgIHN0YXR1cyA9IFBKX0VVTktOT1dOOworCisJcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKworI2VsaWYgZGVmaW5lZChQSl9XSU4zMikgfHwgZGVmaW5lZChQSl9XSU42NCkgfHwgZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkKKyAgICAvKgorICAgICAqIEltcGxlbWVudGF0aW9uIG9uIFdpbmRvd3MsIHVzaW5nIFdTQUFkZHJlc3NUb1N0cmluZygpLgorICAgICAqIFNob3VsZCBhbHNvIHdvcmsgb24gVW5pY29kZSBzeXN0ZW1zLgorICAgICAqLworICAgIHsKKwlQSl9ERUNMX1VOSUNPREVfVEVNUF9CVUYod3RlbXBhZGRyLFBKX0lORVQ2X0FERFJTVFJMRU4pCisJcGpfc29ja2FkZHIgc29ja19hZGRyOworCURXT1JEIGFkZHJfbGVuLCBhZGRyX3N0cl9sZW47CisJaW50IHJjOworCisJcGpfYnplcm8oJnNvY2tfYWRkciwgc2l6ZW9mKHNvY2tfYWRkcikpOworCXNvY2tfYWRkci5hZGRyLnNhX2ZhbWlseSA9IChwal91aW50MTZfdClhZjsKKwlpZiAoYWYgPT0gUEpfQUZfSU5FVCkgeworCSAgICBpZiAoc2l6ZSA8IFBKX0lORVRfQUREUlNUUkxFTikKKwkJcmV0dXJuIFBKX0VUT09TTUFMTDsKKwkgICAgcGpfbWVtY3B5KCZzb2NrX2FkZHIuaXB2NC5zaW5fYWRkciwgc3JjLCA0KTsKKwkgICAgYWRkcl9sZW4gPSBzaXplb2YocGpfc29ja2FkZHJfaW4pOworCSAgICBhZGRyX3N0cl9sZW4gPSBQSl9JTkVUX0FERFJTVFJMRU47CisJfSBlbHNlIGlmIChhZiA9PSBQSl9BRl9JTkVUNikgeworCSAgICBpZiAoc2l6ZSA8IFBKX0lORVQ2X0FERFJTVFJMRU4pCisJCXJldHVybiBQSl9FVE9PU01BTEw7CisJICAgIHBqX21lbWNweSgmc29ja19hZGRyLmlwdjYuc2luNl9hZGRyLCBzcmMsIDE2KTsKKwkgICAgYWRkcl9sZW4gPSBzaXplb2YocGpfc29ja2FkZHJfaW42KTsKKwkgICAgYWRkcl9zdHJfbGVuID0gUEpfSU5FVDZfQUREUlNUUkxFTjsKKwl9IGVsc2UgeworCSAgICBwal9hc3NlcnQoISJVbnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpOworCSAgICByZXR1cm4gUEpfRUFGTk9UU1VQOworCX0KKworI2lmIFBKX05BVElWRV9TVFJJTkdfSVNfVU5JQ09ERQorCXJjID0gV1NBQWRkcmVzc1RvU3RyaW5nKChMUFNPQ0tBRERSKSZzb2NrX2FkZHIsIGFkZHJfbGVuLAorCQkJCU5VTEwsIHd0ZW1wYWRkciwgJmFkZHJfc3RyX2xlbik7CisJaWYgKHJjID09IDApIHsKKwkgICAgcGpfdW5pY29kZV90b19hbnNpKHd0ZW1wYWRkciwgd2NzbGVuKHd0ZW1wYWRkciksIGRzdCwgc2l6ZSk7CisJfQorI2Vsc2UKKwlyYyA9IFdTQUFkZHJlc3NUb1N0cmluZygoTFBTT0NLQUREUikmc29ja19hZGRyLCBhZGRyX2xlbiwKKwkJCQlOVUxMLCBkc3QsICZhZGRyX3N0cl9sZW4pOworI2VuZGlmCisKKwlpZiAocmMgIT0gMCkgeworCSAgICBwal9zdGF0dXNfdCBzdGF0dXMgPSBwal9nZXRfbmV0b3NfZXJyb3IoKTsKKwkgICAgaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKQorCQlzdGF0dXMgPSBQSl9FVU5LTk9XTjsKKworCSAgICByZXR1cm4gc3RhdHVzOworCX0KKworCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0KKworI2VsaWYgIWRlZmluZWQoUEpfSEFTX0lQVjYpIHx8IFBKX0hBU19JUFY2PT0wCisgICAgLyogSVB2NiBzdXBwb3J0IGlzIGRpc2FibGVkLCBqdXN0IHJldHVybiBlcnJvciB3aXRob3V0IHJhaXNpbmcgYXNzZXJ0aW9uICovCisgICAgcmV0dXJuIFBKX0VJUFY2Tk9UU1VQOworI2Vsc2UKKyAgICBwal9hc3NlcnQoISJOb3Qgc3VwcG9ydGVkIik7CisgICAgcmV0dXJuIFBKX0VJUFY2Tk9UU1VQOworI2VuZGlmCit9CisKKy8qCisgKiBHZXQgaG9zdG5hbWUuCisgKi8KK1BKX0RFRihjb25zdCBwal9zdHJfdCopIHBqX2dldGhvc3RuYW1lKHZvaWQpCit7CisgICAgc3RhdGljIGNoYXIgYnVmW1BKX01BWF9IT1NUTkFNRV07CisgICAgc3RhdGljIHBqX3N0cl90IGhvc3RuYW1lOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGlmIChob3N0bmFtZS5wdHIgPT0gTlVMTCkgeworCWhvc3RuYW1lLnB0ciA9IGJ1ZjsKKwlpZiAoZ2V0aG9zdG5hbWUoYnVmLCBzaXplb2YoYnVmKSkgIT0gMCkgeworCSAgICBob3N0bmFtZS5wdHJbMF0gPSAnXDAnOworCSAgICBob3N0bmFtZS5zbGVuID0gMDsKKwl9IGVsc2UgeworICAgICAgICAgICAgaG9zdG5hbWUuc2xlbiA9IHN0cmxlbihidWYpOworCX0KKyAgICB9CisgICAgcmV0dXJuICZob3N0bmFtZTsKK30KKworI2lmIGRlZmluZWQoUEpfV0lOMzIpIHx8IGRlZmluZWQoUEpfV0lONjQpCisvKgorICogQ3JlYXRlIG5ldyBzb2NrZXQvZW5kcG9pbnQgZm9yIGNvbW11bmljYXRpb24gYW5kIHJldHVybnMgYSBkZXNjcmlwdG9yLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc29ja2V0KGludCBhZiwgCisJCQkJICAgaW50IHR5cGUsIAorCQkJCSAgIGludCBwcm90bywKKwkJCQkgICBwal9zb2NrX3QgKnNvY2spCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIC8qIFNhbml0eSBjaGVja3MuICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihzb2NrIT1OVUxMLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oKFNPQ0tFVClQSl9JTlZBTElEX1NPQ0tFVD09SU5WQUxJRF9TT0NLRVQsIAorICAgICAgICAgICAgICAgICAgICAgKCpzb2NrPVBKX0lOVkFMSURfU09DS0VULCBQSl9FSU5WQUwpKTsKKworICAgICpzb2NrID0gV1NBU29ja2V0KGFmLCB0eXBlLCBwcm90bywgTlVMTCwgMCwgV1NBX0ZMQUdfT1ZFUkxBUFBFRCk7CisKKyAgICBpZiAoKnNvY2sgPT0gUEpfSU5WQUxJRF9TT0NLRVQpIAorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocGpfZ2V0X25hdGl2ZV9uZXRvc19lcnJvcigpKTsKKyAgICAKKyNpZiBQSl9TT0NLX0RJU0FCTEVfV1NBRUNPTk5SRVNFVCAmJiBcCisgICAgKCFkZWZpbmVkKFBKX1dJTjMyX1dJTkNFKSB8fCBQSl9XSU4zMl9XSU5DRT09MCkKKworI2lmbmRlZiBTSU9fVURQX0NPTk5SRVNFVAorICAgICNkZWZpbmUgU0lPX1VEUF9DT05OUkVTRVQgX1dTQUlPVyhJT0NfVkVORE9SLDEyKQorI2VuZGlmCisKKyAgICAvKiBEaXNhYmxlIFdTQUVDT05OUkVTRVQgZm9yIFVEUC4KKyAgICAgKiBTZWUgaHR0cHM6Ly90cmFjLnBqc2lwLm9yZy9yZXBvcy90aWNrZXQvMTE5NworICAgICAqLworICAgIGlmICh0eXBlPT1QSl9TT0NLX0RHUkFNKSB7CisJRFdPUkQgZHdCeXRlc1JldHVybmVkID0gMDsKKwlCT09MIGJOZXdCZWhhdmlvciA9IEZBTFNFOworCURXT1JEIHJjOworCisJcmMgPSBXU0FJb2N0bCgqc29jaywgU0lPX1VEUF9DT05OUkVTRVQsCisJCSAgICAgICZiTmV3QmVoYXZpb3IsIHNpemVvZihiTmV3QmVoYXZpb3IpLAorCQkgICAgICBOVUxMLCAwLCAmZHdCeXRlc1JldHVybmVkLAorCQkgICAgICBOVUxMLCBOVUxMKTsKKworCWlmIChyYz09U09DS0VUX0VSUk9SKSB7CisJICAgIC8vIElnbm9yZWQuLgorCX0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisjZWxzZQorLyoKKyAqIENyZWF0ZSBuZXcgc29ja2V0L2VuZHBvaW50IGZvciBjb21tdW5pY2F0aW9uIGFuZCByZXR1cm5zIGEgZGVzY3JpcHRvci4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NvY2tldChpbnQgYWYsIAorCQkJCSAgIGludCB0eXBlLCAKKwkJCQkgICBpbnQgcHJvdG8sIAorCQkJCSAgIHBqX3NvY2tfdCAqc29jaykKK3sKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvKiBTYW5pdHkgY2hlY2tzLiAqLworICAgIFBKX0FTU0VSVF9SRVRVUk4oc29jayE9TlVMTCwgUEpfRUlOVkFMKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKFBKX0lOVkFMSURfU09DS0VUPT0tMSwgCisgICAgICAgICAgICAgICAgICAgICAoKnNvY2s9UEpfSU5WQUxJRF9TT0NLRVQsIFBKX0VJTlZBTCkpOworICAgIAorICAgICpzb2NrID0gc29ja2V0KGFmLCB0eXBlLCBwcm90byk7CisgICAgaWYgKCpzb2NrID09IFBKX0lOVkFMSURfU09DS0VUKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocGpfZ2V0X25hdGl2ZV9uZXRvc19lcnJvcigpKTsKKyAgICBlbHNlIHsKKwlwal9pbnQzMl90IHZhbCA9IDE7CisJaWYgKHR5cGUgPT0gcGpfU09DS19TVFJFQU0oKSkgeworCSAgICBwal9zb2NrX3NldHNvY2tvcHQoKnNvY2ssIHBqX1NPTF9TT0NLRVQoKSwgcGpfU09fTk9TSUdQSVBFKCksCisJCQkgICAgICAgJnZhbCwgc2l6ZW9mKHZhbCkpOworCX0KKyNpZiBkZWZpbmVkKFBKX0lQSE9ORV9PU19IQVNfTVVMVElUQVNLSU5HX1NVUFBPUlQpICYmIFwKKyAgICBQSl9JUEhPTkVfT1NfSEFTX01VTFRJVEFTS0lOR19TVVBQT1JUIT0wCisJaWYgKHR5cGUgPT0gcGpfU09DS19ER1JBTSgpKSB7CisJICAgIHBqX3NvY2tfc2V0c29ja29wdCgqc29jaywgcGpfU09MX1NPQ0tFVCgpLCBTT19OT1NJR1BJUEUsIAorCQkJICAgICAgICZ2YWwsIHNpemVvZih2YWwpKTsKKwl9CisjZW5kaWYKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9Cit9CisjZW5kaWYKKworLyoKKyAqIEJpbmQgc29ja2V0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfYmluZCggcGpfc29ja190IHNvY2ssIAorCQkJCSAgY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkgIGludCBsZW4pCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oYWRkciAmJiBsZW4gPj0gKGludClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSwgUEpfRUlOVkFMKTsKKworICAgIENIRUNLX0FERFJfTEVOKGFkZHIsIGxlbik7CisKKyAgICBpZiAoYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRyKilhZGRyLCBsZW4pICE9IDApCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX25ldG9zX2Vycm9yKCkpOworICAgIGVsc2UKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogQmluZCBzb2NrZXQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19iaW5kX2luKCBwal9zb2NrX3Qgc29jaywgCisJCQkJICAgICBwal91aW50MzJfdCBhZGRyMzIsCisJCQkJICAgICBwal91aW50MTZfdCBwb3J0KQoreworICAgIHBqX3NvY2thZGRyX2luIGFkZHI7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgUEpfU09DS0FERFJfU0VUX0xFTigmYWRkciwgc2l6ZW9mKHBqX3NvY2thZGRyX2luKSk7CisgICAgYWRkci5zaW5fZmFtaWx5ID0gUEpfQUZfSU5FVDsKKyAgICBwal9iemVybyhhZGRyLnNpbl96ZXJvLCBzaXplb2YoYWRkci5zaW5femVybykpOworICAgIGFkZHIuc2luX2FkZHIuc19hZGRyID0gcGpfaHRvbmwoYWRkcjMyKTsKKyAgICBhZGRyLnNpbl9wb3J0ID0gcGpfaHRvbnMocG9ydCk7CisKKyAgICByZXR1cm4gcGpfc29ja19iaW5kKHNvY2ssICZhZGRyLCBzaXplb2YocGpfc29ja2FkZHJfaW4pKTsKK30KKworCisvKgorICogQ2xvc2Ugc29ja2V0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfY2xvc2UocGpfc29ja190IHNvY2spCit7CisgICAgaW50IHJjOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyNpZiBkZWZpbmVkKFBKX1dJTjMyKSAmJiBQSl9XSU4zMiE9MCB8fCBcCisgICAgZGVmaW5lZChQSl9XSU42NCkgJiYgUEpfV0lONjQgIT0gMCB8fCBcCisgICAgZGVmaW5lZChQSl9XSU4zMl9XSU5DRSkgJiYgUEpfV0lOMzJfV0lOQ0UhPTAKKyAgICByYyA9IGNsb3Nlc29ja2V0KHNvY2spOworI2Vsc2UKKyAgICByYyA9IGNsb3NlKHNvY2spOworI2VuZGlmCisKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHBqX2dldF9uYXRpdmVfbmV0b3NfZXJyb3IoKSk7CisgICAgZWxzZQorCXJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogR2V0IHJlbW90ZSdzIG5hbWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19nZXRwZWVybmFtZSggcGpfc29ja190IHNvY2ssCisJCQkJCSBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCQkgaW50ICpuYW1lbGVuKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgaWYgKGdldHBlZXJuYW1lKHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIqKWFkZHIsIChzb2NrbGVuX3QqKW5hbWVsZW4pICE9IDApCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX25ldG9zX2Vycm9yKCkpOworICAgIGVsc2UgeworCVBKX1NPQ0tBRERSX1JFU0VUX0xFTihhZGRyKTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9Cit9CisKKy8qCisgKiBHZXQgc29ja2V0IG5hbWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19nZXRzb2NrbmFtZSggcGpfc29ja190IHNvY2ssCisJCQkJCSBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCQkgaW50ICpuYW1lbGVuKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgaWYgKGdldHNvY2tuYW1lKHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIqKWFkZHIsIChzb2NrbGVuX3QqKW5hbWVsZW4pICE9IDApCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX25ldG9zX2Vycm9yKCkpOworICAgIGVsc2UgeworCVBKX1NPQ0tBRERSX1JFU0VUX0xFTihhZGRyKTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9Cit9CisKKy8qCisgKiBTZW5kIGRhdGEKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NlbmQocGpfc29ja190IHNvY2ssCisJCQkJIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCQkgcGpfc3NpemVfdCAqbGVuLAorCQkJCSB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4obGVuLCBQSl9FSU5WQUwpOworCisjaWZkZWYgTVNHX05PU0lHTkFMCisgICAgLyogU3VwcHJlc3MgU0lHUElQRS4gU2VlIGh0dHBzOi8vdHJhYy5wanNpcC5vcmcvcmVwb3MvdGlja2V0LzE1MzggKi8KKyAgICBmbGFncyB8PSBNU0dfTk9TSUdOQUw7CisjZW5kaWYKKworICAgICpsZW4gPSBzZW5kKHNvY2ssIChjb25zdCBjaGFyKilidWYsIChpbnQpKCpsZW4pLCBmbGFncyk7CisKKyAgICBpZiAoKmxlbiA8IDApCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX25ldG9zX2Vycm9yKCkpOworICAgIGVsc2UKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogU2VuZCBkYXRhLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2VuZHRvKHBqX3NvY2tfdCBzb2NrLAorCQkJCSAgIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCQkgICBwal9zc2l6ZV90ICpsZW4sCisJCQkJICAgdW5zaWduZWQgZmxhZ3MsCisJCQkJICAgY29uc3QgcGpfc29ja2FkZHJfdCAqdG8sCisJCQkJICAgaW50IHRvbGVuKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihsZW4sIFBKX0VJTlZBTCk7CisgICAgCisgICAgQ0hFQ0tfQUREUl9MRU4odG8sIHRvbGVuKTsKKworICAgICpsZW4gPSBzZW5kdG8oc29jaywgKGNvbnN0IGNoYXIqKWJ1ZiwgKGludCkoKmxlbiksIGZsYWdzLCAKKwkJICAoY29uc3Qgc3RydWN0IHNvY2thZGRyKil0bywgdG9sZW4pOworCisgICAgaWYgKCpsZW4gPCAwKSAKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHBqX2dldF9uYXRpdmVfbmV0b3NfZXJyb3IoKSk7CisgICAgZWxzZSAKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIFJlY2VpdmUgZGF0YS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3JlY3YocGpfc29ja190IHNvY2ssCisJCQkJIHZvaWQgKmJ1ZiwKKwkJCQkgcGpfc3NpemVfdCAqbGVuLAorCQkJCSB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oYnVmICYmIGxlbiwgUEpfRUlOVkFMKTsKKworICAgICpsZW4gPSByZWN2KHNvY2ssIChjaGFyKilidWYsIChpbnQpKCpsZW4pLCBmbGFncyk7CisKKyAgICBpZiAoKmxlbiA8IDApIAorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocGpfZ2V0X25hdGl2ZV9uZXRvc19lcnJvcigpKTsKKyAgICBlbHNlCisJcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBSZWNlaXZlIGRhdGEuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19yZWN2ZnJvbShwal9zb2NrX3Qgc29jaywKKwkJCQkgICAgIHZvaWQgKmJ1ZiwKKwkJCQkgICAgIHBqX3NzaXplX3QgKmxlbiwKKwkJCQkgICAgIHVuc2lnbmVkIGZsYWdzLAorCQkJCSAgICAgcGpfc29ja2FkZHJfdCAqZnJvbSwKKwkJCQkgICAgIGludCAqZnJvbWxlbikKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oYnVmICYmIGxlbiwgUEpfRUlOVkFMKTsKKworICAgICpsZW4gPSByZWN2ZnJvbShzb2NrLCAoY2hhciopYnVmLCAoaW50KSgqbGVuKSwgZmxhZ3MsIAorCQkgICAgKHN0cnVjdCBzb2NrYWRkciopZnJvbSwgKHNvY2tsZW5fdCopZnJvbWxlbik7CisKKyAgICBpZiAoKmxlbiA8IDApIAorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocGpfZ2V0X25hdGl2ZV9uZXRvc19lcnJvcigpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGZyb20pIHsKKyAgICAgICAgICAgIFBKX1NPQ0tBRERSX1JFU0VUX0xFTihmcm9tKTsKKyAgICAgICAgfQorCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0KK30KKworLyoKKyAqIEdldCBzb2NrZXQgb3B0aW9uLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfZ2V0c29ja29wdCggcGpfc29ja190IHNvY2ssCisJCQkJCXBqX3VpbnQxNl90IGxldmVsLAorCQkJCQlwal91aW50MTZfdCBvcHRuYW1lLAorCQkJCQl2b2lkICpvcHR2YWwsCisJCQkJCWludCAqb3B0bGVuKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihvcHR2YWwgJiYgb3B0bGVuLCBQSl9FSU5WQUwpOworCisgICAgaWYgKGdldHNvY2tvcHQoc29jaywgbGV2ZWwsIG9wdG5hbWUsIChjaGFyKilvcHR2YWwsIChzb2NrbGVuX3QqKW9wdGxlbikhPTApCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX25ldG9zX2Vycm9yKCkpOworICAgIGVsc2UKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIFNldCBzb2NrZXQgb3B0aW9uLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2V0c29ja29wdCggcGpfc29ja190IHNvY2ssCisJCQkJCXBqX3VpbnQxNl90IGxldmVsLAorCQkJCQlwal91aW50MTZfdCBvcHRuYW1lLAorCQkJCQljb25zdCB2b2lkICpvcHR2YWwsCisJCQkJCWludCBvcHRsZW4pCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBpZiAoc2V0c29ja29wdChzb2NrLCBsZXZlbCwgb3B0bmFtZSwgKGNvbnN0IGNoYXIqKW9wdHZhbCwgb3B0bGVuKSAhPSAwKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocGpfZ2V0X25hdGl2ZV9uZXRvc19lcnJvcigpKTsKKyAgICBlbHNlCisJcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBDb25uZWN0IHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2Nvbm5lY3QoIHBqX3NvY2tfdCBzb2NrLAorCQkJCSAgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkgICAgIGludCBuYW1lbGVuKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgaWYgKGNvbm5lY3Qoc29jaywgKHN0cnVjdCBzb2NrYWRkciopYWRkciwgbmFtZWxlbikgIT0gMCkKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHBqX2dldF9uYXRpdmVfbmV0b3NfZXJyb3IoKSk7CisgICAgZWxzZQorCXJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBTaHV0ZG93biBzb2NrZXQuCisgKi8KKyNpZiBQSl9IQVNfVENQCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2h1dGRvd24oIHBqX3NvY2tfdCBzb2NrLAorCQkJCSAgICAgIGludCBob3cpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBpZiAoc2h1dGRvd24oc29jaywgaG93KSAhPSAwKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocGpfZ2V0X25hdGl2ZV9uZXRvc19lcnJvcigpKTsKKyAgICBlbHNlCisJcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBTdGFydCBsaXN0ZW5pbmcgdG8gaW5jb21pbmcgY29ubmVjdGlvbnMuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19saXN0ZW4oIHBqX3NvY2tfdCBzb2NrLAorCQkJCSAgICBpbnQgYmFja2xvZykKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIGlmIChsaXN0ZW4oc29jaywgYmFja2xvZykgIT0gMCkKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHBqX2dldF9uYXRpdmVfbmV0b3NfZXJyb3IoKSk7CisgICAgZWxzZQorCXJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogQWNjZXB0IGluY29taW5nIGNvbm5lY3Rpb25zCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19hY2NlcHQoIHBqX3NvY2tfdCBzZXJ2ZXJmZCwKKwkJCQkgICAgcGpfc29ja190ICpuZXdzb2NrLAorCQkJCSAgICBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCSAgICBpbnQgKmFkZHJsZW4pCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG5ld3NvY2sgIT0gTlVMTCwgUEpfRUlOVkFMKTsKKworI2lmIGRlZmluZWQoUEpfU09DS0FERFJfSEFTX0xFTikgJiYgUEpfU09DS0FERFJfSEFTX0xFTiE9MAorICAgIGlmIChhZGRyKSB7CisJUEpfU09DS0FERFJfU0VUX0xFTihhZGRyLCAqYWRkcmxlbik7CisgICAgfQorI2VuZGlmCisgICAgCisgICAgKm5ld3NvY2sgPSBhY2NlcHQoc2VydmVyZmQsIChzdHJ1Y3Qgc29ja2FkZHIqKWFkZHIsIChzb2NrbGVuX3QqKWFkZHJsZW4pOworICAgIGlmICgqbmV3c29jaz09UEpfSU5WQUxJRF9TT0NLRVQpCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUihwal9nZXRfbmF0aXZlX25ldG9zX2Vycm9yKCkpOworICAgIGVsc2UgeworCQorI2lmIGRlZmluZWQoUEpfU09DS0FERFJfSEFTX0xFTikgJiYgUEpfU09DS0FERFJfSEFTX0xFTiE9MAorCWlmIChhZGRyKSB7CisJICAgIFBKX1NPQ0tBRERSX1JFU0VUX0xFTihhZGRyKTsKKwl9CisjZW5kaWYKKwkgICAgCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfQorfQorI2VuZGlmCS8qIFBKX0hBU19UQ1AgKi8KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc29ja19jb21tb24uYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX2NvbW1vbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzN2QzMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc29ja19jb21tb24uYwpAQCAtMCwwICsxLDEzMjQgQEAKKy8qICRJZDogc29ja19jb21tb24uYyA0NTM4IDIwMTMtMDYtMTkgMDk6MDY6NTVaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3NvY2suaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9jdHlwZS5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovaXBfaGVscGVyLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9hZGRyX3Jlc29sdi5oPgorI2luY2x1ZGUgPHBqL3JhbmQuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvc29ja2V0Lmg+CisKKyNpZiAwCisgICAgLyogRW5hYmxlIHNvbWUgdHJhY2luZyAqLworICAgICNpbmNsdWRlIDxwai9sb2cuaD4KKyAgICAjZGVmaW5lIFRISVNfRklMRSAgICJzb2NrX2NvbW1vbi5jIgorICAgICNkZWZpbmUgVFJBQ0VfKGFyZykJUEpfTE9HKDQsYXJnKQorI2Vsc2UKKyAgICAjZGVmaW5lIFRSQUNFXyhhcmcpCisjZW5kaWYKKworCisvKgorICogQ29udmVydCBhZGRyZXNzIHN0cmluZyB3aXRoIG51bWJlcnMgYW5kIGRvdHMgdG8gYmluYXJ5IElQIGFkZHJlc3MuCisgKi8gCitQSl9ERUYocGpfaW5fYWRkcikgcGpfaW5ldF9hZGRyKGNvbnN0IHBqX3N0cl90ICpjcCkKK3sKKyAgICBwal9pbl9hZGRyIGFkZHI7CisKKyAgICBwal9pbmV0X2F0b24oY3AsICZhZGRyKTsKKyAgICByZXR1cm4gYWRkcjsKK30KKworLyoKKyAqIENvbnZlcnQgYWRkcmVzcyBzdHJpbmcgd2l0aCBudW1iZXJzIGFuZCBkb3RzIHRvIGJpbmFyeSBJUCBhZGRyZXNzLgorICovIAorUEpfREVGKHBqX2luX2FkZHIpIHBqX2luZXRfYWRkcjIoY29uc3QgY2hhciAqY3ApCit7CisgICAgcGpfc3RyX3Qgc3RyID0gcGpfc3RyKChjaGFyKiljcCk7CisgICAgcmV0dXJuIHBqX2luZXRfYWRkcigmc3RyKTsKK30KKworLyoKKyAqIEdldCB0ZXh0IHJlcHJlc2VudGF0aW9uLgorICovCitQSl9ERUYoY2hhciopIHBqX2luZXRfbnRvcDIoIGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLAorCQkJICAgICBjaGFyICpkc3QsIGludCBzaXplKQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIHN0YXR1cyA9IHBqX2luZXRfbnRvcChhZiwgc3JjLCBkc3QsIHNpemUpOworICAgIHJldHVybiAoc3RhdHVzPT1QSl9TVUNDRVNTKT8gZHN0IDogTlVMTDsKK30KKworLyoKKyAqIFByaW50IHNvY2tldCBhZGRyZXNzLgorICovCitQSl9ERUYoY2hhciopIHBqX3NvY2thZGRyX3ByaW50KCBjb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCSBjaGFyICpidWYsIGludCBzaXplLAorCQkJCSB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBlbnVtIHsKKwlXSVRIX1BPUlQgPSAxLAorCVdJVEhfQlJBQ0tFVFMgPSAyCisgICAgfTsKKworICAgIGNoYXIgdHh0W1BKX0lORVQ2X0FERFJTVFJMRU5dOworICAgIGNoYXIgcG9ydFszMl07CisgICAgY29uc3QgcGpfYWRkcl9oZHIgKmggPSAoY29uc3QgcGpfYWRkcl9oZHIqKWFkZHI7CisgICAgY2hhciAqYnF1b3RlLCAqZXF1b3RlOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIHN0YXR1cyA9IHBqX2luZXRfbnRvcChoLT5zYV9mYW1pbHksIHBqX3NvY2thZGRyX2dldF9hZGRyKGFkZHIpLAorCQkJICB0eHQsIHNpemVvZih0eHQpKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuICIiOworCisgICAgaWYgKGgtPnNhX2ZhbWlseSAhPSBQSl9BRl9JTkVUNiB8fCAoZmxhZ3MgJiBXSVRIX0JSQUNLRVRTKT09MCkgeworCWJxdW90ZSA9ICIiOyBlcXVvdGUgPSAiIjsKKyAgICB9IGVsc2UgeworCWJxdW90ZSA9ICJbIjsgZXF1b3RlID0gIl0iOworICAgIH0KKworICAgIGlmIChmbGFncyAmIFdJVEhfUE9SVCkgeworCXBqX2Fuc2lfc25wcmludGYocG9ydCwgc2l6ZW9mKHBvcnQpLCAiOiVkIiwKKwkJCSBwal9zb2NrYWRkcl9nZXRfcG9ydChhZGRyKSk7CisgICAgfSBlbHNlIHsKKwlwb3J0WzBdID0gJ1wwJzsKKyAgICB9CisKKyAgICBwal9hbnNpX3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVzJXMlcyVzIiwKKwkJICAgICBicXVvdGUsIHR4dCwgZXF1b3RlLCBwb3J0KTsKKworICAgIHJldHVybiBidWY7Cit9CisKKy8qCisgKiBTZXQgdGhlIElQIGFkZHJlc3Mgb2YgYW4gSVAgc29ja2V0IGFkZHJlc3MgZnJvbSBzdHJpbmcgYWRkcmVzcywgCisgKiB3aXRoIHJlc29sdmluZyB0aGUgaG9zdCBpZiBuZWNlc3NhcnkuIFRoZSBzdHJpbmcgYWRkcmVzcyBtYXkgYmUgaW4gYQorICogc3RhbmRhcmQgbnVtYmVycyBhbmQgZG90cyBub3RhdGlvbiBvciBtYXkgYmUgYSBob3N0bmFtZS4gSWYgaG9zdG5hbWUKKyAqIGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgZnVuY3Rpb24gd2lsbCByZXNvbHZlIHRoZSBob3N0IGludG8gdGhlIElQCisgKiBhZGRyZXNzLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2thZGRyX2luX3NldF9zdHJfYWRkciggcGpfc29ja2FkZHJfaW4gKmFkZHIsCisJCQkJCSAgICAgICAgIGNvbnN0IHBqX3N0cl90ICpzdHJfYWRkcikKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTighc3RyX2FkZHIgfHwgc3RyX2FkZHItPnNsZW4gPCBQSl9NQVhfSE9TVE5BTUUsIAorICAgICAgICAgICAgICAgICAgICAgKGFkZHItPnNpbl9hZGRyLnNfYWRkcj1QSl9JTkFERFJfTk9ORSwgUEpfRUlOVkFMKSk7CisKKyAgICBQSl9TT0NLQUREUl9SRVNFVF9MRU4oYWRkcik7CisgICAgYWRkci0+c2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgcGpfYnplcm8oYWRkci0+c2luX3plcm8sIHNpemVvZihhZGRyLT5zaW5femVybykpOworCisgICAgaWYgKHN0cl9hZGRyICYmIHN0cl9hZGRyLT5zbGVuKSB7CisJYWRkci0+c2luX2FkZHIgPSBwal9pbmV0X2FkZHIoc3RyX2FkZHIpOworCWlmIChhZGRyLT5zaW5fYWRkci5zX2FkZHIgPT0gUEpfSU5BRERSX05PTkUpIHsKKyAgICAJICAgIHBqX2hvc3RlbnQgaGU7CisJICAgIHBqX3N0YXR1c190IHJjOworCisJICAgIHJjID0gcGpfZ2V0aG9zdGJ5bmFtZShzdHJfYWRkciwgJmhlKTsKKwkgICAgaWYgKHJjID09IDApIHsKKwkJYWRkci0+c2luX2FkZHIuc19hZGRyID0gKihwal91aW50MzJfdCopaGUuaF9hZGRyOworCSAgICB9IGVsc2UgeworCQlhZGRyLT5zaW5fYWRkci5zX2FkZHIgPSBQSl9JTkFERFJfTk9ORTsKKwkJcmV0dXJuIHJjOworCSAgICB9CisJfQorCisgICAgfSBlbHNlIHsKKwlhZGRyLT5zaW5fYWRkci5zX2FkZHIgPSAwOworICAgIH0KKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKiBTZXQgYWRkcmVzcyBmcm9tIGEgbmFtZSAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrYWRkcl9zZXRfc3RyX2FkZHIoaW50IGFmLAorCQkJCQkgICAgIHBqX3NvY2thZGRyICphZGRyLAorCQkJCQkgICAgIGNvbnN0IHBqX3N0cl90ICpzdHJfYWRkcikKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBpZiAoYWYgPT0gUEpfQUZfSU5FVCkgeworCXJldHVybiBwal9zb2NrYWRkcl9pbl9zZXRfc3RyX2FkZHIoJmFkZHItPmlwdjQsIHN0cl9hZGRyKTsKKyAgICB9CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFmPT1QSl9BRl9JTkVUNiwgUEpfRUFGTk9UU1VQKTsKKworICAgIC8qIElQdjYgc3BlY2lmaWMgKi8KKworICAgIGFkZHItPmlwdjYuc2luNl9mYW1pbHkgPSBQSl9BRl9JTkVUNjsKKyAgICBQSl9TT0NLQUREUl9SRVNFVF9MRU4oYWRkcik7CisKKyAgICBpZiAoc3RyX2FkZHIgJiYgc3RyX2FkZHItPnNsZW4pIHsKKwlzdGF0dXMgPSBwal9pbmV0X3B0b24oUEpfQUZfSU5FVDYsIHN0cl9hZGRyLCAmYWRkci0+aXB2Ni5zaW42X2FkZHIpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworICAgIAkgICAgcGpfYWRkcmluZm8gYWk7CisJICAgIHVuc2lnbmVkIGNvdW50ID0gMTsKKworCSAgICBzdGF0dXMgPSBwal9nZXRhZGRyaW5mbyhQSl9BRl9JTkVUNiwgc3RyX2FkZHIsICZjb3VudCwgJmFpKTsKKwkgICAgaWYgKHN0YXR1cz09UEpfU1VDQ0VTUykgeworCQlwal9tZW1jcHkoJmFkZHItPmlwdjYuc2luNl9hZGRyLCAmYWkuYWlfYWRkci5pcHY2LnNpbjZfYWRkciwKKwkJCSAgc2l6ZW9mKHBqX3NvY2thZGRyX2luNikpOworCSAgICB9CisJfQorICAgIH0gZWxzZSB7CisJc3RhdHVzID0gUEpfU1VDQ0VTUzsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisvKgorICogU2V0IHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IG9mIGFuIElQIHNvY2tldCBhZGRyZXNzLgorICogVGhlIHN0cmluZyBhZGRyZXNzIG1heSBiZSBpbiBhIHN0YW5kYXJkIG51bWJlcnMgYW5kIGRvdHMgbm90YXRpb24gb3IgCisgKiBtYXkgYmUgYSBob3N0bmFtZS4gSWYgaG9zdG5hbWUgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBmdW5jdGlvbiB3aWxsIAorICogcmVzb2x2ZSB0aGUgaG9zdCBpbnRvIHRoZSBJUCBhZGRyZXNzLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2thZGRyX2luX2luaXQoIHBqX3NvY2thZGRyX2luICphZGRyLAorCQkJCSAgICAgICAgIGNvbnN0IHBqX3N0cl90ICpzdHJfYWRkciwKKwkJCQkJIHBqX3VpbnQxNl90IHBvcnQpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihhZGRyLCAoYWRkci0+c2luX2FkZHIuc19hZGRyPVBKX0lOQUREUl9OT05FLCBQSl9FSU5WQUwpKTsKKworICAgIFBKX1NPQ0tBRERSX1JFU0VUX0xFTihhZGRyKTsKKyAgICBhZGRyLT5zaW5fZmFtaWx5ID0gUEpfQUZfSU5FVDsKKyAgICBwal9iemVybyhhZGRyLT5zaW5femVybywgc2l6ZW9mKGFkZHItPnNpbl96ZXJvKSk7CisgICAgcGpfc29ja2FkZHJfaW5fc2V0X3BvcnQoYWRkciwgcG9ydCk7CisgICAgcmV0dXJuIHBqX3NvY2thZGRyX2luX3NldF9zdHJfYWRkcihhZGRyLCBzdHJfYWRkcik7Cit9CisKKy8qCisgKiBJbml0aWFsaXplIElQIHNvY2tldCBhZGRyZXNzIGJhc2VkIG9uIHRoZSBhZGRyZXNzIGFuZCBwb3J0IGluZm8uCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja2FkZHJfaW5pdChpbnQgYWYsIAorCQkJCSAgICAgcGpfc29ja2FkZHIgKmFkZHIsCisJCQkJICAgICBjb25zdCBwal9zdHJfdCAqY3AsCisJCQkJICAgICBwal91aW50MTZfdCBwb3J0KQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIGlmIChhZiA9PSBQSl9BRl9JTkVUKSB7CisJcmV0dXJuIHBqX3NvY2thZGRyX2luX2luaXQoJmFkZHItPmlwdjQsIGNwLCBwb3J0KTsKKyAgICB9CisKKyAgICAvKiBJUHY2IHNwZWNpZmljICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZj09UEpfQUZfSU5FVDYsIFBKX0VBRk5PVFNVUCk7CisKKyAgICBwal9iemVybyhhZGRyLCBzaXplb2YocGpfc29ja2FkZHJfaW42KSk7CisgICAgYWRkci0+YWRkci5zYV9mYW1pbHkgPSBQSl9BRl9JTkVUNjsKKyAgICAKKyAgICBzdGF0dXMgPSBwal9zb2NrYWRkcl9zZXRfc3RyX2FkZHIoYWYsIGFkZHIsIGNwKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHN0YXR1czsKKworICAgIGFkZHItPmlwdjYuc2luNl9wb3J0ID0gcGpfaHRvbnMocG9ydCk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBDb21wYXJlIHR3byBzb2NrZXQgYWRkcmVzc2VzLgorICovCitQSl9ERUYoaW50KSBwal9zb2NrYWRkcl9jbXAoIGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIxLAorCQkJICAgICBjb25zdCBwal9zb2NrYWRkcl90ICphZGRyMikKK3sKKyAgICBjb25zdCBwal9zb2NrYWRkciAqYTEgPSAoY29uc3QgcGpfc29ja2FkZHIqKSBhZGRyMTsKKyAgICBjb25zdCBwal9zb2NrYWRkciAqYTIgPSAoY29uc3QgcGpfc29ja2FkZHIqKSBhZGRyMjsKKyAgICBpbnQgcG9ydDEsIHBvcnQyOworICAgIGludCByZXN1bHQ7CisKKyAgICAvKiBDb21wYXJlIGFkZHJlc3MgZmFtaWx5ICovCisgICAgaWYgKGExLT5hZGRyLnNhX2ZhbWlseSA8IGEyLT5hZGRyLnNhX2ZhbWlseSkKKwlyZXR1cm4gLTE7CisgICAgZWxzZSBpZiAoYTEtPmFkZHIuc2FfZmFtaWx5ID4gYTItPmFkZHIuc2FfZmFtaWx5KQorCXJldHVybiAxOworCisgICAgLyogQ29tcGFyZSBhZGRyZXNzZXMgKi8KKyAgICByZXN1bHQgPSBwal9tZW1jbXAocGpfc29ja2FkZHJfZ2V0X2FkZHIoYTEpLAorCQkgICAgICAgcGpfc29ja2FkZHJfZ2V0X2FkZHIoYTIpLAorCQkgICAgICAgcGpfc29ja2FkZHJfZ2V0X2FkZHJfbGVuKGExKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorCXJldHVybiByZXN1bHQ7CisKKyAgICAvKiBDb21wYXJlIHBvcnQgbnVtYmVyICovCisgICAgcG9ydDEgPSBwal9zb2NrYWRkcl9nZXRfcG9ydChhMSk7CisgICAgcG9ydDIgPSBwal9zb2NrYWRkcl9nZXRfcG9ydChhMik7CisKKyAgICBpZiAocG9ydDEgPCBwb3J0MikKKwlyZXR1cm4gLTE7CisgICAgZWxzZSBpZiAocG9ydDEgPiBwb3J0MikKKwlyZXR1cm4gMTsKKworICAgIC8qIFRPRE86CisgICAgICoJRG8gd2UgbmVlZCB0byBjb21wYXJlIGZsb3cgbGFiZWwgYW5kIHNjb3BlIGlkIGluIElQdjY/IAorICAgICAqLworICAgIAorICAgIC8qIExvb2tzIGVxdWFsICovCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBHZXQgZmlyc3QgSVAgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIGhvc3RuYW1lLgorICovCitQSl9ERUYocGpfaW5fYWRkcikgcGpfZ2V0aG9zdGFkZHIodm9pZCkKK3sKKyAgICBwal9zb2NrYWRkcl9pbiBhZGRyOworICAgIGNvbnN0IHBqX3N0cl90ICpob3N0bmFtZSA9IHBqX2dldGhvc3RuYW1lKCk7CisKKyAgICBwal9zb2NrYWRkcl9pbl9zZXRfc3RyX2FkZHIoJmFkZHIsIGhvc3RuYW1lKTsKKyAgICByZXR1cm4gYWRkci5zaW5fYWRkcjsKK30KKworLyoKKyAqIEdldCBwb3J0IG51bWJlciBvZiBhIHBqX3NvY2thZGRyX2luCisgKi8KK1BKX0RFRihwal91aW50MTZfdCkgcGpfc29ja2FkZHJfaW5fZ2V0X3BvcnQoY29uc3QgcGpfc29ja2FkZHJfaW4gKmFkZHIpCit7CisgICAgcmV0dXJuIHBqX250b2hzKGFkZHItPnNpbl9wb3J0KTsKK30KKworLyoKKyAqIEdldCB0aGUgYWRkcmVzcyBwYXJ0CisgKi8KK1BKX0RFRih2b2lkKikgcGpfc29ja2FkZHJfZ2V0X2FkZHIoY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkcikKK3sKKyAgICBjb25zdCBwal9zb2NrYWRkciAqYSA9IChjb25zdCBwal9zb2NrYWRkciopYWRkcjsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oYS0+YWRkci5zYV9mYW1pbHkgPT0gUEpfQUZfSU5FVCB8fAorCQkgICAgIGEtPmFkZHIuc2FfZmFtaWx5ID09IFBKX0FGX0lORVQ2LCBOVUxMKTsKKworICAgIGlmIChhLT5hZGRyLnNhX2ZhbWlseSA9PSBQSl9BRl9JTkVUNikKKwlyZXR1cm4gKHZvaWQqKSAmYS0+aXB2Ni5zaW42X2FkZHI7CisgICAgZWxzZQorCXJldHVybiAodm9pZCopICZhLT5pcHY0LnNpbl9hZGRyOworfQorCisvKgorICogQ2hlY2sgaWYgc29ja2FkZHIgY29udGFpbnMgYSBub24temVybyBhZGRyZXNzCisgKi8KK1BKX0RFRihwal9ib29sX3QpIHBqX3NvY2thZGRyX2hhc19hZGRyKGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIpCit7CisgICAgY29uc3QgcGpfc29ja2FkZHIgKmEgPSAoY29uc3QgcGpfc29ja2FkZHIqKWFkZHI7CisKKyAgICAvKiBJdCdzIHByb2JhYmx5IG5vdCB3aXNlIHRvIHJhaXNlIGFzc2VydGlvbiBoZXJlIGlmCisgICAgICogdGhlIGFkZHJlc3MgZG9lc24ndCBjb250YWluIGEgdmFsaWQgYWRkcmVzcyBmYW1pbHksIGFuZAorICAgICAqIGp1c3QgcmV0dXJuIFBKX0ZBTFNFIGluc3RlYWQuCisgICAgICogCisgICAgICogVGhlIHJlYXNvbiBpcyBiZWNhdXNlIGFwcGxpY2F0aW9uIG1heSBuZWVkIHRvIGRpc3Rpbmd1aXNoIAorICAgICAqIHRoZXNlIHRocmVlIGNvbmRpdGlvbnMgd2l0aCBzb2NrYWRkcjoKKyAgICAgKglhKSBzb2NrYWRkciBpcyBub3QgaW5pdGlhbGl6ZWQuIFRoaXMgaXMgYnkgY29udmVudGlvbgorICAgICAqCSAgIGluZGljYXRlZCBieSBzYV9mYW1pbHk9PTAuCisgICAgICoJYikgc29ja2FkZHIgaXMgaW5pdGlhbGl6ZWQgd2l0aCB6ZXJvIGFkZHJlc3MuIFRoaXMgaXMKKyAgICAgKgkgICBpbmRpY2F0ZWQgd2l0aCB0aGUgYWRkcmVzcyBmaWVsZCBoYXZpbmcgemVybyBhZGRyZXNzLgorICAgICAqCWMpIHNvY2thZGRyIGlzIGluaXRpYWxpemVkIHdpdGggdmFsaWQgYWRkcmVzcy9wb3J0LgorICAgICAqCisgICAgICogSWYgd2UgZW5hYmxlIHRoaXMgYXNzZXJ0aW9uLCB0aGVuIGFwcGxpY2F0aW9uIHdpbGwgbG9vc2UKKyAgICAgKiB0aGUgY2FwYWJpbGl0eSB0byBzcGVjaWZ5IGNvbmRpdGlvbiBhKSwgc2luY2UgaXQgd2lsbCBiZQorICAgICAqIGZvcmNlZCB0byBhbHdheXMgaW5pdGlhbGl6ZSBzb2NrYWRkciAoZXZlbiB3aXRoIHplcm8gYWRkcmVzcykuCisgICAgICogVGhpcyBtYXkgYnJlYWsgc29tZSBwYXJ0cyBvZiB1cHBlciBsYXllciBsaWJyYXJpZXMuCisgICAgICovCisgICAgLy9QSl9BU1NFUlRfUkVUVVJOKGEtPmFkZHIuc2FfZmFtaWx5ID09IFBKX0FGX0lORVQgfHwKKyAgICAvLwkJICAgICBhLT5hZGRyLnNhX2ZhbWlseSA9PSBQSl9BRl9JTkVUNiwgUEpfRkFMU0UpOworCisgICAgaWYgKGEtPmFkZHIuc2FfZmFtaWx5IT1QSl9BRl9JTkVUICYmIGEtPmFkZHIuc2FfZmFtaWx5IT1QSl9BRl9JTkVUNikgeworCXJldHVybiBQSl9GQUxTRTsKKyAgICB9IGVsc2UgaWYgKGEtPmFkZHIuc2FfZmFtaWx5ID09IFBKX0FGX0lORVQ2KSB7CisJcGpfdWludDhfdCB6ZXJvWzI0XTsKKwlwal9iemVybyh6ZXJvLCBzaXplb2YoemVybykpOworCXJldHVybiBwal9tZW1jbXAoYS0+aXB2Ni5zaW42X2FkZHIuczZfYWRkciwgemVybywgCisJCQkgc2l6ZW9mKHBqX2luNl9hZGRyKSkgIT0gMDsKKyAgICB9IGVsc2UKKwlyZXR1cm4gYS0+aXB2NC5zaW5fYWRkci5zX2FkZHIgIT0gUEpfSU5BRERSX0FOWTsKK30KKworLyoKKyAqIEdldCBwb3J0IG51bWJlcgorICovCitQSl9ERUYocGpfdWludDE2X3QpIHBqX3NvY2thZGRyX2dldF9wb3J0KGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIpCit7CisgICAgY29uc3QgcGpfc29ja2FkZHIgKmEgPSAoY29uc3QgcGpfc29ja2FkZHIqKSBhZGRyOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhLT5hZGRyLnNhX2ZhbWlseSA9PSBQSl9BRl9JTkVUIHx8CisJCSAgICAgYS0+YWRkci5zYV9mYW1pbHkgPT0gUEpfQUZfSU5FVDYsIChwal91aW50MTZfdCkweEZGRkYpOworCisgICAgcmV0dXJuIHBqX250b2hzKChwal91aW50MTZfdCkoYS0+YWRkci5zYV9mYW1pbHkgPT0gUEpfQUZfSU5FVDYgPworCQkJCSAgICBhLT5pcHY2LnNpbjZfcG9ydCA6IGEtPmlwdjQuc2luX3BvcnQpKTsKK30KKworLyoKKyAqIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBhZGRyZXNzIHBhcnQuCisgKi8KK1BKX0RFRih1bnNpZ25lZCkgcGpfc29ja2FkZHJfZ2V0X2FkZHJfbGVuKGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIpCit7CisgICAgY29uc3QgcGpfc29ja2FkZHIgKmEgPSAoY29uc3QgcGpfc29ja2FkZHIqKSBhZGRyOworICAgIFBKX0FTU0VSVF9SRVRVUk4oYS0+YWRkci5zYV9mYW1pbHkgPT0gUEpfQUZfSU5FVCB8fAorCQkgICAgIGEtPmFkZHIuc2FfZmFtaWx5ID09IFBKX0FGX0lORVQ2LCAwKTsKKyAgICByZXR1cm4gYS0+YWRkci5zYV9mYW1pbHkgPT0gUEpfQUZfSU5FVDYgPworCSAgICBzaXplb2YocGpfaW42X2FkZHIpIDogc2l6ZW9mKHBqX2luX2FkZHIpOworfQorCisvKgorICogR2V0IHNvY2tldCBhZGRyZXNzIGxlbmd0aC4KKyAqLworUEpfREVGKHVuc2lnbmVkKSBwal9zb2NrYWRkcl9nZXRfbGVuKGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIpCit7CisgICAgY29uc3QgcGpfc29ja2FkZHIgKmEgPSAoY29uc3QgcGpfc29ja2FkZHIqKSBhZGRyOworICAgIFBKX0FTU0VSVF9SRVRVUk4oYS0+YWRkci5zYV9mYW1pbHkgPT0gUEpfQUZfSU5FVCB8fAorCQkgICAgIGEtPmFkZHIuc2FfZmFtaWx5ID09IFBKX0FGX0lORVQ2LCAwKTsKKyAgICByZXR1cm4gYS0+YWRkci5zYV9mYW1pbHkgPT0gUEpfQUZfSU5FVDYgPworCSAgICBzaXplb2YocGpfc29ja2FkZHJfaW42KSA6IHNpemVvZihwal9zb2NrYWRkcl9pbik7Cit9CisKKy8qCisgKiBDb3B5IG9ubHkgdGhlIGFkZHJlc3MgcGFydCAoc2luX2FkZHIvc2luNl9hZGRyKSBvZiBhIHNvY2tldCBhZGRyZXNzLgorICovCitQSl9ERUYodm9pZCkgcGpfc29ja2FkZHJfY29weV9hZGRyKCBwal9zb2NrYWRkciAqZHN0LAorCQkJCSAgICBjb25zdCBwal9zb2NrYWRkciAqc3JjKQoreworICAgIC8qIERlc3RpbmF0aW9uIHNvY2thZGRyIG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZCAqLworICAgIGNvbnN0IGNoYXIgKnNyY2J1ZiA9IChjaGFyKilwal9zb2NrYWRkcl9nZXRfYWRkcihzcmMpOworICAgIGNoYXIgKmRzdGJ1ZiA9ICgoY2hhciopZHN0KSArIChzcmNidWYgLSAoY2hhciopc3JjKTsKKyAgICBwal9tZW1jcHkoZHN0YnVmLCBzcmNidWYsIHBqX3NvY2thZGRyX2dldF9hZGRyX2xlbihzcmMpKTsKK30KKworLyoKKyAqIENvcHkgc29ja2V0IGFkZHJlc3MuCisgKi8KK1BKX0RFRih2b2lkKSBwal9zb2NrYWRkcl9jcChwal9zb2NrYWRkcl90ICpkc3QsIGNvbnN0IHBqX3NvY2thZGRyX3QgKnNyYykKK3sKKyAgICBwal9tZW1jcHkoZHN0LCBzcmMsIHBqX3NvY2thZGRyX2dldF9sZW4oc3JjKSk7Cit9CisKKy8qCisgKiBTZXQgcG9ydCBudW1iZXIgb2YgcGpfc29ja2FkZHJfaW4KKyAqLworUEpfREVGKHZvaWQpIHBqX3NvY2thZGRyX2luX3NldF9wb3J0KHBqX3NvY2thZGRyX2luICphZGRyLCAKKwkJCQkgICAgIHBqX3VpbnQxNl90IGhvc3Rwb3J0KQoreworICAgIGFkZHItPnNpbl9wb3J0ID0gcGpfaHRvbnMoaG9zdHBvcnQpOworfQorCisvKgorICogU2V0IHBvcnQgbnVtYmVyIG9mIHBqX3NvY2thZGRyCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja2FkZHJfc2V0X3BvcnQocGpfc29ja2FkZHIgKmFkZHIsIAorCQkJCQkgcGpfdWludDE2X3QgaG9zdHBvcnQpCit7CisgICAgaW50IGFmID0gYWRkci0+YWRkci5zYV9mYW1pbHk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGFmPT1QSl9BRl9JTkVUIHx8IGFmPT1QSl9BRl9JTkVUNiwgUEpfRUlOVkFMKTsKKworICAgIGlmIChhZiA9PSBQSl9BRl9JTkVUNikKKwlhZGRyLT5pcHY2LnNpbjZfcG9ydCA9IHBqX2h0b25zKGhvc3Rwb3J0KTsKKyAgICBlbHNlCisJYWRkci0+aXB2NC5zaW5fcG9ydCA9IHBqX2h0b25zKGhvc3Rwb3J0KTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogR2V0IElQdjQgYWRkcmVzcworICovCitQSl9ERUYocGpfaW5fYWRkcikgcGpfc29ja2FkZHJfaW5fZ2V0X2FkZHIoY29uc3QgcGpfc29ja2FkZHJfaW4gKmFkZHIpCit7CisgICAgcGpfaW5fYWRkciBpbl9hZGRyOworICAgIGluX2FkZHIuc19hZGRyID0gcGpfbnRvaGwoYWRkci0+c2luX2FkZHIuc19hZGRyKTsKKyAgICByZXR1cm4gaW5fYWRkcjsKK30KKworLyoKKyAqIFNldCBJUHY0IGFkZHJlc3MKKyAqLworUEpfREVGKHZvaWQpIHBqX3NvY2thZGRyX2luX3NldF9hZGRyKHBqX3NvY2thZGRyX2luICphZGRyLAorCQkJCSAgICAgcGpfdWludDMyX3QgaG9zdGFkZHIpCit7CisgICAgYWRkci0+c2luX2FkZHIuc19hZGRyID0gcGpfaHRvbmwoaG9zdGFkZHIpOworfQorCisvKgorICogUGFyc2UgYWRkcmVzcworICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2thZGRyX3BhcnNlMihpbnQgYWYsIHVuc2lnbmVkIG9wdGlvbnMsCisJCQkJICAgICAgIGNvbnN0IHBqX3N0cl90ICpzdHIsCisJCQkJICAgICAgIHBqX3N0cl90ICpwX2hvc3RwYXJ0LAorCQkJCSAgICAgICBwal91aW50MTZfdCAqcF9wb3J0LAorCQkJCSAgICAgICBpbnQgKnJhZikKK3sKKyAgICBjb25zdCBjaGFyICplbmQgPSBzdHItPnB0ciArIHN0ci0+c2xlbjsKKyAgICBjb25zdCBjaGFyICpsYXN0X2NvbG9uX3BvcyA9IE5VTEw7CisgICAgdW5zaWduZWQgY29sb25fY250ID0gMDsKKyAgICBjb25zdCBjaGFyICpwOworCisgICAgUEpfQVNTRVJUX1JFVFVSTigoYWY9PVBKX0FGX0lORVQgfHwgYWY9PVBKX0FGX0lORVQ2IHx8IGFmPT1QSl9BRl9VTlNQRUMpICYmCisJCSAgICAgb3B0aW9ucz09MCAmJgorCQkgICAgIHN0ciE9TlVMTCwgUEpfRUlOVkFMKTsKKworICAgIC8qIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGVtcHR5IGlucHV0ICovCisgICAgaWYgKHN0ci0+c2xlbj09MCB8fCBzdHItPnB0cj09TlVMTCkgeworCWlmIChwX2hvc3RwYXJ0KQorCSAgICBwX2hvc3RwYXJ0LT5zbGVuID0gMDsKKwlpZiAocF9wb3J0KQorCSAgICAqcF9wb3J0ID0gMDsKKwlpZiAocmFmKQorCSAgICAqcmFmID0gUEpfQUZfSU5FVDsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9CisKKyAgICAvKiBDb3VudCB0aGUgY29sb24gYW5kIGdldCB0aGUgbGFzdCBjb2xvbiAqLworICAgIGZvciAocD1zdHItPnB0cjsgcCE9ZW5kOyArK3ApIHsKKwlpZiAoKnAgPT0gJzonKSB7CisJICAgICsrY29sb25fY250OworCSAgICBsYXN0X2NvbG9uX3BvcyA9IHA7CisJfQorICAgIH0KKworICAgIC8qIERlZHVjZSBhZGRyZXNzIGZhbWlseSBpZiBpdCdzIG5vdCBnaXZlbiAqLworICAgIGlmIChhZiA9PSBQSl9BRl9VTlNQRUMpIHsKKwlpZiAoY29sb25fY250ID4gMSkKKwkgICAgYWYgPSBQSl9BRl9JTkVUNjsKKwllbHNlCisJICAgIGFmID0gUEpfQUZfSU5FVDsKKyAgICB9IGVsc2UgaWYgKGFmID09IFBKX0FGX0lORVQgJiYgY29sb25fY250ID4gMSkKKwlyZXR1cm4gUEpfRUlOVkFMOworCisgICAgaWYgKHJhZikKKwkqcmFmID0gYWY7CisKKyAgICBpZiAoYWYgPT0gUEpfQUZfSU5FVCkgeworCS8qIFBhcnNlIGFzIElQdjQuIFN1cHBvcnRlZCBmb3JtYXRzOgorCSAqICAtICIxMC4wLjAuMTo4MCIKKwkgKiAgLSAiMTAuMC4wLjEiCisJICogIC0gIjEwLjAuMC4xOiIKKwkgKiAgLSAiOjgwIgorCSAqICAtICI6IgorCSAqLworCXBqX3N0cl90IGhvc3RwYXJ0OworCXVuc2lnbmVkIGxvbmcgcG9ydDsKKworCWhvc3RwYXJ0LnB0ciA9IChjaGFyKilzdHItPnB0cjsKKworCWlmIChsYXN0X2NvbG9uX3BvcykgeworCSAgICBwal9zdHJfdCBwb3J0X3BhcnQ7CisJICAgIGludCBpOworCisJICAgIGhvc3RwYXJ0LnNsZW4gPSBsYXN0X2NvbG9uX3BvcyAtIHN0ci0+cHRyOworCisJICAgIHBvcnRfcGFydC5wdHIgPSAoY2hhciopbGFzdF9jb2xvbl9wb3MgKyAxOworCSAgICBwb3J0X3BhcnQuc2xlbiA9IGVuZCAtIHBvcnRfcGFydC5wdHI7CisKKwkgICAgLyogTWFrZSBzdXJlIHBvcnQgbnVtYmVyIGlzIHZhbGlkICovCisJICAgIGZvciAoaT0wOyBpPHBvcnRfcGFydC5zbGVuOyArK2kpIHsKKwkJaWYgKCFwal9pc2RpZ2l0KHBvcnRfcGFydC5wdHJbaV0pKQorCQkgICAgcmV0dXJuIFBKX0VJTlZBTDsKKwkgICAgfQorCSAgICBwb3J0ID0gcGpfc3RydG91bCgmcG9ydF9wYXJ0KTsKKwkgICAgaWYgKHBvcnQgPiA2NTUzNSkKKwkJcmV0dXJuIFBKX0VJTlZBTDsKKwl9IGVsc2UgeworCSAgICBob3N0cGFydC5zbGVuID0gc3RyLT5zbGVuOworCSAgICBwb3J0ID0gMDsKKwl9CisKKwlpZiAocF9ob3N0cGFydCkKKwkgICAgKnBfaG9zdHBhcnQgPSBob3N0cGFydDsKKwlpZiAocF9wb3J0KQorCSAgICAqcF9wb3J0ID0gKHBqX3VpbnQxNl90KXBvcnQ7CisKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKworICAgIH0gZWxzZSBpZiAoYWYgPT0gUEpfQUZfSU5FVDYpIHsKKworCS8qIFBhcnNlIGFzIElQdjYuIFN1cHBvcnRlZCBmb3JtYXRzOgorCSAqICAtICJmZTo6MDE6ODAiICA9PT4gbm90ZTogcG9ydCBudW1iZXIgaXMgemVybyBpbiB0aGlzIGNhc2UsIG5vdCA4MCEKKwkgKiAgLSAiW2ZlOjowMV06ODAiCisJICogIC0gImZlOjowMSIKKwkgKiAgLSAiZmU6OjAxOiIKKwkgKiAgLSAiW2ZlOjowMV0iCisJICogIC0gIltmZTo6MDFdOiIKKwkgKiAgLSAiWzo6XTo4MCIKKwkgKiAgLSAiOjo6ODAiCisJICogIC0gIls6Ol0iCisJICogIC0gIls6Ol06IgorCSAqICAtICI6OjoiCisJICogIC0gIjo6IgorCSAqLworCXBqX3N0cl90IGhvc3RwYXJ0LCBwb3J0X3BhcnQ7CisKKwlpZiAoKnN0ci0+cHRyID09ICdbJykgeworCSAgICBjaGFyICplbmRfYnJhY2tldDsKKwkgICAgaW50IGk7CisJICAgIHVuc2lnbmVkIGxvbmcgcG9ydDsKKworCSAgICBpZiAobGFzdF9jb2xvbl9wb3MgPT0gTlVMTCkKKwkJcmV0dXJuIFBKX0VJTlZBTDsKKworCSAgICBlbmRfYnJhY2tldCA9IHBqX3N0cmNocihzdHIsICddJyk7CisJICAgIGlmIChlbmRfYnJhY2tldCA9PSBOVUxMKQorCQlyZXR1cm4gUEpfRUlOVkFMOworCisJICAgIGhvc3RwYXJ0LnB0ciA9IChjaGFyKilzdHItPnB0ciArIDE7CisJICAgIGhvc3RwYXJ0LnNsZW4gPSBlbmRfYnJhY2tldCAtIGhvc3RwYXJ0LnB0cjsKKworCSAgICBpZiAobGFzdF9jb2xvbl9wb3MgPCBlbmRfYnJhY2tldCkgeworCQlwb3J0X3BhcnQucHRyID0gTlVMTDsKKwkJcG9ydF9wYXJ0LnNsZW4gPSAwOworCSAgICB9IGVsc2UgeworCQlwb3J0X3BhcnQucHRyID0gKGNoYXIqKWxhc3RfY29sb25fcG9zICsgMTsKKwkJcG9ydF9wYXJ0LnNsZW4gPSBlbmQgLSBwb3J0X3BhcnQucHRyOworCSAgICB9CisKKwkgICAgLyogTWFrZSBzdXJlIHBvcnQgbnVtYmVyIGlzIHZhbGlkICovCisJICAgIGZvciAoaT0wOyBpPHBvcnRfcGFydC5zbGVuOyArK2kpIHsKKwkJaWYgKCFwal9pc2RpZ2l0KHBvcnRfcGFydC5wdHJbaV0pKQorCQkgICAgcmV0dXJuIFBKX0VJTlZBTDsKKwkgICAgfQorCSAgICBwb3J0ID0gcGpfc3RydG91bCgmcG9ydF9wYXJ0KTsKKwkgICAgaWYgKHBvcnQgPiA2NTUzNSkKKwkJcmV0dXJuIFBKX0VJTlZBTDsKKworCSAgICBpZiAocF9ob3N0cGFydCkKKwkJKnBfaG9zdHBhcnQgPSBob3N0cGFydDsKKwkgICAgaWYgKHBfcG9ydCkKKwkJKnBfcG9ydCA9IChwal91aW50MTZfdClwb3J0OworCisJICAgIHJldHVybiBQSl9TVUNDRVNTOworCisJfSBlbHNlIHsKKwkgICAgLyogVHJlYXQgZXZlcnl0aGluZyBhcyBwYXJ0IG9mIHRoZSBJUHY2IElQIGFkZHJlc3MgKi8KKwkgICAgaWYgKHBfaG9zdHBhcnQpCisJCSpwX2hvc3RwYXJ0ID0gKnN0cjsKKwkgICAgaWYgKHBfcG9ydCkKKwkJKnBfcG9ydCA9IDA7CisKKwkgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisJfQorCisgICAgfSBlbHNlIHsKKwlyZXR1cm4gUEpfRUFGTk9UU1VQOworICAgIH0KKworfQorCisvKgorICogUGFyc2UgYWRkcmVzcworICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2thZGRyX3BhcnNlKCBpbnQgYWYsIHVuc2lnbmVkIG9wdGlvbnMsCisJCQkJICAgICAgIGNvbnN0IHBqX3N0cl90ICpzdHIsCisJCQkJICAgICAgIHBqX3NvY2thZGRyICphZGRyKQoreworICAgIHBqX3N0cl90IGhvc3RwYXJ0OworICAgIHBqX3VpbnQxNl90IHBvcnQ7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZGRyLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oYWY9PVBKX0FGX1VOU1BFQyB8fAorCQkgICAgIGFmPT1QSl9BRl9JTkVUIHx8CisJCSAgICAgYWY9PVBKX0FGX0lORVQ2LCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ob3B0aW9ucyA9PSAwLCBQSl9FSU5WQUwpOworCisgICAgc3RhdHVzID0gcGpfc29ja2FkZHJfcGFyc2UyKGFmLCBvcHRpb25zLCBzdHIsICZob3N0cGFydCwgJnBvcnQsICZhZik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisgICAgCisjaWYgIWRlZmluZWQoUEpfSEFTX0lQVjYpIHx8ICFQSl9IQVNfSVBWNgorICAgIGlmIChhZj09UEpfQUZfSU5FVDYpCisJcmV0dXJuIFBKX0VJUFY2Tk9UU1VQOworI2VuZGlmCisKKyAgICBzdGF0dXMgPSBwal9zb2NrYWRkcl9pbml0KGFmLCBhZGRyLCAmaG9zdHBhcnQsIHBvcnQpOworI2lmIGRlZmluZWQoUEpfSEFTX0lQVjYpICYmIFBKX0hBU19JUFY2CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTICYmIGFmID09IFBKX0FGX0lORVQ2KSB7CisJLyogUGFyc2luZyBkb2VzIG5vdCB5aWVsZCB2YWxpZCBhZGRyZXNzLiBUcnkgdG8gdHJlYXQgdGhlIGxhc3QgCisJICogcG9ydGlvbiBhZnRlciB0aGUgY29sb24gYXMgcG9ydCBudW1iZXIuCisJICovCisJY29uc3QgY2hhciAqbGFzdF9jb2xvbl9wb3M9TlVMTCwgKnA7CisJY29uc3QgY2hhciAqZW5kID0gc3RyLT5wdHIgKyBzdHItPnNsZW47CisJdW5zaWduZWQgbG9uZyBsb25nX3BvcnQ7CisJcGpfc3RyX3QgcG9ydF9wYXJ0OworCWludCBpOworCisJLyogUGFyc2UgYXMgSVB2Njpwb3J0ICovCisJZm9yIChwPXN0ci0+cHRyOyBwIT1lbmQ7ICsrcCkgeworCSAgICBpZiAoKnAgPT0gJzonKQorCQlsYXN0X2NvbG9uX3BvcyA9IHA7CisJfQorCisJaWYgKGxhc3RfY29sb25fcG9zID09IE5VTEwpCisJICAgIHJldHVybiBzdGF0dXM7CisKKwlob3N0cGFydC5wdHIgPSAoY2hhciopc3RyLT5wdHI7CisJaG9zdHBhcnQuc2xlbiA9IGxhc3RfY29sb25fcG9zIC0gc3RyLT5wdHI7CisKKwlwb3J0X3BhcnQucHRyID0gKGNoYXIqKWxhc3RfY29sb25fcG9zICsgMTsKKwlwb3J0X3BhcnQuc2xlbiA9IGVuZCAtIHBvcnRfcGFydC5wdHI7CisKKwkvKiBNYWtlIHN1cmUgcG9ydCBudW1iZXIgaXMgdmFsaWQgKi8KKwlmb3IgKGk9MDsgaTxwb3J0X3BhcnQuc2xlbjsgKytpKSB7CisJICAgIGlmICghcGpfaXNkaWdpdChwb3J0X3BhcnQucHRyW2ldKSkKKwkJcmV0dXJuIHN0YXR1czsKKwl9CisJbG9uZ19wb3J0ID0gcGpfc3RydG91bCgmcG9ydF9wYXJ0KTsKKwlpZiAobG9uZ19wb3J0ID4gNjU1MzUpCisJICAgIHJldHVybiBzdGF0dXM7CisKKwlwb3J0ID0gKHBqX3VpbnQxNl90KWxvbmdfcG9ydDsKKworCXN0YXR1cyA9IHBqX3NvY2thZGRyX2luaXQoUEpfQUZfSU5FVDYsIGFkZHIsICZob3N0cGFydCwgcG9ydCk7CisgICAgfQorI2VuZGlmCisgICAgCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLyogUmVzb2x2ZSB0aGUgSVAgYWRkcmVzcyBvZiBsb2NhbCBtYWNoaW5lICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldGhvc3RpcChpbnQgYWYsIHBqX3NvY2thZGRyICphZGRyKQoreworICAgIHVuc2lnbmVkIGksIGNvdW50LCBjYW5kX2NudDsKKyAgICBlbnVtIHsKKwlDQU5EX0NOVCA9IDgsCisKKwkvKiBXZWlnaHRpbmcgdG8gYmUgYXBwbGllZCB0byBmb3VuZCBhZGRyZXNzZXMgKi8KKwlXRUlHSFRfSE9TVE5BTUUJPSAxLAkvKiBob3N0bmFtZSBJUCBpcyBub3QgYWx3YXlzIHZhbGlkISAqLworCVdFSUdIVF9ERUZfUk9VVEUgPSAyLAorCVdFSUdIVF9JTlRFUkZBQ0UgPSAxLAorCVdFSUdIVF9MT09QQkFDSyA9IC01LAorCVdFSUdIVF9MSU5LX0xPQ0FMID0gLTQsCisJV0VJR0hUX0RJU0FCTEVEID0gLTUwLAorCisJTUlOX1dFSUdIVCA9IFdFSUdIVF9ESVNBQkxFRCsxCS8qIG1pbmltdW0gd2VpZ2h0IHRvIHVzZSAqLworICAgIH07CisgICAgLyogY2FuZGlkYXRlczogKi8KKyAgICBwal9zb2NrYWRkciBjYW5kX2FkZHJbQ0FORF9DTlRdOworICAgIGludAkJY2FuZF93ZWlnaHRbQ0FORF9DTlRdOworICAgIGludAkgICAgICAgIHNlbGVjdGVkX2NhbmQ7CisgICAgY2hhcglzdHJpcFtQSl9JTkVUNl9BRERSU1RSTEVOKzEwXTsKKyAgICAvKiBTcGVjaWFsIElQdjQgYWRkcmVzc2VzLiAqLworICAgIHN0cnVjdCBzcGVjX2lwdjRfdAorICAgIHsKKwlwal91aW50MzJfdCBhZGRyOworCXBqX3VpbnQzMl90IG1hc2s7CisJaW50CSAgICB3ZWlnaHQ7CisgICAgfSBzcGVjX2lwdjRbXSA9CisgICAgeworCS8qIDEyNy4wLjAuMC84LCBsb29wYmFjayBhZGRyIHdpbGwgYmUgdXNlZCBpZiB0aGVyZSBpcyBubyBvdGhlcgorCSAqIGFkZHJlc3Nlcy4KKwkgKi8KKwl7IDB4N2YwMDAwMDAsIDB4RkYwMDAwMDAsIFdFSUdIVF9MT09QQkFDSyB9LAorCisJLyogMC4wLjAuMC84LCBzcGVjaWFsIElQIHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIHByYWN0aWNhbGx5IHVzZWZ1bCAqLworCXsgMHgwMDAwMDAwMCwgMHhGRjAwMDAwMCwgV0VJR0hUX0RJU0FCTEVEIH0sCisKKwkvKiAxNjkuMjU0LjAuMC8xNiwgYSB6ZXJvY29uZi9saW5rLWxvY2FsIGFkZHJlc3MsIHdoaWNoIGhhcyBoaWdoZXIKKwkgKiBwcmlvcml0eSB0aGFuIGxvb3BiYWNrIGFuZCB3aWxsIGJlIHVzZWQgaWYgdGhlcmUgaXMgbm8gb3RoZXIKKwkgKiB2YWxpZCBhZGRyZXNzZXMuCisJICovCisJeyAweGE5ZmUwMDAwLCAweEZGRkYwMDAwLCBXRUlHSFRfTElOS19MT0NBTCB9CisgICAgfTsKKyAgICAvKiBTcGVjaWFsIElQdjYgYWRkcmVzc2VzICovCisgICAgc3RydWN0IHNwZWNfaXB2Nl90CisgICAgeworCXBqX3VpbnQ4X3QgYWRkclsxNl07CisJcGpfdWludDhfdCBtYXNrWzE2XTsKKwlpbnQJICAgd2VpZ2h0OworICAgIH0gc3BlY19pcHY2W10gPQorICAgIHsKKwkvKiBMb29wYmFjayBhZGRyZXNzLCA6OjEvMTI4ICovCisJeyB7MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMX0sCisJICB7MHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLAorCSAgIDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZn0sCisJICBXRUlHSFRfTE9PUEJBQ0sKKwl9LAorCisJLyogTGluayBsb2NhbCwgZmU4MDo6LzEwICovCisJeyB7MHhmZSwweDgwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCisJICB7MHhmZiwweGMwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCisJICBXRUlHSFRfTElOS19MT0NBTAorCX0sCisKKwkvKiBEaXNhYmxlZCwgOjovMTI4ICovCisJeyB7MHgwLDB4MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAorCXsgMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLAorCSAgMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmfSwKKwkgIFdFSUdIVF9ESVNBQkxFRAorCX0KKyAgICB9OworICAgIHBqX2FkZHJpbmZvIGFpOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIC8qIE1heSBub3QgYmUgdXNlZCBpZiBUUkFDRV8gaXMgZGlzYWJsZWQgKi8KKyAgICBQSl9VTlVTRURfQVJHKHN0cmlwKTsKKworI2lmZGVmIF9NU0NfVkVSCisgICAgLyogR2V0IHJpZCBvZiAidW5pbml0aWFsaXplZCBoZSB2YXJpYWJsZSIgd2l0aCBNUyBjb21waWxlcnMgKi8KKyAgICBwal9iemVybygmYWksIHNpemVvZihhaSkpOworI2VuZGlmCisKKyAgICBjYW5kX2NudCA9IDA7CisgICAgcGpfYnplcm8oY2FuZF9hZGRyLCBzaXplb2YoY2FuZF9hZGRyKSk7CisgICAgcGpfYnplcm8oY2FuZF93ZWlnaHQsIHNpemVvZihjYW5kX3dlaWdodCkpOworICAgIGZvciAoaT0wOyBpPFBKX0FSUkFZX1NJWkUoY2FuZF9hZGRyKTsgKytpKSB7CisJY2FuZF9hZGRyW2ldLmFkZHIuc2FfZmFtaWx5ID0gKHBqX3VpbnQxNl90KWFmOworCVBKX1NPQ0tBRERSX1JFU0VUX0xFTigmY2FuZF9hZGRyW2ldKTsKKyAgICB9CisKKyAgICBhZGRyLT5hZGRyLnNhX2ZhbWlseSA9IChwal91aW50MTZfdClhZjsKKyAgICBQSl9TT0NLQUREUl9SRVNFVF9MRU4oYWRkcik7CisKKyNpZiAhZGVmaW5lZChQSl9HRVRIT1NUSVBfRElTQUJMRV9MT0NBTF9SRVNPTFVUSU9OKSB8fCBcCisgICAgUEpfR0VUSE9TVElQX0RJU0FCTEVfTE9DQUxfUkVTT0xVVElPTiA9PSAwCisgICAgLyogR2V0IGhvc3RuYW1lJ3MgSVAgYWRkcmVzcyAqLworICAgIGNvdW50ID0gMTsKKyAgICBzdGF0dXMgPSBwal9nZXRhZGRyaW5mbyhhZiwgcGpfZ2V0aG9zdG5hbWUoKSwgJmNvdW50LCAmYWkpOworICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworICAgIAlwal9hc3NlcnQoYWkuYWlfYWRkci5hZGRyLnNhX2ZhbWlseSA9PSAocGpfdWludDE2X3QpYWYpOworICAgIAlwal9zb2NrYWRkcl9jb3B5X2FkZHIoJmNhbmRfYWRkcltjYW5kX2NudF0sICZhaS5haV9hZGRyKTsKKwlwal9zb2NrYWRkcl9zZXRfcG9ydCgmY2FuZF9hZGRyW2NhbmRfY250XSwgMCk7CisJY2FuZF93ZWlnaHRbY2FuZF9jbnRdICs9IFdFSUdIVF9IT1NUTkFNRTsKKwkrK2NhbmRfY250OworCisJVFJBQ0VfKChUSElTX0ZJTEUsICJob3N0bmFtZSBJUCBpcyAlcyIsCisJCXBqX3NvY2thZGRyX3ByaW50KCZhaS5haV9hZGRyLCBzdHJpcCwgc2l6ZW9mKHN0cmlwKSwgMCkpKTsKKyAgICB9CisjZWxzZQorICAgIFBKX1VOVVNFRF9BUkcoYWkpOworICAgIFBKX1VOVVNFRF9BUkcoY291bnQpOworI2VuZGlmCisKKyAgICAvKiBHZXQgZGVmYXVsdCBpbnRlcmZhY2UgKGludGVyZmFjZSBmb3IgZGVmYXVsdCByb3V0ZSkgKi8KKyAgICBpZiAoY2FuZF9jbnQgPCBQSl9BUlJBWV9TSVpFKGNhbmRfYWRkcikpIHsKKwlzdGF0dXMgPSBwal9nZXRkZWZhdWx0aXBpbnRlcmZhY2UoYWYsIGFkZHIpOworCWlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCSAgICBUUkFDRV8oKFRISVNfRklMRSwgImRlZmF1bHQgSVAgaXMgJXMiLAorCQkgICAgcGpfc29ja2FkZHJfcHJpbnQoYWRkciwgc3RyaXAsIHNpemVvZihzdHJpcCksIDApKSk7CisKKwkgICAgcGpfc29ja2FkZHJfc2V0X3BvcnQoYWRkciwgMCk7CisJICAgIGZvciAoaT0wOyBpPGNhbmRfY250OyArK2kpIHsKKwkJaWYgKHBqX3NvY2thZGRyX2NtcCgmY2FuZF9hZGRyW2ldLCBhZGRyKT09MCkKKwkJICAgIGJyZWFrOworCSAgICB9CisKKwkgICAgY2FuZF93ZWlnaHRbaV0gKz0gV0VJR0hUX0RFRl9ST1VURTsKKwkgICAgaWYgKGkgPj0gY2FuZF9jbnQpIHsKKwkJcGpfc29ja2FkZHJfY29weV9hZGRyKCZjYW5kX2FkZHJbaV0sIGFkZHIpOworCQkrK2NhbmRfY250OworCSAgICB9CisJfQorICAgIH0KKworCisgICAgLyogRW51bWVyYXRlIElQIGludGVyZmFjZXMgKi8KKyAgICBpZiAoY2FuZF9jbnQgPCBQSl9BUlJBWV9TSVpFKGNhbmRfYWRkcikpIHsKKwl1bnNpZ25lZCBzdGFydF9pZiA9IGNhbmRfY250OworCXVuc2lnbmVkIGNvdW50ID0gUEpfQVJSQVlfU0laRShjYW5kX2FkZHIpIC0gc3RhcnRfaWY7CisKKwlzdGF0dXMgPSBwal9lbnVtX2lwX2ludGVyZmFjZShhZiwgJmNvdW50LCAmY2FuZF9hZGRyW3N0YXJ0X2lmXSk7CisJaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTICYmIGNvdW50KSB7CisJICAgIC8qIENsZWFyIHRoZSBwb3J0IG51bWJlciAqLworCSAgICBmb3IgKGk9MDsgaTxjb3VudDsgKytpKQorCQlwal9zb2NrYWRkcl9zZXRfcG9ydCgmY2FuZF9hZGRyW3N0YXJ0X2lmK2ldLCAwKTsKKworCSAgICAvKiBGb3IgZWFjaCBjYW5kaWRhdGUgdGhhdCB3ZSBmb3VuZCBzbyBmYXIgKHRoYXQgaXMgdGhlIGhvc3RuYW1lCisJICAgICAqIGFkZHJlc3MgYW5kIGRlZmF1bHQgaW50ZXJmYWNlIGFkZHJlc3MsIGNoZWNrIGlmIHRoZXkncmUgZm91bmQKKwkgICAgICogaW4gdGhlIGludGVyZmFjZSBsaXN0LiBJZiBmb3VuZCwgYWRkIHRoZSB3ZWlnaHQsIGFuZCBpZiBub3QsCisJICAgICAqIGRlY3JlYXNlIHRoZSB3ZWlnaHQuCisJICAgICAqLworCSAgICBmb3IgKGk9MDsgaTxjYW5kX2NudDsgKytpKSB7CisJCXVuc2lnbmVkIGo7CisJCWZvciAoaj0wOyBqPGNvdW50OyArK2opIHsKKwkJICAgIGlmIChwal9zb2NrYWRkcl9jbXAoJmNhbmRfYWRkcltpXSwgCisJCQkJCSZjYW5kX2FkZHJbc3RhcnRfaWYral0pPT0wKQorCQkJYnJlYWs7CisJCX0KKworCQlpZiAoaiA9PSBjb3VudCkgeworCQkgICAgLyogTm90IGZvdW5kICovCisJCSAgICBjYW5kX3dlaWdodFtpXSAtPSBXRUlHSFRfSU5URVJGQUNFOworCQl9IGVsc2UgeworCQkgICAgY2FuZF93ZWlnaHRbaV0gKz0gV0VJR0hUX0lOVEVSRkFDRTsKKwkJfQorCSAgICB9CisKKwkgICAgLyogQWRkIHJlbWFpbmluZyBpbnRlcmZhY2UgdG8gY2FuZGlkYXRlIGxpc3QuICovCisJICAgIGZvciAoaT0wOyBpPGNvdW50OyArK2kpIHsKKwkJdW5zaWduZWQgajsKKwkJZm9yIChqPTA7IGo8Y2FuZF9jbnQ7ICsraikgeworCQkgICAgaWYgKHBqX3NvY2thZGRyX2NtcCgmY2FuZF9hZGRyW3N0YXJ0X2lmK2ldLCAKKwkJCQkJJmNhbmRfYWRkcltqXSk9PTApCisJCQlicmVhazsKKwkJfQorCisJCWlmIChqID09IGNhbmRfY250KSB7CisJCSAgICBwal9zb2NrYWRkcl9jb3B5X2FkZHIoJmNhbmRfYWRkcltjYW5kX2NudF0sIAorCQkJCQkgICZjYW5kX2FkZHJbc3RhcnRfaWYraV0pOworCQkgICAgY2FuZF93ZWlnaHRbY2FuZF9jbnRdICs9IFdFSUdIVF9JTlRFUkZBQ0U7CisJCSAgICArK2NhbmRfY250OworCQl9CisJICAgIH0KKwl9CisgICAgfQorCisgICAgLyogQXBwbHkgd2VpZ2h0IGFkanVzdG1lbnQgZm9yIHNwZWNpYWwgSVB2NC9JUHY2IGFkZHJlc3NlcworICAgICAqIFNlZSBodHRwOi8vdHJhYy5wanNpcC5vcmcvcmVwb3MvdGlja2V0LzEwNDYKKyAgICAgKi8KKyAgICBpZiAoYWYgPT0gUEpfQUZfSU5FVCkgeworCWZvciAoaT0wOyBpPGNhbmRfY250OyArK2kpIHsKKwkgICAgdW5zaWduZWQgajsKKwkgICAgZm9yIChqPTA7IGo8UEpfQVJSQVlfU0laRShzcGVjX2lwdjQpOyArK2opIHsKKwkJICAgIHBqX3VpbnQzMl90IGEgPSBwal9udG9obChjYW5kX2FkZHJbaV0uaXB2NC5zaW5fYWRkci5zX2FkZHIpOworCQkgICAgcGpfdWludDMyX3QgcGEgPSBzcGVjX2lwdjRbal0uYWRkcjsKKwkJICAgIHBqX3VpbnQzMl90IHBtID0gc3BlY19pcHY0W2pdLm1hc2s7CisKKwkJICAgIGlmICgoYSAmIHBtKSA9PSBwYSkgeworCQkJY2FuZF93ZWlnaHRbaV0gKz0gc3BlY19pcHY0W2pdLndlaWdodDsKKwkJCWJyZWFrOworCQkgICAgfQorCSAgICB9CisJfQorICAgIH0gZWxzZSBpZiAoYWYgPT0gUEpfQUZfSU5FVDYpIHsKKwlmb3IgKGk9MDsgaTxQSl9BUlJBWV9TSVpFKHNwZWNfaXB2Nik7ICsraSkgeworCQl1bnNpZ25lZCBqOworCQlmb3IgKGo9MDsgajxjYW5kX2NudDsgKytqKSB7CisJCSAgICBwal91aW50OF90ICphID0gY2FuZF9hZGRyW2pdLmlwdjYuc2luNl9hZGRyLnM2X2FkZHI7CisJCSAgICBwal91aW50OF90IGFtWzE2XTsKKwkJICAgIHBqX3VpbnQ4X3QgKnBhID0gc3BlY19pcHY2W2ldLmFkZHI7CisJCSAgICBwal91aW50OF90ICpwbSA9IHNwZWNfaXB2NltpXS5tYXNrOworCQkgICAgdW5zaWduZWQgazsKKworCQkgICAgZm9yIChrPTA7IGs8MTY7ICsraykgeworCQkJYW1ba10gPSAocGpfdWludDhfdCkoKGFba10gJiBwbVtrXSkgJiAweEZGKTsKKwkJICAgIH0KKworCQkgICAgaWYgKHBqX21lbWNtcChhbSwgcGEsIDE2KT09MCkgeworCQkJY2FuZF93ZWlnaHRbal0gKz0gc3BlY19pcHY2W2ldLndlaWdodDsKKwkJICAgIH0KKwkJfQorCX0KKyAgICB9IGVsc2UgeworCXJldHVybiBQSl9FQUZOT1RTVVA7CisgICAgfQorCisgICAgLyogRW51bWVyYXRlIGNhbmRpZGF0ZXMgdG8gZ2V0IHRoZSBiZXN0IElQIGFkZHJlc3MgdG8gY2hvb3NlICovCisgICAgc2VsZWN0ZWRfY2FuZCA9IC0xOworICAgIGZvciAoaT0wOyBpPGNhbmRfY250OyArK2kpIHsKKwlUUkFDRV8oKFRISVNfRklMRSwgIkNoZWNraW5nIGNhbmRpZGF0ZSBJUCAlcywgd2VpZ2h0PSVkIiwKKwkJcGpfc29ja2FkZHJfcHJpbnQoJmNhbmRfYWRkcltpXSwgc3RyaXAsIHNpemVvZihzdHJpcCksIDApLAorCQljYW5kX3dlaWdodFtpXSkpOworCisJaWYgKGNhbmRfd2VpZ2h0W2ldIDwgTUlOX1dFSUdIVCkgeworCSAgICBjb250aW51ZTsKKwl9CisKKwlpZiAoc2VsZWN0ZWRfY2FuZCA9PSAtMSkKKwkgICAgc2VsZWN0ZWRfY2FuZCA9IGk7CisJZWxzZSBpZiAoY2FuZF93ZWlnaHRbaV0gPiBjYW5kX3dlaWdodFtzZWxlY3RlZF9jYW5kXSkKKwkgICAgc2VsZWN0ZWRfY2FuZCA9IGk7CisgICAgfQorCisgICAgLyogSWYgZWxzZSBmYWlscywgcmV0dXJucyBsb29wYmFjayBpbnRlcmZhY2UgYXMgdGhlIGxhc3QgcmVzb3J0ICovCisgICAgaWYgKHNlbGVjdGVkX2NhbmQgPT0gLTEpIHsKKwlpZiAoYWY9PVBKX0FGX0lORVQpIHsKKwkgICAgYWRkci0+aXB2NC5zaW5fYWRkci5zX2FkZHIgPSBwal9odG9ubCAoMHg3ZjAwMDAwMSk7CisJfSBlbHNlIHsKKwkgICAgcGpfaW42X2FkZHIgKnM2X2FkZHI7CisKKwkgICAgczZfYWRkciA9IChwal9pbjZfYWRkciopIHBqX3NvY2thZGRyX2dldF9hZGRyKGFkZHIpOworCSAgICBwal9iemVybyhzNl9hZGRyLCBzaXplb2YocGpfaW42X2FkZHIpKTsKKwkgICAgczZfYWRkci0+czZfYWRkclsxNV0gPSAxOworCX0KKwlUUkFDRV8oKFRISVNfRklMRSwgIkxvb3BiYWNrIElQICVzIHJldHVybmVkIiwKKwkJcGpfc29ja2FkZHJfcHJpbnQoYWRkciwgc3RyaXAsIHNpemVvZihzdHJpcCksIDApKSk7CisgICAgfSBlbHNlIHsKKwlwal9zb2NrYWRkcl9jb3B5X2FkZHIoYWRkciwgJmNhbmRfYWRkcltzZWxlY3RlZF9jYW5kXSk7CisJVFJBQ0VfKChUSElTX0ZJTEUsICJDYW5kaWRhdGUgJXMgc2VsZWN0ZWQiLAorCQlwal9zb2NrYWRkcl9wcmludChhZGRyLCBzdHJpcCwgc2l6ZW9mKHN0cmlwKSwgMCkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyogR2V0IElQIGludGVyZmFjZSBmb3Igc2VuZGluZyB0byB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2dldGlwaW50ZXJmYWNlKGludCBhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGpfc3RyX3QgKmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc29ja2FkZHIgKml0Zl9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9ib29sX3QgYWxsb3dfcmVzb2x2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc29ja2FkZHIgKnBfZHN0X2FkZHIpCit7CisgICAgcGpfc29ja2FkZHIgZHN0X2FkZHI7CisgICAgcGpfc29ja190IGZkOworICAgIGludCBsZW47CisgICAgcGpfdWludDhfdCB6ZXJvWzY0XTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBwal9zb2NrYWRkcl9pbml0KGFmLCAmZHN0X2FkZHIsIE5VTEwsIDUzKTsKKyAgICBzdGF0dXMgPSBwal9pbmV0X3B0b24oYWYsIGRzdCwgcGpfc29ja2FkZHJfZ2V0X2FkZHIoJmRzdF9hZGRyKSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJLyogImRzdCIgaXMgbm90IGFuIElQIGFkZHJlc3MuICovCisJaWYgKGFsbG93X3Jlc29sdmUpIHsKKwkgICAgc3RhdHVzID0gcGpfc29ja2FkZHJfaW5pdChhZiwgJmRzdF9hZGRyLCBkc3QsIDUzKTsKKwl9IGVsc2UgeworCSAgICBwal9zdHJfdCBjcDsKKworCSAgICBpZiAoYWYgPT0gUEpfQUZfSU5FVCkgeworCQljcCA9IHBqX3N0cigiMS4xLjEuMSIpOworCSAgICB9IGVsc2UgeworCQljcCA9IHBqX3N0cigiMTo6MSIpOworCSAgICB9CisJICAgIHN0YXR1cyA9IHBqX3NvY2thZGRyX2luaXQoYWYsICZkc3RfYWRkciwgJmNwLCA1Myk7CisJfQorCisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCSAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIC8qIENyZWF0ZSBVRFAgc29ja2V0IGFuZCBjb25uZWN0KCkgdG8gdGhlIGRlc3RpbmF0aW9uIElQICovCisgICAgc3RhdHVzID0gcGpfc29ja19zb2NrZXQoYWYsIHBqX1NPQ0tfREdSQU0oKSwgMCwgJmZkKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlyZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX3NvY2tfY29ubmVjdChmZCwgJmRzdF9hZGRyLCBwal9zb2NrYWRkcl9nZXRfbGVuKCZkc3RfYWRkcikpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCXBqX3NvY2tfY2xvc2UoZmQpOworCXJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgbGVuID0gc2l6ZW9mKCppdGZfYWRkcik7CisgICAgc3RhdHVzID0gcGpfc29ja19nZXRzb2NrbmFtZShmZCwgaXRmX2FkZHIsICZsZW4pOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCXBqX3NvY2tfY2xvc2UoZmQpOworCXJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgcGpfc29ja19jbG9zZShmZCk7CisKKyAgICAvKiBDaGVjayB0aGF0IHRoZSBhZGRyZXNzIHJldHVybmVkIGlzIG5vdCB6ZXJvICovCisgICAgcGpfYnplcm8oemVybywgc2l6ZW9mKHplcm8pKTsKKyAgICBpZiAocGpfbWVtY21wKHBqX3NvY2thZGRyX2dldF9hZGRyKGl0Zl9hZGRyKSwgemVybywKKwkJICBwal9zb2NrYWRkcl9nZXRfYWRkcl9sZW4oaXRmX2FkZHIpKT09MCkKKyAgICB7CisJcmV0dXJuIFBKX0VOT1RGT1VORDsKKyAgICB9CisKKyAgICBpZiAocF9kc3RfYWRkcikKKwkqcF9kc3RfYWRkciA9IGRzdF9hZGRyOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qIEdldCB0aGUgZGVmYXVsdCBJUCBpbnRlcmZhY2UgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfZ2V0ZGVmYXVsdGlwaW50ZXJmYWNlKGludCBhZiwgcGpfc29ja2FkZHIgKmFkZHIpCit7CisgICAgcGpfc3RyX3QgY3A7CisKKyAgICBpZiAoYWYgPT0gUEpfQUZfSU5FVCkgeworCWNwID0gcGpfc3RyKCIxLjEuMS4xIik7CisgICAgfSBlbHNlIHsKKwljcCA9IHBqX3N0cigiMTo6MSIpOworICAgIH0KKworICAgIHJldHVybiBwal9nZXRpcGludGVyZmFjZShhZiwgJmNwLCBhZGRyLCBQSl9GQUxTRSwgTlVMTCk7Cit9CisKKworLyoKKyAqIEJpbmQgc29ja2V0IGF0IHJhbmRvbSBwb3J0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfYmluZF9yYW5kb20oICBwal9zb2NrX3Qgc29ja2ZkLAorCQkJCSAgICAgICAgICBjb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCSAgICAgICAgICBwal91aW50MTZfdCBwb3J0X3JhbmdlLAorCQkJCSAgICAgICAgICBwal91aW50MTZfdCBtYXhfdHJ5KQoreworICAgIHBqX3NvY2thZGRyIGJpbmRfYWRkcjsKKyAgICBpbnQgYWRkcl9sZW47CisgICAgcGpfdWludDE2X3QgYmFzZV9wb3J0OworICAgIHBqX3N0YXR1c190IHN0YXR1cyA9IFBKX1NVQ0NFU1M7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZGRyLCBQSl9FSU5WQUwpOworCisgICAgcGpfc29ja2FkZHJfY3AoJmJpbmRfYWRkciwgYWRkcik7CisgICAgYWRkcl9sZW4gPSBwal9zb2NrYWRkcl9nZXRfbGVuKGFkZHIpOworICAgIGJhc2VfcG9ydCA9IHBqX3NvY2thZGRyX2dldF9wb3J0KGFkZHIpOworCisgICAgaWYgKGJhc2VfcG9ydCA9PSAwIHx8IHBvcnRfcmFuZ2UgPT0gMCkgeworCXJldHVybiBwal9zb2NrX2JpbmQoc29ja2ZkLCAmYmluZF9hZGRyLCBhZGRyX2xlbik7CisgICAgfQorCisgICAgZm9yICg7IG1heF90cnk7IC0tbWF4X3RyeSkgeworCXBqX3VpbnQxNl90IHBvcnQ7CisJcG9ydCA9IChwal91aW50MTZfdCkoYmFzZV9wb3J0ICsgcGpfcmFuZCgpICUgKHBvcnRfcmFuZ2UgKyAxKSk7CisJcGpfc29ja2FkZHJfc2V0X3BvcnQoJmJpbmRfYWRkciwgcG9ydCk7CisJc3RhdHVzID0gcGpfc29ja19iaW5kKHNvY2tmZCwgJmJpbmRfYWRkciwgYWRkcl9sZW4pOworCWlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykKKwkgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworCisvKgorICogQWRqdXN0IHNvY2tldCBzZW5kL3JlY2VpdmUgYnVmZmVyIHNpemUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19zZXRzb2Nrb3B0X3NvYnVmKCBwal9zb2NrX3Qgc29ja2ZkLAorCQkJCQkgICAgICBwal91aW50MTZfdCBvcHRuYW1lLAorCQkJCQkgICAgICBwal9ib29sX3QgYXV0b19yZXRyeSwKKwkJCQkJICAgICAgdW5zaWduZWQgKmJ1Zl9zaXplKQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICBpbnQgdHJ5X3NpemUsIGN1cl9zaXplLCBpLCBzdGVwLCBzaXplX2xlbjsKKyAgICBlbnVtIHsgTUFYX1RSWSA9IDIwIH07CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzb2NrZmQgIT0gUEpfSU5WQUxJRF9TT0NLRVQgJiYKKwkJICAgICBidWZfc2l6ZSAmJgorCQkgICAgICpidWZfc2l6ZSA+IDAgJiYKKwkJICAgICAob3B0bmFtZSA9PSBwal9TT19SQ1ZCVUYoKSB8fAorCQkgICAgICBvcHRuYW1lID09IHBqX1NPX1NOREJVRigpKSwKKwkJICAgICBQSl9FSU5WQUwpOworCisgICAgc2l6ZV9sZW4gPSBzaXplb2YoY3VyX3NpemUpOworICAgIHN0YXR1cyA9IHBqX3NvY2tfZ2V0c29ja29wdChzb2NrZmQsIHBqX1NPTF9TT0NLRVQoKSwgb3B0bmFtZSwKKwkJCQkmY3VyX3NpemUsICZzaXplX2xlbik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisKKyAgICB0cnlfc2l6ZSA9ICpidWZfc2l6ZTsKKyAgICBzdGVwID0gKHRyeV9zaXplIC0gY3VyX3NpemUpIC8gTUFYX1RSWTsKKyAgICBpZiAoc3RlcCA8IDQwOTYpCisJc3RlcCA9IDQwOTY7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgKE1BWF9UUlktMSk7ICsraSkgeworCWlmICh0cnlfc2l6ZSA8PSBjdXJfc2l6ZSkgeworCSAgICAvKiBEb25lLCByZXR1cm4gY3VycmVudCBzaXplICovCisJICAgICpidWZfc2l6ZSA9IGN1cl9zaXplOworCSAgICBicmVhazsKKwl9CisKKwlzdGF0dXMgPSBwal9zb2NrX3NldHNvY2tvcHQoc29ja2ZkLCBwal9TT0xfU09DS0VUKCksIG9wdG5hbWUsCisJCQkJICAgICZ0cnlfc2l6ZSwgc2l6ZW9mKHRyeV9zaXplKSk7CisJaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKSB7CisJICAgIHN0YXR1cyA9IHBqX3NvY2tfZ2V0c29ja29wdChzb2NrZmQsIHBqX1NPTF9TT0NLRVQoKSwgb3B0bmFtZSwKKwkJCQkJJmN1cl9zaXplLCAmc2l6ZV9sZW4pOworCSAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkJLyogT3BzISBObyBpbmZvIGFib3V0IGN1cnJlbnQgc2l6ZSwganVzdCByZXR1cm4gbGFzdCB0cnkgc2l6ZQorCQkgKiBhbmQgcXVpdC4KKwkJICovCisJCSpidWZfc2l6ZSA9IHRyeV9zaXplOworCQlicmVhazsKKwkgICAgfQorCX0KKworCWlmICghYXV0b19yZXRyeSkKKwkgICAgYnJlYWs7CisKKwl0cnlfc2l6ZSAtPSBzdGVwOworICAgIH0KKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKKworLyogT25seSBuZWVkIHRvIGltcGxlbWVudCB0aGVzZSBpbiBETEwgYnVpbGQgKi8KKyNpZiBkZWZpbmVkKFBKX0RMTCkKKworUEpfREVGKHBqX3VpbnQxNl90KSBwal9BRl9VTlNQRUModm9pZCkKK3sKKyAgICByZXR1cm4gUEpfQUZfVU5TUEVDOworfQorCitQSl9ERUYocGpfdWludDE2X3QpIHBqX0FGX1VOSVgodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfQUZfVU5JWDsKK30KKworUEpfREVGKHBqX3VpbnQxNl90KSBwal9BRl9JTkVUKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX0FGX0lORVQ7Cit9CisKK1BKX0RFRihwal91aW50MTZfdCkgcGpfQUZfSU5FVDYodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfQUZfSU5FVDY7Cit9CisKK1BKX0RFRihwal91aW50MTZfdCkgcGpfQUZfUEFDS0VUKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX0FGX1BBQ0tFVDsKK30KKworUEpfREVGKHBqX3VpbnQxNl90KSBwal9BRl9JUkRBKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX0FGX0lSREE7Cit9CisKK1BKX0RFRihpbnQpIHBqX1NPQ0tfU1RSRUFNKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NPQ0tfU1RSRUFNOworfQorCitQSl9ERUYoaW50KSBwal9TT0NLX0RHUkFNKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NPQ0tfREdSQU07Cit9CisKK1BKX0RFRihpbnQpIHBqX1NPQ0tfUkFXKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NPQ0tfUkFXOworfQorCitQSl9ERUYoaW50KSBwal9TT0NLX1JETSh2b2lkKQoreworICAgIHJldHVybiBQSl9TT0NLX1JETTsKK30KKworUEpfREVGKHBqX3VpbnQxNl90KSBwal9TT0xfU09DS0VUKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NPTF9TT0NLRVQ7Cit9CisKK1BKX0RFRihwal91aW50MTZfdCkgcGpfU09MX0lQKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NPTF9JUDsKK30KKworUEpfREVGKHBqX3VpbnQxNl90KSBwal9TT0xfVENQKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NPTF9UQ1A7Cit9CisKK1BKX0RFRihwal91aW50MTZfdCkgcGpfU09MX1VEUCh2b2lkKQoreworICAgIHJldHVybiBQSl9TT0xfVURQOworfQorCitQSl9ERUYocGpfdWludDE2X3QpIHBqX1NPTF9JUFY2KHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NPTF9JUFY2OworfQorCitQSl9ERUYoaW50KSBwal9JUF9UT1Modm9pZCkKK3sKKyAgICByZXR1cm4gUEpfSVBfVE9TOworfQorCitQSl9ERUYoaW50KSBwal9JUFRPU19MT1dERUxBWSh2b2lkKQoreworICAgIHJldHVybiBQSl9JUFRPU19MT1dERUxBWTsKK30KKworUEpfREVGKGludCkgcGpfSVBUT1NfVEhST1VHSFBVVCh2b2lkKQoreworICAgIHJldHVybiBQSl9JUFRPU19USFJPVUdIUFVUOworfQorCitQSl9ERUYoaW50KSBwal9JUFRPU19SRUxJQUJJTElUWSh2b2lkKQoreworICAgIHJldHVybiBQSl9JUFRPU19SRUxJQUJJTElUWTsKK30KKworUEpfREVGKGludCkgcGpfSVBUT1NfTUlOQ09TVCh2b2lkKQoreworICAgIHJldHVybiBQSl9JUFRPU19NSU5DT1NUOworfQorCitQSl9ERUYocGpfdWludDE2X3QpIHBqX1NPX1RZUEUodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfU09fVFlQRTsKK30KKworUEpfREVGKHBqX3VpbnQxNl90KSBwal9TT19SQ1ZCVUYodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfU09fUkNWQlVGOworfQorCitQSl9ERUYocGpfdWludDE2X3QpIHBqX1NPX1NOREJVRih2b2lkKQoreworICAgIHJldHVybiBQSl9TT19TTkRCVUY7Cit9CisKK1BKX0RFRihwal91aW50MTZfdCkgcGpfVENQX05PREVMQVkodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfVENQX05PREVMQVk7Cit9CisKK1BKX0RFRihwal91aW50MTZfdCkgcGpfU09fUkVVU0VBRERSKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NPX1JFVVNFQUREUjsKK30KKworUEpfREVGKHBqX3VpbnQxNl90KSBwal9TT19OT1NJR1BJUEUodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfU09fTk9TSUdQSVBFOworfQorCitQSl9ERUYocGpfdWludDE2X3QpIHBqX1NPX1BSSU9SSVRZKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX1NPX1BSSU9SSVRZOworfQorCitQSl9ERUYocGpfdWludDE2X3QpIHBqX0lQX01VTFRJQ0FTVF9JRih2b2lkKQoreworICAgIHJldHVybiBQSl9JUF9NVUxUSUNBU1RfSUY7Cit9CisKK1BKX0RFRihwal91aW50MTZfdCkgcGpfSVBfTVVMVElDQVNUX1RUTCh2b2lkKQoreworICAgIHJldHVybiBQSl9JUF9NVUxUSUNBU1RfVFRMOworfQorCitQSl9ERUYocGpfdWludDE2X3QpIHBqX0lQX01VTFRJQ0FTVF9MT09QKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX0lQX01VTFRJQ0FTVF9MT09QOworfQorCitQSl9ERUYocGpfdWludDE2X3QpIHBqX0lQX0FERF9NRU1CRVJTSElQKHZvaWQpCit7CisgICAgcmV0dXJuIFBKX0lQX0FERF9NRU1CRVJTSElQOworfQorCitQSl9ERUYocGpfdWludDE2X3QpIHBqX0lQX0RST1BfTUVNQkVSU0hJUCh2b2lkKQoreworICAgIHJldHVybiBQSl9JUF9EUk9QX01FTUJFUlNISVA7Cit9CisKK1BKX0RFRihpbnQpIHBqX01TR19PT0Iodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfTVNHX09PQjsKK30KKworUEpfREVGKGludCkgcGpfTVNHX1BFRUsodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfTVNHX1BFRUs7Cit9CisKK1BKX0RFRihpbnQpIHBqX01TR19ET05UUk9VVEUodm9pZCkKK3sKKyAgICByZXR1cm4gUEpfTVNHX0RPTlRST1VURTsKK30KKworI2VuZGlmCS8qIFBKX0RMTCAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc29ja19saW51eF9rZXJuZWwuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX2xpbnV4X2tlcm5lbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYTdjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc29ja19saW51eF9rZXJuZWwuYwpAQCAtMCwwICsxLDc1NSBAQAorLyogJElkOiBzb2NrX2xpbnV4X2tlcm5lbC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovc29jay5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgkgICAgLyogcGpfbWVtY3B5KCkJICAgICovCisjaW5jbHVkZSA8cGovb3MuaD4JICAgIC8qIFBKX0NIRUNLX1NUQUNLKCkJICAgICovCisjaW5jbHVkZSA8cGovYWRkcl9yZXNvbHYuaD4gLyogcGpfZ2V0aG9zdGJ5bmFtZSgpICAgKi8KKyNpbmNsdWRlIDxwai9jdHlwZS5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zcHJpbnRmLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKworLyogTGludXgga2VybmVsIHNwZWNpZmljLiAqLworI2luY2x1ZGUgPGxpbnV4L3NvY2tldC5oPgorI2luY2x1ZGUgPGxpbnV4L25ldC5oPgorLy8jaW5jbHVkZSA8bmV0L3NvY2suaD4KKyNpbmNsdWRlIDxsaW51eC9zZWN1cml0eS5oPgorI2luY2x1ZGUgPGxpbnV4L3N5c2NhbGxzLmg+CS8qIHN5c194eHgoKQkqLworI2luY2x1ZGUgPGFzbS9pb2N0bHMuaD4JCS8qIEZJT05CSU8JKi8KKyNpbmNsdWRlIDxsaW51eC91dHNuYW1lLmg+CS8qIGZvciBwal9nZXRob3N0bmFtZSgpICovCisKKy8qCisgKiBBZGRyZXNzIGZhbWlsaWVzIGNvbnZlcnNpb24uCisgKiBUaGUgdmFsdWVzIGhlcmUgYXJlIGluZGV4ZWQgYmFzZWQgb24gcGpfYWRkcl9mYW1pbHktMHhGRjAwLgorICovCitjb25zdCBwal91aW50MTZfdCBQSl9BRl9VTklYCT0gQUZfVU5JWDsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0FGX0lORVQJPSBBRl9JTkVUOworY29uc3QgcGpfdWludDE2X3QgUEpfQUZfSU5FVDYJPSBBRl9JTkVUNjsKKyNpZmRlZiBBRl9QQUNLRVQKK2NvbnN0IHBqX3VpbnQxNl90IFBKX0FGX1BBQ0tFVAk9IEFGX1BBQ0tFVDsKKyNlbHNlCisjICBlcnJvciAiQUZfUEFDS0VUIHVuZGVjbGFyZWQhIgorI2VuZGlmCisjaWZkZWYgQUZfSVJEQQorY29uc3QgcGpfdWludDE2X3QgUEpfQUZfSVJEQQk9IEFGX0lSREE7CisjZWxzZQorIyAgZXJyb3IgIkFGX0lSREEgdW5kZWNsYXJlZCEiCisjZW5kaWYKKworLyoKKyAqIFNvY2tldCB0eXBlcyBjb252ZXJzaW9uLgorICogVGhlIHZhbHVlcyBoZXJlIGFyZSBpbmRleGVkIGJhc2VkIG9uIHBqX3NvY2tfdHlwZS0weEZGMDAKKyAqLworY29uc3QgcGpfdWludDE2X3QgUEpfU09DS19TVFJFQU09IFNPQ0tfU1RSRUFNOworY29uc3QgcGpfdWludDE2X3QgUEpfU09DS19ER1JBTQk9IFNPQ0tfREdSQU07Citjb25zdCBwal91aW50MTZfdCBQSl9TT0NLX1JBVwk9IFNPQ0tfUkFXOworY29uc3QgcGpfdWludDE2X3QgUEpfU09DS19SRE0JPSBTT0NLX1JETTsKKworLyoKKyAqIFNvY2tldCBsZXZlbCB2YWx1ZXMuCisgKi8KK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9TT0NLRVQJPSBTT0xfU09DS0VUOworI2lmZGVmIFNPTF9JUAorY29uc3QgcGpfdWludDE2X3QgUEpfU09MX0lQCT0gU09MX0lQOworI2Vsc2UKKyMgIGVycm9yICJTT0xfSVAgdW5kZWNsYXJlZCEiCisjZW5kaWYgLyogU09MX0lQICovCisjaWYgZGVmaW5lZChTT0xfVENQKQorY29uc3QgcGpfdWludDE2X3QgUEpfU09MX1RDUAk9IFNPTF9UQ1A7CisjZWxzZQorIyAgZXJyb3IgIlNPTF9UQ1AgdW5kZWNsYXJlZCEiCisjZW5kaWYgLyogU09MX1RDUCAqLworI2lmZGVmIFNPTF9VRFAKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9VRFAJPSBTT0xfVURQOworI2Vsc2UKKyMgIGVycm9yICJTT0xfVURQIHVuZGVjbGFyZWQhIgorI2VuZGlmCisjaWZkZWYgU09MX0lQVjYKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9JUFY2CT0gU09MX0lQVjY7CisjZWxzZQorIyAgZXJyb3IgIlNPTF9JUFY2IHVuZGVjbGFyZWQhIgorI2VuZGlmCisKKy8qIG9wdG5hbWUgdmFsdWVzLiAqLworY29uc3QgcGpfdWludDE2X3QgUEpfU09fVFlQRSAgICA9IFNPX1RZUEU7Citjb25zdCBwal91aW50MTZfdCBQSl9TT19SQ1ZCVUYgID0gU09fUkNWQlVGOworY29uc3QgcGpfdWludDE2X3QgUEpfU09fU05EQlVGICA9IFNPX1NOREJVRjsKKworLyoKKyAqIENvbnZlcnQgMTYtYml0IHZhbHVlIGZyb20gbmV0d29yayBieXRlIG9yZGVyIHRvIGhvc3QgYnl0ZSBvcmRlci4KKyAqLworUEpfREVGKHBqX3VpbnQxNl90KSBwal9udG9ocyhwal91aW50MTZfdCBuZXRzaG9ydCkKK3sKKyAgICByZXR1cm4gbnRvaHMobmV0c2hvcnQpOworfQorCisvKgorICogQ29udmVydCAxNi1iaXQgdmFsdWUgZnJvbSBob3N0IGJ5dGUgb3JkZXIgdG8gbmV0d29yayBieXRlIG9yZGVyLgorICovCitQSl9ERUYocGpfdWludDE2X3QpIHBqX2h0b25zKHBqX3VpbnQxNl90IGhvc3RzaG9ydCkKK3sKKyAgICByZXR1cm4gaHRvbnMoaG9zdHNob3J0KTsKK30KKworLyoKKyAqIENvbnZlcnQgMzItYml0IHZhbHVlIGZyb20gbmV0d29yayBieXRlIG9yZGVyIHRvIGhvc3QgYnl0ZSBvcmRlci4KKyAqLworUEpfREVGKHBqX3VpbnQzMl90KSBwal9udG9obChwal91aW50MzJfdCBuZXRsb25nKQoreworICAgIHJldHVybiBudG9obChuZXRsb25nKTsKK30KKworLyoKKyAqIENvbnZlcnQgMzItYml0IHZhbHVlIGZyb20gaG9zdCBieXRlIG9yZGVyIHRvIG5ldHdvcmsgYnl0ZSBvcmRlci4KKyAqLworUEpfREVGKHBqX3VpbnQzMl90KSBwal9odG9ubChwal91aW50MzJfdCBob3N0bG9uZykKK3sKKyAgICByZXR1cm4gaHRvbmwoaG9zdGxvbmcpOworfQorCisvKgorICogQ29udmVydCBhbiBJbnRlcm5ldCBob3N0IGFkZHJlc3MgZ2l2ZW4gaW4gbmV0d29yayBieXRlIG9yZGVyCisgKiB0byBzdHJpbmcgaW4gc3RhbmRhcmQgbnVtYmVycyBhbmQgZG90cyBub3RhdGlvbi4KKyAqLworUEpfREVGKGNoYXIqKSBwal9pbmV0X250b2EocGpfaW5fYWRkciBpbikKK3sKKyNkZWZpbmUJVUMoYikJKCgoaW50KWIpJjB4ZmYpCisgICAgc3RhdGljIGNoYXIgYlsxOF07CisgICAgY2hhciAqcDsKKworICAgIHAgPSAoY2hhciAqKSZpbjsKKyAgICBwal9zbnByaW50ZihiLCBzaXplb2YoYiksICIlZC4lZC4lZC4lZCIsIAorCSAgICAgICBVQyhwWzBdKSwgVUMocFsxXSksIFVDKHBbMl0pLCBVQyhwWzNdKSk7CisKKyAgICByZXR1cm4gYjsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIEludGVybmV0IGhvc3QgYWRkcmVzcyBjY3AgZnJvbSB0aGUgc3RhbmRhcmQKKyAqIG51bWJlcnMtYW5kLWRvdHMgbm90YXRpb24gaW50byBiaW5hcnkgZGF0YSBhbmQgc3RvcmVzIGl0IGluIHRoZSBzdHJ1Y3R1cmUKKyAqIHRoYXQgaW5wIHBvaW50cyB0by4gCisgKi8KK1BKX0RFRihpbnQpIHBqX2luZXRfYXRvbihjb25zdCBwal9zdHJfdCAqY2NwLCBzdHJ1Y3QgcGpfaW5fYWRkciAqYWRkcikKK3sKKyAgICBwal91aW50MzJfdCB2YWw7CisgICAgaW50IGJhc2UsIG47CisgICAgY2hhciBjOworICAgIHVuc2lnbmVkIHBhcnRzWzRdOworICAgIHVuc2lnbmVkICpwcCA9IHBhcnRzOworICAgIGNoYXIgY3BfY29weVsxOF07CisgICAgY2hhciAqY3AgPSBjcF9jb3B5OworICAgIAorICAgIGFkZHItPnNfYWRkciA9IFBKX0lOQUREUl9OT05FOworCisgICAgaWYgKGNjcC0+c2xlbiA+IDE1KSByZXR1cm4gMDsKKworICAgIHBqX21lbWNweShjcCwgY2NwLT5wdHIsIGNjcC0+c2xlbik7CisgICAgY3BbY2NwLT5zbGVuXSA9ICdcMCc7CisKKyAgICBjID0gKmNwOworICAgIGZvciAoOzspIHsKKwkvKgorCSAqIENvbGxlY3QgbnVtYmVyIHVwIHRvIGBgLicnLgorCSAqIFZhbHVlcyBhcmUgc3BlY2lmaWVkIGFzIGZvciBDOgorCSAqIDB4PWhleCwgMD1vY3RhbCwgaXNkaWdpdD1kZWNpbWFsLgorCSAqLworCWlmICghcGpfaXNkaWdpdCgoaW50KWMpKQorCSAgICByZXR1cm4gKDApOworCXZhbCA9IDA7IGJhc2UgPSAxMDsKKwlpZiAoYyA9PSAnMCcpIHsKKwkgICAgYyA9ICorK2NwOworCSAgICBpZiAoYyA9PSAneCcgfHwgYyA9PSAnWCcpCisJCWJhc2UgPSAxNiwgYyA9ICorK2NwOworCSAgICBlbHNlCisJCWJhc2UgPSA4OworCX0KKworCWZvciAoOzspIHsKKwkgICAgaWYgKHBqX2lzYXNjaWkoKGludCljKSAmJiBwal9pc2RpZ2l0KChpbnQpYykpIHsKKwkJdmFsID0gKHZhbCAqIGJhc2UpICsgKGMgLSAnMCcpOworCQljID0gKisrY3A7CisJICAgIH0gZWxzZSBpZiAoYmFzZT09MTYgJiYgcGpfaXNhc2NpaSgoaW50KWMpICYmIHBqX2lzeGRpZ2l0KChpbnQpYykpIHsKKwkJdmFsID0gKHZhbCA8PCA0KSB8CisJCSAgICAgIChjICsgMTAgLSAocGpfaXNsb3dlcigoaW50KWMpID8gJ2EnIDogJ0EnKSk7CisJCWMgPSAqKytjcDsKKwkgICAgfSBlbHNlCisJCWJyZWFrOworCX0KKworCWlmIChjID09ICcuJykgeworCSAgICAvKgorCSAgICAgKiBJbnRlcm5ldCBmb3JtYXQ6CisJICAgICAqICBhLmIuYy5kCisJICAgICAqICBhLmIuYyAgICh3aXRoIGMgdHJlYXRlZCBhcyAxNiBiaXRzKQorCSAgICAgKiAgYS5iCSh3aXRoIGIgdHJlYXRlZCBhcyAyNCBiaXRzKQorCSAgICAgKi8KKwkgICAgaWYgKHBwID49IHBhcnRzICsgMykKKwkJcmV0dXJuICgwKTsKKwkgICAgKnBwKysgPSB2YWw7CisJICAgIGMgPSAqKytjcDsKKwl9IGVsc2UKKwkgICAgYnJlYWs7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBDaGVjayBmb3IgdHJhaWxpbmcgY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBpZiAoYyAhPSAnXDAnICYmICghcGpfaXNhc2NpaSgoaW50KWMpIHx8ICFwal9pc3NwYWNlKChpbnQpYykpKQorICAgICAgICByZXR1cm4gKDApOworICAgIC8qCisgICAgICogQ29uY29jdCB0aGUgYWRkcmVzcyBhY2NvcmRpbmcgdG8KKyAgICAgKiB0aGUgbnVtYmVyIG9mIHBhcnRzIHNwZWNpZmllZC4KKyAgICAgKi8KKyAgICBuID0gcHAgLSBwYXJ0cyArIDE7CisgICAgc3dpdGNoIChuKSB7CisgICAgY2FzZSAwOgorCXJldHVybiAoMCk7CSAgICAvKiBpbml0aWFsIG5vbmRpZ2l0ICovCisgICAgY2FzZSAxOgkJLyogYSAtLSAzMiBiaXRzICovCisJYnJlYWs7CisgICAgY2FzZSAyOgkJLyogYS5iIC0tIDguMjQgYml0cyAqLworCWlmICh2YWwgPiAweGZmZmZmZikKKwkgICAgcmV0dXJuICgwKTsKKwl2YWwgfD0gcGFydHNbMF0gPDwgMjQ7CisJYnJlYWs7CisgICAgY2FzZSAzOgkJLyogYS5iLmMgLS0gOC44LjE2IGJpdHMgKi8KKwlpZiAodmFsID4gMHhmZmZmKQorCSAgICByZXR1cm4gKDApOworCXZhbCB8PSAocGFydHNbMF0gPDwgMjQpIHwgKHBhcnRzWzFdIDw8IDE2KTsKKwlicmVhazsKKyAgICBjYXNlIDQ6CQkvKiBhLmIuYy5kIC0tIDguOC44LjggYml0cyAqLworCWlmICh2YWwgPiAweGZmKQorCSAgICByZXR1cm4gKDApOworCXZhbCB8PSAocGFydHNbMF0gPDwgMjQpIHwgKHBhcnRzWzFdIDw8IDE2KSB8IChwYXJ0c1syXSA8PCA4KTsKKwlicmVhazsKKyAgICB9CisKKyAgICBpZiAoYWRkcikKKwlhZGRyLT5zX2FkZHIgPSBwal9odG9ubCh2YWwpOworICAgIHJldHVybiAoMSk7Cit9CisKKy8qCisgKiBDb252ZXJ0IGFkZHJlc3Mgc3RyaW5nIHdpdGggbnVtYmVycyBhbmQgZG90cyB0byBiaW5hcnkgSVAgYWRkcmVzcy4KKyAqLyAKK1BKX0RFRihwal9pbl9hZGRyKSBwal9pbmV0X2FkZHIoY29uc3QgcGpfc3RyX3QgKmNwKQoreworICAgIHBqX2luX2FkZHIgYWRkcjsKKyAgICBwal9pbmV0X2F0b24oY3AsICZhZGRyKTsKKyAgICByZXR1cm4gYWRkcjsKK30KKworLyoKKyAqIFNldCB0aGUgSVAgYWRkcmVzcyBvZiBhbiBJUCBzb2NrZXQgYWRkcmVzcyBmcm9tIHN0cmluZyBhZGRyZXNzLCAKKyAqIHdpdGggcmVzb2x2aW5nIHRoZSBob3N0IGlmIG5lY2Vzc2FyeS4gVGhlIHN0cmluZyBhZGRyZXNzIG1heSBiZSBpbiBhCisgKiBzdGFuZGFyZCBudW1iZXJzIGFuZCBkb3RzIG5vdGF0aW9uIG9yIG1heSBiZSBhIGhvc3RuYW1lLiBJZiBob3N0bmFtZQorICogaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBmdW5jdGlvbiB3aWxsIHJlc29sdmUgdGhlIGhvc3QgaW50byB0aGUgSVAKKyAqIGFkZHJlc3MuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja2FkZHJfaW5fc2V0X3N0cl9hZGRyKCBwal9zb2NrYWRkcl9pbiAqYWRkciwKKwkJCQkJICAgICAgICAgY29uc3QgcGpfc3RyX3QgKnN0cl9hZGRyKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBwal9hc3NlcnQoc3RyX2FkZHIgJiYgc3RyX2FkZHItPnNsZW4gPCBQSl9NQVhfSE9TVE5BTUUpOworCisgICAgYWRkci0+c2luX2ZhbWlseSA9IEFGX0lORVQ7CisKKyAgICBpZiAoc3RyX2FkZHIgJiYgc3RyX2FkZHItPnNsZW4pIHsKKwlhZGRyLT5zaW5fYWRkciA9IHBqX2luZXRfYWRkcihzdHJfYWRkcik7CisJaWYgKGFkZHItPnNpbl9hZGRyLnNfYWRkciA9PSBQSl9JTkFERFJfTk9ORSkgeworICAgIAkgICAgcGpfaG9zdGVudCBoZTsKKwkgICAgaWYgKHBqX2dldGhvc3RieW5hbWUoc3RyX2FkZHIsICZoZSkgPT0gMCkgeworCQlhZGRyLT5zaW5fYWRkci5zX2FkZHIgPSAqKHBqX3VpbnQzMl90KiloZS5oX2FkZHI7CisJICAgIH0gZWxzZSB7CisJCWFkZHItPnNpbl9hZGRyLnNfYWRkciA9IFBKX0lOQUREUl9OT05FOworCQlyZXR1cm4gLTE7CisJICAgIH0KKwl9CisKKyAgICB9IGVsc2UgeworCWFkZHItPnNpbl9hZGRyLnNfYWRkciA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBTZXQgdGhlIElQIGFkZHJlc3MgYW5kIHBvcnQgb2YgYW4gSVAgc29ja2V0IGFkZHJlc3MuCisgKiBUaGUgc3RyaW5nIGFkZHJlc3MgbWF5IGJlIGluIGEgc3RhbmRhcmQgbnVtYmVycyBhbmQgZG90cyBub3RhdGlvbiBvciAKKyAqIG1heSBiZSBhIGhvc3RuYW1lLiBJZiBob3N0bmFtZSBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgCisgKiByZXNvbHZlIHRoZSBob3N0IGludG8gdGhlIElQIGFkZHJlc3MuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja2FkZHJfaW5faW5pdCggcGpfc29ja2FkZHJfaW4gKmFkZHIsCisJCQkJICAgICAgICAgY29uc3QgcGpfc3RyX3QgKnN0cl9hZGRyLAorCQkJCQkgcGpfdWludDE2X3QgcG9ydCkKK3sKKyAgICBwal9hc3NlcnQoYWRkciAmJiBzdHJfYWRkcik7CisKKyAgICBhZGRyLT5zaW5fZmFtaWx5ID0gUEpfQUZfSU5FVDsKKyAgICBwal9zb2NrYWRkcl9pbl9zZXRfcG9ydChhZGRyLCBwb3J0KTsKKyAgICByZXR1cm4gcGpfc29ja2FkZHJfaW5fc2V0X3N0cl9hZGRyKGFkZHIsIHN0cl9hZGRyKTsKK30KKworCisvKgorICogR2V0IGhvc3RuYW1lLgorICovCitQSl9ERUYoY29uc3QgcGpfc3RyX3QqKSBwal9nZXRob3N0bmFtZSh2b2lkKQoreworICAgIHN0YXRpYyBjaGFyIGJ1ZltQSl9NQVhfSE9TVE5BTUVdOworICAgIHN0YXRpYyBwal9zdHJfdCBob3N0bmFtZTsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBpZiAoaG9zdG5hbWUucHRyID09IE5VTEwpIHsKKwlob3N0bmFtZS5wdHIgPSBidWY7CisJZG93bl9yZWFkKCZ1dHNfc2VtKTsKKwlob3N0bmFtZS5zbGVuID0gc3RybGVuKHN5c3RlbV91dHNuYW1lLm5vZGVuYW1lKTsKKwlpZiAoaG9zdG5hbWUuc2xlbiA+IFBKX01BWF9IT1NUTkFNRSkgeworCSAgICBob3N0bmFtZS5wdHJbMF0gPSAnXDAnOworCSAgICBob3N0bmFtZS5zbGVuID0gMDsKKwl9IGVsc2UgeworCSAgICBwal9tZW1jcHkoaG9zdG5hbWUucHRyLCBzeXN0ZW1fdXRzbmFtZS5ub2RlbmFtZSwgaG9zdG5hbWUuc2xlbik7CisJfQorCXVwX3JlYWQoJnV0c19zZW0pOworICAgIH0KKyAgICByZXR1cm4gJmhvc3RuYW1lOworfQorCisvKgorICogR2V0IGZpcnN0IElQIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBob3N0bmFtZS4KKyAqLworUEpfREVGKHBqX2luX2FkZHIpIHBqX2dldGhvc3RhZGRyKHZvaWQpCit7CisgICAgcGpfc29ja2FkZHJfaW4gYWRkcjsKKyAgICBjb25zdCBwal9zdHJfdCAqaG9zdG5hbWUgPSBwal9nZXRob3N0bmFtZSgpOworCisgICAgcGpfc29ja2FkZHJfaW5fc2V0X3N0cl9hZGRyKCZhZGRyLCBob3N0bmFtZSk7CisgICAgcmV0dXJuIGFkZHIuc2luX2FkZHI7Cit9CisKKworLyoKKyAqIENyZWF0ZSBuZXcgc29ja2V0L2VuZHBvaW50IGZvciBjb21tdW5pY2F0aW9uIGFuZCByZXR1cm5zIGEgZGVzY3JpcHRvci4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NvY2tldChpbnQgYWYsIGludCB0eXBlLCBpbnQgcHJvdG8sIAorCQkJCSAgIHBqX3NvY2tfdCAqc29ja19mZCkKK3sKKyAgICBsb25nIHJlc3VsdDsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvKiBTYW5pdHkgY2hlY2tzLiAqLworICAgIFBKX0FTU0VSVF9SRVRVUk4oUEpfSU5WQUxJRF9TT0NLRVQgPT0gLTEgJiYgc29ja19mZCAhPSBOVUxMLCBQSl9FSU5WQUwpOworCisgICAgLyogSW5pdGlhbGl6ZSByZXR1cm5lZCBzb2NrZXQgKi8KKyAgICAqc29ja19mZCA9IFBKX0lOVkFMSURfU09DS0VUOworCisgICAgLyogQ3JlYXRlIHNvY2tldC4gKi8KKyAgICByZXN1bHQgPSBzeXNfc29ja2V0KGFmLCB0eXBlLCBwcm90byk7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKCgtcmVzdWx0KSk7CisgICAgfQorCisgICAgKnNvY2tfZmQgPSByZXN1bHQ7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIEJpbmQgc29ja2V0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfYmluZCggcGpfc29ja190IHNvY2tmZCwgCisJCQkJICBjb25zdCBwal9zb2NrYWRkcl90ICphZGRyLAorCQkJCSAgaW50IGxlbikKK3sKKyAgICBsb25nIGVycjsKKyAgICBtbV9zZWdtZW50X3Qgb2xkZnM7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZGRyIT1OVUxMICYmIGxlbiA+PSBzaXplb2Yoc3RydWN0IHBqX3NvY2thZGRyKSwKKwkJICAgICBQSl9FSU5WQUwpOworCisgICAgb2xkZnMgPSBnZXRfZnMoKTsKKyAgICBzZXRfZnMoS0VSTkVMX0RTKTsKKyAgICAKKyAgICBlcnIgPSBzeXNfYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIqKWFkZHIsIGxlbik7CisKKyAgICBzZXRfZnMob2xkZnMpOworCisgICAgaWYgKGVycikKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKC1lcnIpOworICAgIGVsc2UKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogQmluZCBzb2NrZXQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19iaW5kX2luKCBwal9zb2NrX3Qgc29ja2ZkLCAKKwkJCQkgICAgIHBqX3VpbnQzMl90IGFkZHIzMiwKKwkJCQkgICAgIHBqX3VpbnQxNl90IHBvcnQpCit7CisgICAgcGpfc29ja2FkZHJfaW4gYWRkcjsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBhZGRyLnNpbl9mYW1pbHkgPSBQSl9BRl9JTkVUOworICAgIGFkZHIuc2luX2FkZHIuc19hZGRyID0gcGpfaHRvbmwoYWRkcjMyKTsKKyAgICBhZGRyLnNpbl9wb3J0ID0gcGpfaHRvbnMocG9ydCk7CisKKyAgICByZXR1cm4gcGpfc29ja19iaW5kKHNvY2tmZCwgJmFkZHIsIHNpemVvZihwal9zb2NrYWRkcl9pbikpOworfQorCisvKgorICogQ2xvc2Ugc29ja2V0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfY2xvc2UocGpfc29ja190IHNvY2tmZCkKK3sKKyAgICBsb25nIGVycjsKKworICAgIGVyciA9IHN5c19jbG9zZShzb2NrZmQpOworCisgICAgaWYgKGVyciAhPSAwKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoLWVycik7CisgICAgZWxzZQorCXJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogR2V0IHJlbW90ZSdzIG5hbWUuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19nZXRwZWVybmFtZSggcGpfc29ja190IHNvY2tmZCwKKwkJCQkJIHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJCSBpbnQgKm5hbWVsZW4pCit7CisgICAgbW1fc2VnbWVudF90IG9sZGZzOworICAgIGxvbmcgZXJyOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIG9sZGZzID0gZ2V0X2ZzKCk7CisgICAgc2V0X2ZzKEtFUk5FTF9EUyk7CisKKyAgICBlcnIgPSBzeXNfZ2V0cGVlcm5hbWUoIHNvY2tmZCwgYWRkciwgbmFtZWxlbik7CisKKyAgICBzZXRfZnMob2xkZnMpOworCisgICAgaWYgKGVycikKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKC1lcnIpOworICAgIGVsc2UKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIEdldCBzb2NrZXQgbmFtZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2dldHNvY2tuYW1lKCBwal9zb2NrX3Qgc29ja2ZkLAorCQkJCQkgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJIGludCAqbmFtZWxlbikKK3sKKyAgICBtbV9zZWdtZW50X3Qgb2xkZnM7CisgICAgaW50IGVycjsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBvbGRmcyA9IGdldF9mcygpOworICAgIHNldF9mcyhLRVJORUxfRFMpOworICAgIAorICAgIGVyciA9IHN5c19nZXRzb2NrbmFtZSggc29ja2ZkLCBhZGRyLCBuYW1lbGVuICk7CisKKyAgICBzZXRfZnMob2xkZnMpOworCisgICAgaWYgKGVycikKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKC1lcnIpOworICAgIGVsc2UKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIFNlbmQgZGF0YQorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2VuZCggcGpfc29ja190IHNvY2tmZCwKKwkJCQkgIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCQkgIHBqX3NzaXplX3QgKmxlbiwKKwkJCQkgIHVuc2lnbmVkIGZsYWdzKQoreworICAgIHJldHVybiBwal9zb2NrX3NlbmR0byhzb2NrZmQsIGJ1ZiwgbGVuLCBmbGFncywgTlVMTCwgMCk7Cit9CisKKworLyoKKyAqIFNlbmQgZGF0YS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NlbmR0byggcGpfc29ja190IHNvY2tmZCwKKwkJCQkgICAgY29uc3Qgdm9pZCAqYnVmZiwKKwkJCQkgICAgcGpfc3NpemVfdCAqbGVuLAorCQkJCSAgICB1bnNpZ25lZCBmbGFncywKKwkJCQkgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkgICAgaW50IGFkZHJfbGVuKQoreworICAgIGxvbmcgZXJyOworICAgIG1tX3NlZ21lbnRfdCBvbGRmczsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBvbGRmcyA9IGdldF9mcygpOworICAgIHNldF9mcyhLRVJORUxfRFMpOworICAgIAorICAgIGVyciA9ICpsZW4gPSBzeXNfc2VuZHRvKCBzb2NrZmQsICh2b2lkKilidWZmLCAqbGVuLCBmbGFncywgCisJCQkgICAgICh2b2lkKilhZGRyLCBhZGRyX2xlbiApOworCisgICAgc2V0X2ZzKG9sZGZzKTsKKyAgICAKKyAgICBpZiAoZXJyID49IDApIHsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9CisgICAgZWxzZSB7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUigtZXJyKTsKKyAgICB9Cit9CisKKy8qCisgKiBSZWNlaXZlIGRhdGEuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19yZWN2KCBwal9zb2NrX3Qgc29ja2ZkLAorCQkJCSAgdm9pZCAqYnVmLAorCQkJCSAgcGpfc3NpemVfdCAqbGVuLAorCQkJCSAgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgcmV0dXJuIHBqX3NvY2tfcmVjdmZyb20oc29ja2ZkLCBidWYsIGxlbiwgZmxhZ3MsIE5VTEwsIE5VTEwpOworfQorCisvKgorICogUmVjZWl2ZSBkYXRhLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfcmVjdmZyb20oIHBqX3NvY2tfdCBzb2NrZmQsCisJCQkJICAgICAgdm9pZCAqYnVmZiwKKwkJCQkgICAgICBwal9zc2l6ZV90ICpzaXplLAorCQkJCSAgICAgIHVuc2lnbmVkIGZsYWdzLAorCQkJCSAgICAgIHBqX3NvY2thZGRyX3QgKmZyb20sCisJCQkJICAgICAgaW50ICpmcm9tbGVuKQoreworICAgIG1tX3NlZ21lbnRfdCBvbGRmczsKKyAgICBsb25nIGVycjsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBvbGRmcyA9IGdldF9mcygpOworICAgIHNldF9mcyhLRVJORUxfRFMpOworCisgICAgZXJyID0gKnNpemUgPSBzeXNfcmVjdmZyb20oIHNvY2tmZCwgYnVmZiwgKnNpemUsIGZsYWdzLCBmcm9tLCBmcm9tbGVuKTsKKworICAgIHNldF9mcyhvbGRmcyk7CisKKyAgICBpZiAoZXJyID49IDApIHsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9CisgICAgZWxzZSB7CisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUigtZXJyKTsKKyAgICB9Cit9CisKKy8qCisgKiBHZXQgc29ja2V0IG9wdGlvbi4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2dldHNvY2tvcHQoIHBqX3NvY2tfdCBzb2NrZmQsCisJCQkJCXBqX3VpbnQxNl90IGxldmVsLAorCQkJCQlwal91aW50MTZfdCBvcHRuYW1lLAorCQkJCQl2b2lkICpvcHR2YWwsCisJCQkJCWludCAqb3B0bGVuKQoreworICAgIG1tX3NlZ21lbnRfdCBvbGRmczsKKyAgICBsb25nIGVycjsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBvbGRmcyA9IGdldF9mcygpOworICAgIHNldF9mcyhLRVJORUxfRFMpOworCisgICAgZXJyID0gc3lzX2dldHNvY2tvcHQoIHNvY2tmZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTsKKworICAgIHNldF9mcyhvbGRmcyk7CisKKyAgICBpZiAoZXJyKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoLWVycik7CisgICAgZWxzZQorCXJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogU2V0IHNvY2tldCBvcHRpb24uCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19zZXRzb2Nrb3B0KCBwal9zb2NrX3Qgc29ja2ZkLAorCQkJCQlwal91aW50MTZfdCBsZXZlbCwKKwkJCQkJcGpfdWludDE2X3Qgb3B0bmFtZSwKKwkJCQkJY29uc3Qgdm9pZCAqb3B0dmFsLAorCQkJCQlpbnQgb3B0bGVuKQoreworICAgIGxvbmcgZXJyOworICAgIG1tX3NlZ21lbnRfdCBvbGRmczsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKworICAgIG9sZGZzID0gZ2V0X2ZzKCk7CisgICAgc2V0X2ZzKEtFUk5FTF9EUyk7CisKKyAgICBlcnIgPSBzeXNfc2V0c29ja29wdCggc29ja2ZkLCBsZXZlbCwgb3B0bmFtZSwgKHZvaWQqKW9wdHZhbCwgb3B0bGVuKTsKKworICAgIHNldF9mcyhvbGRmcyk7CisKKyAgICBpZiAoZXJyKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoLWVycik7CisgICAgZWxzZQorCXJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogU2h1dGRvd24gc29ja2V0LgorICovCisjaWYgUEpfSEFTX1RDUAorUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NodXRkb3duKCBwal9zb2NrX3Qgc29ja2ZkLAorCQkJCSAgICAgIGludCBob3cpCit7CisgICAgbG9uZyBlcnI7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgZXJyID0gc3lzX3NodXRkb3duKHNvY2tmZCwgaG93KTsKKworICAgIGlmIChlcnIpCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUigtZXJyKTsKKyAgICBlbHNlCisJcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBTdGFydCBsaXN0ZW5pbmcgdG8gaW5jb21pbmcgY29ubmVjdGlvbnMuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19saXN0ZW4oIHBqX3NvY2tfdCBzb2NrZmQsCisJCQkJICAgIGludCBiYWNrbG9nKQoreworICAgIGxvbmcgZXJyOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGVyciA9IHN5c19saXN0ZW4oIHNvY2tmZCwgYmFja2xvZyApOworCisgICAgaWYgKGVycikKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKC1lcnIpOworICAgIGVsc2UKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIENvbm5lY3Qgc29ja2V0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfY29ubmVjdCggcGpfc29ja190IHNvY2tmZCwKKwkJCQkgICAgIGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJICAgICBpbnQgbmFtZWxlbikKK3sKKyAgICBsb25nIGVycjsKKyAgICBtbV9zZWdtZW50X3Qgb2xkZnM7CisgICAgCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIG9sZGZzID0gZ2V0X2ZzKCk7CisgICAgc2V0X2ZzKEtFUk5FTF9EUyk7CisKKyAgICBlcnIgPSBzeXNfY29ubmVjdCggc29ja2ZkLCAodm9pZCopYWRkciwgbmFtZWxlbiApOworCisgICAgc2V0X2ZzKG9sZGZzKTsKKworICAgIGlmIChlcnIpCisJcmV0dXJuIFBKX1JFVFVSTl9PU19FUlJPUigtZXJyKTsKKyAgICBlbHNlCisJcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBBY2NlcHQgaW5jb21pbmcgY29ubmVjdGlvbnMKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2FjY2VwdCggcGpfc29ja190IHNvY2tmZCwKKwkJCQkgICAgcGpfc29ja190ICpuZXdzb2NrZmQsCisJCQkJICAgIHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJICAgIGludCAqYWRkcmxlbikKK3sKKyAgICBsb25nIGVycjsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKG5ld3NvY2tmZCAhPSBOVUxMLCBQSl9FSU5WQUwpOworCisgICAgZXJyID0gc3lzX2FjY2VwdCggc29ja2ZkLCBhZGRyLCBhZGRybGVuKTsKKworICAgIGlmIChlcnIgPCAwKSB7CisJKm5ld3NvY2tmZCA9IFBKX0lOVkFMSURfU09DS0VUOworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IoLWVycik7CisgICAgfQorICAgIGVsc2UgeworCSpuZXdzb2NrZmQgPSBlcnI7CisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfQorfQorI2VuZGlmCS8qIFBKX0hBU19UQ1AgKi8KKworCisKKy8qCisgKiBQZXJtaXNzaW9uIHRvIHN0ZWFsIGluZXRfbnRvYSgpIGFuZCBpbmV0X2F0b24oKSBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGJlbG93CisgKiBpcyBpbmNsdWRlZDoKKyAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMTk4MywgMTk5MworICogIFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCisgKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6CisgKiAgVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgVW5pdmVyc2l0eSBvZgorICogIENhbGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0b3JzLgorICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc29ja19xb3NfYnNkLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc29ja19xb3NfYnNkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EyODY1MwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3Fvc19ic2QuYwpAQCAtMCwwICsxLDEzMiBAQAorLyogJElkOiBzb2NrX3Fvc19ic2QuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9zb2NrX3Fvcy5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisKKy8qIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIFFvUyB3aXRoIEJTRCBzb2NrZXQncyBzZXRzb2Nrb3B0KCksCisgKiB1c2luZyBJUF9UT1MgYW5kIFNPX1BSSU9SSVRZCisgKi8gCisjaWYgIWRlZmluZWQoUEpfUU9TX0lNUExFTUVOVEFUSU9OKSB8fCBQSl9RT1NfSU1QTEVNRU5UQVRJT049PVBKX1FPU19CU0QKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NldF9xb3NfcGFyYW1zKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgICBwal9xb3NfcGFyYW1zICpwYXJhbSkKK3sKKyAgICBwal9zdGF0dXNfdCBsYXN0X2VyciA9IFBKX0VOT1RTVVA7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgLyogTm8gb3A/ICovCisgICAgaWYgKCFwYXJhbS0+ZmxhZ3MpCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisKKyAgICAvKiBDbGVhciBXTU0gZmllbGQgc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBpdCAqLworICAgIHBhcmFtLT5mbGFncyAmPSB+KFBKX1FPU19QQVJBTV9IQVNfV01NKTsKKworICAgIC8qIFNldCBUT1MvRFNDUCAqLworICAgIGlmIChwYXJhbS0+ZmxhZ3MgJiBQSl9RT1NfUEFSQU1fSEFTX0RTQ1ApIHsKKwkvKiBWYWx1ZSBpcyBkc2NwX3ZhbCA8PCAyICovCisJaW50IHZhbCA9IChwYXJhbS0+ZHNjcF92YWwgPDwgMik7CisJc3RhdHVzID0gcGpfc29ja19zZXRzb2Nrb3B0KHNvY2ssIHBqX1NPTF9JUCgpLCBwal9JUF9UT1MoKSwgCisJCQkJICAgICZ2YWwsIHNpemVvZih2YWwpKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgcGFyYW0tPmZsYWdzICY9IH4oUEpfUU9TX1BBUkFNX0hBU19EU0NQKTsKKwkgICAgbGFzdF9lcnIgPSBzdGF0dXM7CisJfQorICAgIH0KKworICAgIC8qIFNldCBTT19QUklPUklUWSAqLworICAgIGlmIChwYXJhbS0+ZmxhZ3MgJiBQSl9RT1NfUEFSQU1fSEFTX1NPX1BSSU8pIHsKKwlpbnQgdmFsID0gcGFyYW0tPnNvX3ByaW87CisJc3RhdHVzID0gcGpfc29ja19zZXRzb2Nrb3B0KHNvY2ssIHBqX1NPTF9TT0NLRVQoKSwgcGpfU09fUFJJT1JJVFkoKSwKKwkJCQkgICAgJnZhbCwgc2l6ZW9mKHZhbCkpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBwYXJhbS0+ZmxhZ3MgJj0gfihQSl9RT1NfUEFSQU1fSEFTX1NPX1BSSU8pOworCSAgICBsYXN0X2VyciA9IHN0YXR1czsKKwl9CisgICAgfQorCisgICAgcmV0dXJuIHBhcmFtLT5mbGFncyA/IFBKX1NVQ0NFU1MgOiBsYXN0X2VycjsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NldF9xb3NfdHlwZShwal9zb2NrX3Qgc29jaywKKwkJCQkJIHBqX3Fvc190eXBlIHR5cGUpCit7CisgICAgcGpfcW9zX3BhcmFtcyBwYXJhbTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBwal9xb3NfZ2V0X3BhcmFtcyh0eXBlLCAmcGFyYW0pOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gc3RhdHVzOworCisgICAgcmV0dXJuIHBqX3NvY2tfc2V0X3Fvc19wYXJhbXMoc29jaywgJnBhcmFtKTsKK30KKworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfZ2V0X3Fvc19wYXJhbXMocGpfc29ja190IHNvY2ssCisJCQkJCSAgIHBqX3Fvc19wYXJhbXMgKnBfcGFyYW0pCit7CisgICAgcGpfc3RhdHVzX3QgbGFzdF9lcnIgPSBQSl9FTk9UU1VQOworICAgIGludCB2YWwsIG9wdGxlbjsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBwal9iemVybyhwX3BhcmFtLCBzaXplb2YoKnBfcGFyYW0pKTsKKworICAgIC8qIEdldCBEU0NQL1RPUyB2YWx1ZSAqLworICAgIG9wdGxlbiA9IHNpemVvZih2YWwpOworICAgIHN0YXR1cyA9IHBqX3NvY2tfZ2V0c29ja29wdChzb2NrLCBwal9TT0xfSVAoKSwgcGpfSVBfVE9TKCksIAorCQkJCSZ2YWwsICZvcHRsZW4pOworICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCXBfcGFyYW0tPmZsYWdzIHw9IFBKX1FPU19QQVJBTV9IQVNfRFNDUDsKKwlwX3BhcmFtLT5kc2NwX3ZhbCA9IChwal91aW50OF90KSh2YWwgPj4gMik7CisgICAgfSBlbHNlIHsKKwlsYXN0X2VyciA9IHN0YXR1czsKKyAgICB9CisKKyAgICAvKiBHZXQgU09fUFJJT1JJVFkgKi8KKyAgICBvcHRsZW4gPSBzaXplb2YodmFsKTsKKyAgICBzdGF0dXMgPSBwal9zb2NrX2dldHNvY2tvcHQoc29jaywgcGpfU09MX1NPQ0tFVCgpLCBwal9TT19QUklPUklUWSgpLAorCQkJCSZ2YWwsICZvcHRsZW4pOworICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCXBfcGFyYW0tPmZsYWdzIHw9IFBKX1FPU19QQVJBTV9IQVNfU09fUFJJTzsKKwlwX3BhcmFtLT5zb19wcmlvID0gKHBqX3VpbnQ4X3QpdmFsOworICAgIH0gZWxzZSB7CisJbGFzdF9lcnIgPSBzdGF0dXM7CisgICAgfQorCisgICAgLyogV01NIGlzIG5vdCBzdXBwb3J0ZWQgKi8KKworICAgIHJldHVybiBwX3BhcmFtLT5mbGFncyA/IFBKX1NVQ0NFU1MgOiBsYXN0X2VycjsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2dldF9xb3NfdHlwZShwal9zb2NrX3Qgc29jaywKKwkJCQkJIHBqX3Fvc190eXBlICpwX3R5cGUpCit7CisgICAgcGpfcW9zX3BhcmFtcyBwYXJhbTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBwal9zb2NrX2dldF9xb3NfcGFyYW1zKHNvY2ssICZwYXJhbSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisKKyAgICByZXR1cm4gcGpfcW9zX2dldF90eXBlKCZwYXJhbSwgcF90eXBlKTsKK30KKworI2VuZGlmCS8qIFBKX1FPU19JTVBMRU1FTlRBVElPTiAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc29ja19xb3NfY29tbW9uLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc29ja19xb3NfY29tbW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzZjBlYQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3Fvc19jb21tb24uYwpAQCAtMCwwICsxLDE1MSBAQAorLyogJElkOiBzb2NrX3Fvc19jb21tb24uYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9zb2NrX3Fvcy5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisKKyNkZWZpbmUgVEhJU19GSUxFICAgInNvY2tfcW9zX2NvbW1vbi5jIgorI2RlZmluZSBBTExfRkxBR1MgICAoUEpfUU9TX1BBUkFNX0hBU19EU0NQIHwgUEpfUU9TX1BBUkFNX0hBU19TT19QUklPIHwgXAorICAgICAgICAgICAgICAgICAgICAgUEpfUU9TX1BBUkFNX0hBU19XTU0pCisKKy8qICJTdGFuZGFyZCIgbWFwcGluZyBiZXR3ZWVuIHRyYWZmaWMgdHlwZSBhbmQgUW9TIHBhcmFtcyAqLworc3RhdGljIGNvbnN0IHBqX3Fvc19wYXJhbXMgcW9zX21hcFtdID0gCit7CisgICAgLyogZmxhZ3MJZHNjcCAgcHJpbyB3bW1fcHJpbyAqLworICAgIHtBTExfRkxBR1MsIDB4MDAsIDAsICAgIFBKX1FPU19XTU1fUFJJT19CVUxLX0VGRk9SVH0sICAgLyogQkUgKi8KKyAgICB7QUxMX0ZMQUdTLCAweDA4LCAyLCAgICBQSl9RT1NfV01NX1BSSU9fQlVMS30sCSAgICAvKiBCSyAqLworICAgIHtBTExfRkxBR1MsIDB4MjgsIDUsICAgIFBKX1FPU19XTU1fUFJJT19WSURFT30sCSAgICAvKiBWSSAqLworICAgIHtBTExfRkxBR1MsIDB4MzAsIDYsICAgIFBKX1FPU19XTU1fUFJJT19WT0lDRX0sCSAgICAvKiBWTyAqLworICAgIHtBTExfRkxBR1MsIDB4MzgsIDcsICAgIFBKX1FPU19XTU1fUFJJT19WT0lDRX0JICAgIC8qIENPICovCit9OworCisKKy8qIFJldHJpZXZlIHRoZSBtYXBwaW5nIGZvciB0aGUgc3BlY2lmaWVkIHR5cGUgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfcW9zX2dldF9wYXJhbXMocGpfcW9zX3R5cGUgdHlwZSwgCisJCQkJICAgICAgcGpfcW9zX3BhcmFtcyAqcF9wYXJhbSkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHR5cGU8PVBKX1FPU19UWVBFX0NPTlRST0wgJiYgcF9wYXJhbSwgUEpfRUlOVkFMKTsKKyAgICBwal9tZW1jcHkocF9wYXJhbSwgJnFvc19tYXBbdHlwZV0sIHNpemVvZigqcF9wYXJhbSkpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKiBHZXQgdGhlIG1hdGNoaW5nIHRyYWZmaWMgdHlwZSAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9xb3NfZ2V0X3R5cGUoIGNvbnN0IHBqX3Fvc19wYXJhbXMgKnBhcmFtLAorCQkJCSAgICAgcGpfcW9zX3R5cGUgKnBfdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBkc2NwX3R5cGUgPSBQSl9RT1NfVFlQRV9CRVNUX0VGRk9SVCwKKwkgICAgIHByaW9fdHlwZSA9IFBKX1FPU19UWVBFX0JFU1RfRUZGT1JULAorCSAgICAgd21tX3R5cGUgPSBQSl9RT1NfVFlQRV9CRVNUX0VGRk9SVDsKKyAgICB1bnNpZ25lZCBpLCBjb3VudD0wOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihwYXJhbSAmJiBwX3R5cGUsIFBKX0VJTlZBTCk7CisKKyAgICBpZiAocGFyYW0tPmZsYWdzICYgUEpfUU9TX1BBUkFNX0hBU19EU0NQKSAgeworCWZvciAoaT0wOyBpPD1QSl9RT1NfVFlQRV9DT05UUk9MOyArK2kpIHsKKwkgICAgaWYgKHBhcmFtLT5kc2NwX3ZhbCA+PSBxb3NfbWFwW2ldLmRzY3BfdmFsKQorCQlkc2NwX3R5cGUgPSAocGpfcW9zX3R5cGUpaTsKKwl9CisJKytjb3VudDsKKyAgICB9CisKKyAgICBpZiAocGFyYW0tPmZsYWdzICYgUEpfUU9TX1BBUkFNX0hBU19TT19QUklPKSB7CisJZm9yIChpPTA7IGk8PVBKX1FPU19UWVBFX0NPTlRST0w7ICsraSkgeworCSAgICBpZiAocGFyYW0tPnNvX3ByaW8gPj0gcW9zX21hcFtpXS5zb19wcmlvKQorCQlwcmlvX3R5cGUgPSAocGpfcW9zX3R5cGUpaTsKKwl9CisJKytjb3VudDsKKyAgICB9CisKKyAgICBpZiAocGFyYW0tPmZsYWdzICYgUEpfUU9TX1BBUkFNX0hBU19XTU0pIHsKKwlmb3IgKGk9MDsgaTw9UEpfUU9TX1RZUEVfQ09OVFJPTDsgKytpKSB7CisJICAgIGlmIChwYXJhbS0+d21tX3ByaW8gPj0gcW9zX21hcFtpXS53bW1fcHJpbykKKwkJd21tX3R5cGUgPSAocGpfcW9zX3R5cGUpaTsKKwl9CisJKytjb3VudDsKKyAgICB9CisKKyAgICBpZiAoY291bnQpCisJKnBfdHlwZSA9IChwal9xb3NfdHlwZSkoKGRzY3BfdHlwZSArIHByaW9fdHlwZSArIHdtbV90eXBlKSAvIGNvdW50KTsKKyAgICBlbHNlCisJKnBfdHlwZSA9IFBKX1FPU19UWVBFX0JFU1RfRUZGT1JUOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKy8qIEFwcGx5IFFvUyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2FwcGx5X3FvcyggcGpfc29ja190IHNvY2ssCisJCQkJICAgICAgIHBqX3Fvc190eXBlIHFvc190eXBlLAorCQkJCSAgICAgICBwal9xb3NfcGFyYW1zICpxb3NfcGFyYW1zLAorCQkJCSAgICAgICB1bnNpZ25lZCBsb2dfbGV2ZWwsCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKmxvZ19zZW5kZXIsCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKnNvY2tfbmFtZSkKK3sKKyAgICBwal9zdGF0dXNfdCBxb3NfdHlwZV9yYyA9IFBKX1NVQ0NFU1MsCisJCXFvc19wYXJhbXNfcmMgPSBQSl9TVUNDRVNTOworCisgICAgaWYgKCFsb2dfc2VuZGVyKQorCWxvZ19zZW5kZXIgPSBUSElTX0ZJTEU7CisgICAgaWYgKCFzb2NrX25hbWUpCisJc29ja19uYW1lID0gInNvY2tldCI7CisKKyAgICBpZiAocW9zX3R5cGUgIT0gUEpfUU9TX1RZUEVfQkVTVF9FRkZPUlQpIHsKKwlxb3NfdHlwZV9yYyA9IHBqX3NvY2tfc2V0X3Fvc190eXBlKHNvY2ssIHFvc190eXBlKTsKKworCWlmIChxb3NfdHlwZV9yYyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIHBqX3BlcnJvcihsb2dfbGV2ZWwsIGxvZ19zZW5kZXIsICBxb3NfdHlwZV9yYywgCisJCSAgICAgICJFcnJvciBzZXR0aW5nIFFvUyB0eXBlICVkIHRvICVzIiwgCisJCSAgICAgIHFvc190eXBlLCBzb2NrX25hbWUpOworCX0KKyAgICB9CisKKyAgICBpZiAocW9zX3BhcmFtcyAmJiBxb3NfcGFyYW1zLT5mbGFncykgeworCXFvc19wYXJhbXNfcmMgPSBwal9zb2NrX3NldF9xb3NfcGFyYW1zKHNvY2ssIHFvc19wYXJhbXMpOworCWlmIChxb3NfcGFyYW1zX3JjICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgcGpfcGVycm9yKGxvZ19sZXZlbCwgbG9nX3NlbmRlciwgIHFvc19wYXJhbXNfcmMsIAorCQkgICAgICAiRXJyb3Igc2V0dGluZyBRb1MgcGFyYW1zIChmbGFncz0lZCkgdG8gJXMiLCAKKwkJICAgICAgcW9zX3BhcmFtcy0+ZmxhZ3MsIHNvY2tfbmFtZSk7CisJICAgIGlmIChxb3NfdHlwZV9yYyAhPSBQSl9TVUNDRVNTKQorCQlyZXR1cm4gcW9zX3BhcmFtc19yYzsKKwl9CisgICAgfSBlbHNlIGlmIChxb3NfdHlwZV9yYyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBxb3NfdHlwZV9yYzsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19hcHBseV9xb3MyKCBwal9zb2NrX3Qgc29jaywKKyAJCQkJICAgICAgICBwal9xb3NfdHlwZSBxb3NfdHlwZSwKKwkJCQkgICAgICAgIGNvbnN0IHBqX3Fvc19wYXJhbXMgKnFvc19wYXJhbXMsCisJCQkJICAgICAgICB1bnNpZ25lZCBsb2dfbGV2ZWwsCisJCQkJICAgICAgICBjb25zdCBjaGFyICpsb2dfc2VuZGVyLAorCQkJCSAgICAgICAgY29uc3QgY2hhciAqc29ja19uYW1lKQoreworICAgIHBqX3Fvc19wYXJhbXMgcW9zX3BhcmFtc19idWYsICpxb3NfcGFyYW1zX2NvcHkgPSBOVUxMOworCisgICAgaWYgKHFvc19wYXJhbXMpIHsKKwlwal9tZW1jcHkoJnFvc19wYXJhbXNfYnVmLCBxb3NfcGFyYW1zLCBzaXplb2YoKnFvc19wYXJhbXMpKTsKKwlxb3NfcGFyYW1zX2NvcHkgPSAmcW9zX3BhcmFtc19idWY7CisgICAgfQorCisgICAgcmV0dXJuIHBqX3NvY2tfYXBwbHlfcW9zKHNvY2ssIHFvc190eXBlLCBxb3NfcGFyYW1zX2NvcHksCisJCQkgICAgIGxvZ19sZXZlbCwgbG9nX3NlbmRlciwgc29ja19uYW1lKTsKK30KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3Fvc19kdW1teS5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NvY2tfcW9zX2R1bW15LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJiYjU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3Fvc19kdW1teS5jCkBAIC0wLDAgKzEsNzYgQEAKKy8qICRJZDogc29ja19xb3NfZHVtbXkuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9zb2NrX3Fvcy5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisKKy8qIER1bW15IGltcGxlbWVudGF0aW9uIG9mIFFvUyBBUEkuIAorICogKHRoaXMgaXMgY29udHJvbGxlZCBieSBwamxpYidzIGNvbmZpZy5oKQorICovCisjaWYgZGVmaW5lZChQSl9RT1NfSU1QTEVNRU5UQVRJT04pICYmIFBKX1FPU19JTVBMRU1FTlRBVElPTj09UEpfUU9TX0RVTU1ZCisKKyNkZWZpbmUgVEhJU19GSUxFICAgInNvY2tfcW9zX2R1bW15LmMiCisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NldF9xb3NfcGFyYW1zKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgICBwal9xb3NfcGFyYW1zICpwYXJhbSkKK3sKKyAgICBQSl9VTlVTRURfQVJHKHNvY2spOworICAgIFBKX1VOVVNFRF9BUkcocGFyYW0pOworCisgICAgUEpfTE9HKDQsKFRISVNfRklMRSwgInBqX3NvY2tfc2V0X3Fvc19wYXJhbXMoKSBpcyBub3QgaW1wbGVtZW50ZWQgIgorCQkJICJmb3IgdGhpcyBwbGF0Zm9ybSIpKTsKKyAgICByZXR1cm4gUEpfRU5PVFNVUDsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NldF9xb3NfdHlwZShwal9zb2NrX3Qgc29jaywKKwkJCQkJIHBqX3Fvc190eXBlIHR5cGUpCit7CisgICAgUEpfVU5VU0VEX0FSRyhzb2NrKTsKKyAgICBQSl9VTlVTRURfQVJHKHR5cGUpOworCisgICAgUEpfTE9HKDQsKFRISVNfRklMRSwgInBqX3NvY2tfc2V0X3Fvc190eXBlKCkgaXMgbm90IGltcGxlbWVudGVkICIKKwkJCSAiZm9yIHRoaXMgcGxhdGZvcm0iKSk7CisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2dldF9xb3NfcGFyYW1zKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgICBwal9xb3NfcGFyYW1zICpwX3BhcmFtKQoreworICAgIFBKX1VOVVNFRF9BUkcoc29jayk7CisgICAgUEpfVU5VU0VEX0FSRyhwX3BhcmFtKTsKKworICAgIFBKX0xPRyg0LChUSElTX0ZJTEUsICJwal9zb2NrX2dldF9xb3NfcGFyYW1zKCkgaXMgbm90IGltcGxlbWVudGVkICIKKwkJCSAiZm9yIHRoaXMgcGxhdGZvcm0iKSk7CisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19nZXRfcW9zX3R5cGUocGpfc29ja190IHNvY2ssCisJCQkJCSBwal9xb3NfdHlwZSAqcF90eXBlKQoreworICAgIFBKX1VOVVNFRF9BUkcoc29jayk7CisgICAgUEpfVU5VU0VEX0FSRyhwX3R5cGUpOworCisgICAgUEpfTE9HKDQsKFRISVNfRklMRSwgInBqX3NvY2tfZ2V0X3Fvc190eXBlKCkgaXMgbm90IGltcGxlbWVudGVkICIKKwkJCSAiZm9yIHRoaXMgcGxhdGZvcm0iKSk7CisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKKyNlbmRpZgkvKiBQSl9RT1NfRFVNTVkgKi8KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3Fvc19zeW1iaWFuLmNwcCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3Fvc19zeW1iaWFuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTc3OWI4Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NvY2tfcW9zX3N5bWJpYW4uY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qICRJZDogc29ja19xb3Nfc3ltYmlhbi5jcHAgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovc29ja19xb3MuaD4KKyNpbmNsdWRlICJvc19zeW1iaWFuLmgiCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19zZXRfcW9zX3BhcmFtcyhwal9zb2NrX3Qgc29jaywKKwkJCQkJICAgcGpfcW9zX3BhcmFtcyAqcGFyYW0pCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzb2NrIT0wICYmIHNvY2shPVBKX0lOVkFMSURfU09DS0VULCBQSl9FSU5WQUwpOworICAgIAorICAgIENQalNvY2tldCAqcGpzb2NrID0gKENQalNvY2tldCopc29jazsKKyAgICBSU29ja2V0ICYgcnNvY2sgPSBwanNvY2stPlNvY2tldCgpOworICAgIHBqX3N0YXR1c190IGxhc3RfZXJyID0gUEpfRU5PVFNVUDsKKyAgICAKKyAgICAvKiBTT19QUklPUklUWSBhbmQgV01NIGFyZSBub3Qgc3VwcG9ydGVkICovCisgICAgcGFyYW0tPmZsYWdzICY9IH4oUEpfUU9TX1BBUkFNX0hBU19TT19QUklPIHwgUEpfUU9TX1BBUkFNX0hBU19XTU0pOworICAgIAorICAgIGlmIChwYXJhbS0+ZmxhZ3MgJiBQSl9RT1NfUEFSQU1fSEFTX0RTQ1ApIHsKKwlUSW50IGVycjsKKwkKKwllcnIgPSByc29jay5TZXRPcHQoS1NvSXBUT1MsIEtQcm90b2NvbEluZXRJcCwKKwkJICAgICAgICAgICAocGFyYW0tPmRzY3BfdmFsIDw8IDIpKTsKKwlpZiAoZXJyICE9IEtFcnJOb25lKSB7CisJICAgIGxhc3RfZXJyID0gUEpfUkVUVVJOX09TX0VSUk9SKGVycik7CisJICAgIHBhcmFtLT5mbGFncyAmPSB+KFBKX1FPU19QQVJBTV9IQVNfRFNDUCk7CisJfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcGFyYW0tPmZsYWdzID8gUEpfU1VDQ0VTUyA6IGxhc3RfZXJyOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2V0X3Fvc190eXBlKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgcGpfcW9zX3R5cGUgdHlwZSkKK3sKKyAgICBwal9xb3NfcGFyYW1zIHBhcmFtOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAKKyAgICBzdGF0dXMgPSBwal9xb3NfZ2V0X3BhcmFtcyh0eXBlLCAmcGFyYW0pOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gc3RhdHVzOworICAgIAorICAgIHJldHVybiBwal9zb2NrX3NldF9xb3NfcGFyYW1zKHNvY2ssICZwYXJhbSk7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2dldF9xb3NfcGFyYW1zKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgICBwal9xb3NfcGFyYW1zICpwX3BhcmFtKQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4oc29jayE9MCAmJiBzb2NrIT1QSl9JTlZBTElEX1NPQ0tFVCwgUEpfRUlOVkFMKTsKKyAgICAKKyAgICBDUGpTb2NrZXQgKnBqc29jayA9IChDUGpTb2NrZXQqKXNvY2s7CisgICAgUlNvY2tldCAmIHJzb2NrID0gcGpzb2NrLT5Tb2NrZXQoKTsKKyAgICBUSW50IGVyciwgZHNjcDsKKyAgICAKKyAgICBwal9iemVybyhwX3BhcmFtLCBzaXplb2YoKnBfcGFyYW0pKTsKKworICAgIGVyciA9IHJzb2NrLkdldE9wdChLU29JcFRPUywgS1Byb3RvY29sSW5ldElwLCBkc2NwKTsKKyAgICBpZiAoZXJyID09IEtFcnJOb25lKSB7CisJcF9wYXJhbS0+ZmxhZ3MgfD0gUEpfUU9TX1BBUkFNX0hBU19EU0NQOworCXBfcGFyYW0tPmRzY3BfdmFsID0gKGRzY3AgPj4gMik7CisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfSBlbHNlIHsKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKGVycik7CisgICAgfQorfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfZ2V0X3Fvc190eXBlKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgcGpfcW9zX3R5cGUgKnBfdHlwZSkKK3sKKyAgICBwal9xb3NfcGFyYW1zIHBhcmFtOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAKKyAgICBzdGF0dXMgPSBwal9zb2NrX2dldF9xb3NfcGFyYW1zKHNvY2ssICZwYXJhbSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisgICAgCisgICAgcmV0dXJuIHBqX3Fvc19nZXRfdHlwZSgmcGFyYW0sIHBfdHlwZSk7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3Fvc193bS5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NvY2tfcW9zX3dtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYwN2Q5NgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3Fvc193bS5jCkBAIC0wLDAgKzEsMTAzIEBACisvKiAkSWQ6IHNvY2tfcW9zX3dtLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovc29ja19xb3MuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorCisjaW5jbHVkZSA8d2luc29jay5oPgorCisvKiBRb1MgaW1wbGVtZW50YXRpb24gZm9yIFdpbmRvd3MgTW9iaWxlIDYsIG11c3QgYmUgZW5hYmxlZCBleHBsaWNpdGx5CisgKiAodGhpcyBpcyBjb250cm9sbGVkIGJ5IHBqbGliJ3MgY29uZmlnLmgpCisgKi8KKyNpZiBkZWZpbmVkKFBKX1FPU19JTVBMRU1FTlRBVElPTikgJiYgUEpfUU9TX0lNUExFTUVOVEFUSU9OPT1QSl9RT1NfV00KKworI2RlZmluZSBUSElTX0ZJTEUgICAic29ja19xb3Nfd20uYyIKKworLyogTWFwcGluZyBiZXR3ZWVuIG91ciB0cmFmZmljIHR5cGUgYW5kIFdNJ3MgRFNDUCB0cmFmZmljIHR5cGVzICovCitzdGF0aWMgY29uc3QgaW50IGRzY3BfbWFwW10gPSAKK3sKKyAgICBEU0NQQmVzdEVmZm9ydCwKKyAgICBEU0NQQmFja2dyb3VuZCwKKyAgICBEU0NQVmlkZW8sCisgICAgRFNDUEF1ZGlvLAorICAgIERTQ1BDb250cm9sCit9OworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2V0X3Fvc19wYXJhbXMocGpfc29ja190IHNvY2ssCisJCQkJCSAgIHBqX3Fvc19wYXJhbXMgKnBhcmFtKQoreworICAgIFBKX1VOVVNFRF9BUkcoc29jayk7CisgICAgUEpfVU5VU0VEX0FSRyhwYXJhbSk7CisKKyAgICBQSl9MT0coNCwoVEhJU19GSUxFLCAicGpfc29ja19zZXRfcW9zX3BhcmFtcygpIGlzIG5vdCBpbXBsZW1lbnRlZCAiCisJCQkgImZvciB0aGlzIHBsYXRmb3JtIikpOworICAgIHJldHVybiBQSl9FTk9UU1VQOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2V0X3Fvc190eXBlKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgcGpfcW9zX3R5cGUgdHlwZSkKK3sKKyAgICBpbnQgdmFsdWU7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHR5cGUgPCBQSl9BUlJBWV9TSVpFKGRzY3BfbWFwKSwgUEpfRUlOVkFMKTsKKworICAgIHZhbHVlID0gZHNjcF9tYXBbdHlwZV07CisgICAgcmV0dXJuIHBqX3NvY2tfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX0lQLCBJUF9EU0NQX1RSQUZGSUNfVFlQRSwKKwkJCSAgICAgICZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2dldF9xb3NfcGFyYW1zKHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgICBwal9xb3NfcGFyYW1zICpwX3BhcmFtKQoreworICAgIFBKX1VOVVNFRF9BUkcoc29jayk7CisgICAgUEpfVU5VU0VEX0FSRyhwX3BhcmFtKTsKKworICAgIFBKX0xPRyg0LChUSElTX0ZJTEUsICJwal9zb2NrX2dldF9xb3NfcGFyYW1zKCkgaXMgbm90IGltcGxlbWVudGVkICIKKwkJCSAiZm9yIHRoaXMgcGxhdGZvcm0iKSk7CisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19nZXRfcW9zX3R5cGUocGpfc29ja190IHNvY2ssCisJCQkJCSBwal9xb3NfdHlwZSAqcF90eXBlKQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICBpbnQgdmFsdWUsIG9wdGxlbjsKKyAgICB1bnNpZ25lZCBpOworCisgICAgb3B0bGVuID0gc2l6ZW9mKHZhbHVlKTsKKyAgICB2YWx1ZSA9IDA7CisgICAgc3RhdHVzID0gcGpfc29ja19nZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fSVAsIElQX0RTQ1BfVFJBRkZJQ19UWVBFLAorCQkJICAgICAgICAmdmFsdWUsICZvcHRsZW4pOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gc3RhdHVzOworCisgICAgKnBfdHlwZSA9IFBKX1FPU19UWVBFX0JFU1RfRUZGT1JUOworICAgIGZvciAoaT0wOyBpPFBKX0FSUkFZX1NJWkUoZHNjcF9tYXApOyArK2kpIHsKKwlpZiAodmFsdWUgPT0gZHNjcF9tYXBbaV0pIHsKKwkgICAgKnBfdHlwZSA9IChwal9xb3NfdHlwZSlpOworCSAgICBicmVhazsKKwl9CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKyNlbmRpZgkvKiBQSl9RT1NfSU1QTEVNRU5UQVRJT04gKi8KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3NlbGVjdC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NvY2tfc2VsZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI5MzBhMwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3NlbGVjdC5jCkBAIC0wLDAgKzEsMTEzIEBACisvKiAkSWQ6IHNvY2tfc2VsZWN0LmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9zb2NrX3NlbGVjdC5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zb2NrZXQuaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisKKyNpZiBkZWZpbmVkKFBKX0hBU19TVFJJTkdfSCkgJiYgUEpfSEFTX1NUUklOR19IIT0wCisjICAgaW5jbHVkZSA8c3RyaW5nLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX1NZU19USU1FX0gpICYmIFBKX0hBU19TWVNfVElNRV9IIT0wCisjICAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNlbmRpZgorCisjaWZkZWYgX01TQ19WRVIKKyMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDE4KSAgICAvLyBTaWduZWQvdW5zaWduZWQgbWlzbWF0Y2ggaW4gRkRfKgorIyAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzODkpICAgIC8vIFNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaCBpbiBGRF8qCisjZW5kaWYKKworI2RlZmluZSBQQVJUX0ZEU0VUKHBzKQkJKChmZF9zZXQqKSZwcy0+ZGF0YVsxXSkKKyNkZWZpbmUgUEFSVF9GRFNFVF9PUl9OVUxMKHBzKQkocHMgPyBQQVJUX0ZEU0VUKHBzKSA6IE5VTEwpCisjZGVmaW5lIFBBUlRfQ09VTlQocHMpCQkocHMtPmRhdGFbMF0pCisKK1BKX0RFRih2b2lkKSBQSl9GRF9aRVJPKHBqX2ZkX3NldF90ICpmZHNldHApCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBwal9hc3NlcnQoc2l6ZW9mKHBqX2ZkX3NldF90KS1zaXplb2YocGpfc29ja190KSA+PSBzaXplb2YoZmRfc2V0KSk7CisKKyAgICBGRF9aRVJPKFBBUlRfRkRTRVQoZmRzZXRwKSk7CisgICAgUEFSVF9DT1VOVChmZHNldHApID0gMDsKK30KKworCitQSl9ERUYodm9pZCkgUEpfRkRfU0VUKHBqX3NvY2tfdCBmZCwgcGpfZmRfc2V0X3QgKmZkc2V0cCkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIHBqX2Fzc2VydChzaXplb2YocGpfZmRfc2V0X3QpLXNpemVvZihwal9zb2NrX3QpID49IHNpemVvZihmZF9zZXQpKTsKKworICAgIGlmICghUEpfRkRfSVNTRVQoZmQsIGZkc2V0cCkpCisgICAgICAgICsrUEFSVF9DT1VOVChmZHNldHApOworICAgIEZEX1NFVChmZCwgUEFSVF9GRFNFVChmZHNldHApKTsKK30KKworCitQSl9ERUYodm9pZCkgUEpfRkRfQ0xSKHBqX3NvY2tfdCBmZCwgcGpfZmRfc2V0X3QgKmZkc2V0cCkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIHBqX2Fzc2VydChzaXplb2YocGpfZmRfc2V0X3QpLXNpemVvZihwal9zb2NrX3QpID49IHNpemVvZihmZF9zZXQpKTsKKworICAgIGlmIChQSl9GRF9JU1NFVChmZCwgZmRzZXRwKSkKKyAgICAgICAgLS1QQVJUX0NPVU5UKGZkc2V0cCk7CisgICAgRkRfQ0xSKGZkLCBQQVJUX0ZEU0VUKGZkc2V0cCkpOworfQorCisKK1BKX0RFRihwal9ib29sX3QpIFBKX0ZEX0lTU0VUKHBqX3NvY2tfdCBmZCwgY29uc3QgcGpfZmRfc2V0X3QgKmZkc2V0cCkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc2l6ZW9mKHBqX2ZkX3NldF90KS1zaXplb2YocGpfc29ja190KSA+PSBzaXplb2YoZmRfc2V0KSwKKyAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgcmV0dXJuIEZEX0lTU0VUKGZkLCBQQVJUX0ZEU0VUKGZkc2V0cCkpOworfQorCitQSl9ERUYocGpfc2l6ZV90KSBQSl9GRF9DT1VOVChjb25zdCBwal9mZF9zZXRfdCAqZmRzZXRwKQoreworICAgIHJldHVybiBQQVJUX0NPVU5UKGZkc2V0cCk7Cit9CisKK1BKX0RFRihpbnQpIHBqX3NvY2tfc2VsZWN0KCBpbnQgbiwgCisJCQkgICAgcGpfZmRfc2V0X3QgKnJlYWRmZHMsIAorCQkJICAgIHBqX2ZkX3NldF90ICp3cml0ZWZkcywKKwkJCSAgICBwal9mZF9zZXRfdCAqZXhjZXB0ZmRzLCAKKwkJCSAgICBjb25zdCBwal90aW1lX3ZhbCAqdGltZW91dCkKK3sKKyAgICBzdHJ1Y3QgdGltZXZhbCBvc190aW1lb3V0LCAqcF9vc190aW1lb3V0OworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oc2l6ZW9mKHBqX2ZkX3NldF90KS1zaXplb2YocGpfc29ja190KSA+PSBzaXplb2YoZmRfc2V0KSwKKyAgICAgICAgICAgICAgICAgICAgIFBKX0VCVUcpOworCisgICAgaWYgKHRpbWVvdXQpIHsKKwlvc190aW1lb3V0LnR2X3NlYyA9IHRpbWVvdXQtPnNlYzsKKwlvc190aW1lb3V0LnR2X3VzZWMgPSB0aW1lb3V0LT5tc2VjICogMTAwMDsKKwlwX29zX3RpbWVvdXQgPSAmb3NfdGltZW91dDsKKyAgICB9IGVsc2UgeworCXBfb3NfdGltZW91dCA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHNlbGVjdChuLCBQQVJUX0ZEU0VUX09SX05VTEwocmVhZGZkcyksIFBBUlRfRkRTRVRfT1JfTlVMTCh3cml0ZWZkcyksCisJCSAgUEFSVF9GRFNFVF9PUl9OVUxMKGV4Y2VwdGZkcyksIHBfb3NfdGltZW91dCk7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3NlbGVjdF9zeW1iaWFuLmNwcCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zb2NrX3NlbGVjdF9zeW1iaWFuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWFhMmJjCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NvY2tfc2VsZWN0X3N5bWJpYW4uY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKiAkSWQ6IHNvY2tfc2VsZWN0X3N5bWJpYW4uY3BwIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovc29ja19zZWxlY3QuaD4KKyNpbmNsdWRlIDxwai9hcnJheS5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSAib3Nfc3ltYmlhbi5oIgorCisgCitzdHJ1Y3Qgc3ltYmlhbl9mZF9zZXQKK3sKKyAgICB1bnNpZ25lZAkgY291bnQ7CisgICAgQ1BqU29ja2V0CSpzb2NrW1BKX0lPUVVFVUVfTUFYX0hBTkRMRVNdOworfTsKKworCitQSl9ERUYodm9pZCkgUEpfRkRfWkVSTyhwal9mZF9zZXRfdCAqZmRzZXRwKQoreworICAgIHN5bWJpYW5fZmRfc2V0ICpmZHMgPSAoc3ltYmlhbl9mZF9zZXQgKilmZHNldHA7CisgICAgZmRzLT5jb3VudCA9IDA7Cit9CisKKworUEpfREVGKHZvaWQpIFBKX0ZEX1NFVChwal9zb2NrX3QgZmQsIHBqX2ZkX3NldF90ICpmZHNldHApCit7CisgICAgc3ltYmlhbl9mZF9zZXQgKmZkcyA9IChzeW1iaWFuX2ZkX3NldCAqKWZkc2V0cDsKKworICAgIFBKX0FTU0VSVF9PTl9GQUlMKGZkcy0+Y291bnQgPCBQSl9JT1FVRVVFX01BWF9IQU5ETEVTLCByZXR1cm4pOworICAgIGZkcy0+c29ja1tmZHMtPmNvdW50KytdID0gKENQalNvY2tldCopZmQ7Cit9CisKKworUEpfREVGKHZvaWQpIFBKX0ZEX0NMUihwal9zb2NrX3QgZmQsIHBqX2ZkX3NldF90ICpmZHNldHApCit7CisgICAgc3ltYmlhbl9mZF9zZXQgKmZkcyA9IChzeW1iaWFuX2ZkX3NldCAqKWZkc2V0cDsKKyAgICB1bnNpZ25lZCBpOworICAgIAorICAgIGZvciAoaT0wOyBpPGZkcy0+Y291bnQ7ICsraSkgeworCWlmIChmZHMtPnNvY2tbaV0gPT0gKENQalNvY2tldCopZmQpIHsKKwkgICAgcGpfYXJyYXlfZXJhc2UoZmRzLT5zb2NrLCBzaXplb2YoZmRzLT5zb2NrWzBdKSwgZmRzLT5jb3VudCwgaSk7CisJICAgIC0tZmRzLT5jb3VudDsKKwkgICAgcmV0dXJuOworCX0KKyAgICB9Cit9CisKKworUEpfREVGKHBqX2Jvb2xfdCkgUEpfRkRfSVNTRVQocGpfc29ja190IGZkLCBjb25zdCBwal9mZF9zZXRfdCAqZmRzZXRwKQoreworICAgIHN5bWJpYW5fZmRfc2V0ICpmZHMgPSAoc3ltYmlhbl9mZF9zZXQgKilmZHNldHA7CisgICAgdW5zaWduZWQgaTsKKyAgICAKKyAgICBmb3IgKGk9MDsgaTxmZHMtPmNvdW50OyArK2kpIHsKKwlpZiAoZmRzLT5zb2NrW2ldID09IChDUGpTb2NrZXQqKWZkKSB7CisJICAgIHJldHVybiBQSl9UUlVFOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gUEpfRkFMU0U7Cit9CisKK1BKX0RFRihwal9zaXplX3QpIFBKX0ZEX0NPVU5UKGNvbnN0IHBqX2ZkX3NldF90ICpmZHNldHApCit7CisgICAgc3ltYmlhbl9mZF9zZXQgKmZkcyA9IChzeW1iaWFuX2ZkX3NldCAqKWZkc2V0cDsKKyAgICByZXR1cm4gZmRzLT5jb3VudDsKK30KKworCitQSl9ERUYoaW50KSBwal9zb2NrX3NlbGVjdCggaW50IG4sIAorCQkJICAgIHBqX2ZkX3NldF90ICpyZWFkZmRzLCAKKwkJCSAgICBwal9mZF9zZXRfdCAqd3JpdGVmZHMsCisJCQkgICAgcGpfZmRfc2V0X3QgKmV4Y2VwdGZkcywgCisJCQkgICAgY29uc3QgcGpfdGltZV92YWwgKnRpbWVvdXQpCit7CisgICAgQ1BqVGltZW91dFRpbWVyICpwalRpbWVyOworICAgIHVuc2lnbmVkIGk7CisKKyAgICBQSl9VTlVTRURfQVJHKG4pOworICAgIFBKX1VOVVNFRF9BUkcod3JpdGVmZHMpOworICAgIFBKX1VOVVNFRF9BUkcoZXhjZXB0ZmRzKTsKKworICAgIGlmICh0aW1lb3V0KSB7CisJcGpUaW1lciA9IFBqU3ltYmlhbk9TOjpJbnN0YW5jZSgpLT5TZWxlY3RUaW1lb3V0VGltZXIoKTsKKwlwalRpbWVyLT5TdGFydFRpbWVyKHRpbWVvdXQtPnNlYyoxMDAwICsgdGltZW91dC0+bXNlYyk7CisKKyAgICB9IGVsc2UgeworCXBqVGltZXIgPSBOVUxMOworICAgIH0KKworICAgIC8qIFNjYW4gZm9yIHJlYWRhYmxlIHNvY2tldHMgKi8KKworICAgIGlmIChyZWFkZmRzKSB7CisJc3ltYmlhbl9mZF9zZXQgKmZkcyA9IChzeW1iaWFuX2ZkX3NldCAqKXJlYWRmZHM7CisKKwlkbyB7CisJICAgIC8qIFNjYW4gc29ja2V0cyBmb3IgcmVhZGlseSBhdmFpbGFibGUgZGF0YSAqLworCSAgICBmb3IgKGk9MDsgaTxmZHMtPmNvdW50OyArK2kpIHsKKwkJQ1BqU29ja2V0ICpwanNvY2sgPSBmZHMtPnNvY2tbaV07CisKKwkJaWYgKHBqc29jay0+UmVhZGVyKCkpIHsKKwkJICAgIGlmIChwanNvY2stPlJlYWRlcigpLT5IYXNEYXRhKCkgJiYgIXBqc29jay0+UmVhZGVyKCktPklzQWN0aXZlKCkpIHsKKworCQkJLyogRm91bmQgc29ja2V0IHdpdGggZGF0YSByZWFkeSAqLworCQkJUEpfRkRfWkVSTyhyZWFkZmRzKTsKKwkJCVBKX0ZEX1NFVCgocGpfc29ja190KXBqc29jaywgcmVhZGZkcyk7CisKKwkJCS8qIENhbmNlbCB0aW1lciwgaWYgYW55ICovCisJCQlpZiAocGpUaW1lcikgeworCQkJICAgIHBqVGltZXItPkNhbmNlbCgpOworCQkJfQorCisJCQkvKiBDbGVhciB3cml0YWJsZSBhbmQgZXhjZXB0aW9uIGZkX3NldCAqLworCQkJaWYgKHdyaXRlZmRzKQorCQkJICAgIFBKX0ZEX1pFUk8od3JpdGVmZHMpOworCQkJaWYgKGV4Y2VwdGZkcykKKwkJCSAgICBQSl9GRF9aRVJPKGV4Y2VwdGZkcyk7CisKKwkJCXJldHVybiAxOworCisJCSAgICB9IGVsc2UgaWYgKCFwanNvY2stPlJlYWRlcigpLT5Jc0FjdGl2ZSgpKQorCQkJcGpzb2NrLT5SZWFkZXIoKS0+U3RhcnRSZWN2RnJvbSgpOworCisJCX0gZWxzZSB7CisJCSAgICBwanNvY2stPkNyZWF0ZVJlYWRlcigpOworCQkgICAgcGpzb2NrLT5SZWFkZXIoKS0+U3RhcnRSZWN2RnJvbSgpOworCQl9CisJICAgIH0KKworCSAgICBQalN5bWJpYW5PUzo6SW5zdGFuY2UoKS0+V2FpdEZvckFjdGl2ZU9iamVjdHMoKTsKKworCX0gd2hpbGUgKHBqVGltZXI9PU5VTEwgfHwgIXBqVGltZXItPkhhc1RpbWVkT3V0KCkpOworICAgIH0KKworCisgICAgLyogVGltZW91dCAqLworCisgICAgaWYgKHJlYWRmZHMpCisJUEpfRkRfWkVSTyhyZWFkZmRzKTsKKyAgICBpZiAod3JpdGVmZHMpCisJUEpfRkRfWkVSTyh3cml0ZWZkcyk7CisgICAgaWYgKGV4Y2VwdGZkcykKKwlQSl9GRF9aRVJPKGV4Y2VwdGZkcyk7CisKKyAgICByZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NvY2tfc3ltYmlhbi5jcHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc29ja19zeW1iaWFuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRiMWVhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NvY2tfc3ltYmlhbi5jcHAKQEAgLTAsMCArMSwxMDIxIEBACisvKiAkSWQ6IHNvY2tfc3ltYmlhbi5jcHAgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovYWRkcl9yZXNvbHYuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovdW5pY29kZS5oPgorCisjaW5jbHVkZSAib3Nfc3ltYmlhbi5oIgorCisKKy8qCisgKiBBZGRyZXNzIGZhbWlsaWVzLgorICovCitjb25zdCBwal91aW50MTZfdCBQSl9BRl9VTlNQRUMJPSBLQUZVbnNwZWM7Citjb25zdCBwal91aW50MTZfdCBQSl9BRl9VTklYCT0gMHhGRkZGOworY29uc3QgcGpfdWludDE2X3QgUEpfQUZfSU5FVAk9IEtBZkluZXQ7Citjb25zdCBwal91aW50MTZfdCBQSl9BRl9JTkVUNgk9IEtBZkluZXQ2OworY29uc3QgcGpfdWludDE2X3QgUEpfQUZfUEFDS0VUCT0gMHhGRkZGOworY29uc3QgcGpfdWludDE2X3QgUEpfQUZfSVJEQQk9IDB4RkZGRjsKKworLyoKKyAqIFNvY2tldCB0eXBlcyBjb252ZXJzaW9uLgorICogVGhlIHZhbHVlcyBoZXJlIGFyZSBpbmRleGVkIGJhc2VkIG9uIHBqX3NvY2tfdHlwZQorICovCitjb25zdCBwal91aW50MTZfdCBQSl9TT0NLX1NUUkVBTT0gS1NvY2tTdHJlYW07Citjb25zdCBwal91aW50MTZfdCBQSl9TT0NLX0RHUkFNCT0gS1NvY2tEYXRhZ3JhbTsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPQ0tfUkFXCT0gMHhGRkZGOworY29uc3QgcGpfdWludDE2X3QgUEpfU09DS19SRE0JPSAweEZGRkY7CisKKy8qIHdlIGRvbid0IHN1cHBvcnQgc2V0c29ja29wdCgpLCB0aGVzZSBhcmUganVzdCBkdW1teSB2YWx1ZXMgKi8KK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9TT0NLRVQJPSAweEZGRkY7Citjb25zdCBwal91aW50MTZfdCBQSl9TT0xfSVAJPSAweEZGRkY7Citjb25zdCBwal91aW50MTZfdCBQSl9TT0xfVENQCT0gMHhGRkZGOworY29uc3QgcGpfdWludDE2X3QgUEpfU09MX1VEUAk9IDB4RkZGRjsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPTF9JUFY2CT0gMHhGRkZGOworY29uc3QgcGpfdWludDE2X3QgUEpfU09fTk9TSUdQSVBFID0gMHhGRkZGOworCisvKiBUT1MgKi8KK2NvbnN0IHBqX3VpbnQxNl90IFBKX0lQX1RPUwkJPSAwOworY29uc3QgcGpfdWludDE2X3QgUEpfSVBUT1NfTE9XREVMQVkJPSAwOworY29uc3QgcGpfdWludDE2X3QgUEpfSVBUT1NfVEhST1VHSFBVVAk9IDA7Citjb25zdCBwal91aW50MTZfdCBQSl9JUFRPU19SRUxJQUJJTElUWQk9IDA7Citjb25zdCBwal91aW50MTZfdCBQSl9JUFRPU19NSU5DT1NUCT0gMDsKKworLyogTWlzYyAqLworY29uc3QgcGpfdWludDE2X3QgUEpfVENQX05PREVMQVkgPSAweEZGRkY7Citjb25zdCBwal91aW50MTZfdCBQSl9TT19SRVVTRUFERFIgPSAweEZGRkY7Citjb25zdCBwal91aW50MTZfdCBQSl9TT19QUklPUklUWSA9IDB4RkZGRjsKKworLyogaW9jdGwoKSBpcyBhbHNvIG5vdCBzdXBwb3J0ZWQuICovCitjb25zdCBwal91aW50MTZfdCBQSl9TT19UWVBFICAgID0gMHhGRkZGOworY29uc3QgcGpfdWludDE2X3QgUEpfU09fUkNWQlVGICA9IDB4RkZGRjsKK2NvbnN0IHBqX3VpbnQxNl90IFBKX1NPX1NOREJVRiAgPSAweEZGRkY7CisKKy8qIElQIG11bHRpY2FzdCBpcyBhbHNvIG5vdCBzdXBwb3J0ZWQuICovCitjb25zdCBwal91aW50MTZfdCBQSl9JUF9NVUxUSUNBU1RfSUYgICAgPSAweEZGRkY7Citjb25zdCBwal91aW50MTZfdCBQSl9JUF9NVUxUSUNBU1RfVFRMICAgPSAweEZGRkY7Citjb25zdCBwal91aW50MTZfdCBQSl9JUF9NVUxUSUNBU1RfTE9PUCAgPSAweEZGRkY7Citjb25zdCBwal91aW50MTZfdCBQSl9JUF9BRERfTUVNQkVSU0hJUCAgPSAweEZGRkY7Citjb25zdCBwal91aW50MTZfdCBQSl9JUF9EUk9QX01FTUJFUlNISVAgPSAweEZGRkY7CisKKy8qIEZsYWdzICovCitjb25zdCBpbnQgUEpfTVNHX09PQgkgICAgID0gMDsKK2NvbnN0IGludCBQSl9NU0dfUEVFSwkgICAgID0gS1NvY2tSZWFkUGVlazsKK2NvbnN0IGludCBQSl9NU0dfRE9OVFJPVVRFICAgPSAwOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIENQalNvY2tldCBpbXBsZW1lbnRhdGlvbi4KKy8vIChkZWNsYXJhdGlvbiBpcyBpbiBvc19zeW1iaWFuLmgpCisvLworCitDUGpTb2NrZXQ6On5DUGpTb2NrZXQoKQoreworICAgIERlc3Ryb3lSZWFkZXIoKTsKKyAgICBzb2NrXy5DbG9zZSgpOworfQorCisKKy8vIENyZWF0ZSBzb2NrZXQgcmVhZGVyLgorQ1BqU29ja2V0UmVhZGVyICpDUGpTb2NrZXQ6OkNyZWF0ZVJlYWRlcih1bnNpZ25lZCBtYXhfbGVuKQoreworICAgIHBqX2Fzc2VydChzb2NrUmVhZGVyXyA9PSBOVUxMKTsKKyAgICByZXR1cm4gc29ja1JlYWRlcl8gPSBDUGpTb2NrZXRSZWFkZXI6Ok5ld0woKnRoaXMsIG1heF9sZW4pOworfQorCisvLyBEZWxldGUgc29ja2V0IHJlYWRlciB3aGVuIGl0J3Mgbm90IHdhbnRlZC4KK3ZvaWQgQ1BqU29ja2V0OjpEZXN0cm95UmVhZGVyKCkgCit7CisgICAgaWYgKHNvY2tSZWFkZXJfKSB7CisJc29ja1JlYWRlcl8tPkNhbmNlbCgpOworCWRlbGV0ZSBzb2NrUmVhZGVyXzsKKwlzb2NrUmVhZGVyXyA9IE5VTEw7CisgICAgfQorfQorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gQ1BqU29ja2V0UmVhZGVyIGltcGxlbWVudGF0aW9uCisvLyAoZGVjbGFyYXRpb24gaW4gb3Nfc3ltYmlhbi5oKQorLy8KKworCitDUGpTb2NrZXRSZWFkZXI6OkNQalNvY2tldFJlYWRlcihDUGpTb2NrZXQgJnNvY2spCis6IENBY3RpdmUoRVByaW9yaXR5U3RhbmRhcmQpLCAKKyAgc29ja18oc29jayksIGJ1ZmZlcl8oTlVMTCwgMCksIHJlYWRDYl8oTlVMTCksIGtleV8oTlVMTCkKK3sKK30KKworCit2b2lkIENQalNvY2tldFJlYWRlcjo6Q29uc3RydWN0TCh1bnNpZ25lZCBtYXhfbGVuKQoreworICAgIGlzRGF0YWdyYW1fID0gc29ja18uSXNEYXRhZ3JhbSgpOworCisgICAgVFVpbnQ4ICpwdHIgPSBuZXcgVFVpbnQ4W21heF9sZW5dOworICAgIGJ1ZmZlcl8uU2V0KHB0ciwgMCwgKFRJbnQpbWF4X2xlbik7CisgICAgQ0FjdGl2ZVNjaGVkdWxlcjo6QWRkKHRoaXMpOworfQorCitDUGpTb2NrZXRSZWFkZXIgKkNQalNvY2tldFJlYWRlcjo6TmV3TChDUGpTb2NrZXQgJnNvY2ssIHVuc2lnbmVkIG1heF9sZW4pCit7CisgICAgQ1BqU29ja2V0UmVhZGVyICpzZWxmID0gbmV3IChFTGVhdmUpIENQalNvY2tldFJlYWRlcihzb2NrKTsKKyAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKHNlbGYpOworICAgIHNlbGYtPkNvbnN0cnVjdEwobWF4X2xlbik7CisgICAgQ2xlYW51cFN0YWNrOjpQb3Aoc2VsZik7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworCitDUGpTb2NrZXRSZWFkZXI6On5DUGpTb2NrZXRSZWFkZXIoKQoreworICAgIGNvbnN0IFRVaW50OCAqZGF0YSA9IGJ1ZmZlcl8uUHRyKCk7CisgICAgZGVsZXRlIFtdIGRhdGE7Cit9CisKK3ZvaWQgQ1BqU29ja2V0UmVhZGVyOjpTdGFydFJlY3Yodm9pZCAoKmNiKSh2b2lkICprZXkpLCAKKwkJCSAgICAgICAgdm9pZCAqa2V5LCAKKwkJCSAgICAgICAgVERlczggKmFEZXNjLAorCQkJICAgICAgICBUVWludCBmbGFncykKK3sKKyAgICBTdGFydFJlY3ZGcm9tKGNiLCBrZXksIGFEZXNjLCBmbGFncywgTlVMTCk7Cit9CisKK3ZvaWQgQ1BqU29ja2V0UmVhZGVyOjpTdGFydFJlY3ZGcm9tKHZvaWQgKCpjYikodm9pZCAqa2V5KSwgCisJCQkJICAgIHZvaWQgKmtleSwgCisJCQkJICAgIFREZXM4ICphRGVzYywKKwkJCQkgICAgVFVpbnQgZmxhZ3MsCisJCQkJICAgIFRTb2NrQWRkciAqZnJvbUFkZHIpCit7CisgICAgcmVhZENiXyA9IGNiOworICAgIGtleV8gPSBrZXk7CisKKyAgICBpZiAoYURlc2MgPT0gTlVMTCkgYURlc2MgPSAmYnVmZmVyXzsKKyAgICBpZiAoZnJvbUFkZHIgPT0gTlVMTCkgZnJvbUFkZHIgPSAmcmVjdkFkZHJfOworCisgICAgc29ja18uU29ja2V0KCkuUmVjdkZyb20oKmFEZXNjLCAqZnJvbUFkZHIsIGZsYWdzLCBpU3RhdHVzKTsKKyAgICBTZXRBY3RpdmUoKTsKK30KKwordm9pZCBDUGpTb2NrZXRSZWFkZXI6OkRvQ2FuY2VsKCkKK3sKKyAgICBzb2NrXy5Tb2NrZXQoKS5DYW5jZWxSZWN2KCk7Cit9CisKK3ZvaWQgQ1BqU29ja2V0UmVhZGVyOjpSdW5MKCkKK3sKKyAgICB2b2lkICgqb2xkX2NiKSh2b2lkICprZXkpID0gcmVhZENiXzsKKyAgICB2b2lkICpvbGRfa2V5ID0ga2V5XzsKKworICAgIHJlYWRDYl8gPSBOVUxMOworICAgIGtleV8gPSBOVUxMOworCisgICAgaWYgKG9sZF9jYikgeworCSgqb2xkX2NiKShvbGRfa2V5KTsKKyAgICB9Cit9CisKKy8vIEFwcGVuZCBkYXRhIHRvIGFEZXNjLCB1cCB0byBhRGVzYydzIG1heGltdW0gc2l6ZS4KKy8vIElmIHNvY2tldCBpcyBkYXRhZ3JhbSBiYXNlZCwgYnVmZmVyXyB3aWxsIGJlIGNsYXJlZC4KK3ZvaWQgQ1BqU29ja2V0UmVhZGVyOjpSZWFkRGF0YShURGVzOCAmYURlc2MsIFRJbmV0QWRkciAqYWRkcikKK3sKKyAgICBpZiAoaXNEYXRhZ3JhbV8pCisJYURlc2MuWmVybygpOworCisgICAgaWYgKGJ1ZmZlcl8uTGVuZ3RoKCkgPT0gMCkKKwlyZXR1cm47CisKKyAgICBUSW50IHNpemVfdG9fY29weSA9IGFEZXNjLk1heExlbmd0aCgpIC0gYURlc2MuTGVuZ3RoKCk7CisgICAgaWYgKHNpemVfdG9fY29weSA+IGJ1ZmZlcl8uTGVuZ3RoKCkpCisJc2l6ZV90b19jb3B5ID0gYnVmZmVyXy5MZW5ndGgoKTsKKworICAgIGFEZXNjLkFwcGVuZChidWZmZXJfLlB0cigpLCBzaXplX3RvX2NvcHkpOworCisgICAgaWYgKGlzRGF0YWdyYW1fKQorCWJ1ZmZlcl8uWmVybygpOworICAgIGVsc2UKKwlidWZmZXJfLkRlbGV0ZSgwLCBzaXplX3RvX2NvcHkpOworCisgICAgaWYgKGFkZHIpCisJKmFkZHIgPSByZWN2QWRkcl87Cit9CisKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFBKTElCJ3Mgc29jay5oIGltcGxlbWVudGF0aW9uCisvLworCisvKgorICogQ29udmVydCAxNi1iaXQgdmFsdWUgZnJvbSBuZXR3b3JrIGJ5dGUgb3JkZXIgdG8gaG9zdCBieXRlIG9yZGVyLgorICovCitQSl9ERUYocGpfdWludDE2X3QpIHBqX250b2hzKHBqX3VpbnQxNl90IG5ldHNob3J0KQoreworI2lmIFBKX0lTX0xJVFRMRV9FTkRJQU4KKyAgICByZXR1cm4gcGpfc3dhcDE2KG5ldHNob3J0KTsKKyNlbHNlCisgICAgcmV0dXJuIG5ldHNob3J0OworI2VuZGlmCit9CisKKy8qCisgKiBDb252ZXJ0IDE2LWJpdCB2YWx1ZSBmcm9tIGhvc3QgYnl0ZSBvcmRlciB0byBuZXR3b3JrIGJ5dGUgb3JkZXIuCisgKi8KK1BKX0RFRihwal91aW50MTZfdCkgcGpfaHRvbnMocGpfdWludDE2X3QgaG9zdHNob3J0KQoreworI2lmIFBKX0lTX0xJVFRMRV9FTkRJQU4KKyAgICByZXR1cm4gcGpfc3dhcDE2KGhvc3RzaG9ydCk7CisjZWxzZQorICAgIHJldHVybiBob3N0c2hvcnQ7CisjZW5kaWYKK30KKworLyoKKyAqIENvbnZlcnQgMzItYml0IHZhbHVlIGZyb20gbmV0d29yayBieXRlIG9yZGVyIHRvIGhvc3QgYnl0ZSBvcmRlci4KKyAqLworUEpfREVGKHBqX3VpbnQzMl90KSBwal9udG9obChwal91aW50MzJfdCBuZXRsb25nKQoreworI2lmIFBKX0lTX0xJVFRMRV9FTkRJQU4KKyAgICByZXR1cm4gcGpfc3dhcDMyKG5ldGxvbmcpOworI2Vsc2UKKyAgICByZXR1cm4gbmV0bG9uZzsKKyNlbmRpZgorfQorCisvKgorICogQ29udmVydCAzMi1iaXQgdmFsdWUgZnJvbSBob3N0IGJ5dGUgb3JkZXIgdG8gbmV0d29yayBieXRlIG9yZGVyLgorICovCitQSl9ERUYocGpfdWludDMyX3QpIHBqX2h0b25sKHBqX3VpbnQzMl90IGhvc3Rsb25nKQoreworI2lmIFBKX0lTX0xJVFRMRV9FTkRJQU4KKyAgICByZXR1cm4gcGpfc3dhcDMyKGhvc3Rsb25nKTsKKyNlbHNlCisgICAgcmV0dXJuIG5ldGxvbmc7CisjZW5kaWYKK30KKworLyoKKyAqIENvbnZlcnQgYW4gSW50ZXJuZXQgaG9zdCBhZGRyZXNzIGdpdmVuIGluIG5ldHdvcmsgYnl0ZSBvcmRlcgorICogdG8gc3RyaW5nIGluIHN0YW5kYXJkIG51bWJlcnMgYW5kIGRvdHMgbm90YXRpb24uCisgKi8KK1BKX0RFRihjaGFyKikgcGpfaW5ldF9udG9hKHBqX2luX2FkZHIgaW5hZGRyKQoreworCXN0YXRpYyBjaGFyIHN0cjhbUEpfSU5FVF9BRERSU1RSTEVOXTsKKyAgICBUQnVmPFBKX0lORVRfQUREUlNUUkxFTj4gc3RyMTYoMCk7CisKKyAgICAvKiAoU3ltYmlhbiBJUCBhZGRyZXNzIGlzIGluIGhvc3QgYnl0ZSBvcmRlcikgKi8KKyAgICBUSW5ldEFkZHIgdGVtcF9hZGRyKChUVWludDMyKXBqX250b2hsKGluYWRkci5zX2FkZHIpLCAoVFVpbnQpMCk7CisgICAgdGVtcF9hZGRyLk91dHB1dChzdHIxNik7CisgCisgICAgcmV0dXJuIHBqX3VuaWNvZGVfdG9fYW5zaSgoY29uc3Qgd2NoYXJfdCopc3RyMTYuUHRyWigpLCBzdHIxNi5MZW5ndGgoKSwKKwkJCSAgICAgIHN0cjgsIHNpemVvZihzdHI4KSk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBJbnRlcm5ldCBob3N0IGFkZHJlc3MgY3AgZnJvbSB0aGUgc3RhbmRhcmQKKyAqIG51bWJlcnMtYW5kLWRvdHMgbm90YXRpb24gaW50byBiaW5hcnkgZGF0YSBhbmQgc3RvcmVzIGl0IGluIHRoZSBzdHJ1Y3R1cmUKKyAqIHRoYXQgaW5wIHBvaW50cyB0by4gCisgKi8KK1BKX0RFRihpbnQpIHBqX2luZXRfYXRvbihjb25zdCBwal9zdHJfdCAqY3AsIHN0cnVjdCBwal9pbl9hZGRyICppbnApCit7CisgICAgZW51bSB7IE1BWElQTEVOID0gUEpfSU5FVF9BRERSU1RSTEVOIH07CisKKyAgICAvKiBJbml0aWFsaXplIG91dHB1dCB3aXRoIFBKX0lOQUREUl9OT05FLgorICAgICAqIFNvbWUgYXBwcyByZWxpZXMgb24gdGhpcyBpbnN0ZWFkIG9mIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgKiAoYW5kIGFueXdheSB0aGUgcmV0dXJuIHZhbHVlIGlzIHF1aXRlIGNvbmZ1c2luZyEpCisgICAgICovCisgICAgaW5wLT5zX2FkZHIgPSBQSl9JTkFERFJfTk9ORTsKKworICAgIC8qIENhdXRpb246CisgICAgICoJdGhpcyBmdW5jdGlvbiBtaWdodCBiZSBjYWxsZWQgd2l0aCBjcC0+c2xlbiA+PSAxNgorICAgICAqICAoaS5lLiB3aGVuIGNhbGxlZCB3aXRoIGhvc3RuYW1lIHRvIGNoZWNrIGlmIGl0J3MgYW4gSVAgYWRkcikuCisgICAgICovCisgICAgUEpfQVNTRVJUX1JFVFVSTihjcCAmJiBjcC0+c2xlbiAmJiBpbnAsIDApOworICAgIGlmIChjcC0+c2xlbiA+PSAxNikgeworCXJldHVybiAwOworICAgIH0KKworICAgIGNoYXIgdGVtcGFkZHI4W01BWElQTEVOXTsKKyAgICBwal9tZW1jcHkodGVtcGFkZHI4LCBjcC0+cHRyLCBjcC0+c2xlbik7CisgICAgdGVtcGFkZHI4W2NwLT5zbGVuXSA9ICdcMCc7CisKKyAgICB3Y2hhcl90IHRlbXBhZGRyMTZbTUFYSVBMRU5dOworICAgIHBqX2Fuc2lfdG9fdW5pY29kZSh0ZW1wYWRkcjgsIHBqX2Fuc2lfc3RybGVuKHRlbXBhZGRyOCksCisJCSAgICAgICB0ZW1wYWRkcjE2LCBzaXplb2YodGVtcGFkZHIxNikpOworCisgICAgVEJ1ZjxNQVhJUExFTj4gaXBfYWRkcigoY29uc3QgVFRleHQqKXRlbXBhZGRyMTYpOworCisgICAgVEluZXRBZGRyIGFkZHI7CisgICAgYWRkci5Jbml0KEtBZkluZXQpOworICAgIGlmIChhZGRyLklucHV0KGlwX2FkZHIpID09IEtFcnJOb25lKSB7CisJLyogU3VjY2VzcyAoU3ltYmlhbiBJUCBhZGRyZXNzIGlzIGluIGhvc3QgYnl0ZSBvcmRlcikgKi8KKwlpbnAtPnNfYWRkciA9IHBqX2h0b25sKGFkZHIuQWRkcmVzcygpKTsKKwlyZXR1cm4gMTsKKyAgICB9IGVsc2UgeworCS8qIEVycm9yICovCisJcmV0dXJuIDA7CisgICAgfQorfQorCisvKgorICogQ29udmVydCB0ZXh0IHRvIElQdjQvSVB2NiBhZGRyZXNzLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX2luZXRfcHRvbihpbnQgYWYsIGNvbnN0IHBqX3N0cl90ICpzcmMsIHZvaWQgKmRzdCkKK3sKKyAgICBjaGFyIHRlbXBhZGRyW1BKX0lORVQ2X0FERFJTVFJMRU5dOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihhZj09UEpfQUZfSU5FVCB8fCBhZj09UEpfQUZfSU5FVDYsIFBKX0VJTlZBTCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzcmMgJiYgc3JjLT5zbGVuICYmIGRzdCwgUEpfRUlOVkFMKTsKKworICAgIC8qIEluaXRpYWxpemUgb3V0cHV0IHdpdGggUEpfSU5fQUREUl9OT05FIGZvciBJUHY0ICh0byBiZSAKKyAgICAgKiBjb21wYXRpYmxlIHdpdGggcGpfaW5ldF9hdG9uKCkKKyAgICAgKi8KKyAgICBpZiAoYWY9PVBKX0FGX0lORVQpIHsKKwkoKHBqX2luX2FkZHIqKWRzdCktPnNfYWRkciA9IFBKX0lOQUREUl9OT05FOworICAgIH0KKworICAgIC8qIENhdXRpb246CisgICAgICoJdGhpcyBmdW5jdGlvbiBtaWdodCBiZSBjYWxsZWQgd2l0aCBjcC0+c2xlbiA+PSA0NgorICAgICAqICAoaS5lLiB3aGVuIGNhbGxlZCB3aXRoIGhvc3RuYW1lIHRvIGNoZWNrIGlmIGl0J3MgYW4gSVAgYWRkcikuCisgICAgICovCisgICAgaWYgKHNyYy0+c2xlbiA+PSBQSl9JTkVUNl9BRERSU1RSTEVOKSB7CisJcmV0dXJuIFBKX0VOQU1FVE9PTE9ORzsKKyAgICB9CisKKyAgICBwal9tZW1jcHkodGVtcGFkZHIsIHNyYy0+cHRyLCBzcmMtPnNsZW4pOworICAgIHRlbXBhZGRyW3NyYy0+c2xlbl0gPSAnXDAnOworCisKKyAgICB3Y2hhcl90IHRlbXBhZGRyMTZbUEpfSU5FVDZfQUREUlNUUkxFTl07CisgICAgcGpfYW5zaV90b191bmljb2RlKHRlbXBhZGRyLCBwal9hbnNpX3N0cmxlbih0ZW1wYWRkciksCisJCSAgICAgICB0ZW1wYWRkcjE2LCBzaXplb2YodGVtcGFkZHIxNikpOworCisgICAgVEJ1ZjxQSl9JTkVUNl9BRERSU1RSTEVOPiBpcF9hZGRyKChjb25zdCBUVGV4dCopdGVtcGFkZHIxNik7CisKKyAgICBUSW5ldEFkZHIgYWRkcjsKKyAgICBhZGRyLkluaXQoS0FmSW5ldDYpOworICAgIGlmIChhZGRyLklucHV0KGlwX2FkZHIpID09IEtFcnJOb25lKSB7CisJaWYgKGFmPT1QSl9BRl9JTkVUKSB7CisJICAgIC8qIFN1Y2Nlc3MgKFN5bWJpYW4gSVAgYWRkcmVzcyBpcyBpbiBob3N0IGJ5dGUgb3JkZXIpICovCisJICAgIHBqX3VpbnQzMl90IGlwID0gcGpfaHRvbmwoYWRkci5BZGRyZXNzKCkpOworCSAgICBwal9tZW1jcHkoZHN0LCAmaXAsIDQpOworCX0gZWxzZSBpZiAoYWY9PVBKX0FGX0lORVQ2KSB7CisJICAgIGNvbnN0IFRJcDZBZGRyICYgaXA2ID0gYWRkci5JcDZBZGRyZXNzKCk7CisJICAgIHBqX21lbWNweShkc3QsIGlwNi51LmlBZGRyOCwgMTYpOworCX0gZWxzZSB7CisJICAgIHBqX2Fzc2VydCghIlVuZXhwZWN0ZWQhIik7CisJICAgIHJldHVybiBQSl9FQlVHOworCX0KKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9IGVsc2UgeworCS8qIEVycm9yICovCisJcmV0dXJuIFBKX0VJTlZBTDsKKyAgICB9Cit9CisKKy8qCisgKiBDb252ZXJ0IElQdjQvSVB2NiBhZGRyZXNzIHRvIHRleHQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfaW5ldF9udG9wKGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLAorCQkJCSBjaGFyICpkc3QsIGludCBzaXplKQorCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzcmMgJiYgZHN0ICYmIHNpemUsIFBKX0VJTlZBTCk7CisKKyAgICAqZHN0ID0gJ1wwJzsKKworICAgIGlmIChhZj09UEpfQUZfSU5FVCkgeworCisJVEJ1ZjxQSl9JTkVUX0FERFJTVFJMRU4+IHN0cjE2OworCXBqX2luX2FkZHIgaW5hZGRyOworCisJaWYgKHNpemUgPCBQSl9JTkVUX0FERFJTVFJMRU4pCisJICAgIHJldHVybiBQSl9FVE9PU01BTEw7CisKKwlwal9tZW1jcHkoJmluYWRkciwgc3JjLCA0KTsKKworCS8qIFN5bWJpYW4gSVAgYWRkcmVzcyBpcyBpbiBob3N0IGJ5dGUgb3JkZXIgKi8KKwlUSW5ldEFkZHIgdGVtcF9hZGRyKChUVWludDMyKXBqX250b2hsKGluYWRkci5zX2FkZHIpLCAoVFVpbnQpMCk7CisJdGVtcF9hZGRyLk91dHB1dChzdHIxNik7CisgCisJcGpfdW5pY29kZV90b19hbnNpKChjb25zdCB3Y2hhcl90KilzdHIxNi5QdHJaKCksIHN0cjE2Lkxlbmd0aCgpLAorCQkJICAgZHN0LCBzaXplKTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKworICAgIH0gZWxzZSBpZiAoYWY9PVBKX0FGX0lORVQ2KSB7CisJVEJ1ZjxQSl9JTkVUNl9BRERSU1RSTEVOPiBzdHIxNjsKKworCWlmIChzaXplIDwgUEpfSU5FVDZfQUREUlNUUkxFTikKKwkgICAgcmV0dXJuIFBKX0VUT09TTUFMTDsKKworCVRJcDZBZGRyIGlwNjsKKwlwal9tZW1jcHkoaXA2LnUuaUFkZHI4LCBzcmMsIDE2KTsKKworCVRJbmV0QWRkciB0ZW1wX2FkZHIoaXA2LCAoVFVpbnQpMCk7CisJdGVtcF9hZGRyLk91dHB1dChzdHIxNik7CisgCisJcGpfdW5pY29kZV90b19hbnNpKChjb25zdCB3Y2hhcl90KilzdHIxNi5QdHJaKCksIHN0cjE2Lkxlbmd0aCgpLAorCQkJICAgZHN0LCBzaXplKTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKworICAgIH0gZWxzZSB7CisJcGpfYXNzZXJ0KCEiVW5zdXBwb3J0IGFkZHJlc3MgZmFtaWx5Iik7CisJcmV0dXJuIFBKX0VJTlZBTDsKKyAgICB9CisKK30KKworLyoKKyAqIEdldCBob3N0bmFtZS4KKyAqLworUEpfREVGKGNvbnN0IHBqX3N0cl90KikgcGpfZ2V0aG9zdG5hbWUodm9pZCkKK3sKKyAgICBzdGF0aWMgY2hhciBidWZbUEpfTUFYX0hPU1ROQU1FXTsKKyAgICBzdGF0aWMgcGpfc3RyX3QgaG9zdG5hbWU7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgaWYgKGhvc3RuYW1lLnB0ciA9PSBOVUxMKSB7CisJUkhvc3RSZXNvbHZlciAmcmVzdiA9IFBqU3ltYmlhbk9TOjpJbnN0YW5jZSgpLT5HZXRSZXNvbHZlcihQSl9BRl9JTkVUKTsKKwlUUmVxdWVzdFN0YXR1cyByZXFTdGF0dXM7CisJVEhvc3ROYW1lIHRtcE5hbWU7CisKKwkvLyBSZXR1cm4gZW1wdHkgaG9zdG5hbWUgaWYgYWNjZXNzIHBvaW50IGlzIG1hcmtlZCBhcyBkb3duIGJ5IGFwcC4KKwlQSl9TWU1CSUFOX0NIRUNLX0NPTk5FQ1RJT04yKCZob3N0bmFtZSk7CisKKwlyZXN2LkdldEhvc3ROYW1lKHRtcE5hbWUsIHJlcVN0YXR1cyk7CisJVXNlcjo6V2FpdEZvclJlcXVlc3QocmVxU3RhdHVzKTsKKworCWhvc3RuYW1lLnB0ciA9IHBqX3VuaWNvZGVfdG9fYW5zaSgoY29uc3Qgd2NoYXJfdCopdG1wTmFtZS5QdHIoKSwgdG1wTmFtZS5MZW5ndGgoKSwKKwkJCQkJICBidWYsIHNpemVvZihidWYpKTsKKwlob3N0bmFtZS5zbGVuID0gdG1wTmFtZS5MZW5ndGgoKTsKKyAgICB9CisgICAgcmV0dXJuICZob3N0bmFtZTsKK30KKworLyoKKyAqIENyZWF0ZSBuZXcgc29ja2V0L2VuZHBvaW50IGZvciBjb21tdW5pY2F0aW9uIGFuZCByZXR1cm5zIGEgZGVzY3JpcHRvci4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3NvY2tldChpbnQgYWYsIAorCQkJCSAgIGludCB0eXBlLCAKKwkJCQkgICBpbnQgcHJvdG8sCisJCQkJICAgcGpfc29ja190ICpwX3NvY2spCit7CisgICAgVEludCByYzsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvKiBTYW5pdHkgY2hlY2tzLiAqLworICAgIFBKX0FTU0VSVF9SRVRVUk4ocF9zb2NrIT1OVUxMLCBQSl9FSU5WQUwpOworCisgICAgLy8gUmV0dXJuIGZhaWx1cmUgaWYgYWNjZXNzIHBvaW50IGlzIG1hcmtlZCBhcyBkb3duIGJ5IGFwcC4KKyAgICBQSl9TWU1CSUFOX0NIRUNLX0NPTk5FQ1RJT04oKTsKKyAgICAKKyAgICAvKiBTZXQgcHJvdG8gaWYgbm9uZSBpcyBzcGVjaWZpZWQuICovCisgICAgaWYgKHByb3RvID09IDApIHsKKwlpZiAodHlwZSA9PSBwal9TT0NLX1NUUkVBTSgpKQorCSAgICBwcm90byA9IEtQcm90b2NvbEluZXRUY3A7CisJZWxzZSBpZiAodHlwZSA9PSBwal9TT0NLX0RHUkFNKCkpCisJICAgIHByb3RvID0gS1Byb3RvY29sSW5ldFVkcDsKKyAgICB9CisKKyAgICAvKiBDcmVhdGUgU3ltYmlhbiBSU29ja2V0ICovCisgICAgUlNvY2tldCByU29jazsKKyAgICBpZiAoUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPkNvbm5lY3Rpb24oKSkKKyAgICAJcmMgPSByU29jay5PcGVuKFBqU3ltYmlhbk9TOjpJbnN0YW5jZSgpLT5Tb2NrZXRTZXJ2KCksIAorICAgIAkJCWFmLCB0eXBlLCBwcm90bywKKyAgICAJCQkqUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPkNvbm5lY3Rpb24oKSk7CisgICAgZWxzZQorICAgIAlyYyA9IHJTb2NrLk9wZW4oUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPlNvY2tldFNlcnYoKSwgCisgICAgCQkJYWYsIHR5cGUsIHByb3RvKTsKKyAgICAgICAgCisgICAgaWYgKHJjICE9IEtFcnJOb25lKQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmMpOworCisKKyAgICAvKiBXcmFwIFN5bWJpYW4gUlNvY2tldCBpbnRvIFBKTElCJ3MgQ1BqU29ja2V0LCBhbmQgcmV0dXJuIHRvIGNhbGxlciAqLworICAgIENQalNvY2tldCAqcGpTb2NrID0gbmV3IENQalNvY2tldChhZiwgdHlwZSwgclNvY2spOworICAgICpwX3NvY2sgPSAocGpfc29ja190KXBqU29jazsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBCaW5kIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2JpbmQoIHBqX3NvY2tfdCBzb2NrLCAKKwkJCQkgIGNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJICBpbnQgbGVuKQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICBUSW50IHJjOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oc29jayAhPSAwLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oYWRkciAmJiBsZW4+PShpbnQpc2l6ZW9mKHBqX3NvY2thZGRyX2luKSwgUEpfRUlOVkFMKTsKKworICAgIC8vIENvbnZlcnQgUEpMSUIncyBwal9zb2NrYWRkciBpbnRvIFN5bWJpYW4ncyBUSW5ldEFkZHIKKyAgICBUSW5ldEFkZHIgaW5ldEFkZHI7CisgICAgc3RhdHVzID0gUGpTeW1iaWFuT1M6OnBqMkFkZHIoKihwal9zb2NrYWRkciopYWRkciwgbGVuLCBpbmV0QWRkcik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorICAgIAlyZXR1cm4gc3RhdHVzOworCisgICAgLy8gR2V0IHRoZSBSU29ja2V0IGluc3RhbmNlCisgICAgUlNvY2tldCAmclNvY2sgPSAoKENQalNvY2tldCopc29jayktPlNvY2tldCgpOworCisgICAgLy8gQmluZAorICAgIHJjID0gclNvY2suQmluZChpbmV0QWRkcik7CisKKyAgICByZXR1cm4gKHJjPT1LRXJyTm9uZSkgPyBQSl9TVUNDRVNTIDogUEpfUkVUVVJOX09TX0VSUk9SKHJjKTsKK30KKworCisvKgorICogQmluZCBzb2NrZXQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19iaW5kX2luKCBwal9zb2NrX3Qgc29jaywgCisJCQkJICAgICBwal91aW50MzJfdCBhZGRyMzIsCisJCQkJICAgICBwal91aW50MTZfdCBwb3J0KQoreworICAgIHBqX3NvY2thZGRyX2luIGFkZHI7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgcGpfYnplcm8oJmFkZHIsIHNpemVvZihhZGRyKSk7CisgICAgYWRkci5zaW5fZmFtaWx5ID0gUEpfQUZfSU5FVDsKKyAgICBhZGRyLnNpbl9hZGRyLnNfYWRkciA9IHBqX2h0b25sKGFkZHIzMik7CisgICAgYWRkci5zaW5fcG9ydCA9IHBqX2h0b25zKHBvcnQpOworCisgICAgcmV0dXJuIHBqX3NvY2tfYmluZChzb2NrLCAmYWRkciwgc2l6ZW9mKHBqX3NvY2thZGRyX2luKSk7Cit9CisKKworLyoKKyAqIENsb3NlIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2Nsb3NlKHBqX3NvY2tfdCBzb2NrKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNvY2sgIT0gMCwgUEpfRUlOVkFMKTsKKworICAgIENQalNvY2tldCAqcGpTb2NrID0gKENQalNvY2tldCopc29jazsKKworICAgIC8vIFRoaXMgd2lsbCBjbG9zZSB0aGUgc29ja2V0LgorICAgIGRlbGV0ZSBwalNvY2s7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIEdldCByZW1vdGUncyBuYW1lLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfZ2V0cGVlcm5hbWUoIHBqX3NvY2tfdCBzb2NrLAorCQkJCQkgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJIGludCAqbmFtZWxlbikKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIAorICAgIFBKX0FTU0VSVF9SRVRVUk4oc29jayAmJiBhZGRyICYmIG5hbWVsZW4gJiYgCisJCSAgICAgKm5hbWVsZW4+PShpbnQpc2l6ZW9mKHBqX3NvY2thZGRyX2luKSwgUEpfRUlOVkFMKTsKKworICAgIENQalNvY2tldCAqcGpTb2NrID0gKENQalNvY2tldCopc29jazsKKyAgICBSU29ja2V0ICZyU29jayA9IHBqU29jay0+U29ja2V0KCk7CisKKyAgICAvLyBTb2NrZXQgbXVzdCBiZSBjb25uZWN0ZWQuCisgICAgUEpfQVNTRVJUX1JFVFVSTihwalNvY2stPklzQ29ubmVjdGVkKCksIFBKX0VJTlZBTElET1ApOworCisgICAgVEluZXRBZGRyIGluZXRBZGRyOworICAgIHJTb2NrLlJlbW90ZU5hbWUoaW5ldEFkZHIpOworCisgICAgcmV0dXJuIFBqU3ltYmlhbk9TOjpBZGRyMnBqKGluZXRBZGRyLCAqKHBqX3NvY2thZGRyKilhZGRyLCBuYW1lbGVuKTsKK30KKworLyoKKyAqIEdldCBzb2NrZXQgbmFtZS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2dldHNvY2tuYW1lKCBwal9zb2NrX3Qgc29jaywKKwkJCQkJIHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJCSBpbnQgKm5hbWVsZW4pCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICAKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNvY2sgJiYgYWRkciAmJiBuYW1lbGVuICYmIAorCQkgICAgICpuYW1lbGVuPj0oaW50KXNpemVvZihwal9zb2NrYWRkcl9pbiksIFBKX0VJTlZBTCk7CisKKyAgICBDUGpTb2NrZXQgKnBqU29jayA9IChDUGpTb2NrZXQqKXNvY2s7CisgICAgUlNvY2tldCAmclNvY2sgPSBwalNvY2stPlNvY2tldCgpOworCisgICAgVEluZXRBZGRyIGluZXRBZGRyOworICAgIHJTb2NrLkxvY2FsTmFtZShpbmV0QWRkcik7CisKKyAgICByZXR1cm4gUGpTeW1iaWFuT1M6OkFkZHIycGooaW5ldEFkZHIsICoocGpfc29ja2FkZHIqKWFkZHIsIG5hbWVsZW4pOworfQorCisvKgorICogU2VuZCBkYXRhCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19zZW5kKHBqX3NvY2tfdCBzb2NrLAorCQkJCSBjb25zdCB2b2lkICpidWYsCisJCQkJIHBqX3NzaXplX3QgKmxlbiwKKwkJCQkgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNvY2sgJiYgYnVmICYmIGxlbiwgUEpfRUlOVkFMKTsKKworICAgIC8vIFJldHVybiBmYWlsdXJlIGlmIGFjY2VzcyBwb2ludCBpcyBtYXJrZWQgYXMgZG93biBieSBhcHAuCisgICAgUEpfU1lNQklBTl9DSEVDS19DT05ORUNUSU9OKCk7CisgICAgCisgICAgQ1BqU29ja2V0ICpwalNvY2sgPSAoQ1BqU29ja2V0Kilzb2NrOworICAgIFJTb2NrZXQgJnJTb2NrID0gcGpTb2NrLT5Tb2NrZXQoKTsKKworICAgIC8vIHNlbmQoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgdG8gY29ubmVjdGVkIHNvY2tldAorICAgIFBKX0FTU0VSVF9SRVRVUk4ocGpTb2NrLT5Jc0Nvbm5lY3RlZCgpLCBQSl9FSU5WQUxJRE9QKTsKKworICAgIFRQdHJDOCBkYXRhKChjb25zdCBUVWludDgqKWJ1ZiwgKFRJbnQpKmxlbik7CisgICAgVFJlcXVlc3RTdGF0dXMgcmVxU3RhdHVzOworICAgIFRTb2NrWGZyTGVuZ3RoIHNlbnRMZW47CisKKyAgICByU29jay5TZW5kKGRhdGEsIGZsYWdzLCByZXFTdGF0dXMsIHNlbnRMZW4pOworICAgIFVzZXI6OldhaXRGb3JSZXF1ZXN0KHJlcVN0YXR1cyk7CisKKyAgICBpZiAocmVxU3RhdHVzLkludCgpPT1LRXJyTm9uZSkgeworCS8vKmxlbiA9IChUSW50KSBzZW50TGVuLkxlbmd0aCgpOworCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0gZWxzZQorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmVxU3RhdHVzLkludCgpKTsKK30KKworCisvKgorICogU2VuZCBkYXRhLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2VuZHRvKHBqX3NvY2tfdCBzb2NrLAorCQkJCSAgIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCQkgICBwal9zc2l6ZV90ICpsZW4sCisJCQkJICAgdW5zaWduZWQgZmxhZ3MsCisJCQkJICAgY29uc3QgcGpfc29ja2FkZHJfdCAqdG8sCisJCQkJICAgaW50IHRvbGVuKQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAKKyAgICBQSl9DSEVDS19TVEFDSygpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc29jayAmJiBidWYgJiYgbGVuLCBQSl9FSU5WQUwpOworCisgICAgLy8gUmV0dXJuIGZhaWx1cmUgaWYgYWNjZXNzIHBvaW50IGlzIG1hcmtlZCBhcyBkb3duIGJ5IGFwcC4KKyAgICBQSl9TWU1CSUFOX0NIRUNLX0NPTk5FQ1RJT04oKTsKKyAgICAKKyAgICBDUGpTb2NrZXQgKnBqU29jayA9IChDUGpTb2NrZXQqKXNvY2s7CisgICAgUlNvY2tldCAmclNvY2sgPSBwalNvY2stPlNvY2tldCgpOworCisgICAgLy8gT25seSBzdXBwb3J0cyBBRl9JTkVUIGZvciBub3cKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHRvbGVuPj0oaW50KXNpemVvZihwal9zb2NrYWRkcl9pbiksIFBKX0VJTlZBTCk7CisKKyAgICBUSW5ldEFkZHIgaW5ldEFkZHI7CisgICAgc3RhdHVzID0gUGpTeW1iaWFuT1M6OnBqMkFkZHIoKihwal9zb2NrYWRkciopdG8sIHRvbGVuLCBpbmV0QWRkcik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorICAgIAlyZXR1cm4gc3RhdHVzOworCisgICAgVFB0ckM4IGRhdGEoKGNvbnN0IFRVaW50OCopYnVmLCAoVEludCkqbGVuKTsKKyAgICBUUmVxdWVzdFN0YXR1cyByZXFTdGF0dXM7CisgICAgVFNvY2tYZnJMZW5ndGggc2VudExlbjsKKworICAgIHJTb2NrLlNlbmRUbyhkYXRhLCBpbmV0QWRkciwgZmxhZ3MsIHJlcVN0YXR1cywgc2VudExlbik7CisgICAgVXNlcjo6V2FpdEZvclJlcXVlc3QocmVxU3RhdHVzKTsKKworICAgIGlmIChyZXFTdGF0dXMuSW50KCk9PUtFcnJOb25lKSB7CisJLy9Gb3Igc29tZSByZWFzb24gVFNvY2tYZnJMZW5ndGggaXMgbm90IHJldHVybmluZyBjb3JyZWN0bHkhCisJLy8qbGVuID0gKFRJbnQpIHNlbnRMZW4uTGVuZ3RoKCk7CisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfSBlbHNlIAorCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmVxU3RhdHVzLkludCgpKTsKK30KKworLyoKKyAqIFJlY2VpdmUgZGF0YS4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX3JlY3YocGpfc29ja190IHNvY2ssCisJCQkJIHZvaWQgKmJ1ZiwKKwkJCQkgcGpfc3NpemVfdCAqbGVuLAorCQkJCSB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzb2NrICYmIGJ1ZiAmJiBsZW4sIFBKX0VJTlZBTCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTigqbGVuID4gMCwgUEpfRUlOVkFMKTsKKworICAgIC8vIFJldHVybiBmYWlsdXJlIGlmIGFjY2VzcyBwb2ludCBpcyBtYXJrZWQgYXMgZG93biBieSBhcHAuCisgICAgUEpfU1lNQklBTl9DSEVDS19DT05ORUNUSU9OKCk7CisKKyAgICBDUGpTb2NrZXQgKnBqU29jayA9IChDUGpTb2NrZXQqKXNvY2s7CisKKyAgICBpZiAocGpTb2NrLT5SZWFkZXIoKSkgeworCUNQalNvY2tldFJlYWRlciAqcmVhZGVyID0gcGpTb2NrLT5SZWFkZXIoKTsKKworCXdoaWxlIChyZWFkZXItPklzQWN0aXZlKCkgJiYgIXJlYWRlci0+SGFzRGF0YSgpKSB7CisJICAgIFVzZXI6OldhaXRGb3JBbnlSZXF1ZXN0KCk7CisJfQorCisJaWYgKHJlYWRlci0+SGFzRGF0YSgpKSB7CisJICAgIFRQdHI4IGRhdGEoKFRVaW50OCopYnVmLCAoVEludCkqbGVuKTsKKwkgICAgVEluZXRBZGRyIGluZXRBZGRyOworCisJICAgIHJlYWRlci0+UmVhZERhdGEoZGF0YSwgJmluZXRBZGRyKTsKKworCSAgICAqbGVuID0gZGF0YS5MZW5ndGgoKTsKKwkgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisJfQorICAgIH0KKworICAgIFRSZXF1ZXN0U3RhdHVzIHJlcVN0YXR1czsKKyAgICBUU29ja1hmckxlbmd0aCByZWN2TGVuOworICAgIFRQdHI4IGRhdGEoKFRVaW50OCopYnVmLCAoVEludCkqbGVuLCAoVEludCkqbGVuKTsKKworICAgIGlmIChwalNvY2stPklzRGF0YWdyYW0oKSkgeworCXBqU29jay0+U29ja2V0KCkuUmVjdihkYXRhLCBmbGFncywgcmVxU3RhdHVzKTsKKyAgICB9IGVsc2UgeworCS8vIFVzaW5nIHN0YXRpYyBsaWtlIHRoaXMgaXMgbm90IHByZXR0eSwgYnV0IHdlIGRvbid0IG5lZWQgdG8gdXNlCisJLy8gdGhlIHZhbHVlIGFueXdheSwgaGVuY2UgZG9pbmcgaXQgbGlrZSB0aGlzIGlzIHByb2JhYmx5IG1vc3QKKwkvLyBvcHRpbWFsLgorCXN0YXRpYyBUU29ja1hmckxlbmd0aCBsZW47CisJcGpTb2NrLT5Tb2NrZXQoKS5SZWN2T25lT3JNb3JlKGRhdGEsIGZsYWdzLCByZXFTdGF0dXMsIGxlbik7CisgICAgfQorICAgIFVzZXI6OldhaXRGb3JSZXF1ZXN0KHJlcVN0YXR1cyk7CisKKyAgICBpZiAocmVxU3RhdHVzID09IEtFcnJOb25lKSB7CisJLy8qbGVuID0gKFRJbnQpcmVjdkxlbi5MZW5ndGgoKTsKKwkqbGVuID0gZGF0YS5MZW5ndGgoKTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9IGVsc2UgeworCSpsZW4gPSAtMTsKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHJlcVN0YXR1cy5JbnQoKSk7CisgICAgfQorfQorCisvKgorICogUmVjZWl2ZSBkYXRhLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfcmVjdmZyb20ocGpfc29ja190IHNvY2ssCisJCQkJICAgICB2b2lkICpidWYsCisJCQkJICAgICBwal9zc2l6ZV90ICpsZW4sCisJCQkJICAgICB1bnNpZ25lZCBmbGFncywKKwkJCQkgICAgIHBqX3NvY2thZGRyX3QgKmZyb20sCisJCQkJICAgICBpbnQgKmZyb21sZW4pCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oc29jayAmJiBidWYgJiYgbGVuICYmIGZyb20gJiYgZnJvbWxlbiwgUEpfRUlOVkFMKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKCpsZW4gPiAwLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oKmZyb21sZW4gPj0gKGludClzaXplb2YocGpfc29ja2FkZHJfaW4pLCBQSl9FSU5WQUwpOworCisgICAgLy8gUmV0dXJuIGZhaWx1cmUgaWYgYWNjZXNzIHBvaW50IGlzIG1hcmtlZCBhcyBkb3duIGJ5IGFwcC4KKyAgICBQSl9TWU1CSUFOX0NIRUNLX0NPTk5FQ1RJT04oKTsKKworICAgIENQalNvY2tldCAqcGpTb2NrID0gKENQalNvY2tldCopc29jazsKKyAgICBSU29ja2V0ICZyU29jayA9IHBqU29jay0+U29ja2V0KCk7CisKKyAgICBpZiAocGpTb2NrLT5SZWFkZXIoKSkgeworCUNQalNvY2tldFJlYWRlciAqcmVhZGVyID0gcGpTb2NrLT5SZWFkZXIoKTsKKworCXdoaWxlIChyZWFkZXItPklzQWN0aXZlKCkgJiYgIXJlYWRlci0+SGFzRGF0YSgpKSB7CisJICAgIFVzZXI6OldhaXRGb3JBbnlSZXF1ZXN0KCk7CisJfQorCisJaWYgKHJlYWRlci0+SGFzRGF0YSgpKSB7CisJICAgIFRQdHI4IGRhdGEoKFRVaW50OCopYnVmLCAoVEludCkqbGVuKTsKKwkgICAgVEluZXRBZGRyIGluZXRBZGRyOworCisJICAgIHJlYWRlci0+UmVhZERhdGEoZGF0YSwgJmluZXRBZGRyKTsKKworCSAgICAqbGVuID0gZGF0YS5MZW5ndGgoKTsKKworCSAgICBpZiAoZnJvbSAmJiBmcm9tbGVuKSB7CisJCXJldHVybiBQalN5bWJpYW5PUzo6QWRkcjJwaihpbmV0QWRkciwgKihwal9zb2NrYWRkciopZnJvbSwgCisJCQkJCSAgICBmcm9tbGVuKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgCXJldHVybiBQSl9TVUNDRVNTOworCSAgICB9CisJfQorICAgIH0KKworICAgIFRJbmV0QWRkciBpbmV0QWRkcjsKKyAgICBUUmVxdWVzdFN0YXR1cyByZXFTdGF0dXM7CisgICAgVFNvY2tYZnJMZW5ndGggcmVjdkxlbjsKKyAgICBUUHRyOCBkYXRhKChUVWludDgqKWJ1ZiwgKFRJbnQpKmxlbiwgKFRJbnQpKmxlbik7CisKKyAgICByU29jay5SZWN2RnJvbShkYXRhLCBpbmV0QWRkciwgZmxhZ3MsIHJlcVN0YXR1cywgcmVjdkxlbik7CisgICAgVXNlcjo6V2FpdEZvclJlcXVlc3QocmVxU3RhdHVzKTsKKworICAgIGlmIChyZXFTdGF0dXMgPT0gS0Vyck5vbmUpIHsKKwkvLypsZW4gPSAoVEludClyZWN2TGVuLkxlbmd0aCgpOworCSpsZW4gPSBkYXRhLkxlbmd0aCgpOworCXJldHVybiBQalN5bWJpYW5PUzo6QWRkcjJwaihpbmV0QWRkciwgKihwal9zb2NrYWRkciopZnJvbSwgZnJvbWxlbik7CisgICAgfSBlbHNlIHsKKwkqbGVuID0gLTE7CisJKmZyb21sZW4gPSAtMTsKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHJlcVN0YXR1cy5JbnQoKSk7CisgICAgfQorfQorCisvKgorICogR2V0IHNvY2tldCBvcHRpb24uCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19nZXRzb2Nrb3B0KCBwal9zb2NrX3Qgc29jaywKKwkJCQkJcGpfdWludDE2X3QgbGV2ZWwsCisJCQkJCXBqX3VpbnQxNl90IG9wdG5hbWUsCisJCQkJCXZvaWQgKm9wdHZhbCwKKwkJCQkJaW50ICpvcHRsZW4pCit7CisgICAgLy8gTm90IHN1cHBvcnRlZCBmb3Igbm93LgorICAgIFBKX1VOVVNFRF9BUkcoc29jayk7CisgICAgUEpfVU5VU0VEX0FSRyhsZXZlbCk7CisgICAgUEpfVU5VU0VEX0FSRyhvcHRuYW1lKTsKKyAgICBQSl9VTlVTRURfQVJHKG9wdHZhbCk7CisgICAgUEpfVU5VU0VEX0FSRyhvcHRsZW4pOworICAgIHJldHVybiBQSl9FSU5WQUxJRE9QOworfQorCisvKgorICogU2V0IHNvY2tldCBvcHRpb24uCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19zZXRzb2Nrb3B0KCBwal9zb2NrX3Qgc29jaywKKwkJCQkJcGpfdWludDE2X3QgbGV2ZWwsCisJCQkJCXBqX3VpbnQxNl90IG9wdG5hbWUsCisJCQkJCWNvbnN0IHZvaWQgKm9wdHZhbCwKKwkJCQkJaW50IG9wdGxlbikKK3sKKyAgICAvLyBOb3Qgc3VwcG9ydGVkIGZvciBub3cuCisgICAgUEpfVU5VU0VEX0FSRyhzb2NrKTsKKyAgICBQSl9VTlVTRURfQVJHKGxldmVsKTsKKyAgICBQSl9VTlVTRURfQVJHKG9wdG5hbWUpOworICAgIFBKX1VOVVNFRF9BUkcob3B0dmFsKTsKKyAgICBQSl9VTlVTRURfQVJHKG9wdGxlbik7CisgICAgcmV0dXJuIFBKX0VJTlZBTElET1A7Cit9CisKKy8qCisgKiBDb25uZWN0IHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zb2NrX2Nvbm5lY3QoIHBqX3NvY2tfdCBzb2NrLAorCQkJCSAgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkgICAgIGludCBuYW1lbGVuKQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzb2NrICYmIGFkZHIgJiYgbmFtZWxlbiwgUEpfRUlOVkFMKTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKCgocGpfc29ja2FkZHIqKWFkZHIpLT5hZGRyLnNhX2ZhbWlseSA9PSBQSl9BRl9JTkVULCAKKwkJICAgICBQSl9FSU5WQUwpOworCisgICAgLy8gUmV0dXJuIGZhaWx1cmUgaWYgYWNjZXNzIHBvaW50IGlzIG1hcmtlZCBhcyBkb3duIGJ5IGFwcC4KKyAgICBQSl9TWU1CSUFOX0NIRUNLX0NPTk5FQ1RJT04oKTsKKyAgICAKKyAgICBDUGpTb2NrZXQgKnBqU29jayA9IChDUGpTb2NrZXQqKXNvY2s7CisgICAgUlNvY2tldCAmclNvY2sgPSBwalNvY2stPlNvY2tldCgpOworCisgICAgVEluZXRBZGRyIGluZXRBZGRyOworICAgIFRSZXF1ZXN0U3RhdHVzIHJlcVN0YXR1czsKKworICAgIHN0YXR1cyA9IFBqU3ltYmlhbk9TOjpwajJBZGRyKCoocGpfc29ja2FkZHIqKWFkZHIsIG5hbWVsZW4sIGluZXRBZGRyKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisgICAgCXJldHVybiBzdGF0dXM7CisKKyAgICByU29jay5Db25uZWN0KGluZXRBZGRyLCByZXFTdGF0dXMpOworICAgIFVzZXI6OldhaXRGb3JSZXF1ZXN0KHJlcVN0YXR1cyk7CisKKyAgICBpZiAocmVxU3RhdHVzID09IEtFcnJOb25lKSB7CisJcGpTb2NrLT5TZXRDb25uZWN0ZWQodHJ1ZSk7CisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfSBlbHNlIHsKKwlyZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKHJlcVN0YXR1cy5JbnQoKSk7CisgICAgfQorfQorCisKKy8qCisgKiBTaHV0ZG93biBzb2NrZXQuCisgKi8KKyNpZiBQSl9IQVNfVENQCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfc2h1dGRvd24oIHBqX3NvY2tfdCBzb2NrLAorCQkJCSAgICAgIGludCBob3cpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oc29jaywgUEpfRUlOVkFMKTsKKworICAgIENQalNvY2tldCAqcGpTb2NrID0gKENQalNvY2tldCopc29jazsKKyAgICBSU29ja2V0ICZyU29jayA9IHBqU29jay0+U29ja2V0KCk7CisKKyAgICBSU29ja2V0OjpUU2h1dGRvd24gYUhvdzsKKyAgICBpZiAoaG93ID09IFBKX1NEX1JFQ0VJVkUpCisJYUhvdyA9IFJTb2NrZXQ6OkVTdG9wSW5wdXQ7CisgICAgZWxzZSBpZiAoaG93ID09IFBKX1NIVVRfV1IpCisJYUhvdyA9IFJTb2NrZXQ6OkVTdG9wT3V0cHV0OworICAgIGVsc2UKKwlhSG93ID0gUlNvY2tldDo6RU5vcm1hbDsKKworICAgIFRSZXF1ZXN0U3RhdHVzIHJlcVN0YXR1czsKKworICAgIHJTb2NrLlNodXRkb3duKGFIb3csIHJlcVN0YXR1cyk7CisgICAgVXNlcjo6V2FpdEZvclJlcXVlc3QocmVxU3RhdHVzKTsKKworICAgIGlmIChyZXFTdGF0dXMgPT0gS0Vyck5vbmUpIHsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9IGVsc2UgeworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmVxU3RhdHVzLkludCgpKTsKKyAgICB9Cit9CisKKy8qCisgKiBTdGFydCBsaXN0ZW5pbmcgdG8gaW5jb21pbmcgY29ubmVjdGlvbnMuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc29ja19saXN0ZW4oIHBqX3NvY2tfdCBzb2NrLAorCQkJCSAgICBpbnQgYmFja2xvZykKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzb2NrICYmIGJhY2tsb2csIFBKX0VJTlZBTCk7CisKKyAgICBDUGpTb2NrZXQgKnBqU29jayA9IChDUGpTb2NrZXQqKXNvY2s7CisgICAgUlNvY2tldCAmclNvY2sgPSBwalNvY2stPlNvY2tldCgpOworCisgICAgVEludCByYyA9IHJTb2NrLkxpc3RlbigoVFVpbnQpYmFja2xvZyk7CisKKyAgICBpZiAocmMgPT0gS0Vyck5vbmUpIHsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9IGVsc2UgeworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmMpOworICAgIH0KK30KKworLyoKKyAqIEFjY2VwdCBpbmNvbWluZyBjb25uZWN0aW9ucworICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NvY2tfYWNjZXB0KCBwal9zb2NrX3Qgc2VydmVyZmQsCisJCQkJICAgIHBqX3NvY2tfdCAqbmV3c29jaywKKwkJCQkgICAgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkgICAgaW50ICphZGRybGVuKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNlcnZlcmZkICYmIG5ld3NvY2ssIFBKX0VJTlZBTCk7CisKKyAgICBDUGpTb2NrZXQgKnBqU29jayA9IChDUGpTb2NrZXQqKXNlcnZlcmZkOworICAgIFJTb2NrZXQgJnJTb2NrID0gcGpTb2NrLT5Tb2NrZXQoKTsKKworICAgIC8vIENyZWF0ZSBhICdibGFuaycgc29ja2V0CisgICAgUlNvY2tldCBuZXdTb2NrOworICAgIG5ld1NvY2suT3BlbihQalN5bWJpYW5PUzo6SW5zdGFuY2UoKS0+U29ja2V0U2VydigpKTsKKworICAgIC8vIENhbGwgQWNjZXB0KCkKKyAgICBUUmVxdWVzdFN0YXR1cyByZXFTdGF0dXM7CisKKyAgICByU29jay5BY2NlcHQobmV3U29jaywgcmVxU3RhdHVzKTsKKyAgICBVc2VyOjpXYWl0Rm9yUmVxdWVzdChyZXFTdGF0dXMpOworCisgICAgaWYgKHJlcVN0YXR1cyAhPSBLRXJyTm9uZSkgeworCXJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmVxU3RhdHVzLkludCgpKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgUEogc29ja2V0CisgICAgQ1BqU29ja2V0ICpuZXdQalNvY2sgPSBuZXcgQ1BqU29ja2V0KHBqU29jay0+R2V0QWYoKSwgcGpTb2NrLT5HZXRTb2NrVHlwZSgpLAorCQkJCQkgbmV3U29jayk7CisgICAgbmV3UGpTb2NrLT5TZXRDb25uZWN0ZWQodHJ1ZSk7CisKKyAgICAqbmV3c29jayA9IChwal9zb2NrX3QpIG5ld1BqU29jazsKKworICAgIGlmIChhZGRyICYmIGFkZHJsZW4pIHsKKwlyZXR1cm4gcGpfc29ja19nZXRwZWVybmFtZSgqbmV3c29jaywgYWRkciwgYWRkcmxlbik7CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisjZW5kaWYJLyogUEpfSEFTX1RDUCAqLworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zc2xfc29ja19jb21tb24uYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zc2xfc29ja19jb21tb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjhhNjQwCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NzbF9zb2NrX2NvbW1vbi5jCkBAIC0wLDAgKzEsMTM4IEBACisvKiAkSWQ6IHNzbF9zb2NrX2NvbW1vbi5jIDM5OTkgMjAxMi0wMy0zMCAwNzoxMDoxM1ogYmVubnlscCAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9zc2xfc29jay5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisKKy8qCisgKiBJbml0aWFsaXplIHRoZSBTU0wgc29ja2V0IGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMuCisgKi8KK1BKX0RFRih2b2lkKSBwal9zc2xfc29ja19wYXJhbV9kZWZhdWx0KHBqX3NzbF9zb2NrX3BhcmFtICpwYXJhbSkKK3sKKyAgICBwal9iemVybyhwYXJhbSwgc2l6ZW9mKCpwYXJhbSkpOworCisgICAgLyogU29ja2V0IGNvbmZpZyAqLworICAgIHBhcmFtLT5zb2NrX2FmID0gUEpfQUZfSU5FVDsKKyAgICBwYXJhbS0+c29ja190eXBlID0gcGpfU09DS19TVFJFQU0oKTsKKyAgICBwYXJhbS0+YXN5bmNfY250ID0gMTsKKyAgICBwYXJhbS0+Y29uY3VycmVuY3kgPSAtMTsKKyAgICBwYXJhbS0+d2hvbGVfZGF0YSA9IFBKX1RSVUU7CisgICAgcGFyYW0tPnNlbmRfYnVmZmVyX3NpemUgPSA4MTkyOworI2lmICFkZWZpbmVkKFBKX1NZTUJJQU4pIHx8IFBKX1NZTUJJQU49PTAKKyAgICBwYXJhbS0+cmVhZF9idWZmZXJfc2l6ZSA9IDE1MDA7CisjZW5kaWYKKyAgICBwYXJhbS0+cW9zX3R5cGUgPSBQSl9RT1NfVFlQRV9CRVNUX0VGRk9SVDsKKyAgICBwYXJhbS0+cW9zX2lnbm9yZV9lcnJvciA9IFBKX1RSVUU7CisKKyAgICAvKiBTZWN1cml0eSBjb25maWcgKi8KKyAgICBwYXJhbS0+cHJvdG8gPSBQSl9TU0xfU09DS19QUk9UT19ERUZBVUxUOworfQorCisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc3NsX2NlcnRfZ2V0X3ZlcmlmeV9zdGF0dXNfc3RyaW5ncygKKwkJCQkJCXBqX3VpbnQzMl90IHZlcmlmeV9zdGF0dXMsIAorCQkJCQkJY29uc3QgY2hhciAqZXJyb3Jfc3RyaW5nc1tdLAorCQkJCQkJdW5zaWduZWQgKmNvdW50KQoreworICAgIHVuc2lnbmVkIGkgPSAwLCBzaGlmdF9pZHggPSAwOworICAgIHVuc2lnbmVkIHVua25vd24gPSAwOworICAgIHBqX3VpbnQzMl90IGVycnM7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGVycm9yX3N0cmluZ3MgJiYgY291bnQsIFBKX0VJTlZBTCk7CisKKyAgICBpZiAodmVyaWZ5X3N0YXR1cyA9PSBQSl9TU0xfQ0VSVF9FU1VDQ0VTUyAmJiAqY291bnQpIHsKKwllcnJvcl9zdHJpbmdzWzBdID0gIk9LIjsKKwkqY291bnQgPSAxOworCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0KKworICAgIGVycnMgPSB2ZXJpZnlfc3RhdHVzOworCisgICAgd2hpbGUgKGVycnMgJiYgaSA8ICpjb3VudCkgeworCXBqX3VpbnQzMl90IGVycjsKKwljb25zdCBjaGFyICpwID0gTlVMTDsKKworCWlmICgoZXJycyAmIDEpID09IDApIHsKKwkgICAgc2hpZnRfaWR4Kys7CisJICAgIGVycnMgPj49IDE7CisJICAgIGNvbnRpbnVlOworCX0KKworCWVyciA9ICgxIDw8IHNoaWZ0X2lkeCk7CisKKwlzd2l0Y2ggKGVycikgeworCWNhc2UgUEpfU1NMX0NFUlRfRUlTU1VFUl9OT1RfRk9VTkQ6CisJICAgIHAgPSAiVGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgZm91bmQiOworCSAgICBicmVhazsKKwljYXNlIFBKX1NTTF9DRVJUX0VVTlRSVVNURUQ6CisJICAgIHAgPSAiVGhlIGNlcnRpZmljYXRlIGlzIHVudHJ1c3RlZCI7CisJICAgIGJyZWFrOworCWNhc2UgUEpfU1NMX0NFUlRfRVZBTElESVRZX1BFUklPRDoKKwkgICAgcCA9ICJUaGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQgb3Igbm90IHlldCB2YWxpZCI7CisJICAgIGJyZWFrOworCWNhc2UgUEpfU1NMX0NFUlRfRUlOVkFMSURfRk9STUFUOgorCSAgICBwID0gIk9uZSBvciBtb3JlIGZpZWxkcyBvZiB0aGUgY2VydGlmaWNhdGUgY2Fubm90IGJlIGRlY29kZWQgIgorCQkiZHVlIHRvIGludmFsaWQgZm9ybWF0IjsKKwkgICAgYnJlYWs7CisJY2FzZSBQSl9TU0xfQ0VSVF9FSVNTVUVSX01JU01BVENIOgorCSAgICBwID0gIlRoZSBpc3N1ZXIgaW5mbyBpbiB0aGUgY2VydGlmaWNhdGUgZG9lcyBub3QgbWF0Y2ggdG8gdGhlICIKKwkJIihjYW5kaWRhdGUpIGlzc3VlciBjZXJ0aWZpY2F0ZSI7CisJICAgIGJyZWFrOworCWNhc2UgUEpfU1NMX0NFUlRfRUNSTF9GQUlMVVJFOgorCSAgICBwID0gIlRoZSBDUkwgY2VydGlmaWNhdGUgY2Fubm90IGJlIGZvdW5kIG9yIGNhbm5vdCBiZSByZWFkICIKKwkJInByb3Blcmx5IjsKKwkgICAgYnJlYWs7CisJY2FzZSBQSl9TU0xfQ0VSVF9FUkVWT0tFRDoKKwkgICAgcCA9ICJUaGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gcmV2b2tlZCI7CisJICAgIGJyZWFrOworCWNhc2UgUEpfU1NMX0NFUlRfRUlOVkFMSURfUFVSUE9TRToKKwkgICAgcCA9ICJUaGUgY2VydGlmaWNhdGUgb3IgQ0EgY2VydGlmaWNhdGUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSAiCisJCSJzcGVjaWZpZWQgcHVycG9zZSI7CisJICAgIGJyZWFrOworCWNhc2UgUEpfU1NMX0NFUlRfRUNIQUlOX1RPT19MT05HOgorCSAgICBwID0gIlRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBsZW5ndGggaXMgdG9vIGxvbmciOworCSAgICBicmVhazsKKwljYXNlIFBKX1NTTF9DRVJUX0VJREVOVElUWV9OT1RfTUFUQ0g6CisJICAgIHAgPSAiVGhlIHNlcnZlciBpZGVudGl0eSBkb2VzIG5vdCBtYXRjaCB0byBhbnkgaWRlbnRpdGllcyAiCisJCSJzcGVjaWZpZWQgaW4gdGhlIGNlcnRpZmljYXRlIjsKKwkgICAgYnJlYWs7CisJY2FzZSBQSl9TU0xfQ0VSVF9FVU5LTk9XTjoKKwlkZWZhdWx0OgorCSAgICB1bmtub3duKys7CisJICAgIGJyZWFrOworCX0KKwkKKwkvKiBTZXQgZXJyb3Igc3RyaW5nICovCisJaWYgKHApCisJICAgIGVycm9yX3N0cmluZ3NbaSsrXSA9IHA7CisKKwkvKiBOZXh0ICovCisJc2hpZnRfaWR4Kys7CisJZXJycyA+Pj0gMTsKKyAgICB9CisKKyAgICAvKiBVbmtub3duIGVycm9yICovCisgICAgaWYgKHVua25vd24gJiYgaSA8ICpjb3VudCkKKwllcnJvcl9zdHJpbmdzW2krK10gPSAiVW5rbm93biB2ZXJpZmljYXRpb24gZXJyb3IiOworCisgICAgKmNvdW50ID0gaTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3NzbF9zb2NrX2R1bXAuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zc2xfc29ja19kdW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE4OTkyZQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zc2xfc29ja19kdW1wLmMKQEAgLTAsMCArMSwxNDggQEAKKy8qICRJZDogc3NsX3NvY2tfZHVtcC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3NzbF9zb2NrLmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorCisKKy8qIE9ubHkgYnVpbGQgd2hlbiBQSl9IQVNfU1NMX1NPQ0sgaXMgZW5hYmxlZCAqLworI2lmIGRlZmluZWQoUEpfSEFTX1NTTF9TT0NLKSAmJiBQSl9IQVNfU1NMX1NPQ0shPTAKKworI2RlZmluZSBUSElTX0ZJTEUJInNzbF9zb2NrX2R1bXAuYyIKKworI2RlZmluZSBDSEVDS19CVUZfTEVOKCkJCQkJCQlcCisgICAgaWYgKChsZW4gPCAwKSB8fCAobGVuID49IGVuZC1wKSkgewkJCQlcCisJKnAgPSAnXDAnOwkJCQkJCVwKKwlyZXR1cm4gLTE7CQkJCQkJXAorICAgIH0JCQkJCQkJCVwKKyAgICBwICs9IGxlbjsKKworUEpfREVGKHBqX3NzaXplX3QpIHBqX3NzbF9jZXJ0X2luZm9fZHVtcChjb25zdCBwal9zc2xfY2VydF9pbmZvICpjaSwKKwkJCQkJIGNvbnN0IGNoYXIgKmluZGVudCwKKwkJCQkJIGNoYXIgKmJ1ZiwKKwkJCQkJIHBqX3NpemVfdCBidWZfc2l6ZSkKK3sKKyAgICBjb25zdCBjaGFyICp3ZGF5c1tdID0geyJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQifTsKKyAgICBwal9wYXJzZWRfdGltZSBwdDE7CisgICAgcGpfcGFyc2VkX3RpbWUgcHQyOworICAgIHVuc2lnbmVkIGk7CisgICAgaW50IGxlbiA9IDA7CisgICAgY2hhciAqcCwgKmVuZDsKKworICAgIHAgPSBidWY7CisgICAgZW5kID0gYnVmICsgYnVmX3NpemU7CisKKyAgICBwal90aW1lX2RlY29kZSgmY2ktPnZhbGlkaXR5LnN0YXJ0LCAmcHQxKTsKKyAgICBwal90aW1lX2RlY29kZSgmY2ktPnZhbGlkaXR5LmVuZCwgJnB0Mik7CisKKyAgICAvKiBWZXJzaW9uICovCisgICAgbGVuID0gcGpfYW5zaV9zbnByaW50ZihwLCBlbmQtcCwgIiVzVmVyc2lvbiAgICA6IHYlZFxuIiwgCisJCQkgICBpbmRlbnQsIGNpLT52ZXJzaW9uKTsKKyAgICBDSEVDS19CVUZfTEVOKCk7CisgICAgCisgICAgLyogU2VyaWFsIG51bWJlciAqLworICAgIGxlbiA9IHBqX2Fuc2lfc25wcmludGYocCwgZW5kLXAsICIlc1NlcmlhbCAgICAgOiAiLCBpbmRlbnQpOworICAgIENIRUNLX0JVRl9MRU4oKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoY2ktPnNlcmlhbF9ubykgJiYgIWNpLT5zZXJpYWxfbm9baV07ICsraSk7CisgICAgZm9yICg7IGkgPCBzaXplb2YoY2ktPnNlcmlhbF9ubyk7ICsraSkgeworCWxlbiA9IHBqX2Fuc2lfc25wcmludGYocCwgZW5kLXAsICIlMDJYICIsIGNpLT5zZXJpYWxfbm9baV0pOworCUNIRUNLX0JVRl9MRU4oKTsKKyAgICB9CisgICAgKihwLTEpID0gJ1xuJzsKKyAgICAKKyAgICAvKiBTdWJqZWN0ICovCisgICAgbGVuID0gcGpfYW5zaV9zbnByaW50ZiggcCwgZW5kLXAsICIlc1N1YmplY3QgICAgOiAlLipzXG4iLCBpbmRlbnQsCisJCQkgICAgKGludCljaS0+c3ViamVjdC5jbi5zbGVuLAorCQkJICAgIGNpLT5zdWJqZWN0LmNuLnB0cik7CisgICAgQ0hFQ0tfQlVGX0xFTigpOworICAgIGxlbiA9IHBqX2Fuc2lfc25wcmludGYoIHAsIGVuZC1wLCAiJXMgICAgICAgICAgICAgJS4qc1xuIiwgaW5kZW50LAorCQkJICAgIChpbnQpY2ktPnN1YmplY3QuaW5mby5zbGVuLAorCQkJICAgIGNpLT5zdWJqZWN0LmluZm8ucHRyKTsKKyAgICBDSEVDS19CVUZfTEVOKCk7CisKKyAgICAvKiBJc3N1ZXIgKi8KKyAgICBsZW4gPSBwal9hbnNpX3NucHJpbnRmKCBwLCBlbmQtcCwgIiVzSXNzdWVyICAgICA6ICUuKnNcbiIsIGluZGVudCwKKwkJCSAgICAoaW50KWNpLT5pc3N1ZXIuY24uc2xlbiwKKwkJCSAgICBjaS0+aXNzdWVyLmNuLnB0cik7CisgICAgQ0hFQ0tfQlVGX0xFTigpOworICAgIGxlbiA9IHBqX2Fuc2lfc25wcmludGYoIHAsIGVuZC1wLCAiJXMgICAgICAgICAgICAgJS4qc1xuIiwgaW5kZW50LAorCQkJICAgIChpbnQpY2ktPmlzc3Vlci5pbmZvLnNsZW4sCisJCQkgICAgY2ktPmlzc3Vlci5pbmZvLnB0cik7CisgICAgQ0hFQ0tfQlVGX0xFTigpOworCisgICAgLyogVmFsaWRpdHkgcGVyaW9kICovCisgICAgbGVuID0gcGpfYW5zaV9zbnByaW50ZiggcCwgZW5kLXAsICIlc1ZhbGlkIGZyb20gOiAlcyAlNGQtJTAyZC0lMDJkICIKKwkJCSAgICAiJTAyZDolMDJkOiUwMmQuJTAzZCAlc1xuIiwgaW5kZW50LAorCQkJICAgIHdkYXlzW3B0MS53ZGF5XSwgcHQxLnllYXIsIHB0MS5tb24rMSwgcHQxLmRheSwKKwkJCSAgICBwdDEuaG91ciwgcHQxLm1pbiwgcHQxLnNlYywgcHQxLm1zZWMsCisJCQkgICAgKGNpLT52YWxpZGl0eS5nbXQ/ICJHTVQiOiIiKSk7CisgICAgQ0hFQ0tfQlVGX0xFTigpOworCisgICAgbGVuID0gcGpfYW5zaV9zbnByaW50ZiggcCwgZW5kLXAsICIlc1ZhbGlkIHRvICAgOiAlcyAlNGQtJTAyZC0lMDJkICIKKwkJCSAgICAiJTAyZDolMDJkOiUwMmQuJTAzZCAlc1xuIiwgaW5kZW50LAorCQkJICAgIHdkYXlzW3B0Mi53ZGF5XSwgcHQyLnllYXIsIHB0Mi5tb24rMSwgcHQyLmRheSwKKwkJCSAgICBwdDIuaG91ciwgcHQyLm1pbiwgcHQyLnNlYywgcHQyLm1zZWMsCisJCQkgICAgKGNpLT52YWxpZGl0eS5nbXQ/ICJHTVQiOiIiKSk7CisgICAgQ0hFQ0tfQlVGX0xFTigpOworCisgICAgLyogU3ViamVjdCBhbHRlcm5hdGl2ZSBuYW1lIGV4dGVuc2lvbiAqLworICAgIGlmIChjaS0+c3Vial9hbHRfbmFtZS5jbnQpIHsKKwl1bnNpZ25lZCBpOworCisJbGVuID0gcGpfYW5zaV9zbnByaW50ZihwLCBlbmQtcCwgIiVzc3ViamVjdEFsdE5hbWUgZXh0ZW5zaW9uXG4iLCAKKwkJCSAgICAgICBpbmRlbnQpOworCUNIRUNLX0JVRl9MRU4oKTsKKworCWZvciAoaSA9IDA7IGkgPCBjaS0+c3Vial9hbHRfbmFtZS5jbnQ7ICsraSkgeworCSAgICBjb25zdCBjaGFyICp0eXBlID0gTlVMTDsKKworCSAgICBzd2l0Y2goY2ktPnN1YmpfYWx0X25hbWUuZW50cnlbaV0udHlwZSkgeworCSAgICBjYXNlIFBKX1NTTF9DRVJUX05BTUVfUkZDODIyOgorCQl0eXBlID0gIk1BSUwiOworCQlicmVhazsKKwkgICAgY2FzZSBQSl9TU0xfQ0VSVF9OQU1FX0ROUzoKKwkJdHlwZSA9ICIgRE5TIjsKKwkJYnJlYWs7CisJICAgIGNhc2UgUEpfU1NMX0NFUlRfTkFNRV9VUkk6CisJCXR5cGUgPSAiIFVSSSI7CisJCWJyZWFrOworCSAgICBjYXNlIFBKX1NTTF9DRVJUX05BTUVfSVA6CisJCXR5cGUgPSAiICBJUCI7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQlicmVhazsKKwkgICAgfQorCSAgICBpZiAodHlwZSkgeworCQlsZW4gPSBwal9hbnNpX3NucHJpbnRmKCBwLCBlbmQtcCwgIiVzICAgICAgJXMgOiAlLipzXG4iLCBpbmRlbnQsIAorCQkJCQl0eXBlLCAKKwkJCQkJKGludCljaS0+c3Vial9hbHRfbmFtZS5lbnRyeVtpXS5uYW1lLnNsZW4sCisJCQkJCWNpLT5zdWJqX2FsdF9uYW1lLmVudHJ5W2ldLm5hbWUucHRyKTsKKwkJQ0hFQ0tfQlVGX0xFTigpOworCSAgICB9CisJfQorICAgIH0KKworICAgIHJldHVybiAocC1idWYpOworfQorCisKKyNlbmRpZiAgLyogUEpfSEFTX1NTTF9TT0NLICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zc2xfc29ja19vc3NsLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc3NsX3NvY2tfb3NzbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNGFlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc3NsX3NvY2tfb3NzbC5jCkBAIC0wLDAgKzEsMjU3OCBAQAorLyogJElkOiBzc2xfc29ja19vc3NsLmMgNDYyNCAyMDEzLTEwLTIxIDA2OjM3OjMwWiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3NzbF9zb2NrLmg+CisjaW5jbHVkZSA8cGovYWN0aXZlc29jay5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zb2NrZXQuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL2xpc3QuaD4KKyNpbmNsdWRlIDxwai9sb2NrLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovbWF0aC5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovcG9vbC5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL3RpbWVyLmg+CisKKworLyogT25seSBidWlsZCB3aGVuIFBKX0hBU19TU0xfU09DSyBpcyBlbmFibGVkICovCisjaWYgZGVmaW5lZChQSl9IQVNfU1NMX1NPQ0spICYmIFBKX0hBU19TU0xfU09DSyE9MAorCisjZGVmaW5lIFRISVNfRklMRQkJInNzbF9zb2NrX29zc2wuYyIKKworLyogV29ya2Fyb3VuZCBmb3IgdGlja2V0ICM5ODUgKi8KKyNkZWZpbmUgREVMQVlFRF9DTE9TRV9USU1FT1VUCTIwMAorCisvKiBNYXhpbXVtIGNpcGhlcnMgKi8KKyNkZWZpbmUgTUFYX0NJUEhFUlMJCTEwMAorCisvKiAKKyAqIEluY2x1ZGUgT3BlblNTTCBoZWFkZXJzIAorICovCisjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisjaW5jbHVkZSA8b3BlbnNzbC94NTA5djMuaD4KKworCisjaWZkZWYgX01TQ19WRVIKKyMgIHByYWdtYSBjb21tZW50KCBsaWIsICJsaWJlYXkzMiIpCisjICBwcmFnbWEgY29tbWVudCggbGliLCAic3NsZWF5MzIiKQorI2VuZGlmCisKKworLyoKKyAqIFNTTC9UTFMgc3RhdGUgZW51bWVyYXRpb24uCisgKi8KK2VudW0gc3NsX3N0YXRlIHsKKyAgICBTU0xfU1RBVEVfTlVMTCwKKyAgICBTU0xfU1RBVEVfSEFORFNIQUtJTkcsCisgICAgU1NMX1NUQVRFX0VTVEFCTElTSEVECit9OworCisvKgorICogSW50ZXJuYWwgdGltZXIgdHlwZXMuCisgKi8KK2VudW0gdGltZXJfaWQKK3sKKyAgICBUSU1FUl9OT05FLAorICAgIFRJTUVSX0hBTkRTSEFLRV9USU1FT1VULAorICAgIFRJTUVSX0NMT1NFCit9OworCisvKgorICogU3RydWN0dXJlIG9mIFNTTCBzb2NrZXQgcmVhZCBidWZmZXIuCisgKi8KK3R5cGVkZWYgc3RydWN0IHJlYWRfZGF0YV90Cit7CisgICAgdm9pZAkJICpkYXRhOworICAgIHBqX3NpemVfdAkJICBsZW47Cit9IHJlYWRfZGF0YV90OworCisvKgorICogR2V0IHRoZSBvZmZzZXQgb2YgcG9pbnRlciB0byByZWFkLWJ1ZmZlciBvZiBTU0wgc29ja2V0IGZyb20gcmVhZC1idWZmZXIKKyAqIG9mIGFjdGl2ZSBzb2NrZXQuIE5vdGUgdGhhdCBib3RoIFNTTCBzb2NrZXQgYW5kIGFjdGl2ZSBzb2NrZXQgZW1wbG95IAorICogZGlmZmVyZW50IGJ1dCBjb3JyZWxhdGVkIHJlYWQtYnVmZmVycyAoYXMgbXVjaCBhcyBhc3luY19jbnQgZm9yIGVhY2gpLAorICogYW5kIHRvIG1ha2UgaXQgZWFzaWVyL2Zhc3RlciB0byBmaW5kIGNvcnJlc3BvbmRpbmcgU1NMIHNvY2tldCdzIHJlYWQtYnVmZmVyCisgKiBmcm9tIGtub3duIGFjdGl2ZSBzb2NrZXQncyByZWFkLWJ1ZmZlciwgdGhlIHBvaW50ZXIgb2YgY29ycmVzcG9uZGluZyAKKyAqIFNTTCBzb2NrZXQncyByZWFkLWJ1ZmZlciBpcyBzdG9yZWQgcmlnaHQgYWZ0ZXIgdGhlIGVuZCBvZiBhY3RpdmUgc29ja2V0J3MKKyAqIHJlYWQtYnVmZmVyLgorICovCisjZGVmaW5lIE9GRlNFVF9PRl9SRUFEX0RBVEFfUFRSKHNzb2NrLCBhc29ja19yYnVmKSBcCisJCQkJCShyZWFkX2RhdGFfdCoqKSBcCisJCQkJCSgocGpfaW50OF90KikoYXNvY2tfcmJ1ZikgKyBcCisJCQkJCXNzb2NrLT5wYXJhbS5yZWFkX2J1ZmZlcl9zaXplKQorCisvKgorICogU3RydWN0dXJlIG9mIFNTTCBzb2NrZXQgd3JpdGUgZGF0YS4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qgd3JpdGVfZGF0YV90IHsKKyAgICBQSl9ERUNMX0xJU1RfTUVNQkVSKHN0cnVjdCB3cml0ZV9kYXRhX3QpOworICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QJIGtleTsKKyAgICBwal9zaXplX3QgCSAJIHJlY29yZF9sZW47CisgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdAkqYXBwX2tleTsKKyAgICBwal9zaXplX3QgCSAJIHBsYWluX2RhdGFfbGVuOworICAgIHBqX3NpemVfdCAJIAkgZGF0YV9sZW47CisgICAgdW5zaWduZWQJCSBmbGFnczsKKyAgICB1bmlvbiB7CisJY2hhcgkJIGNvbnRlbnRbMV07CisJY29uc3QgY2hhcgkqcHRyOworICAgIH0gZGF0YTsKK30gd3JpdGVfZGF0YV90OworCisvKgorICogU3RydWN0dXJlIG9mIFNTTCBzb2NrZXQgd3JpdGUgYnVmZmVyIChjaXJjdWxhciBidWZmZXIpLgorICovCit0eXBlZGVmIHN0cnVjdCBzZW5kX2J1Zl90IHsKKyAgICBjaGFyCQkqYnVmOworICAgIHBqX3NpemVfdAkJIG1heF9sZW47ICAgIAorICAgIGNoYXIJCSpzdGFydDsKKyAgICBwal9zaXplX3QJCSBsZW47Cit9IHNlbmRfYnVmX3Q7CisKKy8qCisgKiBTZWN1cmUgc29ja2V0IHN0cnVjdHVyZSBkZWZpbml0aW9uLgorICovCitzdHJ1Y3QgcGpfc3NsX3NvY2tfdAoreworICAgIHBqX3Bvb2xfdAkJICpwb29sOworICAgIHBqX3NzbF9zb2NrX3QJICpwYXJlbnQ7CisgICAgcGpfc3NsX3NvY2tfcGFyYW0JICBwYXJhbTsKKyAgICBwal9zc2xfY2VydF90CSAqY2VydDsKKyAgICAKKyAgICBwal9zc2xfY2VydF9pbmZvCSAgbG9jYWxfY2VydF9pbmZvOworICAgIHBqX3NzbF9jZXJ0X2luZm8JICByZW1vdGVfY2VydF9pbmZvOworCisgICAgcGpfYm9vbF90CQkgIGlzX3NlcnZlcjsKKyAgICBlbnVtIHNzbF9zdGF0ZQkgIHNzbF9zdGF0ZTsKKyAgICBwal9pb3F1ZXVlX29wX2tleV90CSAgaGFuZHNoYWtlX29wX2tleTsKKyAgICBwal90aW1lcl9lbnRyeQkgIHRpbWVyOworICAgIHBqX3N0YXR1c190CQkgIHZlcmlmeV9zdGF0dXM7CisKKyAgICB1bnNpZ25lZCBsb25nCSAgbGFzdF9lcnI7CisKKyAgICBwal9zb2NrX3QJCSAgc29jazsKKyAgICBwal9hY3RpdmVzb2NrX3QJICphc29jazsKKworICAgIHBqX3NvY2thZGRyCQkgIGxvY2FsX2FkZHI7CisgICAgcGpfc29ja2FkZHIJCSAgcmVtX2FkZHI7CisgICAgaW50CQkJICBhZGRyX2xlbjsKKyAgICAKKyAgICBwal9ib29sX3QJCSAgcmVhZF9zdGFydGVkOworICAgIHBqX3NpemVfdAkJICByZWFkX3NpemU7CisgICAgcGpfdWludDMyX3QJCSAgcmVhZF9mbGFnczsKKyAgICB2b2lkCQkqKmFzb2NrX3JidWY7CisgICAgcmVhZF9kYXRhX3QJCSAqc3NvY2tfcmJ1ZjsKKworICAgIHdyaXRlX2RhdGFfdAkgIHdyaXRlX3BlbmRpbmc7LyogbGlzdCBvZiBwZW5kaW5nIHdyaXRlIHRvIE9wZW5TU0wgKi8KKyAgICB3cml0ZV9kYXRhX3QJICB3cml0ZV9wZW5kaW5nX2VtcHR5OyAvKiBjYWNoZSBmb3Igd3JpdGVfcGVuZGluZyAgICovCisgICAgcGpfYm9vbF90CQkgIGZsdXNoaW5nX3dyaXRlX3BlbmQ7IC8qIGZsYWcgb2YgZmx1c2hpbmcgaXMgb25nb2luZyovCisgICAgc2VuZF9idWZfdAkJICBzZW5kX2J1ZjsKKyAgICB3cml0ZV9kYXRhX3QJICBzZW5kX3BlbmRpbmc7CS8qIGxpc3Qgb2YgcGVuZGluZyB3cml0ZSB0byBuZXR3b3JrICovCisgICAgcGpfbG9ja190CQkgKndyaXRlX211dGV4OwkvKiBwcm90ZWN0IHdyaXRlIEJJTyBhbmQgc2VuZF9idWYgICAqLworCisgICAgU1NMX0NUWAkJICpvc3NsX2N0eDsKKyAgICBTU0wJCQkgKm9zc2xfc3NsOworICAgIEJJTwkJCSAqb3NzbF9yYmlvOworICAgIEJJTwkJCSAqb3NzbF93YmlvOworfTsKKworCisvKgorICogQ2VydGlmaWNhdGUvY3JlZGVudGlhbCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KKyAqLworc3RydWN0IHBqX3NzbF9jZXJ0X3QKK3sKKyAgICBwal9zdHJfdCBDQV9maWxlOworICAgIHBqX3N0cl90IGNlcnRfZmlsZTsKKyAgICBwal9zdHJfdCBwcml2a2V5X2ZpbGU7CisgICAgcGpfc3RyX3QgcHJpdmtleV9wYXNzOworfTsKKworCitzdGF0aWMgd3JpdGVfZGF0YV90KiBhbGxvY19zZW5kX2RhdGEocGpfc3NsX3NvY2tfdCAqc3NvY2ssIHBqX3NpemVfdCBsZW4pOworc3RhdGljIHZvaWQgZnJlZV9zZW5kX2RhdGEocGpfc3NsX3NvY2tfdCAqc3NvY2ssIHdyaXRlX2RhdGFfdCAqd2RhdGEpOworc3RhdGljIHBqX3N0YXR1c190IGZsdXNoX2RlbGF5ZWRfc2VuZChwal9zc2xfc29ja190ICpzc29jayk7CisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogU3RhdGljL2ludGVybmFsIGZ1bmN0aW9ucy4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqCisgKiBNYXBwaW5nIGZyb20gT3BlblNTTCBlcnJvciBjb2RlcyB0byBwamxpYiBlcnJvciBzcGFjZS4KKyAqLworCisjZGVmaW5lIFBKX1NTTF9FUlJOT19TVEFSVAkJKFBKX0VSUk5PX1NUQVJUX1VTRVIgKyBcCisJCQkJCSBQSl9FUlJOT19TUEFDRV9TSVpFKjYpCisKKyNkZWZpbmUgUEpfU1NMX0VSUk5PX1NQQUNFX1NJWkUJCVBKX0VSUk5PX1NQQUNFX1NJWkUKKworLyogRXhwZWN0ZWQgbWF4aW11bSB2YWx1ZSBvZiByZWFzb24gY29tcG9uZW50IGluIE9wZW5TU0wgZXJyb3IgY29kZSAqLworI2RlZmluZSBNQVhfT1NTTF9FUlJfUkVBU09OCQkxMjAwCisKK3N0YXRpYyBwal9zdGF0dXNfdCBTVEFUVVNfRlJPTV9TU0xfRVJSKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGVycikKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICAvKiBHZW5lcmFsIFNTTCBlcnJvciwgZGlnIG1vcmUgZnJvbSBPcGVuU1NMIGVycm9yIHF1ZXVlICovCisgICAgaWYgKGVyciA9PSBTU0xfRVJST1JfU1NMKQorCWVyciA9IEVSUl9nZXRfZXJyb3IoKTsKKworICAgIC8qIE9wZW5TU0wgZXJyb3IgcmFuZ2UgaXMgbXVjaCB3aWRlciB0aGFuIFBKTElCIGVycm5vIHNwYWNlLCBzbworICAgICAqIGlmIGl0IGV4Y2VlZHMgdGhlIHNwYWNlLCBvbmx5IHRoZSBlcnJvciByZWFzb24gd2lsbCBiZSBrZXB0LgorICAgICAqIE5vdGUgdGhhdCB0aGUgbGFzdCBuYXRpdmUgZXJyb3Igd2lsbCBiZSBrZXB0IGFzIGlzIGFuZCBjYW4gYmUKKyAgICAgKiByZXRyaWV2ZWQgdmlhIFNTTCBzb2NrZXQgaW5mby4KKyAgICAgKi8KKyAgICBzdGF0dXMgPSBFUlJfR0VUX0xJQihlcnIpKk1BWF9PU1NMX0VSUl9SRUFTT04gKyBFUlJfR0VUX1JFQVNPTihlcnIpOworICAgIGlmIChzdGF0dXMgPiBQSl9TU0xfRVJSTk9fU1BBQ0VfU0laRSkKKwlzdGF0dXMgPSBFUlJfR0VUX1JFQVNPTihlcnIpOworCisgICAgc3RhdHVzICs9IFBKX1NTTF9FUlJOT19TVEFSVDsKKyAgICBzc29jay0+bGFzdF9lcnIgPSBlcnI7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIHBqX3N0YXR1c190IEdFVF9TU0xfU1RBVFVTKHBqX3NzbF9zb2NrX3QgKnNzb2NrKQoreworICAgIHJldHVybiBTVEFUVVNfRlJPTV9TU0xfRVJSKHNzb2NrLCBFUlJfZ2V0X2Vycm9yKCkpOworfQorCisKKy8qCisgKiBHZXQgZXJyb3Igc3RyaW5nIG9mIE9wZW5TU0wuCisgKi8KK3N0YXRpYyBwal9zdHJfdCBzc2xfc3RyZXJyb3IocGpfc3RhdHVzX3Qgc3RhdHVzLCAKKwkJCSAgICAgY2hhciAqYnVmLCBwal9zaXplX3QgYnVmc2l6ZSkKK3sKKyAgICBwal9zdHJfdCBlcnJzdHI7CisgICAgdW5zaWduZWQgbG9uZyBzc2xfZXJyID0gc3RhdHVzOworCisgICAgaWYgKHNzbF9lcnIpIHsKKwl1bnNpZ25lZCBsb25nIGwsIHI7CisJc3NsX2VyciAtPSBQSl9TU0xfRVJSTk9fU1RBUlQ7CisJbCA9IHNzbF9lcnIgLyBNQVhfT1NTTF9FUlJfUkVBU09OOworCXIgPSBzc2xfZXJyICUgTUFYX09TU0xfRVJSX1JFQVNPTjsKKwlzc2xfZXJyID0gRVJSX1BBQ0sobCwgMCwgcik7CisgICAgfQorCisjaWYgZGVmaW5lZChQSl9IQVNfRVJST1JfU1RSSU5HKSAmJiAoUEpfSEFTX0VSUk9SX1NUUklORyAhPSAwKQorCisgICAgeworCWNvbnN0IGNoYXIgKnRtcCA9IE5VTEw7CisJdG1wID0gRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoc3NsX2Vycik7CisJaWYgKHRtcCkgeworCSAgICBwal9hbnNpX3N0cm5jcHkoYnVmLCB0bXAsIGJ1ZnNpemUpOworCSAgICBlcnJzdHIgPSBwal9zdHIoYnVmKTsKKwkgICAgcmV0dXJuIGVycnN0cjsKKwl9CisgICAgfQorCisjZW5kaWYJLyogUEpfSEFTX0VSUk9SX1NUUklORyAqLworCisgICAgZXJyc3RyLnB0ciA9IGJ1ZjsKKyAgICBlcnJzdHIuc2xlbiA9IHBqX2Fuc2lfc25wcmludGYoYnVmLCBidWZzaXplLCAKKwkJCQkgICAiVW5rbm93biBPcGVuU1NMIGVycm9yICVsdSIsCisJCQkJICAgc3NsX2Vycik7CisgICAgaWYgKGVycnN0ci5zbGVuIDwgMSB8fCBlcnJzdHIuc2xlbiA+PSAoaW50KWJ1ZnNpemUpCisJZXJyc3RyLnNsZW4gPSBidWZzaXplIC0gMTsKKyAgICByZXR1cm4gZXJyc3RyOworfQorCisKKy8qIE9wZW5TU0wgbGlicmFyeSBpbml0aWFsaXphdGlvbiBjb3VudGVyICovCitzdGF0aWMgaW50IG9wZW5zc2xfaW5pdF9jb3VudDsKKworLyogT3BlblNTTCBhdmFpbGFibGUgY2lwaGVycyAqLworc3RhdGljIHVuc2lnbmVkIG9wZW5zc2xfY2lwaGVyX251bTsKK3N0YXRpYyBzdHJ1Y3Qgb3BlbnNzbF9jaXBoZXJzX3QgeworICAgIHBqX3NzbF9jaXBoZXIgICAgaWQ7CisgICAgY29uc3QgY2hhcgkgICAgKm5hbWU7Cit9IG9wZW5zc2xfY2lwaGVyc1tNQVhfQ0lQSEVSU107CisKKy8qIE9wZW5TU0wgYXBwbGljYXRpb24gZGF0YSBpbmRleCAqLworc3RhdGljIGludCBzc2xzb2NrX2lkeDsKKworCisvKiBJbml0aWFsaXplIE9wZW5TU0wgKi8KK3N0YXRpYyBwal9zdGF0dXNfdCBpbml0X29wZW5zc2wodm9pZCkKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBpZiAob3BlbnNzbF9pbml0X2NvdW50KQorCXJldHVybiBQSl9TVUNDRVNTOworCisgICAgb3BlbnNzbF9pbml0X2NvdW50ID0gMTsKKworICAgIC8qIFJlZ2lzdGVyIGVycm9yIHN1YnN5c3RlbSAqLworICAgIHN0YXR1cyA9IHBqX3JlZ2lzdGVyX3N0cmVycm9yKFBKX1NTTF9FUlJOT19TVEFSVCwgCisJCQkJICBQSl9TU0xfRVJSTk9fU1BBQ0VfU0laRSwgCisJCQkJICAmc3NsX3N0cmVycm9yKTsKKyAgICBwal9hc3NlcnQoc3RhdHVzID09IFBKX1NVQ0NFU1MpOworCisgICAgLyogSW5pdCBPcGVuU1NMIGxpYiAqLworICAgIFNTTF9saWJyYXJ5X2luaXQoKTsKKyAgICBTU0xfbG9hZF9lcnJvcl9zdHJpbmdzKCk7CisgICAgT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMoKTsKKworICAgIC8qIEluaXQgYXZhaWxhYmxlIGNpcGhlcnMgKi8KKyAgICBpZiAob3BlbnNzbF9jaXBoZXJfbnVtID09IDApIHsKKwlTU0xfTUVUSE9EICptZXRoID0gTlVMTDsKKwlTU0xfQ1RYICpjdHg7CisJU1NMICpzc2w7CisJU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNrX2NpcGhlcjsKKwl1bnNpZ25lZCBpLCBuOworCisJbWV0aCA9IChTU0xfTUVUSE9EKilTU0x2MjNfc2VydmVyX21ldGhvZCgpOworCWlmICghbWV0aCkKKwkgICAgbWV0aCA9IChTU0xfTUVUSE9EKilUTFN2MV9zZXJ2ZXJfbWV0aG9kKCk7CisJaWYgKCFtZXRoKQorCSAgICBtZXRoID0gKFNTTF9NRVRIT0QqKVNTTHYzX3NlcnZlcl9tZXRob2QoKTsKKyNpZm5kZWYgT1BFTlNTTF9OT19TU0wyCisJaWYgKCFtZXRoKQorCSAgICBtZXRoID0gKFNTTF9NRVRIT0QqKVNTTHYyX3NlcnZlcl9tZXRob2QoKTsKKyNlbmRpZgorCXBqX2Fzc2VydChtZXRoKTsKKworCWN0eD1TU0xfQ1RYX25ldyhtZXRoKTsKKwlTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChjdHgsICJBTEwiKTsKKworCXNzbCA9IFNTTF9uZXcoY3R4KTsKKwlza19jaXBoZXIgPSBTU0xfZ2V0X2NpcGhlcnMoc3NsKTsKKworCW4gPSBza19TU0xfQ0lQSEVSX251bShza19jaXBoZXIpOworCWlmIChuID4gUEpfQVJSQVlfU0laRShvcGVuc3NsX2NpcGhlcnMpKQorCSAgICBuID0gUEpfQVJSQVlfU0laRShvcGVuc3NsX2NpcGhlcnMpOworCisJZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworCSAgICBTU0xfQ0lQSEVSICpjOworCSAgICBjID0gc2tfU1NMX0NJUEhFUl92YWx1ZShza19jaXBoZXIsaSk7CisJICAgIG9wZW5zc2xfY2lwaGVyc1tpXS5pZCA9IChwal9zc2xfY2lwaGVyKQorCQkJCSAgICAocGpfdWludDMyX3QpYy0+aWQgJiAweDAwRkZGRkZGOworCSAgICBvcGVuc3NsX2NpcGhlcnNbaV0ubmFtZSA9IFNTTF9DSVBIRVJfZ2V0X25hbWUoYyk7CisJfQorCisJU1NMX2ZyZWUoc3NsKTsKKwlTU0xfQ1RYX2ZyZWUoY3R4KTsKKworCW9wZW5zc2xfY2lwaGVyX251bSA9IG47CisgICAgfQorCisgICAgLyogQ3JlYXRlIE9wZW5TU0wgYXBwbGljYXRpb24gZGF0YSBpbmRleCBmb3IgU1NMIHNvY2tldCAqLworICAgIHNzbHNvY2tfaWR4ID0gU1NMX2dldF9leF9uZXdfaW5kZXgoMCwgIlNTTCBzb2NrZXQiLCBOVUxMLCBOVUxMLCBOVUxMKTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qIFNodXRkb3duIE9wZW5TU0wgKi8KK3N0YXRpYyB2b2lkIHNodXRkb3duX29wZW5zc2wodm9pZCkKK3sKKyAgICBQSl9VTlVTRURfQVJHKG9wZW5zc2xfaW5pdF9jb3VudCk7Cit9CisKKworLyogU1NMIHBhc3N3b3JkIGNhbGxiYWNrLiAqLworc3RhdGljIGludCBwYXNzd29yZF9jYihjaGFyICpidWYsIGludCBudW0sIGludCByd2ZsYWcsIHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgICBwal9zc2xfY2VydF90ICpjZXJ0ID0gKHBqX3NzbF9jZXJ0X3QqKSB1c2VyX2RhdGE7CisKKyAgICBQSl9VTlVTRURfQVJHKHJ3ZmxhZyk7CisKKyAgICBpZihudW0gPCBjZXJ0LT5wcml2a2V5X3Bhc3Muc2xlbikKKwlyZXR1cm4gMDsKKyAgICAKKyAgICBwal9tZW1jcHkoYnVmLCBjZXJ0LT5wcml2a2V5X3Bhc3MucHRyLCBjZXJ0LT5wcml2a2V5X3Bhc3Muc2xlbik7CisgICAgcmV0dXJuIChpbnQpY2VydC0+cHJpdmtleV9wYXNzLnNsZW47Cit9CisKKworLyogU1NMIHBhc3N3b3JkIGNhbGxiYWNrLiAqLworc3RhdGljIGludCB2ZXJpZnlfY2IoaW50IHByZXZlcmlmeV9vaywgWDUwOV9TVE9SRV9DVFggKng1MDlfY3R4KQoreworICAgIHBqX3NzbF9zb2NrX3QgKnNzb2NrOworICAgIFNTTCAqb3NzbF9zc2w7CisgICAgaW50IGVycjsKKworICAgIC8qIEdldCBTU0wgaW5zdGFuY2UgKi8KKyAgICBvc3NsX3NzbCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhKHg1MDlfY3R4LCAKKwkJCQkgICAgU1NMX2dldF9leF9kYXRhX1g1MDlfU1RPUkVfQ1RYX2lkeCgpKTsKKyAgICBwal9hc3NlcnQob3NzbF9zc2wpOworCisgICAgLyogR2V0IFNTTCBzb2NrZXQgaW5zdGFuY2UgKi8KKyAgICBzc29jayA9IFNTTF9nZXRfZXhfZGF0YShvc3NsX3NzbCwgc3Nsc29ja19pZHgpOworICAgIHBqX2Fzc2VydChzc29jayk7CisKKyAgICAvKiBTdG9yZSB2ZXJpZmljYXRpb24gc3RhdHVzICovCisgICAgZXJyID0gWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yKHg1MDlfY3R4KTsKKyAgICBzd2l0Y2ggKGVycikgeworICAgIGNhc2UgWDUwOV9WX09LOgorCWJyZWFrOworCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19HRVRfSVNTVUVSX0NFUlQ6CisJc3NvY2stPnZlcmlmeV9zdGF0dXMgfD0gUEpfU1NMX0NFUlRfRUlTU1VFUl9OT1RfRk9VTkQ7CisJYnJlYWs7CisKKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQkVGT1JFX0ZJRUxEOgorICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DRVJUX05PVF9BRlRFUl9GSUVMRDoKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ1JZUFRfQ0VSVF9TSUdOQVRVUkU6CisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNPREVfSVNTVUVSX1BVQkxJQ19LRVk6CisJc3NvY2stPnZlcmlmeV9zdGF0dXMgfD0gUEpfU1NMX0NFUlRfRUlOVkFMSURfRk9STUFUOworCWJyZWFrOworCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfTk9UX1lFVF9WQUxJRDoKKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9IQVNfRVhQSVJFRDoKKwlzc29jay0+dmVyaWZ5X3N0YXR1cyB8PSBQSl9TU0xfQ0VSVF9FVkFMSURJVFlfUEVSSU9EOworCWJyZWFrOworCisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19HRVRfQ1JMOgorICAgIGNhc2UgWDUwOV9WX0VSUl9DUkxfTk9UX1lFVF9WQUxJRDoKKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX0hBU19FWFBJUkVEOgorICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fREVDUllQVF9DUkxfU0lHTkFUVVJFOgorICAgIGNhc2UgWDUwOV9WX0VSUl9DUkxfU0lHTkFUVVJFX0ZBSUxVUkU6CisgICAgY2FzZSBYNTA5X1ZfRVJSX0VSUk9SX0lOX0NSTF9MQVNUX1VQREFURV9GSUVMRDoKKyAgICBjYXNlIFg1MDlfVl9FUlJfRVJST1JfSU5fQ1JMX05FWFRfVVBEQVRFX0ZJRUxEOgorCXNzb2NrLT52ZXJpZnlfc3RhdHVzIHw9IFBKX1NTTF9DRVJUX0VDUkxfRkFJTFVSRTsKKwlicmVhazsJCisKKyAgICBjYXNlIFg1MDlfVl9FUlJfREVQVEhfWkVST19TRUxGX1NJR05FRF9DRVJUOgorICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1VOVFJVU1RFRDoKKyAgICBjYXNlIFg1MDlfVl9FUlJfU0VMRl9TSUdORURfQ0VSVF9JTl9DSEFJTjoKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVF9MT0NBTExZOgorCXNzb2NrLT52ZXJpZnlfc3RhdHVzIHw9IFBKX1NTTF9DRVJUX0VVTlRSVVNURUQ7CisJYnJlYWs7CQorCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfU0lHTkFUVVJFX0ZBSUxVUkU6CisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19WRVJJRllfTEVBRl9TSUdOQVRVUkU6CisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQkpFQ1RfSVNTVUVSX01JU01BVENIOgorICAgIGNhc2UgWDUwOV9WX0VSUl9BS0lEX1NLSURfTUlTTUFUQ0g6CisgICAgY2FzZSBYNTA5X1ZfRVJSX0FLSURfSVNTVUVSX1NFUklBTF9NSVNNQVRDSDoKKyAgICBjYXNlIFg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fQ0VSVFNJR046CisJc3NvY2stPnZlcmlmeV9zdGF0dXMgfD0gUEpfU1NMX0NFUlRfRUlTU1VFUl9NSVNNQVRDSDsKKwlicmVhazsKKworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1JFVk9LRUQ6CisJc3NvY2stPnZlcmlmeV9zdGF0dXMgfD0gUEpfU1NMX0NFUlRfRVJFVk9LRUQ7CisJYnJlYWs7CQorCisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfUFVSUE9TRToKKyAgICBjYXNlIFg1MDlfVl9FUlJfQ0VSVF9SRUpFQ1RFRDoKKyAgICBjYXNlIFg1MDlfVl9FUlJfSU5WQUxJRF9DQToKKwlzc29jay0+dmVyaWZ5X3N0YXR1cyB8PSBQSl9TU0xfQ0VSVF9FSU5WQUxJRF9QVVJQT1NFOworCWJyZWFrOworCisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfQ0hBSU5fVE9PX0xPTkc6IC8qIG5vdCByZWFsbHkgdXNlZCAqLworICAgIGNhc2UgWDUwOV9WX0VSUl9QQVRIX0xFTkdUSF9FWENFRURFRDoKKwlzc29jay0+dmVyaWZ5X3N0YXR1cyB8PSBQSl9TU0xfQ0VSVF9FQ0hBSU5fVE9PX0xPTkc7CisJYnJlYWs7CisKKyAgICAvKiBVbmtub3duIGVycm9ycyAqLworICAgIGNhc2UgWDUwOV9WX0VSUl9PVVRfT0ZfTUVNOgorICAgIGRlZmF1bHQ6CisJc3NvY2stPnZlcmlmeV9zdGF0dXMgfD0gUEpfU1NMX0NFUlRfRVVOS05PV047CisJYnJlYWs7CisgICAgfQorCisgICAgLyogV2hlbiB2ZXJpZmljYXRpb24gaXMgbm90IHJlcXVlc3RlZCBqdXN0IHJldHVybiBvayBoZXJlLCBob3dldmVyCisgICAgICogYXBwbGljYXRpb24gY2FuIHN0aWxsIGdldCB0aGUgdmVyaWZpY2F0aW9uIHN0YXR1cy4KKyAgICAgKi8KKyAgICBpZiAoUEpfRkFMU0UgPT0gc3NvY2stPnBhcmFtLnZlcmlmeV9wZWVyKQorCXByZXZlcmlmeV9vayA9IDE7CisKKyAgICByZXR1cm4gcHJldmVyaWZ5X29rOworfQorCisvKiBTZXR0aW5nIFNTTCBzb2NrIGNpcGhlciBsaXN0ICovCitzdGF0aWMgcGpfc3RhdHVzX3Qgc2V0X2NpcGhlcl9saXN0KHBqX3NzbF9zb2NrX3QgKnNzb2NrKTsKKworCisvKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgbmV3IFNTTCBjb250ZXh0IGFuZCBpbnN0YW5jZSAqLworc3RhdGljIHBqX3N0YXR1c190IGNyZWF0ZV9zc2wocGpfc3NsX3NvY2tfdCAqc3NvY2spCit7CisgICAgU1NMX01FVEhPRCAqc3NsX21ldGhvZDsKKyAgICBTU0xfQ1RYICpjdHg7CisgICAgcGpfc3NsX2NlcnRfdCAqY2VydDsKKyAgICBpbnQgbW9kZSwgcmM7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworICAgICAgICAKKyAgICBwal9hc3NlcnQoc3NvY2spOworCisgICAgY2VydCA9IHNzb2NrLT5jZXJ0OworCisgICAgLyogTWFrZSBzdXJlIE9wZW5TU0wgbGlicmFyeSBoYXMgYmVlbiBpbml0aWFsaXplZCAqLworICAgIGluaXRfb3BlbnNzbCgpOworCisgICAgLyogRGV0ZXJtaW5lIFNTTCBtZXRob2QgdG8gdXNlICovCisgICAgc3dpdGNoIChzc29jay0+cGFyYW0ucHJvdG8pIHsKKyAgICBjYXNlIFBKX1NTTF9TT0NLX1BST1RPX0RFRkFVTFQ6CisgICAgY2FzZSBQSl9TU0xfU09DS19QUk9UT19UTFMxOgorCXNzbF9tZXRob2QgPSAoU1NMX01FVEhPRCopVExTdjFfbWV0aG9kKCk7CisJYnJlYWs7CisjaWZuZGVmIE9QRU5TU0xfTk9fU1NMMgorICAgIGNhc2UgUEpfU1NMX1NPQ0tfUFJPVE9fU1NMMjoKKwlzc2xfbWV0aG9kID0gKFNTTF9NRVRIT0QqKVNTTHYyX21ldGhvZCgpOworCWJyZWFrOworI2VuZGlmCisgICAgY2FzZSBQSl9TU0xfU09DS19QUk9UT19TU0wzOgorCXNzbF9tZXRob2QgPSAoU1NMX01FVEhPRCopU1NMdjNfbWV0aG9kKCk7CisJYnJlYWs7CisgICAgY2FzZSBQSl9TU0xfU09DS19QUk9UT19TU0wyMzoKKwlzc2xfbWV0aG9kID0gKFNTTF9NRVRIT0QqKVNTTHYyM19tZXRob2QoKTsKKwlicmVhazsKKyAgICAvL2Nhc2UgUEpfU1NMX1NPQ0tfUFJPVE9fRFRMUzE6CisJLy9zc2xfbWV0aG9kID0gKFNTTF9NRVRIT0QqKURUTFN2MV9tZXRob2QoKTsKKwkvL2JyZWFrOworICAgIGRlZmF1bHQ6CisJcmV0dXJuIFBKX0VJTlZBTDsKKyAgICB9CisKKyAgICAvKiBDcmVhdGUgU1NMIGNvbnRleHQgKi8KKyAgICBjdHggPSBTU0xfQ1RYX25ldyhzc2xfbWV0aG9kKTsKKyAgICBpZiAoY3R4ID09IE5VTEwpIHsKKwlyZXR1cm4gR0VUX1NTTF9TVEFUVVMoc3NvY2spOworICAgIH0KKworICAgIC8qIEFwcGx5IGNyZWRlbnRpYWxzICovCisgICAgaWYgKGNlcnQpIHsKKwkvKiBMb2FkIENBIGxpc3QgaWYgb25lIGlzIHNwZWNpZmllZC4gKi8KKwlpZiAoY2VydC0+Q0FfZmlsZS5zbGVuKSB7CisKKwkgICAgcmMgPSBTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgsIGNlcnQtPkNBX2ZpbGUucHRyLCBOVUxMKTsKKworCSAgICBpZiAocmMgIT0gMSkgeworCQlzdGF0dXMgPSBHRVRfU1NMX1NUQVRVUyhzc29jayk7CisJCVBKX0xPRygxLChzc29jay0+cG9vbC0+b2JqX25hbWUsICJFcnJvciBsb2FkaW5nIENBIGxpc3QgZmlsZSAiCisJCQkgICInJXMnIiwgY2VydC0+Q0FfZmlsZS5wdHIpKTsKKwkJU1NMX0NUWF9mcmVlKGN0eCk7CisJCXJldHVybiBzdGF0dXM7CisJICAgIH0KKwl9CisgICAgCisJLyogU2V0IHBhc3N3b3JkIGNhbGxiYWNrICovCisJaWYgKGNlcnQtPnByaXZrZXlfcGFzcy5zbGVuKSB7CisJICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiKGN0eCwgcGFzc3dvcmRfY2IpOworCSAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShjdHgsIGNlcnQpOworCX0KKworCisJLyogTG9hZCBjZXJ0aWZpY2F0ZSBpZiBvbmUgaXMgc3BlY2lmaWVkICovCisJaWYgKGNlcnQtPmNlcnRfZmlsZS5zbGVuKSB7CisKKwkgICAgLyogTG9hZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmcm9tIGZpbGUgaW50byBjdHggKi8KKwkgICAgcmMgPSBTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9jaGFpbl9maWxlKGN0eCwgY2VydC0+Y2VydF9maWxlLnB0cik7CisKKwkgICAgaWYocmMgIT0gMSkgeworCQlzdGF0dXMgPSBHRVRfU1NMX1NUQVRVUyhzc29jayk7CisJCVBKX0xPRygxLChzc29jay0+cG9vbC0+b2JqX25hbWUsICJFcnJvciBsb2FkaW5nIGNlcnRpZmljYXRlICIKKwkJCSAgImNoYWluIGZpbGUgJyVzJyIsIGNlcnQtPmNlcnRfZmlsZS5wdHIpKTsKKwkJU1NMX0NUWF9mcmVlKGN0eCk7CisJCXJldHVybiBzdGF0dXM7CisJICAgIH0KKwl9CisKKworCS8qIExvYWQgcHJpdmF0ZSBrZXkgaWYgb25lIGlzIHNwZWNpZmllZCAqLworCWlmIChjZXJ0LT5wcml2a2V5X2ZpbGUuc2xlbikgeworCSAgICAvKiBBZGRzIHRoZSBmaXJzdCBwcml2YXRlIGtleSBmb3VuZCBpbiBmaWxlIHRvIGN0eCAqLworCSAgICByYyA9IFNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfZmlsZShjdHgsIGNlcnQtPnByaXZrZXlfZmlsZS5wdHIsIAorCQkJCQkgICAgIFNTTF9GSUxFVFlQRV9QRU0pOworCisJICAgIGlmKHJjICE9IDEpIHsKKwkJc3RhdHVzID0gR0VUX1NTTF9TVEFUVVMoc3NvY2spOworCQlQSl9MT0coMSwoc3NvY2stPnBvb2wtPm9ial9uYW1lLCAiRXJyb3IgYWRkaW5nIHByaXZhdGUga2V5ICIKKwkJCSAgImZyb20gJyVzJyIsIGNlcnQtPnByaXZrZXlfZmlsZS5wdHIpKTsKKwkJU1NMX0NUWF9mcmVlKGN0eCk7CisJCXJldHVybiBzdGF0dXM7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgLyogQ3JlYXRlIFNTTCBpbnN0YW5jZSAqLworICAgIHNzb2NrLT5vc3NsX2N0eCA9IGN0eDsKKyAgICBzc29jay0+b3NzbF9zc2wgPSBTU0xfbmV3KHNzb2NrLT5vc3NsX2N0eCk7CisgICAgaWYgKHNzb2NrLT5vc3NsX3NzbCA9PSBOVUxMKSB7CisJcmV0dXJuIEdFVF9TU0xfU1RBVFVTKHNzb2NrKTsKKyAgICB9CisKKyAgICAvKiBTZXQgU1NMIHNvY2sgYXMgYXBwbGljYXRpb24gZGF0YSBvZiBTU0wgaW5zdGFuY2UgKi8KKyAgICBTU0xfc2V0X2V4X2RhdGEoc3NvY2stPm9zc2xfc3NsLCBzc2xzb2NrX2lkeCwgc3NvY2spOworCisgICAgLyogU1NMIHZlcmlmaWNhdGlvbiBvcHRpb25zICovCisgICAgbW9kZSA9IFNTTF9WRVJJRllfUEVFUjsKKyAgICBpZiAoc3NvY2stPmlzX3NlcnZlciAmJiBzc29jay0+cGFyYW0ucmVxdWlyZV9jbGllbnRfY2VydCkKKwltb2RlIHw9IFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQ7CisKKyAgICBTU0xfc2V0X3ZlcmlmeShzc29jay0+b3NzbF9zc2wsIG1vZGUsICZ2ZXJpZnlfY2IpOworCisgICAgLyogU2V0IGNpcGhlciBsaXN0ICovCisgICAgc3RhdHVzID0gc2V0X2NpcGhlcl9saXN0KHNzb2NrKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHN0YXR1czsKKworICAgIC8qIFNldHVwIFNTTCBCSU9zICovCisgICAgc3NvY2stPm9zc2xfcmJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworICAgIHNzb2NrLT5vc3NsX3diaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKyAgICAodm9pZClCSU9fc2V0X2Nsb3NlKHNzb2NrLT5vc3NsX3JiaW8sIEJJT19DTE9TRSk7CisgICAgKHZvaWQpQklPX3NldF9jbG9zZShzc29jay0+b3NzbF93YmlvLCBCSU9fQ0xPU0UpOworICAgIFNTTF9zZXRfYmlvKHNzb2NrLT5vc3NsX3NzbCwgc3NvY2stPm9zc2xfcmJpbywgc3NvY2stPm9zc2xfd2Jpbyk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKiBEZXN0cm95IFNTTCBjb250ZXh0IGFuZCBpbnN0YW5jZSAqLworc3RhdGljIHZvaWQgZGVzdHJveV9zc2wocGpfc3NsX3NvY2tfdCAqc3NvY2spCit7CisgICAgLyogRGVzdHJveSBTU0wgaW5zdGFuY2UgKi8KKyAgICBpZiAoc3NvY2stPm9zc2xfc3NsKSB7CisJU1NMX3NodXRkb3duKHNzb2NrLT5vc3NsX3NzbCk7CisJU1NMX2ZyZWUoc3NvY2stPm9zc2xfc3NsKTsgLyogdGhpcyB3aWxsIGFsc28gY2xvc2UgQklPcyAqLworCXNzb2NrLT5vc3NsX3NzbCA9IE5VTEw7CisgICAgfQorCisgICAgLyogRGVzdHJveSBTU0wgY29udGV4dCAqLworICAgIGlmIChzc29jay0+b3NzbF9jdHgpIHsKKwlTU0xfQ1RYX2ZyZWUoc3NvY2stPm9zc2xfY3R4KTsKKwlzc29jay0+b3NzbF9jdHggPSBOVUxMOworICAgIH0KKworICAgIC8qIFBvdGVudGlhbGx5IHNodXRkb3duIE9wZW5TU0wgbGlicmFyeSBpZiB0aGlzIGlzIHRoZSBsYXN0CisgICAgICogY29udGV4dCBleGlzdHMuCisgICAgICovCisgICAgc2h1dGRvd25fb3BlbnNzbCgpOworfQorCisKKy8qIFJlc2V0IFNTTCBzb2NrZXQgc3RhdGUgKi8KK3N0YXRpYyB2b2lkIHJlc2V0X3NzbF9zb2NrX3N0YXRlKHBqX3NzbF9zb2NrX3QgKnNzb2NrKQoreworICAgIHNzb2NrLT5zc2xfc3RhdGUgPSBTU0xfU1RBVEVfTlVMTDsKKworICAgIGRlc3Ryb3lfc3NsKHNzb2NrKTsKKworICAgIGlmIChzc29jay0+YXNvY2spIHsKKwlwal9hY3RpdmVzb2NrX2Nsb3NlKHNzb2NrLT5hc29jayk7CisJc3NvY2stPmFzb2NrID0gTlVMTDsKKwlzc29jay0+c29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIH0KKyAgICBpZiAoc3NvY2stPnNvY2sgIT0gUEpfSU5WQUxJRF9TT0NLRVQpIHsKKwlwal9zb2NrX2Nsb3NlKHNzb2NrLT5zb2NrKTsKKwlzc29jay0+c29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIH0KKworICAgIC8qIFVwb24gZXJyb3IsIE9wZW5TU0wgbWF5IGxlYXZlIGFueSBlcnJvciBkZXNjcmlwdGlvbiBpbiB0aGUgdGhyZWFkIAorICAgICAqIGVycm9yIHF1ZXVlLCB3aGljaCBzb21ldGltZSBtYXkgY2F1c2UgbmV4dCBjYWxsIHRvIFNTTCBBUEkgcmV0dXJuaW5nCisgICAgICogZmFsc2UgZXJyb3IgYWxhcm0sIGUuZzogaW4gTGludXgsIFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGUoKQorICAgICAqIHJldHVybmluZyBmYWxzZSBlcnJvciBhZnRlciBhIGhhbmRzaGFrZSBlcnJvciAoaW4gZGlmZmVyZW50IFNTTF9DVFghKS4KKyAgICAgKiBGb3Igbm93LCBqdXN0IGNsZWFyIHRocmVhZCBlcnJvciBxdWV1ZSBoZXJlLgorICAgICAqLworICAgIEVSUl9jbGVhcl9lcnJvcigpOworfQorCisKKy8qIEdlbmVyYXRlIGNpcGhlciBsaXN0IHdpdGggdXNlciBwcmVmZXJlbmNlIG9yZGVyIGluIE9wZW5TU0wgZm9ybWF0ICovCitzdGF0aWMgcGpfc3RhdHVzX3Qgc2V0X2NpcGhlcl9saXN0KHBqX3NzbF9zb2NrX3QgKnNzb2NrKQoreworICAgIGNoYXIgYnVmWzEwMjRdOworICAgIHBqX3N0cl90IGNpcGhlcl9saXN0OworICAgIFNUQUNLX09GKFNTTF9DSVBIRVIpICpza19jaXBoZXI7CisgICAgdW5zaWduZWQgaTsKKyAgICBpbnQgaiwgcmV0OworCisgICAgaWYgKHNzb2NrLT5wYXJhbS5jaXBoZXJzX251bSA9PSAwKQorCXJldHVybiBQSl9TVUNDRVNTOworCisgICAgcGpfc3Ryc2V0KCZjaXBoZXJfbGlzdCwgYnVmLCAwKTsKKworICAgIC8qIFNldCBTU0wgd2l0aCBBTEwgYXZhaWxhYmxlIGNpcGhlcnMgKi8KKyAgICBTU0xfc2V0X2NpcGhlcl9saXN0KHNzb2NrLT5vc3NsX3NzbCwgIkFMTCIpOworCisgICAgLyogR2VuZXJhdGUgdXNlciBzcGVjaWZpZWQgY2lwaGVyIGxpc3QgaW4gT3BlblNTTCBmb3JtYXQgKi8KKyAgICBza19jaXBoZXIgPSBTU0xfZ2V0X2NpcGhlcnMoc3NvY2stPm9zc2xfc3NsKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc3NvY2stPnBhcmFtLmNpcGhlcnNfbnVtOyArK2kpIHsKKwlmb3IgKGogPSAwOyBqIDwgc2tfU1NMX0NJUEhFUl9udW0oc2tfY2lwaGVyKTsgKytqKSB7CisJICAgIFNTTF9DSVBIRVIgKmM7CisJICAgIGMgPSBza19TU0xfQ0lQSEVSX3ZhbHVlKHNrX2NpcGhlciwgaik7CisJICAgIGlmIChzc29jay0+cGFyYW0uY2lwaGVyc1tpXSA9PSAocGpfc3NsX2NpcGhlcikKKwkJCQkJICAgKChwal91aW50MzJfdCljLT5pZCAmIDB4MDBGRkZGRkYpKQorCSAgICB7CisJCWNvbnN0IGNoYXIgKmNfbmFtZTsKKworCQljX25hbWUgPSBTU0xfQ0lQSEVSX2dldF9uYW1lKGMpOworCisJCS8qIENoZWNrIGJ1ZmZlciBzaXplICovCisJCWlmIChjaXBoZXJfbGlzdC5zbGVuICsgcGpfYW5zaV9zdHJsZW4oY19uYW1lKSArIDIgPiBzaXplb2YoYnVmKSkgeworCQkgICAgcGpfYXNzZXJ0KCEiSW5zdWZmaWNpZW50IHRlbXBvcmFyeSBidWZmZXIgZm9yIGNpcGhlciIpOworCQkgICAgcmV0dXJuIFBKX0VUT09NQU5ZOworCQl9CisKKwkJLyogQWRkIGNvbG9uIHNlcGFyYXRvciAqLworCQlpZiAoY2lwaGVyX2xpc3Quc2xlbikKKwkJICAgIHBqX3N0cmNhdDIoJmNpcGhlcl9saXN0LCAiOiIpOworCisJCS8qIEFkZCB0aGUgY2lwaGVyICovCisJCXBqX3N0cmNhdDIoJmNpcGhlcl9saXN0LCBjX25hbWUpOworCQlicmVhazsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvKiBQdXQgTlVMTCB0ZXJtaW5hdGlvbiBpbiB0aGUgZ2VuZXJhdGVkIGNpcGhlciBsaXN0ICovCisgICAgY2lwaGVyX2xpc3QucHRyW2NpcGhlcl9saXN0LnNsZW5dID0gJ1wwJzsKKworICAgIC8qIEZpbmFsbHksIHNldCBjaG9zZW4gY2lwaGVyIGxpc3QgKi8KKyAgICByZXQgPSBTU0xfc2V0X2NpcGhlcl9saXN0KHNzb2NrLT5vc3NsX3NzbCwgYnVmKTsKKyAgICBpZiAocmV0IDwgMSkgeworCXJldHVybiBHRVRfU1NMX1NUQVRVUyhzc29jayk7CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworLyogUGFyc2UgT3BlblNTTCBBU04xX1RJTUUgdG8gcGpfdGltZV92YWwgYW5kIEdNVCBpbmZvICovCitzdGF0aWMgcGpfYm9vbF90IHBhcnNlX29zc2xfYXNuMV90aW1lKHBqX3RpbWVfdmFsICp0diwgcGpfYm9vbF90ICpnbXQsCisJCQkJICAgICAgY29uc3QgQVNOMV9USU1FICp0bSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHBhcnRzWzddID0gezB9OworICAgIGNoYXIgKnAsICplbmQ7CisgICAgdW5zaWduZWQgbGVuOworICAgIHBqX2Jvb2xfdCB1dGM7CisgICAgcGpfcGFyc2VkX3RpbWUgcHQ7CisgICAgaW50IGk7CisKKyAgICB1dGMgPSB0bS0+dHlwZSA9PSBWX0FTTjFfVVRDVElNRTsKKyAgICBwID0gKGNoYXIqKXRtLT5kYXRhOworICAgIGxlbiA9IHRtLT5sZW5ndGg7CisgICAgZW5kID0gcCArIGxlbiAtIDE7CisKKyAgICAvKiBHTVQgKi8KKyAgICAqZ210ID0gKCplbmQgPT0gJ1onKTsKKworICAgIC8qIHBhcnNlIHBhcnRzICovCisgICAgZm9yIChpID0gMDsgaSA8IDcgJiYgcCA8IGVuZDsgKytpKSB7CisJcGpfc3RyX3Qgc3Q7CisKKwlpZiAoaT09MCAmJiAhdXRjKSB7CisJICAgIC8qIDQgZGlnaXRzIHllYXIgcGFydCBmb3Igbm9uLVVUQyB0aW1lIGZvcm1hdCAqLworCSAgICBzdC5zbGVuID0gNDsKKwl9IGVsc2UgaWYgKGk9PTYpIHsKKwkgICAgLyogZnJhY3Rpb24gb2Ygc2Vjb25kcyAqLworCSAgICBpZiAoKnAgPT0gJy4nKSArK3A7CisJICAgIHN0LnNsZW4gPSBlbmQgLSBwICsgMTsKKwl9IGVsc2UgeworCSAgICAvKiBvdGhlciBwYXJ0cyBhbHdheXMgMiBkaWdpdHMgbGVuZ3RoICovCisJICAgIHN0LnNsZW4gPSAyOworCX0KKwlzdC5wdHIgPSBwOworCisJcGFydHNbaV0gPSBwal9zdHJ0b3VsKCZzdCk7CisJcCArPSBzdC5zbGVuOworICAgIH0KKworICAgIC8qIGVuY29kZSBwYXJ0cyB0byBwal90aW1lX3ZhbCAqLworICAgIHB0LnllYXIgPSBwYXJ0c1swXTsKKyAgICBpZiAodXRjKQorCXB0LnllYXIgKz0gKHB0LnllYXIgPCA1MCk/IDIwMDA6MTkwMDsKKyAgICBwdC5tb24gPSBwYXJ0c1sxXSAtIDE7CisgICAgcHQuZGF5ID0gcGFydHNbMl07CisgICAgcHQuaG91ciA9IHBhcnRzWzNdOworICAgIHB0Lm1pbiA9IHBhcnRzWzRdOworICAgIHB0LnNlYyA9IHBhcnRzWzVdOworICAgIHB0Lm1zZWMgPSBwYXJ0c1s2XTsKKworICAgIHBqX3RpbWVfZW5jb2RlKCZwdCwgdHYpOworCisgICAgcmV0dXJuIFBKX1RSVUU7Cit9CisKKworLyogR2V0IENvbW1vbiBOYW1lIGZpZWxkIHN0cmluZyBmcm9tIGEgZ2VuZXJhbCBuYW1lIHN0cmluZyAqLworc3RhdGljIHZvaWQgZ2V0X2NuX2Zyb21fZ2VuX25hbWUoY29uc3QgcGpfc3RyX3QgKmdlbl9uYW1lLCBwal9zdHJfdCAqY24pCit7CisgICAgcGpfc3RyX3QgQ05fc2lnbiA9IHsiL0NOPSIsIDR9OworICAgIGNoYXIgKnAsICpxOworCisgICAgcGpfYnplcm8oY24sIHNpemVvZihjbikpOworCisgICAgcCA9IHBqX3N0cnN0cihnZW5fbmFtZSwgJkNOX3NpZ24pOworICAgIGlmICghcCkKKwlyZXR1cm47CisKKyAgICBwICs9IDQ7IC8qIHNoaWZ0IHBvaW50ZXIgdG8gdmFsdWUgcGFydCAqLworICAgIHBqX3N0cnNldChjbiwgcCwgZ2VuX25hbWUtPnNsZW4gLSAocCAtIGdlbl9uYW1lLT5wdHIpKTsKKyAgICBxID0gcGpfc3RyY2hyKGNuLCAnLycpOworICAgIGlmIChxKQorCWNuLT5zbGVuID0gcSAtIHA7Cit9CisKKworLyogR2V0IGNlcnRpZmljYXRlIGluZm8gZnJvbSBPcGVuU1NMIFg1MDksIGluIGNhc2UgdGhlIGNlcnRpZmljYXRlIGluZm8KKyAqIGhhbCBhbHJlYWR5IHBvcHVsYXRlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIHRoZSBjb250ZW50cyBuZWVkIAorICogdG8gYmUgdXBkYXRlZCBieSBpbnNwZWN0aW5nIHRoZSBpc3N1ZXIgYW5kIHRoZSBzZXJpYWwgbnVtYmVyLgorICovCitzdGF0aWMgdm9pZCBnZXRfY2VydF9pbmZvKHBqX3Bvb2xfdCAqcG9vbCwgcGpfc3NsX2NlcnRfaW5mbyAqY2ksIFg1MDkgKngpCit7CisgICAgcGpfYm9vbF90IHVwZGF0ZV9uZWVkZWQ7CisgICAgY2hhciBidWZbNTEyXTsKKyAgICBwal91aW50OF90IHNlcmlhbF9ub1s2NF0gPSB7MH07IC8qIHNob3VsZCBiZSA+PSBzaXplb2YoY2ktPnNlcmlhbF9ubykgKi8KKyAgICBwal91aW50OF90ICpwOworICAgIHVuc2lnbmVkIGxlbjsKKyAgICBHRU5FUkFMX05BTUVTICpuYW1lcyA9IE5VTEw7CisKKyAgICBwal9hc3NlcnQocG9vbCAmJiBjaSAmJiB4KTsKKworICAgIC8qIEdldCBpc3N1ZXIgKi8KKyAgICBYNTA5X05BTUVfb25lbGluZShYNTA5X2dldF9pc3N1ZXJfbmFtZSh4KSwgYnVmLCBzaXplb2YoYnVmKSk7CisKKyAgICAvKiBHZXQgc2VyaWFsIG5vICovCisgICAgcCA9IChwal91aW50OF90KikgTV9BU04xX1NUUklOR19kYXRhKFg1MDlfZ2V0X3NlcmlhbE51bWJlcih4KSk7CisgICAgbGVuID0gTV9BU04xX1NUUklOR19sZW5ndGgoWDUwOV9nZXRfc2VyaWFsTnVtYmVyKHgpKTsKKyAgICBpZiAobGVuID4gc2l6ZW9mKGNpLT5zZXJpYWxfbm8pKSAKKwlsZW4gPSBzaXplb2YoY2ktPnNlcmlhbF9ubyk7CisgICAgcGpfbWVtY3B5KHNlcmlhbF9ubyArIHNpemVvZihjaS0+c2VyaWFsX25vKSAtIGxlbiwgcCwgbGVuKTsKKworICAgIC8qIENoZWNrIGlmIHRoZSBjb250ZW50cyBuZWVkIHRvIGJlIHVwZGF0ZWQuICovCisgICAgdXBkYXRlX25lZWRlZCA9IHBqX3N0cmNtcDIoJmNpLT5pc3N1ZXIuaW5mbywgYnVmKSB8fCAKKwkgICAgICAgICAgICBwal9tZW1jbXAoY2ktPnNlcmlhbF9ubywgc2VyaWFsX25vLCBzaXplb2YoY2ktPnNlcmlhbF9ubykpOworICAgIGlmICghdXBkYXRlX25lZWRlZCkKKwlyZXR1cm47CisKKyAgICAvKiBVcGRhdGUgY2VydCBpbmZvICovCisKKyAgICBwal9iemVybyhjaSwgc2l6ZW9mKHBqX3NzbF9jZXJ0X2luZm8pKTsKKworICAgIC8qIFZlcnNpb24gKi8KKyAgICBjaS0+dmVyc2lvbiA9IFg1MDlfZ2V0X3ZlcnNpb24oeCkgKyAxOworCisgICAgLyogSXNzdWVyICovCisgICAgcGpfc3RyZHVwMihwb29sLCAmY2ktPmlzc3Vlci5pbmZvLCBidWYpOworICAgIGdldF9jbl9mcm9tX2dlbl9uYW1lKCZjaS0+aXNzdWVyLmluZm8sICZjaS0+aXNzdWVyLmNuKTsKKworICAgIC8qIFNlcmlhbCBudW1iZXIgKi8KKyAgICBwal9tZW1jcHkoY2ktPnNlcmlhbF9ubywgc2VyaWFsX25vLCBzaXplb2YoY2ktPnNlcmlhbF9ubykpOworCisgICAgLyogU3ViamVjdCAqLworICAgIHBqX3N0cmR1cDIocG9vbCwgJmNpLT5zdWJqZWN0LmluZm8sIAorCSAgICAgICBYNTA5X05BTUVfb25lbGluZShYNTA5X2dldF9zdWJqZWN0X25hbWUoeCksCisJCQkJIGJ1Ziwgc2l6ZW9mKGJ1ZikpKTsKKyAgICBnZXRfY25fZnJvbV9nZW5fbmFtZSgmY2ktPnN1YmplY3QuaW5mbywgJmNpLT5zdWJqZWN0LmNuKTsKKworICAgIC8qIFZhbGlkaXR5ICovCisgICAgcGFyc2Vfb3NzbF9hc24xX3RpbWUoJmNpLT52YWxpZGl0eS5zdGFydCwgJmNpLT52YWxpZGl0eS5nbXQsCisJCQkgWDUwOV9nZXRfbm90QmVmb3JlKHgpKTsKKyAgICBwYXJzZV9vc3NsX2FzbjFfdGltZSgmY2ktPnZhbGlkaXR5LmVuZCwgJmNpLT52YWxpZGl0eS5nbXQsCisJCQkgWDUwOV9nZXRfbm90QWZ0ZXIoeCkpOworCisgICAgLyogU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lIGV4dGVuc2lvbiAqLworICAgIGlmIChjaS0+dmVyc2lvbiA+PSAzKSB7CisJbmFtZXMgPSAoR0VORVJBTF9OQU1FUyopIFg1MDlfZ2V0X2V4dF9kMmkoeCwgTklEX3N1YmplY3RfYWx0X25hbWUsCisJCQkJCQkgIE5VTEwsIE5VTEwpOworICAgIH0KKyAgICBpZiAobmFtZXMpIHsKKyAgICAgICAgdW5zaWduZWQgaSwgY250OworCisgICAgICAgIGNudCA9IHNrX0dFTkVSQUxfTkFNRV9udW0obmFtZXMpOworCWNpLT5zdWJqX2FsdF9uYW1lLmVudHJ5ID0gcGpfcG9vbF9jYWxsb2MocG9vbCwgY250LCAKKwkJCQkJICAgIHNpemVvZigqY2ktPnN1YmpfYWx0X25hbWUuZW50cnkpKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY250OyArK2kpIHsKKwkgICAgdW5zaWduZWQgY2hhciAqcCA9IDA7CisJICAgIHBqX3NzbF9jZXJ0X25hbWVfdHlwZSB0eXBlID0gUEpfU1NMX0NFUlRfTkFNRV9VTktOT1dOOworICAgICAgICAgICAgY29uc3QgR0VORVJBTF9OQU1FICpuYW1lOworCSAgICAKKwkgICAgbmFtZSA9IHNrX0dFTkVSQUxfTkFNRV92YWx1ZShuYW1lcywgaSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAobmFtZS0+dHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgR0VOX0VNQUlMOgorICAgICAgICAgICAgICAgICAgICBsZW4gPSBBU04xX1NUUklOR190b19VVEY4KCZwLCBuYW1lLT5kLmlhNSk7CisJCSAgICB0eXBlID0gUEpfU1NMX0NFUlRfTkFNRV9SRkM4MjI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR0VOX0ROUzoKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gQVNOMV9TVFJJTkdfdG9fVVRGOCgmcCwgbmFtZS0+ZC5pYTUpOworCQkgICAgdHlwZSA9IFBKX1NTTF9DRVJUX05BTUVfRE5TOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdFTl9VUkk6CisgICAgICAgICAgICAgICAgICAgIGxlbiA9IEFTTjFfU1RSSU5HX3RvX1VURjgoJnAsIG5hbWUtPmQuaWE1KTsKKwkJICAgIHR5cGUgPSBQSl9TU0xfQ0VSVF9OQU1FX1VSSTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHRU5fSVBBREQ6CisJCSAgICBwID0gQVNOMV9TVFJJTkdfZGF0YShuYW1lLT5kLmlwKTsKKwkJICAgIGxlbiA9IEFTTjFfU1RSSU5HX2xlbmd0aChuYW1lLT5kLmlwKTsKKwkJICAgIHR5cGUgPSBQSl9TU0xfQ0VSVF9OQU1FX0lQOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkJZGVmYXVsdDoKKwkJICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisJICAgIGlmIChwICYmIGxlbiAmJiB0eXBlICE9IFBKX1NTTF9DRVJUX05BTUVfVU5LTk9XTikgeworCQljaS0+c3Vial9hbHRfbmFtZS5lbnRyeVtjaS0+c3Vial9hbHRfbmFtZS5jbnRdLnR5cGUgPSB0eXBlOworCQlpZiAodHlwZSA9PSBQSl9TU0xfQ0VSVF9OQU1FX0lQKSB7CisJCSAgICBpbnQgYWYgPSBwal9BRl9JTkVUKCk7CisJCSAgICBpZiAobGVuID09IHNpemVvZihwal9pbjZfYWRkcikpIGFmID0gcGpfQUZfSU5FVDYoKTsKKwkJICAgIHBqX2luZXRfbnRvcDIoYWYsIHAsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQkgICAgcGpfc3RyZHVwMihwb29sLCAKKwkJICAgICAgICAgICZjaS0+c3Vial9hbHRfbmFtZS5lbnRyeVtjaS0+c3Vial9hbHRfbmFtZS5jbnRdLm5hbWUsCisJCSAgICAgICAgICBidWYpOworCQl9IGVsc2UgeworCQkgICAgcGpfc3RyZHVwMihwb29sLCAKKwkJCSAgJmNpLT5zdWJqX2FsdF9uYW1lLmVudHJ5W2NpLT5zdWJqX2FsdF9uYW1lLmNudF0ubmFtZSwgCisJCQkgIChjaGFyKilwKTsKKwkJICAgIE9QRU5TU0xfZnJlZShwKTsKKwkJfQorCQljaS0+c3Vial9hbHRfbmFtZS5jbnQrKzsKKwkgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisKKy8qIFVwZGF0ZSBsb2NhbCAmIHJlbW90ZSBjZXJ0aWZpY2F0ZXMgaW5mby4gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUKKyAqIGNhbGxlZCBhZnRlciBoYW5kc2hha2Ugb3IgcmVuZWdvdGlhdGlvbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkLgorICovCitzdGF0aWMgdm9pZCB1cGRhdGVfY2VydHNfaW5mbyhwal9zc2xfc29ja190ICpzc29jaykKK3sKKyAgICBYNTA5ICp4OworCisgICAgcGpfYXNzZXJ0KHNzb2NrLT5zc2xfc3RhdGUgPT0gU1NMX1NUQVRFX0VTVEFCTElTSEVEKTsKKworICAgIC8qIEFjdGl2ZSBsb2NhbCBjZXJ0aWZpY2F0ZSAqLworICAgIHggPSBTU0xfZ2V0X2NlcnRpZmljYXRlKHNzb2NrLT5vc3NsX3NzbCk7CisgICAgaWYgKHgpIHsKKwlnZXRfY2VydF9pbmZvKHNzb2NrLT5wb29sLCAmc3NvY2stPmxvY2FsX2NlcnRfaW5mbywgeCk7CisJLyogRG9uJ3QgZnJlZSBsb2NhbCdzIFg1MDkhICovCisgICAgfSBlbHNlIHsKKwlwal9iemVybygmc3NvY2stPmxvY2FsX2NlcnRfaW5mbywgc2l6ZW9mKHBqX3NzbF9jZXJ0X2luZm8pKTsKKyAgICB9CisKKyAgICAvKiBBY3RpdmUgcmVtb3RlIGNlcnRpZmljYXRlICovCisgICAgeCA9IFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShzc29jay0+b3NzbF9zc2wpOworICAgIGlmICh4KSB7CisJZ2V0X2NlcnRfaW5mbyhzc29jay0+cG9vbCwgJnNzb2NrLT5yZW1vdGVfY2VydF9pbmZvLCB4KTsKKwkvKiBGcmVlIHBlZXIncyBYNTA5ICovCisJWDUwOV9mcmVlKHgpOworICAgIH0gZWxzZSB7CisJcGpfYnplcm8oJnNzb2NrLT5yZW1vdGVfY2VydF9pbmZvLCBzaXplb2YocGpfc3NsX2NlcnRfaW5mbykpOworICAgIH0KK30KKworCisvKiBXaGVuIGhhbmRzaGFrZSBjb21wbGV0ZWQ6CisgKiAtIG5vdGlmeSBhcHBsaWNhdGlvbgorICogLSBpZiBoYW5kc2hha2UgZmFpbGVkLCByZXNldCBTU0wgc3RhdGUKKyAqIC0gcmV0dXJuIFBKX0ZBTFNFIHdoZW4gU1NMIHNvY2tldCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQgYnkgYXBwbGljYXRpb24uCisgKi8KK3N0YXRpYyBwal9ib29sX3Qgb25faGFuZHNoYWtlX2NvbXBsZXRlKHBqX3NzbF9zb2NrX3QgKnNzb2NrLCAKKwkJCQkgICAgICAgcGpfc3RhdHVzX3Qgc3RhdHVzKQoreworICAgIC8qIENhbmNlbCBoYW5kc2hha2UgdGltZXIgKi8KKyAgICBpZiAoc3NvY2stPnRpbWVyLmlkID09IFRJTUVSX0hBTkRTSEFLRV9USU1FT1VUKSB7CisJcGpfdGltZXJfaGVhcF9jYW5jZWwoc3NvY2stPnBhcmFtLnRpbWVyX2hlYXAsICZzc29jay0+dGltZXIpOworCXNzb2NrLT50aW1lci5pZCA9IFRJTUVSX05PTkU7CisgICAgfQorCisgICAgLyogVXBkYXRlIGNlcnRpZmljYXRlcyBpbmZvIG9uIHN1Y2Nlc3NmdWwgaGFuZHNoYWtlICovCisgICAgaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKQorCXVwZGF0ZV9jZXJ0c19pbmZvKHNzb2NrKTsKKworICAgIC8qIEFjY2VwdGluZyAqLworICAgIGlmIChzc29jay0+aXNfc2VydmVyKSB7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIC8qIEhhbmRzaGFrZSBmYWlsZWQgaW4gYWNjZXB0aW5nLCBkZXN0cm95IG91ciBzZWxmIHNpbGVudGx5LiAqLworCisJICAgIGNoYXIgZXJybXNnW1BKX0VSUl9NU0dfU0laRV07CisJICAgIGNoYXIgYnVmW1BKX0lORVQ2X0FERFJTVFJMRU4rMTBdOworCisJICAgIHBqX3N0cmVycm9yKHN0YXR1cywgZXJybXNnLCBzaXplb2YoZXJybXNnKSk7CisJICAgIFBKX0xPRygzLChzc29jay0+cG9vbC0+b2JqX25hbWUsICJIYW5kc2hha2UgZmFpbGVkIGluIGFjY2VwdGluZyAiCisJCSAgICAgICIlczogJXMiLAorCQkgICAgICBwal9zb2NrYWRkcl9wcmludCgmc3NvY2stPnJlbV9hZGRyLCBidWYsIHNpemVvZihidWYpLCAzKSwKKwkJICAgICAgZXJybXNnKSk7CisKKwkgICAgLyogV29ya2Fyb3VuZCBmb3IgdGlja2V0ICM5ODUgKi8KKyNpZiAoZGVmaW5lZChQSl9XSU4zMikgJiYgUEpfV0lOMzIhPTApIHx8IChkZWZpbmVkKFBKX1dJTjY0KSAmJiBQSl9XSU42NCE9MCkKKwkgICAgaWYgKHNzb2NrLT5wYXJhbS50aW1lcl9oZWFwKSB7CisJCXBqX3RpbWVfdmFsIGludGVydmFsID0gezAsIERFTEFZRURfQ0xPU0VfVElNRU9VVH07CisKKwkJcmVzZXRfc3NsX3NvY2tfc3RhdGUoc3NvY2spOworCisJCXNzb2NrLT50aW1lci5pZCA9IFRJTUVSX0NMT1NFOworCQlwal90aW1lX3ZhbF9ub3JtYWxpemUoJmludGVydmFsKTsKKwkJaWYgKHBqX3RpbWVyX2hlYXBfc2NoZWR1bGUoc3NvY2stPnBhcmFtLnRpbWVyX2hlYXAsIAorCQkJCQkgICAmc3NvY2stPnRpbWVyLCAmaW50ZXJ2YWwpICE9IDApCisJCXsKKwkJICAgIHNzb2NrLT50aW1lci5pZCA9IFRJTUVSX05PTkU7CisJCSAgICBwal9zc2xfc29ja19jbG9zZShzc29jayk7CisJCX0KKwkgICAgfSBlbHNlIAorI2VuZGlmCS8qIFBKX1dJTjMyICovCisJICAgIHsKKwkJcGpfc3NsX3NvY2tfY2xvc2Uoc3NvY2spOworCSAgICB9CisJICAgIHJldHVybiBQSl9GQUxTRTsKKwl9CisJLyogTm90aWZ5IGFwcGxpY2F0aW9uIHRoZSBuZXdseSBhY2NlcHRlZCBTU0wgc29ja2V0ICovCisJaWYgKHNzb2NrLT5wYXJhbS5jYi5vbl9hY2NlcHRfY29tcGxldGUpIHsKKwkgICAgcGpfYm9vbF90IHJldDsKKwkgICAgcmV0ID0gKCpzc29jay0+cGFyYW0uY2Iub25fYWNjZXB0X2NvbXBsZXRlKQorCQkgICAgICAoc3NvY2stPnBhcmVudCwgc3NvY2ssIChwal9zb2NrYWRkcl90Kikmc3NvY2stPnJlbV9hZGRyLAorCQkgICAgICAgcGpfc29ja2FkZHJfZ2V0X2xlbigocGpfc29ja2FkZHJfdCopJnNzb2NrLT5yZW1fYWRkcikpOworCSAgICBpZiAocmV0ID09IFBKX0ZBTFNFKQorCQlyZXR1cm4gUEpfRkFMU0U7CisJfQorICAgIH0KKworICAgIC8qIENvbm5lY3RpbmcgKi8KKyAgICBlbHNlIHsKKwkvKiBPbiBmYWlsdXJlLCByZXNldCBTU0wgc29ja2V0IHN0YXRlIGZpcnN0LCBhcyBhcHAgbWF5IHRyeSB0byAKKwkgKiByZWNvbm5lY3QgaW4gdGhlIGNhbGxiYWNrLgorCSAqLworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICAvKiBTZXJ2ZXIgZGlzY29ubmVjdGVkIHVzLCBwb3NzaWJseSBkdWUgdG8gU1NMIG5lZ28gZmFpbHVyZSAqLworCSAgICBpZiAoc3RhdHVzID09IFBKX0VFT0YpIHsKKwkJdW5zaWduZWQgbG9uZyBlcnI7CisJCWVyciA9IEVSUl9nZXRfZXJyb3IoKTsKKwkJaWYgKGVyciAhPSBTU0xfRVJST1JfTk9ORSkKKwkJICAgIHN0YXR1cyA9IFNUQVRVU19GUk9NX1NTTF9FUlIoc3NvY2ssIGVycik7CisJICAgIH0KKwkgICAgcmVzZXRfc3NsX3NvY2tfc3RhdGUoc3NvY2spOworCX0KKwlpZiAoc3NvY2stPnBhcmFtLmNiLm9uX2Nvbm5lY3RfY29tcGxldGUpIHsKKwkgICAgcGpfYm9vbF90IHJldDsKKwkgICAgcmV0ID0gKCpzc29jay0+cGFyYW0uY2Iub25fY29ubmVjdF9jb21wbGV0ZSkoc3NvY2ssIHN0YXR1cyk7CisJICAgIGlmIChyZXQgPT0gUEpfRkFMU0UpCisJCXJldHVybiBQSl9GQUxTRTsKKwl9CisgICAgfQorCisgICAgcmV0dXJuIFBKX1RSVUU7Cit9CisKK3N0YXRpYyB3cml0ZV9kYXRhX3QqIGFsbG9jX3NlbmRfZGF0YShwal9zc2xfc29ja190ICpzc29jaywgcGpfc2l6ZV90IGxlbikKK3sKKyAgICBzZW5kX2J1Zl90ICpzZW5kX2J1ZiA9ICZzc29jay0+c2VuZF9idWY7CisgICAgcGpfc2l6ZV90IGF2YWlsX2xlbiwgc2tpcHBlZF9sZW4gPSAwOworICAgIGNoYXIgKnJlZzEsICpyZWcyOworICAgIHBqX3NpemVfdCByZWcxX2xlbiwgcmVnMl9sZW47CisgICAgd3JpdGVfZGF0YV90ICpwOworCisgICAgLyogQ2hlY2sgYnVmZmVyIGF2YWlsYWJpbGl0eSAqLworICAgIGF2YWlsX2xlbiA9IHNlbmRfYnVmLT5tYXhfbGVuIC0gc2VuZF9idWYtPmxlbjsKKyAgICBpZiAoYXZhaWxfbGVuIDwgbGVuKQorCXJldHVybiBOVUxMOworCisgICAgLyogSWYgYnVmZmVyIGVtcHR5LCByZXNldCBzdGFydCBwb2ludGVyIGFuZCByZXR1cm4gaXQgKi8KKyAgICBpZiAoc2VuZF9idWYtPmxlbiA9PSAwKSB7CisJc2VuZF9idWYtPnN0YXJ0ID0gc2VuZF9idWYtPmJ1ZjsKKwlzZW5kX2J1Zi0+bGVuICAgPSBsZW47CisJcCA9ICh3cml0ZV9kYXRhX3QqKXNlbmRfYnVmLT5zdGFydDsKKwlnb3RvIGluaXRfc2VuZF9kYXRhOworICAgIH0KKworICAgIC8qIEZyZWUgc3BhY2UgbWF5IGJlIHdyYXBwZWQvc3BsaXR0ZWQgaW50byB0d28gcmVnaW9ucywgc28gbGV0J3MKKyAgICAgKiBhbmFseXplIHRoZW0gaWYgYW55IHJlZ2lvbiBjYW4gaG9sZCB0aGUgd3JpdGUgZGF0YS4KKyAgICAgKi8KKyAgICByZWcxID0gc2VuZF9idWYtPnN0YXJ0ICsgc2VuZF9idWYtPmxlbjsKKyAgICBpZiAocmVnMSA+PSBzZW5kX2J1Zi0+YnVmICsgc2VuZF9idWYtPm1heF9sZW4pCisJcmVnMSAtPSBzZW5kX2J1Zi0+bWF4X2xlbjsKKyAgICByZWcxX2xlbiA9IHNlbmRfYnVmLT5tYXhfbGVuIC0gc2VuZF9idWYtPmxlbjsKKyAgICBpZiAocmVnMSArIHJlZzFfbGVuID4gc2VuZF9idWYtPmJ1ZiArIHNlbmRfYnVmLT5tYXhfbGVuKSB7CisJcmVnMV9sZW4gPSBzZW5kX2J1Zi0+YnVmICsgc2VuZF9idWYtPm1heF9sZW4gLSByZWcxOworCXJlZzIgPSBzZW5kX2J1Zi0+YnVmOworCXJlZzJfbGVuID0gc2VuZF9idWYtPnN0YXJ0IC0gc2VuZF9idWYtPmJ1ZjsKKyAgICB9IGVsc2UgeworCXJlZzIgPSBOVUxMOworCXJlZzJfbGVuID0gMDsKKyAgICB9CisKKyAgICAvKiBNb3JlIGJ1ZmZlciBhdmFpbGFiaWxpdHkgY2hlY2ssIG5vdGUgdGhhdCB0aGUgd3JpdGUgZGF0YSBtdXN0IGJlIGluCisgICAgICogYSBjb250aWd1ZSBidWZmZXIuCisgICAgICovCisgICAgYXZhaWxfbGVuID0gUEpfTUFYKHJlZzFfbGVuLCByZWcyX2xlbik7CisgICAgaWYgKGF2YWlsX2xlbiA8IGxlbikKKwlyZXR1cm4gTlVMTDsKKworICAgIC8qIEdldCB0aGUgZGF0YSBzbG90ICovCisgICAgaWYgKHJlZzFfbGVuID49IGxlbikgeworCXAgPSAod3JpdGVfZGF0YV90KilyZWcxOworICAgIH0gZWxzZSB7CisJcCA9ICh3cml0ZV9kYXRhX3QqKXJlZzI7CisJc2tpcHBlZF9sZW4gPSByZWcxX2xlbjsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgYnVmZmVyIGxlbmd0aCAqLworICAgIHNlbmRfYnVmLT5sZW4gKz0gbGVuICsgc2tpcHBlZF9sZW47CisKK2luaXRfc2VuZF9kYXRhOgorICAgIC8qIEluaXQgdGhlIG5ldyBzZW5kIGRhdGEgKi8KKyAgICBwal9iemVybyhwLCBzaXplb2YoKnApKTsKKyAgICBwal9saXN0X2luaXQocCk7CisgICAgcGpfbGlzdF9wdXNoX2JhY2soJnNzb2NrLT5zZW5kX3BlbmRpbmcsIHApOworCisgICAgcmV0dXJuIHA7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfc2VuZF9kYXRhKHBqX3NzbF9zb2NrX3QgKnNzb2NrLCB3cml0ZV9kYXRhX3QgKndkYXRhKQoreworICAgIHNlbmRfYnVmX3QgKmJ1ZiA9ICZzc29jay0+c2VuZF9idWY7CisgICAgd3JpdGVfZGF0YV90ICpzcGwgPSAmc3NvY2stPnNlbmRfcGVuZGluZzsKKworICAgIHBqX2Fzc2VydCghcGpfbGlzdF9lbXB0eSgmc3NvY2stPnNlbmRfcGVuZGluZykpOworICAgIAorICAgIC8qIEZyZWUgc2xvdCBmcm9tIHRoZSBidWZmZXIgKi8KKyAgICBpZiAoc3BsLT5uZXh0ID09IHdkYXRhICYmIHNwbC0+cHJldiA9PSB3ZGF0YSkgeworCS8qIFRoaXMgaXMgdGhlIG9ubHkgZGF0YSwgcmVzZXQgdGhlIGJ1ZmZlciAqLworCWJ1Zi0+c3RhcnQgPSBidWYtPmJ1ZjsKKwlidWYtPmxlbiA9IDA7CisgICAgfSBlbHNlIGlmIChzcGwtPm5leHQgPT0gd2RhdGEpIHsKKwkvKiBUaGlzIGlzIHRoZSBmaXJzdCBkYXRhLCBzaGlmdCBzdGFydCBwb2ludGVyIG9mIHRoZSBidWZmZXIgYW5kCisJICogYWRqdXN0IHRoZSBidWZmZXIgbGVuZ3RoLgorCSAqLworCWJ1Zi0+c3RhcnQgPSAoY2hhciopd2RhdGEtPm5leHQ7CisJaWYgKHdkYXRhLT5uZXh0ID4gd2RhdGEpIHsKKwkgICAgYnVmLT5sZW4gLT0gKChjaGFyKil3ZGF0YS0+bmV4dCAtIGJ1Zi0+c3RhcnQpOworCX0gZWxzZSB7CisJICAgIC8qIE92ZXJsYXBwZWQgKi8KKwkgICAgcGpfc2l6ZV90IHJpZ2h0X2xlbiwgbGVmdF9sZW47CisJICAgIHJpZ2h0X2xlbiA9IGJ1Zi0+YnVmICsgYnVmLT5tYXhfbGVuIC0gKGNoYXIqKXdkYXRhOworCSAgICBsZWZ0X2xlbiAgPSAoY2hhciopd2RhdGEtPm5leHQgLSBidWYtPmJ1ZjsKKwkgICAgYnVmLT5sZW4gLT0gKHJpZ2h0X2xlbiArIGxlZnRfbGVuKTsKKwl9CisgICAgfSBlbHNlIGlmIChzcGwtPnByZXYgPT0gd2RhdGEpIHsKKwkvKiBUaGlzIGlzIHRoZSBsYXN0IGRhdGEsIGp1c3QgYWRqdXN0IHRoZSBidWZmZXIgbGVuZ3RoICovCisJaWYgKHdkYXRhLT5wcmV2IDwgd2RhdGEpIHsKKwkgICAgcGpfc2l6ZV90IGp1bXBfbGVuOworCSAgICBqdW1wX2xlbiA9IChjaGFyKil3ZGF0YSAtCisJCSAgICAgICAoKGNoYXIqKXdkYXRhLT5wcmV2ICsgd2RhdGEtPnByZXYtPnJlY29yZF9sZW4pOworCSAgICBidWYtPmxlbiAtPSAod2RhdGEtPnJlY29yZF9sZW4gKyBqdW1wX2xlbik7CisJfSBlbHNlIHsKKwkgICAgLyogT3ZlcmxhcHBlZCAqLworCSAgICBwal9zaXplX3QgcmlnaHRfbGVuLCBsZWZ0X2xlbjsKKwkgICAgcmlnaHRfbGVuID0gYnVmLT5idWYgKyBidWYtPm1heF9sZW4gLQorCQkJKChjaGFyKil3ZGF0YS0+cHJldiArIHdkYXRhLT5wcmV2LT5yZWNvcmRfbGVuKTsKKwkgICAgbGVmdF9sZW4gID0gKGNoYXIqKXdkYXRhICsgd2RhdGEtPnJlY29yZF9sZW4gLSBidWYtPmJ1ZjsKKwkgICAgYnVmLT5sZW4gLT0gKHJpZ2h0X2xlbiArIGxlZnRfbGVuKTsKKwl9CisgICAgfQorICAgIC8qIEZvciBkYXRhIGluIHRoZSBtaWRkbGUgYnVmZmVyLCBqdXN0IGRvIG5vdGhpbmcgb24gdGhlIGJ1ZmZlci4gVGhlIHNsb3QKKyAgICAgKiB3aWxsIGJlIGZyZWVkIGxhdGVyIHdoZW4gZnJlZWluZyB0aGUgZmlyc3QvbGFzdCBkYXRhLgorICAgICAqLworICAgIAorICAgIC8qIFJlbW92ZSB0aGUgZGF0YSBmcm9tIHNlbmQgcGVuZGluZyBsaXN0ICovCisgICAgcGpfbGlzdF9lcmFzZSh3ZGF0YSk7Cit9CisKKyNpZiAwCisvKiBKdXN0IGZvciB0ZXN0aW5nIHNlbmQgYnVmZmVyIGFsbG9jL2ZyZWUgKi8KKyNpbmNsdWRlIDxwai9yYW5kLmg+Citwal9zdGF0dXNfdCBwal9zc2xfc29ja19vc3NsX3Rlc3Rfc2VuZF9idWYocGpfcG9vbF90ICpwb29sKQoreworICAgIGVudW0geyBNQVhfQ0hVTktfTlVNID0gMjAgfTsKKyAgICB1bnNpZ25lZCBjaHVua19zaXplLCBjaHVua19jbnQsIGk7CisgICAgd3JpdGVfZGF0YV90ICp3ZGF0YVtNQVhfQ0hVTktfTlVNXSA9IHswfTsKKyAgICBwal90aW1lX3ZhbCBub3c7CisgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2sgPSBOVUxMOworICAgIHBqX3NzbF9zb2NrX3BhcmFtIHBhcmFtOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIHBqX2dldHRpbWVvZmRheSgmbm93KTsKKyAgICBwal9zcmFuZCgodW5zaWduZWQpbm93LnNlYyk7CisKKyAgICBwal9zc2xfc29ja19wYXJhbV9kZWZhdWx0KCZwYXJhbSk7CisgICAgc3RhdHVzID0gcGpfc3NsX3NvY2tfY3JlYXRlKHBvb2wsICZwYXJhbSwgJnNzb2NrKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlyZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIGlmIChzc29jay0+c2VuZF9idWYubWF4X2xlbiA9PSAwKSB7CisJc3NvY2stPnNlbmRfYnVmLmJ1ZiA9IChjaGFyKikKKwkJCSAgICAgIHBqX3Bvb2xfYWxsb2Moc3NvY2stPnBvb2wsIAorCQkJCQkgICAgc3NvY2stPnBhcmFtLnNlbmRfYnVmZmVyX3NpemUpOworCXNzb2NrLT5zZW5kX2J1Zi5tYXhfbGVuID0gc3NvY2stPnBhcmFtLnNlbmRfYnVmZmVyX3NpemU7CisJc3NvY2stPnNlbmRfYnVmLnN0YXJ0ID0gc3NvY2stPnNlbmRfYnVmLmJ1ZjsKKwlzc29jay0+c2VuZF9idWYubGVuID0gMDsKKyAgICB9CisKKyAgICBjaHVua19zaXplID0gc3NvY2stPnBhcmFtLnNlbmRfYnVmZmVyX3NpemUgLyBNQVhfQ0hVTktfTlVNIC8gMjsKKyAgICBjaHVua19jbnQgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfQ0hVTktfTlVNOyBpKyspIHsKKwl3ZGF0YVtpXSA9IGFsbG9jX3NlbmRfZGF0YShzc29jaywgcGpfcmFuZCgpICUgY2h1bmtfc2l6ZSArIDMyMSk7CisJaWYgKHdkYXRhW2ldKQorCSAgICBjaHVua19jbnQrKzsKKwllbHNlCisJICAgIGJyZWFrOworICAgIH0KKworICAgIHdoaWxlIChjaHVua19jbnQpIHsKKwlpID0gcGpfcmFuZCgpICUgTUFYX0NIVU5LX05VTTsKKwlpZiAod2RhdGFbaV0pIHsKKwkgICAgZnJlZV9zZW5kX2RhdGEoc3NvY2ssIHdkYXRhW2ldKTsKKwkgICAgd2RhdGFbaV0gPSBOVUxMOworCSAgICBjaHVua19jbnQtLTsKKwl9CisgICAgfQorCisgICAgaWYgKHNzb2NrLT5zZW5kX2J1Zi5sZW4gIT0gMCkKKwlzdGF0dXMgPSBQSl9FQlVHOworCisgICAgcGpfc3NsX3NvY2tfY2xvc2Uoc3NvY2spOworICAgIHJldHVybiBzdGF0dXM7Cit9CisjZW5kaWYKKworCisvKiBGbHVzaCB3cml0ZSBCSU8gdG8gbmV0d29yayBzb2NrZXQuIE5vdGUgdGhhdCBhbnkgYWNjZXNzIHRvIHdyaXRlIEJJTworICogTVVTVCBiZSBzZXJpYWxpemVkLCBzbyBtdXRleCBwcm90ZWN0aW9uIG11c3QgY292ZXIgYW55IGNhbGwgdG8gT3BlblNTTAorICogQVBJICh0aGF0IHBvc3NpYmx5IGdlbmVyYXRlIGRhdGEgZm9yIHdyaXRlIEJJTykgYWxvbmcgd2l0aCB0aGUgY2FsbCB0bworICogdGhpcyBmdW5jdGlvbiAoZmx1c2hpbmcgYWxsIGRhdGEgaW4gd3JpdGUgQklPIGdlbmVyYXRlZCBieSBhYm92ZSAKKyAqIE9wZW5TU0wgQVBJIGNhbGwpLgorICovCitzdGF0aWMgcGpfc3RhdHVzX3QgZmx1c2hfd3JpdGVfYmlvKHBqX3NzbF9zb2NrX3QgKnNzb2NrLCAKKwkJCQkgICBwal9pb3F1ZXVlX29wX2tleV90ICpzZW5kX2tleSwKKwkJCQkgICBwal9zaXplX3Qgb3JpZ19sZW4sCisJCQkJICAgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgY2hhciAqZGF0YTsKKyAgICBwal9zc2l6ZV90IGxlbjsKKyAgICB3cml0ZV9kYXRhX3QgKndkYXRhOworICAgIHBqX3NpemVfdCBuZWVkZWRfbGVuOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIHBqX2xvY2tfYWNxdWlyZShzc29jay0+d3JpdGVfbXV0ZXgpOworCisgICAgLyogQ2hlY2sgaWYgdGhlcmUgaXMgZGF0YSBpbiB3cml0ZSBCSU8sIGZsdXNoIGl0IGlmIGFueSAqLworICAgIGlmICghQklPX3BlbmRpbmcoc3NvY2stPm9zc2xfd2JpbykpIHsKKwlwal9sb2NrX3JlbGVhc2Uoc3NvY2stPndyaXRlX211dGV4KTsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9CisKKyAgICAvKiBHZXQgZGF0YSBhbmQgaXRzIGxlbmd0aCAqLworICAgIGxlbiA9IEJJT19nZXRfbWVtX2RhdGEoc3NvY2stPm9zc2xfd2JpbywgJmRhdGEpOworICAgIGlmIChsZW4gPT0gMCkgeworCXBqX2xvY2tfcmVsZWFzZShzc29jay0+d3JpdGVfbXV0ZXgpOworCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0KKworICAgIC8qIENhbGN1bGF0ZSBidWZmZXIgc2l6ZSBuZWVkZWQsIGFuZCBhbGlnbiBpdCB0byA4ICovCisgICAgbmVlZGVkX2xlbiA9IGxlbiArIHNpemVvZih3cml0ZV9kYXRhX3QpOworICAgIG5lZWRlZF9sZW4gPSAoKG5lZWRlZF9sZW4gKyA3KSA+PiAzKSA8PCAzOworCisgICAgLyogQWxsb2NhdGUgYnVmZmVyIGZvciBzZW5kIGRhdGEgKi8KKyAgICB3ZGF0YSA9IGFsbG9jX3NlbmRfZGF0YShzc29jaywgbmVlZGVkX2xlbik7CisgICAgaWYgKHdkYXRhID09IE5VTEwpIHsKKwlwal9sb2NrX3JlbGVhc2Uoc3NvY2stPndyaXRlX211dGV4KTsKKwlyZXR1cm4gUEpfRU5PTUVNOworICAgIH0KKworICAgIC8qIENvcHkgdGhlIGRhdGEgYW5kIHNldCBpdHMgcHJvcGVydGllcyBpbnRvIHRoZSBzZW5kIGRhdGEgKi8KKyAgICBwal9pb3F1ZXVlX29wX2tleV9pbml0KCZ3ZGF0YS0+a2V5LCBzaXplb2YocGpfaW9xdWV1ZV9vcF9rZXlfdCkpOworICAgIHdkYXRhLT5rZXkudXNlcl9kYXRhID0gd2RhdGE7CisgICAgd2RhdGEtPmFwcF9rZXkgPSBzZW5kX2tleTsKKyAgICB3ZGF0YS0+cmVjb3JkX2xlbiA9IG5lZWRlZF9sZW47CisgICAgd2RhdGEtPmRhdGFfbGVuID0gbGVuOworICAgIHdkYXRhLT5wbGFpbl9kYXRhX2xlbiA9IG9yaWdfbGVuOworICAgIHdkYXRhLT5mbGFncyA9IGZsYWdzOworICAgIHBqX21lbWNweSgmd2RhdGEtPmRhdGEsIGRhdGEsIGxlbik7CisKKyAgICAvKiBSZXNldCB3cml0ZSBCSU8gKi8KKyAgICAodm9pZClCSU9fcmVzZXQoc3NvY2stPm9zc2xfd2Jpbyk7CisKKyAgICAvKiBUaWNrZXQgIzE1NzM6IERvbid0IGhvbGQgbXV0ZXggd2hpbGUgY2FsbGluZyBQSkxJQiBzb2NrZXQgc2VuZCgpLiAqLworICAgIHBqX2xvY2tfcmVsZWFzZShzc29jay0+d3JpdGVfbXV0ZXgpOworCisgICAgLyogU2VuZCBpdCAqLworICAgIGlmIChzc29jay0+cGFyYW0uc29ja190eXBlID09IHBqX1NPQ0tfU1RSRUFNKCkpIHsKKwlzdGF0dXMgPSBwal9hY3RpdmVzb2NrX3NlbmQoc3NvY2stPmFzb2NrLCAmd2RhdGEtPmtleSwgCisJCQkJICAgIHdkYXRhLT5kYXRhLmNvbnRlbnQsICZsZW4sCisJCQkJICAgIGZsYWdzKTsKKyAgICB9IGVsc2UgeworCXN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfc2VuZHRvKHNzb2NrLT5hc29jaywgJndkYXRhLT5rZXksIAorCQkJCSAgICAgIHdkYXRhLT5kYXRhLmNvbnRlbnQsICZsZW4sCisJCQkJICAgICAgZmxhZ3MsCisJCQkJICAgICAgKHBqX3NvY2thZGRyX3QqKSZzc29jay0+cmVtX2FkZHIsCisJCQkJICAgICAgc3NvY2stPmFkZHJfbGVuKTsKKyAgICB9CisKKyAgICBpZiAoc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisJLyogV2hlbiB0aGUgc2VuZGluZyBpcyBub3QgcGVuZGluZywgcmVtb3ZlIHRoZSB3ZGF0YSBmcm9tIHNlbmQKKwkgKiBwZW5kaW5nIGxpc3QuCisJICovCisJcGpfbG9ja19hY3F1aXJlKHNzb2NrLT53cml0ZV9tdXRleCk7CisJZnJlZV9zZW5kX2RhdGEoc3NvY2ssIHdkYXRhKTsKKwlwal9sb2NrX3JlbGVhc2Uoc3NvY2stPndyaXRlX211dGV4KTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisKK3N0YXRpYyB2b2lkIG9uX3RpbWVyKHBqX3RpbWVyX2hlYXBfdCAqdGgsIHN0cnVjdCBwal90aW1lcl9lbnRyeSAqdGUpCit7CisgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2sgPSAocGpfc3NsX3NvY2tfdCopdGUtPnVzZXJfZGF0YTsKKyAgICBpbnQgdGltZXJfaWQgPSB0ZS0+aWQ7CisKKyAgICB0ZS0+aWQgPSBUSU1FUl9OT05FOworCisgICAgUEpfVU5VU0VEX0FSRyh0aCk7CisKKyAgICBzd2l0Y2ggKHRpbWVyX2lkKSB7CisgICAgY2FzZSBUSU1FUl9IQU5EU0hBS0VfVElNRU9VVDoKKwlQSl9MT0coMSwoc3NvY2stPnBvb2wtPm9ial9uYW1lLCAiU1NMIHRpbWVvdXQgYWZ0ZXIgJWQuJWRzIiwKKwkJICBzc29jay0+cGFyYW0udGltZW91dC5zZWMsIHNzb2NrLT5wYXJhbS50aW1lb3V0Lm1zZWMpKTsKKworCW9uX2hhbmRzaGFrZV9jb21wbGV0ZShzc29jaywgUEpfRVRJTUVET1VUKTsKKwlicmVhazsKKyAgICBjYXNlIFRJTUVSX0NMT1NFOgorCXBqX3NzbF9zb2NrX2Nsb3NlKHNzb2NrKTsKKwlicmVhazsKKyAgICBkZWZhdWx0OgorCXBqX2Fzc2VydCghIlVua25vd24gdGltZXIiKTsKKwlicmVhazsKKyAgICB9Cit9CisKKworLyogQXN5bmNocm9ub3VzZSBoYW5kc2hha2UgKi8KK3N0YXRpYyBwal9zdGF0dXNfdCBkb19oYW5kc2hha2UocGpfc3NsX3NvY2tfdCAqc3NvY2spCit7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworICAgIGludCBlcnI7CisKKyAgICAvKiBQZXJmb3JtIFNTTCBoYW5kc2hha2UgKi8KKyAgICBwal9sb2NrX2FjcXVpcmUoc3NvY2stPndyaXRlX211dGV4KTsKKyAgICBlcnIgPSBTU0xfZG9faGFuZHNoYWtlKHNzb2NrLT5vc3NsX3NzbCk7CisgICAgcGpfbG9ja19yZWxlYXNlKHNzb2NrLT53cml0ZV9tdXRleCk7CisKKyAgICAvKiBTU0xfZG9faGFuZHNoYWtlKCkgbWF5IHB1dCBzb21lIHBlbmRpbmcgZGF0YSBpbnRvIFNTTCB3cml0ZSBCSU8sIAorICAgICAqIGZsdXNoIGl0IGlmIGFueS4KKyAgICAgKi8KKyAgICBzdGF0dXMgPSBmbHVzaF93cml0ZV9iaW8oc3NvY2ssICZzc29jay0+aGFuZHNoYWtlX29wX2tleSwgMCwgMCk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTICYmIHN0YXR1cyAhPSBQSl9FUEVORElORykgeworCXJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgaWYgKGVyciA8IDApIHsKKwllcnIgPSBTU0xfZ2V0X2Vycm9yKHNzb2NrLT5vc3NsX3NzbCwgZXJyKTsKKwlpZiAoZXJyICE9IFNTTF9FUlJPUl9OT05FICYmIGVyciAhPSBTU0xfRVJST1JfV0FOVF9SRUFEKSAKKwl7CisJICAgIC8qIEhhbmRzaGFrZSBmYWlscyAqLworCSAgICBzdGF0dXMgPSBTVEFUVVNfRlJPTV9TU0xfRVJSKHNzb2NrLCBlcnIpOworCSAgICByZXR1cm4gc3RhdHVzOworCX0KKyAgICB9CisKKyAgICAvKiBDaGVjayBpZiBoYW5kc2hha2UgaGFzIGJlZW4gY29tcGxldGVkICovCisgICAgaWYgKFNTTF9pc19pbml0X2ZpbmlzaGVkKHNzb2NrLT5vc3NsX3NzbCkpIHsKKwlzc29jay0+c3NsX3N0YXRlID0gU1NMX1NUQVRFX0VTVEFCTElTSEVEOworCXJldHVybiBQSl9TVUNDRVNTOworICAgIH0KKworICAgIHJldHVybiBQSl9FUEVORElORzsKK30KKworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFjdGl2ZSBzb2NrZXQgY2FsbGJhY2tzLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitzdGF0aWMgcGpfYm9vbF90IGFzb2NrX29uX2RhdGFfcmVhZCAocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkgICAgIHZvaWQgKmRhdGEsCisJCQkJICAgICBwal9zaXplX3Qgc2l6ZSwKKwkJCQkgICAgIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCQkgICAgIHBqX3NpemVfdCAqcmVtYWluZGVyKQoreworICAgIHBqX3NzbF9zb2NrX3QgKnNzb2NrID0gKHBqX3NzbF9zb2NrX3QqKQorCQkJICAgcGpfYWN0aXZlc29ja19nZXRfdXNlcl9kYXRhKGFzb2NrKTsKKyAgICBwal9zaXplX3QgbndyaXR0ZW47CisKKyAgICAvKiBTb2NrZXQgZXJyb3Igb3IgY2xvc2VkICovCisgICAgaWYgKGRhdGEgJiYgc2l6ZSA+IDApIHsKKwkvKiBDb25zdW1lIHRoZSB3aG9sZSBkYXRhICovCisJbndyaXR0ZW4gPSBCSU9fd3JpdGUoc3NvY2stPm9zc2xfcmJpbywgZGF0YSwgKGludClzaXplKTsKKwlpZiAobndyaXR0ZW4gPCBzaXplKSB7CisJICAgIHN0YXR1cyA9IEdFVF9TU0xfU1RBVFVTKHNzb2NrKTsKKwkgICAgZ290byBvbl9lcnJvcjsKKwl9CisgICAgfQorCisgICAgLyogQ2hlY2sgaWYgU1NMIGhhbmRzaGFrZSBoYXNuJ3QgZmluaXNoZWQgeWV0ICovCisgICAgaWYgKHNzb2NrLT5zc2xfc3RhdGUgPT0gU1NMX1NUQVRFX0hBTkRTSEFLSU5HKSB7CisJcGpfYm9vbF90IHJldCA9IFBKX1RSVUU7CisKKwlpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisJICAgIHN0YXR1cyA9IGRvX2hhbmRzaGFrZShzc29jayk7CisKKwkvKiBOb3QgcGVuZGluZyBpcyBlaXRoZXIgc3VjY2VzcyBvciBmYWlsZWQgKi8KKwlpZiAoc3RhdHVzICE9IFBKX0VQRU5ESU5HKQorCSAgICByZXQgPSBvbl9oYW5kc2hha2VfY29tcGxldGUoc3NvY2ssIHN0YXR1cyk7CisKKwlyZXR1cm4gcmV0OworICAgIH0KKworICAgIC8qIFNlZSBpZiB0aGVyZSBpcyBhbnkgZGVjcnlwdGVkIGRhdGEgZm9yIHRoZSBhcHBsaWNhdGlvbiAqLworICAgIGlmIChzc29jay0+cmVhZF9zdGFydGVkKSB7CisJZG8geworCSAgICByZWFkX2RhdGFfdCAqYnVmID0gKihPRkZTRVRfT0ZfUkVBRF9EQVRBX1BUUihzc29jaywgZGF0YSkpOworCSAgICB2b2lkICpkYXRhXyA9IChwal9pbnQ4X3QqKWJ1Zi0+ZGF0YSArIGJ1Zi0+bGVuOworCSAgICBpbnQgc2l6ZV8gPSAoaW50KShzc29jay0+cmVhZF9zaXplIC0gYnVmLT5sZW4pOworCisJICAgIC8qIFNTTF9yZWFkKCkgbWF5IHdyaXRlIHNvbWUgZGF0YSB0byBCSU8gd3JpdGUgd2hlbiByZS1uZWdvdGlhdGlvbgorCSAgICAgKiBpcyBvbiBwcm9ncmVzcywgc28gbGV0J3MgcHJvdGVjdCBpdCB3aXRoIHdyaXRlIG11dGV4LgorCSAgICAgKi8KKwkgICAgcGpfbG9ja19hY3F1aXJlKHNzb2NrLT53cml0ZV9tdXRleCk7CisJICAgIHNpemVfID0gU1NMX3JlYWQoc3NvY2stPm9zc2xfc3NsLCBkYXRhXywgc2l6ZV8pOworCSAgICBwal9sb2NrX3JlbGVhc2Uoc3NvY2stPndyaXRlX211dGV4KTsKKworCSAgICBpZiAoc2l6ZV8gPiAwIHx8IHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJCWlmIChzc29jay0+cGFyYW0uY2Iub25fZGF0YV9yZWFkKSB7CisJCSAgICBwal9ib29sX3QgcmV0OworCQkgICAgcGpfc2l6ZV90IHJlbWFpbmRlcl8gPSAwOworCisJCSAgICBpZiAoc2l6ZV8gPiAwKQorCQkJYnVmLT5sZW4gKz0gc2l6ZV87CisgICAgCQkKKwkJICAgIHJldCA9ICgqc3NvY2stPnBhcmFtLmNiLm9uX2RhdGFfcmVhZCkoc3NvY2ssIGJ1Zi0+ZGF0YSwKKwkJCQkJCQkgIGJ1Zi0+bGVuLCBzdGF0dXMsCisJCQkJCQkJICAmcmVtYWluZGVyXyk7CisJCSAgICBpZiAoIXJldCkgeworCQkJLyogV2UndmUgYmVlbiBkZXN0cm95ZWQgKi8KKwkJCXJldHVybiBQSl9GQUxTRTsKKwkJICAgIH0KKworCQkgICAgLyogQXBwbGljYXRpb24gbWF5IGhhdmUgbGVmdCBzb21lIGRhdGEgdG8gYmUgY29uc3VtZWQgCisJCSAgICAgKiBsYXRlci4KKwkJICAgICAqLworCQkgICAgYnVmLT5sZW4gPSByZW1haW5kZXJfOworCQl9CisKKwkJLyogQWN0aXZlIHNvY2tldCBzaWduYWxsZWQgY29ubmVjdGlvbiBjbG9zZWQvZXJyb3IsIHRoaXMgaGFzCisJCSAqIGJlZW4gc2lnbmFsbGVkIHRvIHRoZSBhcHBsaWNhdGlvbiBhbG9uZyB3aXRoIGFueSByZW1haW5pbmcKKwkJICogYnVmZmVyLiBTbywgbGV0J3MganVzdCByZXNldCBTU0wgc29ja2V0IG5vdy4KKwkJICovCisJCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCQkgICAgcmVzZXRfc3NsX3NvY2tfc3RhdGUoc3NvY2spOworCQkgICAgcmV0dXJuIFBKX0ZBTFNFOworCQl9CisKKwkgICAgfSBlbHNlIHsKKworCQlpbnQgZXJyID0gU1NMX2dldF9lcnJvcihzc29jay0+b3NzbF9zc2wsIChpbnQpc2l6ZSk7CisJCQorCQkvKiBTU0wgbWlnaHQganVzdCByZXR1cm4gU1NMX0VSUk9SX1dBTlRfUkVBRCBpbiAKKwkJICogcmUtbmVnb3RpYXRpb24uCisJCSAqLworCQlpZiAoZXJyICE9IFNTTF9FUlJPUl9OT05FICYmIGVyciAhPSBTU0xfRVJST1JfV0FOVF9SRUFEKQorCQl7CisJCSAgICAvKiBSZXNldCBTU0wgc29ja2V0IHN0YXRlLCB0aGVuIHJldHVybiBQSl9GQUxTRSAqLworCQkgICAgc3RhdHVzID0gU1RBVFVTX0ZST01fU1NMX0VSUihzc29jaywgZXJyKTsKKwkJICAgIHJlc2V0X3NzbF9zb2NrX3N0YXRlKHNzb2NrKTsKKwkJICAgIGdvdG8gb25fZXJyb3I7CisJCX0KKworCQlzdGF0dXMgPSBkb19oYW5kc2hha2Uoc3NvY2spOworCQlpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpIHsKKwkJICAgIC8qIFJlbmVnb3RpYXRpb24gY29tcGxldGVkICovCisKKwkJICAgIC8qIFVwZGF0ZSBjZXJ0aWZpY2F0ZXMgKi8KKwkJICAgIHVwZGF0ZV9jZXJ0c19pbmZvKHNzb2NrKTsKKworCQkgICAgLy8gVGlja2V0ICMxNTczOiBEb24ndCBob2xkIG11dGV4IHdoaWxlIGNhbGxpbmcKKwkJICAgIC8vICAgICAgICAgICAgICAgUEpMSUIgc29ja2V0IHNlbmQoKS4gCisJCSAgICAvL3BqX2xvY2tfYWNxdWlyZShzc29jay0+d3JpdGVfbXV0ZXgpOworCQkgICAgc3RhdHVzID0gZmx1c2hfZGVsYXllZF9zZW5kKHNzb2NrKTsKKwkJICAgIC8vcGpfbG9ja19yZWxlYXNlKHNzb2NrLT53cml0ZV9tdXRleCk7CisKKwkJICAgIC8qIElmIGZsdXNoaW5nIGlzIG9uZ29pbmcsIHRyZWF0IGl0IGFzIHN1Y2Nlc3MgKi8KKwkJICAgIGlmIChzdGF0dXMgPT0gUEpfRUJVU1kpCisJCQlzdGF0dXMgPSBQSl9TVUNDRVNTOworCisJCSAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgJiYgc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisJCQlQSl9QRVJST1IoMSwoc3NvY2stPnBvb2wtPm9ial9uYW1lLCBzdGF0dXMsIAorCQkJCSAgICAgIkZhaWxlZCB0byBmbHVzaCBkZWxheWVkIHNlbmQiKSk7CisJCQlnb3RvIG9uX2Vycm9yOworCQkgICAgfQorCQl9IGVsc2UgaWYgKHN0YXR1cyAhPSBQSl9FUEVORElORykgeworCQkgICAgUEpfUEVSUk9SKDEsKHNzb2NrLT5wb29sLT5vYmpfbmFtZSwgc3RhdHVzLCAKKwkJCSAgICAgICAgICJSZW5lZ290aWF0aW9uIGZhaWxlZCIpKTsKKwkJICAgIGdvdG8gb25fZXJyb3I7CisJCX0KKworCQlicmVhazsKKwkgICAgfQorCX0gd2hpbGUgKDEpOworICAgIH0KKworICAgIHJldHVybiBQSl9UUlVFOworCitvbl9lcnJvcjoKKyAgICBpZiAoc3NvY2stPnNzbF9zdGF0ZSA9PSBTU0xfU1RBVEVfSEFORFNIQUtJTkcpCisJcmV0dXJuIG9uX2hhbmRzaGFrZV9jb21wbGV0ZShzc29jaywgc3RhdHVzKTsKKworICAgIGlmIChzc29jay0+cmVhZF9zdGFydGVkICYmIHNzb2NrLT5wYXJhbS5jYi5vbl9kYXRhX3JlYWQpIHsKKwlwal9ib29sX3QgcmV0OworCXJldCA9ICgqc3NvY2stPnBhcmFtLmNiLm9uX2RhdGFfcmVhZCkoc3NvY2ssIE5VTEwsIDAsIHN0YXR1cywKKwkJCQkJICAgICAgcmVtYWluZGVyKTsKKwlpZiAoIXJldCkgeworCSAgICAvKiBXZSd2ZSBiZWVuIGRlc3Ryb3llZCAqLworCSAgICByZXR1cm4gUEpfRkFMU0U7CisJfQorICAgIH0KKworICAgIHJlc2V0X3NzbF9zb2NrX3N0YXRlKHNzb2NrKTsKKyAgICByZXR1cm4gUEpfRkFMU0U7Cit9CisKKworc3RhdGljIHBqX2Jvb2xfdCBhc29ja19vbl9kYXRhX3NlbnQgKHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2ssCisJCQkJICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpzZW5kX2tleSwKKwkJCQkgICAgIHBqX3NzaXplX3Qgc2VudCkKK3sKKyAgICBwal9zc2xfc29ja190ICpzc29jayA9IChwal9zc2xfc29ja190KikKKwkJCSAgIHBqX2FjdGl2ZXNvY2tfZ2V0X3VzZXJfZGF0YShhc29jayk7CisKKyAgICBQSl9VTlVTRURfQVJHKHNlbmRfa2V5KTsKKyAgICBQSl9VTlVTRURfQVJHKHNlbnQpOworCisgICAgaWYgKHNzb2NrLT5zc2xfc3RhdGUgPT0gU1NMX1NUQVRFX0hBTkRTSEFLSU5HKSB7CisJLyogSW5pdGlhbCBoYW5kc2hha2luZyAqLworCXBqX3N0YXR1c190IHN0YXR1czsKKwkKKwlzdGF0dXMgPSBkb19oYW5kc2hha2Uoc3NvY2spOworCS8qIE5vdCBwZW5kaW5nIGlzIGVpdGhlciBzdWNjZXNzIG9yIGZhaWxlZCAqLworCWlmIChzdGF0dXMgIT0gUEpfRVBFTkRJTkcpCisJICAgIHJldHVybiBvbl9oYW5kc2hha2VfY29tcGxldGUoc3NvY2ssIHN0YXR1cyk7CisKKyAgICB9IGVsc2UgaWYgKHNlbmRfa2V5ICE9ICZzc29jay0+aGFuZHNoYWtlX29wX2tleSkgeworCS8qIFNvbWUgZGF0YSBoYXMgYmVlbiBzZW50LCBub3RpZnkgYXBwbGljYXRpb24gKi8KKwl3cml0ZV9kYXRhX3QgKndkYXRhID0gKHdyaXRlX2RhdGFfdCopc2VuZF9rZXktPnVzZXJfZGF0YTsKKwlpZiAoc3NvY2stPnBhcmFtLmNiLm9uX2RhdGFfc2VudCkgeworCSAgICBwal9ib29sX3QgcmV0OworCSAgICBwal9zc2l6ZV90IHNlbnRfbGVuOworCisJICAgIHNlbnRfbGVuID0gKHNlbnQgPiAwKT8gd2RhdGEtPnBsYWluX2RhdGFfbGVuIDogc2VudDsKKwkgICAgcmV0ID0gKCpzc29jay0+cGFyYW0uY2Iub25fZGF0YV9zZW50KShzc29jaywgd2RhdGEtPmFwcF9rZXksIAorCQkJCQkJICBzZW50X2xlbik7CisJICAgIGlmICghcmV0KSB7CisJCS8qIFdlJ3ZlIGJlZW4gZGVzdHJveWVkICovCisJCXJldHVybiBQSl9GQUxTRTsKKwkgICAgfQorCX0KKworCS8qIFVwZGF0ZSB3cml0ZSBidWZmZXIgc3RhdGUgKi8KKwlwal9sb2NrX2FjcXVpcmUoc3NvY2stPndyaXRlX211dGV4KTsKKwlmcmVlX3NlbmRfZGF0YShzc29jaywgd2RhdGEpOworCXBqX2xvY2tfcmVsZWFzZShzc29jay0+d3JpdGVfbXV0ZXgpOworCisgICAgfSBlbHNlIHsKKwkvKiBTU0wgcmUtbmVnb3RpYXRpb24gaXMgb24tcHJvZ3Jlc3MsIGp1c3QgZG8gbm90aGluZyAqLworICAgIH0KKworICAgIHJldHVybiBQSl9UUlVFOworfQorCisKK3N0YXRpYyBwal9ib29sX3QgYXNvY2tfb25fYWNjZXB0X2NvbXBsZXRlIChwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkgICBwal9zb2NrX3QgbmV3c29jaywKKwkJCQkJICAgY29uc3QgcGpfc29ja2FkZHJfdCAqc3JjX2FkZHIsCisJCQkJCSAgIGludCBzcmNfYWRkcl9sZW4pCit7CisgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2tfcGFyZW50ID0gKHBqX3NzbF9zb2NrX3QqKQorCQkJCSAgcGpfYWN0aXZlc29ja19nZXRfdXNlcl9kYXRhKGFzb2NrKTsKKyAgICBwal9zc2xfc29ja190ICpzc29jazsKKyAgICBwal9hY3RpdmVzb2NrX2NiIGFzb2NrX2NiOworICAgIHBqX2FjdGl2ZXNvY2tfY2ZnIGFzb2NrX2NmZzsKKyAgICB1bnNpZ25lZCBpOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX1VOVVNFRF9BUkcoc3JjX2FkZHJfbGVuKTsKKworICAgIC8qIENyZWF0ZSBuZXcgU1NMIHNvY2tldCBpbnN0YW5jZSAqLworICAgIHN0YXR1cyA9IHBqX3NzbF9zb2NrX2NyZWF0ZShzc29ja19wYXJlbnQtPnBvb2wsICZzc29ja19wYXJlbnQtPnBhcmFtLAorCQkJCSZzc29jayk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fcmV0dXJuOworCisgICAgLyogVXBkYXRlIG5ldyBTU0wgc29ja2V0IGF0dHJpYnV0ZXMgKi8KKyAgICBzc29jay0+c29jayA9IG5ld3NvY2s7CisgICAgc3NvY2stPnBhcmVudCA9IHNzb2NrX3BhcmVudDsKKyAgICBzc29jay0+aXNfc2VydmVyID0gUEpfVFJVRTsKKyAgICBpZiAoc3NvY2tfcGFyZW50LT5jZXJ0KSB7CisJc3RhdHVzID0gcGpfc3NsX3NvY2tfc2V0X2NlcnRpZmljYXRlKHNzb2NrLCBzc29jay0+cG9vbCwgCisJCQkJCSAgICAgc3NvY2tfcGFyZW50LT5jZXJ0KTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJICAgIGdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIEFwcGx5IFFvUywgaWYgc3BlY2lmaWVkICovCisgICAgc3RhdHVzID0gcGpfc29ja19hcHBseV9xb3MyKHNzb2NrLT5zb2NrLCBzc29jay0+cGFyYW0ucW9zX3R5cGUsCisJCQkJJnNzb2NrLT5wYXJhbS5xb3NfcGFyYW1zLCAxLCAKKwkJCQlzc29jay0+cG9vbC0+b2JqX25hbWUsIE5VTEwpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUyAmJiAhc3NvY2stPnBhcmFtLnFvc19pZ25vcmVfZXJyb3IpCisJZ290byBvbl9yZXR1cm47CisKKyAgICAvKiBVcGRhdGUgbG9jYWwgYWRkcmVzcyAqLworICAgIHNzb2NrLT5hZGRyX2xlbiA9IHNyY19hZGRyX2xlbjsKKyAgICBzdGF0dXMgPSBwal9zb2NrX2dldHNvY2tuYW1lKHNzb2NrLT5zb2NrLCAmc3NvY2stPmxvY2FsX2FkZHIsIAorCQkJCSAmc3NvY2stPmFkZHJfbGVuKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkvKiBUaGlzIGZhaWxzIG9uIGZldyBlbnZzLCBlLmc6IHdpbiBJT0NQLCBqdXN0IHRvbGVyYXRlIHRoaXMgYW5kCisJICogdXNlIHBhcmVudCBsb2NhbCBhZGRyZXNzIGluc3RlYWQuCisJICovCisJcGpfc29ja2FkZHJfY3AoJnNzb2NrLT5sb2NhbF9hZGRyLCAmc3NvY2tfcGFyZW50LT5sb2NhbF9hZGRyKTsKKyAgICB9CisKKyAgICAvKiBTZXQgcmVtb3RlIGFkZHJlc3MgKi8KKyAgICBwal9zb2NrYWRkcl9jcCgmc3NvY2stPnJlbV9hZGRyLCBzcmNfYWRkcik7CisKKyAgICAvKiBDcmVhdGUgU1NMIGNvbnRleHQgKi8KKyAgICBzdGF0dXMgPSBjcmVhdGVfc3NsKHNzb2NrKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJZ290byBvbl9yZXR1cm47CisKKyAgICAvKiBQcmVwYXJlIHJlYWQgYnVmZmVyICovCisgICAgc3NvY2stPmFzb2NrX3JidWYgPSAodm9pZCoqKXBqX3Bvb2xfY2FsbG9jKHNzb2NrLT5wb29sLCAKKwkJCQkJICAgICAgIHNzb2NrLT5wYXJhbS5hc3luY19jbnQsCisJCQkJCSAgICAgICBzaXplb2Yodm9pZCopKTsKKyAgICBmb3IgKGkgPSAwOyBpPHNzb2NrLT5wYXJhbS5hc3luY19jbnQ7ICsraSkgeworCXNzb2NrLT5hc29ja19yYnVmW2ldID0gKHZvaWQqKSBwal9wb29sX2FsbG9jKAorCQkJCQkgICAgc3NvY2stPnBvb2wsIAorCQkJCQkgICAgc3NvY2stPnBhcmFtLnJlYWRfYnVmZmVyX3NpemUgKyAKKwkJCQkJICAgIHNpemVvZihyZWFkX2RhdGFfdCopKTsKKyAgICB9CisKKyAgICAvKiBDcmVhdGUgYWN0aXZlIHNvY2tldCAqLworICAgIHBqX2FjdGl2ZXNvY2tfY2ZnX2RlZmF1bHQoJmFzb2NrX2NmZyk7CisgICAgYXNvY2tfY2ZnLmFzeW5jX2NudCA9IHNzb2NrLT5wYXJhbS5hc3luY19jbnQ7CisgICAgYXNvY2tfY2ZnLmNvbmN1cnJlbmN5ID0gc3NvY2stPnBhcmFtLmNvbmN1cnJlbmN5OworICAgIGFzb2NrX2NmZy53aG9sZV9kYXRhID0gUEpfVFJVRTsKKworICAgIHBqX2J6ZXJvKCZhc29ja19jYiwgc2l6ZW9mKGFzb2NrX2NiKSk7CisgICAgYXNvY2tfY2Iub25fZGF0YV9yZWFkID0gYXNvY2tfb25fZGF0YV9yZWFkOworICAgIGFzb2NrX2NiLm9uX2RhdGFfc2VudCA9IGFzb2NrX29uX2RhdGFfc2VudDsKKworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfY3JlYXRlKHNzb2NrLT5wb29sLAorCQkJCSAgc3NvY2stPnNvY2ssIAorCQkJCSAgc3NvY2stPnBhcmFtLnNvY2tfdHlwZSwKKwkJCQkgICZhc29ja19jZmcsCisJCQkJICBzc29jay0+cGFyYW0uaW9xdWV1ZSwgCisJCQkJICAmYXNvY2tfY2IsCisJCQkJICBzc29jaywKKwkJCQkgICZzc29jay0+YXNvY2spOworCisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fcmV0dXJuOworCisgICAgLyogU3RhcnQgcmVhZCAqLworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfc3RhcnRfcmVhZDIoc3NvY2stPmFzb2NrLCBzc29jay0+cG9vbCwgCisJCQkJICAgICAgICh1bnNpZ25lZClzc29jay0+cGFyYW0ucmVhZF9idWZmZXJfc2l6ZSwKKwkJCQkgICAgICAgc3NvY2stPmFzb2NrX3JidWYsCisJCQkJICAgICAgIFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJZ290byBvbl9yZXR1cm47CisKKyAgICAvKiBQcmVwYXJlIHdyaXRlL3NlbmQgc3RhdGUgKi8KKyAgICBwal9hc3NlcnQoc3NvY2stPnNlbmRfYnVmLm1heF9sZW4gPT0gMCk7CisgICAgc3NvY2stPnNlbmRfYnVmLmJ1ZiA9IChjaGFyKikKKwkJCSAgcGpfcG9vbF9hbGxvYyhzc29jay0+cG9vbCwgCisJCQkJCXNzb2NrLT5wYXJhbS5zZW5kX2J1ZmZlcl9zaXplKTsKKyAgICBzc29jay0+c2VuZF9idWYubWF4X2xlbiA9IHNzb2NrLT5wYXJhbS5zZW5kX2J1ZmZlcl9zaXplOworICAgIHNzb2NrLT5zZW5kX2J1Zi5zdGFydCA9IHNzb2NrLT5zZW5kX2J1Zi5idWY7CisgICAgc3NvY2stPnNlbmRfYnVmLmxlbiA9IDA7CisKKyAgICAvKiBTdGFydCBoYW5kc2hha2UgdGltZXIgKi8KKyAgICBpZiAoc3NvY2stPnBhcmFtLnRpbWVyX2hlYXAgJiYgKHNzb2NrLT5wYXJhbS50aW1lb3V0LnNlYyAhPSAwIHx8CisJc3NvY2stPnBhcmFtLnRpbWVvdXQubXNlYyAhPSAwKSkKKyAgICB7CisJcGpfYXNzZXJ0KHNzb2NrLT50aW1lci5pZCA9PSBUSU1FUl9OT05FKTsKKwlzc29jay0+dGltZXIuaWQgPSBUSU1FUl9IQU5EU0hBS0VfVElNRU9VVDsKKwlzdGF0dXMgPSBwal90aW1lcl9oZWFwX3NjaGVkdWxlKHNzb2NrLT5wYXJhbS50aW1lcl9oZWFwLCAKKwkJCQkgICAgICAgICZzc29jay0+dGltZXIsCisJCQkJCSZzc29jay0+cGFyYW0udGltZW91dCk7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCSAgICBzc29jay0+dGltZXIuaWQgPSBUSU1FUl9OT05FOworICAgIH0KKworICAgIC8qIFN0YXJ0IFNTTCBoYW5kc2hha2UgKi8KKyAgICBzc29jay0+c3NsX3N0YXRlID0gU1NMX1NUQVRFX0hBTkRTSEFLSU5HOworICAgIFNTTF9zZXRfYWNjZXB0X3N0YXRlKHNzb2NrLT5vc3NsX3NzbCk7CisgICAgc3RhdHVzID0gZG9faGFuZHNoYWtlKHNzb2NrKTsKKworb25fcmV0dXJuOgorICAgIGlmIChzc29jayAmJiBzdGF0dXMgIT0gUEpfRVBFTkRJTkcpCisJb25faGFuZHNoYWtlX2NvbXBsZXRlKHNzb2NrLCBzdGF0dXMpOworCisgICAgLyogTXVzdCByZXR1cm4gUEpfVFJVRSB3aGF0ZXZlciBoYXBwZW5lZCwgYXMgYWN0aXZlIHNvY2tldCBtdXN0IAorICAgICAqIGNvbnRpbnVlIGxpc3RlbmluZy4KKyAgICAgKi8KKyAgICByZXR1cm4gUEpfVFJVRTsKK30KKworCitzdGF0aWMgcGpfYm9vbF90IGFzb2NrX29uX2Nvbm5lY3RfY29tcGxldGUgKHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2ssCisJCQkJCSAgICBwal9zdGF0dXNfdCBzdGF0dXMpCit7CisgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2sgPSAocGpfc3NsX3NvY2tfdCopCisJCQkgICBwal9hY3RpdmVzb2NrX2dldF91c2VyX2RhdGEoYXNvY2spOworICAgIHVuc2lnbmVkIGk7CisKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJZ290byBvbl9yZXR1cm47CisKKyAgICAvKiBVcGRhdGUgbG9jYWwgYWRkcmVzcyAqLworICAgIHNzb2NrLT5hZGRyX2xlbiA9IHNpemVvZihwal9zb2NrYWRkcik7CisgICAgc3RhdHVzID0gcGpfc29ja19nZXRzb2NrbmFtZShzc29jay0+c29jaywgJnNzb2NrLT5sb2NhbF9hZGRyLCAKKwkJCQkgJnNzb2NrLT5hZGRyX2xlbik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fcmV0dXJuOworCisgICAgLyogQ3JlYXRlIFNTTCBjb250ZXh0ICovCisgICAgc3RhdHVzID0gY3JlYXRlX3NzbChzc29jayk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fcmV0dXJuOworCisgICAgLyogUHJlcGFyZSByZWFkIGJ1ZmZlciAqLworICAgIHNzb2NrLT5hc29ja19yYnVmID0gKHZvaWQqKilwal9wb29sX2NhbGxvYyhzc29jay0+cG9vbCwgCisJCQkJCSAgICAgICBzc29jay0+cGFyYW0uYXN5bmNfY250LAorCQkJCQkgICAgICAgc2l6ZW9mKHZvaWQqKSk7CisgICAgZm9yIChpID0gMDsgaTxzc29jay0+cGFyYW0uYXN5bmNfY250OyArK2kpIHsKKwlzc29jay0+YXNvY2tfcmJ1ZltpXSA9ICh2b2lkKikgcGpfcG9vbF9hbGxvYygKKwkJCQkJICAgIHNzb2NrLT5wb29sLCAKKwkJCQkJICAgIHNzb2NrLT5wYXJhbS5yZWFkX2J1ZmZlcl9zaXplICsgCisJCQkJCSAgICBzaXplb2YocmVhZF9kYXRhX3QqKSk7CisgICAgfQorCisgICAgLyogU3RhcnQgcmVhZCAqLworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfc3RhcnRfcmVhZDIoc3NvY2stPmFzb2NrLCBzc29jay0+cG9vbCwgCisJCQkJICAgICAgICh1bnNpZ25lZClzc29jay0+cGFyYW0ucmVhZF9idWZmZXJfc2l6ZSwKKwkJCQkgICAgICAgc3NvY2stPmFzb2NrX3JidWYsCisJCQkJICAgICAgIFBKX0lPUVVFVUVfQUxXQVlTX0FTWU5DKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJZ290byBvbl9yZXR1cm47CisKKyAgICAvKiBQcmVwYXJlIHdyaXRlL3NlbmQgc3RhdGUgKi8KKyAgICBwal9hc3NlcnQoc3NvY2stPnNlbmRfYnVmLm1heF9sZW4gPT0gMCk7CisgICAgc3NvY2stPnNlbmRfYnVmLmJ1ZiA9IChjaGFyKikKKwkJCSAgICAgcGpfcG9vbF9hbGxvYyhzc29jay0+cG9vbCwgCisJCQkJCSAgIHNzb2NrLT5wYXJhbS5zZW5kX2J1ZmZlcl9zaXplKTsKKyAgICBzc29jay0+c2VuZF9idWYubWF4X2xlbiA9IHNzb2NrLT5wYXJhbS5zZW5kX2J1ZmZlcl9zaXplOworICAgIHNzb2NrLT5zZW5kX2J1Zi5zdGFydCA9IHNzb2NrLT5zZW5kX2J1Zi5idWY7CisgICAgc3NvY2stPnNlbmRfYnVmLmxlbiA9IDA7CisKKyNpZmRlZiBTU0xfc2V0X3Rsc2V4dF9ob3N0X25hbWUKKyAgICAvKiBTZXQgc2VydmVyIG5hbWUgdG8gY29ubmVjdCAqLworICAgIGlmIChzc29jay0+cGFyYW0uc2VydmVyX25hbWUuc2xlbikgeworCS8qIFNlcnZlciBuYW1lIGlzIG51bGwgdGVybWluYXRlZCBhbHJlYWR5ICovCisJaWYgKCFTU0xfc2V0X3Rsc2V4dF9ob3N0X25hbWUoc3NvY2stPm9zc2xfc3NsLCAKKwkJCQkgICAgICBzc29jay0+cGFyYW0uc2VydmVyX25hbWUucHRyKSkKKwl7CisJICAgIGNoYXIgZXJyX3N0cltQSl9FUlJfTVNHX1NJWkVdOworCisJICAgIEVSUl9lcnJvcl9zdHJpbmdfbihFUlJfZ2V0X2Vycm9yKCksIGVycl9zdHIsIHNpemVvZihlcnJfc3RyKSk7CisJICAgIFBKX0xPRygzLChzc29jay0+cG9vbC0+b2JqX25hbWUsICJTU0xfc2V0X3Rsc2V4dF9ob3N0X25hbWUoKSAiCisJCSJmYWlsZWQ6ICVzIiwgZXJyX3N0cikpOworCX0KKyAgICB9CisjZW5kaWYKKworICAgIC8qIFN0YXJ0IFNTTCBoYW5kc2hha2UgKi8KKyAgICBzc29jay0+c3NsX3N0YXRlID0gU1NMX1NUQVRFX0hBTkRTSEFLSU5HOworICAgIFNTTF9zZXRfY29ubmVjdF9zdGF0ZShzc29jay0+b3NzbF9zc2wpOworCisgICAgc3RhdHVzID0gZG9faGFuZHNoYWtlKHNzb2NrKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX0VQRU5ESU5HKQorCWdvdG8gb25fcmV0dXJuOworCisgICAgcmV0dXJuIFBKX1RSVUU7CisKK29uX3JldHVybjoKKyAgICByZXR1cm4gb25faGFuZHNoYWtlX2NvbXBsZXRlKHNzb2NrLCBzdGF0dXMpOworfQorCisKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBUEkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyogTG9hZCBjcmVkZW50aWFscyBmcm9tIGZpbGVzLiAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfY2VydF9sb2FkX2Zyb21fZmlsZXMgKHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJCSBjb25zdCBwal9zdHJfdCAqQ0FfZmlsZSwKKwkJCQkJCSBjb25zdCBwal9zdHJfdCAqY2VydF9maWxlLAorCQkJCQkJIGNvbnN0IHBqX3N0cl90ICpwcml2a2V5X2ZpbGUsCisJCQkJCQkgY29uc3QgcGpfc3RyX3QgKnByaXZrZXlfcGFzcywKKwkJCQkJCSBwal9zc2xfY2VydF90ICoqcF9jZXJ0KQoreworICAgIHBqX3NzbF9jZXJ0X3QgKmNlcnQ7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHBvb2wgJiYgQ0FfZmlsZSAmJiBjZXJ0X2ZpbGUgJiYgcHJpdmtleV9maWxlLCBQSl9FSU5WQUwpOworCisgICAgY2VydCA9IFBKX1BPT0xfWkFMTE9DX1QocG9vbCwgcGpfc3NsX2NlcnRfdCk7CisgICAgcGpfc3RyZHVwX3dpdGhfbnVsbChwb29sLCAmY2VydC0+Q0FfZmlsZSwgQ0FfZmlsZSk7CisgICAgcGpfc3RyZHVwX3dpdGhfbnVsbChwb29sLCAmY2VydC0+Y2VydF9maWxlLCBjZXJ0X2ZpbGUpOworICAgIHBqX3N0cmR1cF93aXRoX251bGwocG9vbCwgJmNlcnQtPnByaXZrZXlfZmlsZSwgcHJpdmtleV9maWxlKTsKKyAgICBwal9zdHJkdXBfd2l0aF9udWxsKHBvb2wsICZjZXJ0LT5wcml2a2V5X3Bhc3MsIHByaXZrZXlfcGFzcyk7CisKKyAgICAqcF9jZXJ0ID0gY2VydDsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qIFNldCBTU0wgc29ja2V0IGNyZWRlbnRpYWxzLiAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc2V0X2NlcnRpZmljYXRlKAorCQkJCQkgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJCSAgICBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICBjb25zdCBwal9zc2xfY2VydF90ICpjZXJ0KQoreworICAgIHBqX3NzbF9jZXJ0X3QgKmNlcnRfOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzc29jayAmJiBwb29sICYmIGNlcnQsIFBKX0VJTlZBTCk7CisKKyAgICBjZXJ0XyA9IFBKX1BPT0xfWkFMTE9DX1QocG9vbCwgcGpfc3NsX2NlcnRfdCk7CisgICAgcGpfbWVtY3B5KGNlcnRfLCBjZXJ0LCBzaXplb2YoY2VydCkpOworICAgIHBqX3N0cmR1cF93aXRoX251bGwocG9vbCwgJmNlcnRfLT5DQV9maWxlLCAmY2VydC0+Q0FfZmlsZSk7CisgICAgcGpfc3RyZHVwX3dpdGhfbnVsbChwb29sLCAmY2VydF8tPmNlcnRfZmlsZSwgJmNlcnQtPmNlcnRfZmlsZSk7CisgICAgcGpfc3RyZHVwX3dpdGhfbnVsbChwb29sLCAmY2VydF8tPnByaXZrZXlfZmlsZSwgJmNlcnQtPnByaXZrZXlfZmlsZSk7CisgICAgcGpfc3RyZHVwX3dpdGhfbnVsbChwb29sLCAmY2VydF8tPnByaXZrZXlfcGFzcywgJmNlcnQtPnByaXZrZXlfcGFzcyk7CisKKyAgICBzc29jay0+Y2VydCA9IGNlcnRfOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworLyogR2V0IGF2YWlsYWJsZSBjaXBoZXJzLiAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfY2lwaGVyX2dldF9hdmFpbGFibGVzKHBqX3NzbF9jaXBoZXIgY2lwaGVyc1tdLAorCQkJCQkgICAgICAgICB1bnNpZ25lZCAqY2lwaGVyX251bSkKK3sKKyAgICB1bnNpZ25lZCBpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihjaXBoZXJzICYmIGNpcGhlcl9udW0sIFBKX0VJTlZBTCk7CisKKyAgICBpZiAob3BlbnNzbF9jaXBoZXJfbnVtID09IDApIHsKKwlpbml0X29wZW5zc2woKTsKKwlzaHV0ZG93bl9vcGVuc3NsKCk7CisgICAgfQorCisgICAgaWYgKG9wZW5zc2xfY2lwaGVyX251bSA9PSAwKSB7CisJKmNpcGhlcl9udW0gPSAwOworCXJldHVybiBQSl9FTk9URk9VTkQ7CisgICAgfQorCisgICAgKmNpcGhlcl9udW0gPSBQSl9NSU4oKmNpcGhlcl9udW0sIG9wZW5zc2xfY2lwaGVyX251bSk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgKmNpcGhlcl9udW07ICsraSkKKwljaXBoZXJzW2ldID0gb3BlbnNzbF9jaXBoZXJzW2ldLmlkOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworLyogR2V0IGNpcGhlciBuYW1lIHN0cmluZyAqLworUEpfREVGKGNvbnN0IGNoYXIqKSBwal9zc2xfY2lwaGVyX25hbWUocGpfc3NsX2NpcGhlciBjaXBoZXIpCit7CisgICAgdW5zaWduZWQgaTsKKworICAgIGlmIChvcGVuc3NsX2NpcGhlcl9udW0gPT0gMCkgeworCWluaXRfb3BlbnNzbCgpOworCXNodXRkb3duX29wZW5zc2woKTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgb3BlbnNzbF9jaXBoZXJfbnVtOyArK2kpIHsKKwlpZiAoY2lwaGVyID09IG9wZW5zc2xfY2lwaGVyc1tpXS5pZCkKKwkgICAgcmV0dXJuIG9wZW5zc2xfY2lwaGVyc1tpXS5uYW1lOworICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCisvKiBDaGVjayBpZiB0aGUgc3BlY2lmaWVkIGNpcGhlciBpcyBzdXBwb3J0ZWQgYnkgU1NML1RMUyBiYWNrZW5kLiAqLworUEpfREVGKHBqX2Jvb2xfdCkgcGpfc3NsX2NpcGhlcl9pc19zdXBwb3J0ZWQocGpfc3NsX2NpcGhlciBjaXBoZXIpCit7CisgICAgdW5zaWduZWQgaTsKKworICAgIGlmIChvcGVuc3NsX2NpcGhlcl9udW0gPT0gMCkgeworCWluaXRfb3BlbnNzbCgpOworCXNodXRkb3duX29wZW5zc2woKTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgb3BlbnNzbF9jaXBoZXJfbnVtOyArK2kpIHsKKwlpZiAoY2lwaGVyID09IG9wZW5zc2xfY2lwaGVyc1tpXS5pZCkKKwkgICAgcmV0dXJuIFBKX1RSVUU7CisgICAgfQorCisgICAgcmV0dXJuIFBKX0ZBTFNFOworfQorCisKKy8qCisgKiBDcmVhdGUgU1NMIHNvY2tldCBpbnN0YW5jZS4gCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfY3JlYXRlIChwal9wb29sX3QgKnBvb2wsCisJCQkJCWNvbnN0IHBqX3NzbF9zb2NrX3BhcmFtICpwYXJhbSwKKwkJCQkJcGpfc3NsX3NvY2tfdCAqKnBfc3NvY2spCit7CisgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2s7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIHBhcmFtICYmIHBfc3NvY2ssIFBKX0VJTlZBTCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihwYXJhbS0+c29ja190eXBlID09IHBqX1NPQ0tfU1RSRUFNKCksIFBKX0VOT1RTVVApOworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKHBvb2wtPmZhY3RvcnksICJzc2wlcCIsIDUxMiwgNTEyLCBOVUxMKTsKKworICAgIC8qIENyZWF0ZSBzZWN1cmUgc29ja2V0ICovCisgICAgc3NvY2sgPSBQSl9QT09MX1pBTExPQ19UKHBvb2wsIHBqX3NzbF9zb2NrX3QpOworICAgIHNzb2NrLT5wb29sID0gcG9vbDsKKyAgICBzc29jay0+c29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIHNzb2NrLT5zc2xfc3RhdGUgPSBTU0xfU1RBVEVfTlVMTDsKKyAgICBwal9saXN0X2luaXQoJnNzb2NrLT53cml0ZV9wZW5kaW5nKTsKKyAgICBwal9saXN0X2luaXQoJnNzb2NrLT53cml0ZV9wZW5kaW5nX2VtcHR5KTsKKyAgICBwal9saXN0X2luaXQoJnNzb2NrLT5zZW5kX3BlbmRpbmcpOworICAgIHBqX3RpbWVyX2VudHJ5X2luaXQoJnNzb2NrLT50aW1lciwgMCwgc3NvY2ssICZvbl90aW1lcik7CisgICAgcGpfaW9xdWV1ZV9vcF9rZXlfaW5pdCgmc3NvY2stPmhhbmRzaGFrZV9vcF9rZXksCisJCQkgICBzaXplb2YocGpfaW9xdWV1ZV9vcF9rZXlfdCkpOworCisgICAgLyogQ3JlYXRlIHNlY3VyZSBzb2NrZXQgbXV0ZXggKi8KKyAgICBzdGF0dXMgPSBwal9sb2NrX2NyZWF0ZV9yZWN1cnNpdmVfbXV0ZXgocG9vbCwgcG9vbC0+b2JqX25hbWUsCisJCQkJCSAgICAmc3NvY2stPndyaXRlX211dGV4KTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHN0YXR1czsKKworICAgIC8qIEluaXQgc2VjdXJlIHNvY2tldCBwYXJhbSAqLworICAgIHNzb2NrLT5wYXJhbSA9ICpwYXJhbTsKKyAgICBzc29jay0+cGFyYW0ucmVhZF9idWZmZXJfc2l6ZSA9ICgoc3NvY2stPnBhcmFtLnJlYWRfYnVmZmVyX3NpemUrNyk+PjMpPDwzOworICAgIGlmIChwYXJhbS0+Y2lwaGVyc19udW0gPiAwKSB7CisJdW5zaWduZWQgaTsKKwlzc29jay0+cGFyYW0uY2lwaGVycyA9IChwal9zc2xfY2lwaGVyKikKKwkJCSAgICAgICBwal9wb29sX2NhbGxvYyhwb29sLCBwYXJhbS0+Y2lwaGVyc19udW0sIAorCQkJCQkgICAgICBzaXplb2YocGpfc3NsX2NpcGhlcikpOworCWZvciAoaSA9IDA7IGkgPCBwYXJhbS0+Y2lwaGVyc19udW07ICsraSkKKwkgICAgc3NvY2stPnBhcmFtLmNpcGhlcnNbaV0gPSBwYXJhbS0+Y2lwaGVyc1tpXTsKKyAgICB9CisKKyAgICAvKiBTZXJ2ZXIgbmFtZSBtdXN0IGJlIG51bGwtdGVybWluYXRlZCAqLworICAgIHBqX3N0cmR1cF93aXRoX251bGwocG9vbCwgJnNzb2NrLT5wYXJhbS5zZXJ2ZXJfbmFtZSwgCisJCQkmcGFyYW0tPnNlcnZlcl9uYW1lKTsKKworICAgIC8qIEZpbmFsbHkgKi8KKyAgICAqcF9zc29jayA9IHNzb2NrOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworLyoKKyAqIENsb3NlIHRoZSBzZWN1cmUgc29ja2V0LiBUaGlzIHdpbGwgdW5yZWdpc3RlciB0aGUgc29ja2V0IGZyb20gdGhlCisgKiBpb3F1ZXVlIGFuZCB1bHRpbWF0ZWx5IGNsb3NlIHRoZSBzb2NrZXQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfY2xvc2UocGpfc3NsX3NvY2tfdCAqc3NvY2spCit7CisgICAgcGpfcG9vbF90ICpwb29sOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzc29jaywgUEpfRUlOVkFMKTsKKworICAgIGlmICghc3NvY2stPnBvb2wpCisJcmV0dXJuIFBKX1NVQ0NFU1M7CisKKyAgICBpZiAoc3NvY2stPnRpbWVyLmlkICE9IFRJTUVSX05PTkUpIHsKKwlwal90aW1lcl9oZWFwX2NhbmNlbChzc29jay0+cGFyYW0udGltZXJfaGVhcCwgJnNzb2NrLT50aW1lcik7CisJc3NvY2stPnRpbWVyLmlkID0gVElNRVJfTk9ORTsKKyAgICB9CisKKyAgICByZXNldF9zc2xfc29ja19zdGF0ZShzc29jayk7CisgICAgcGpfbG9ja19kZXN0cm95KHNzb2NrLT53cml0ZV9tdXRleCk7CisgICAgCisgICAgcG9vbCA9IHNzb2NrLT5wb29sOworICAgIHNzb2NrLT5wb29sID0gTlVMTDsKKyAgICBpZiAocG9vbCkKKwlwal9wb29sX3JlbGVhc2UocG9vbCk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogQXNzb2NpYXRlIGFyYml0cmFyeSBkYXRhIHdpdGggdGhlIHNlY3VyZSBzb2NrZXQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc2V0X3VzZXJfZGF0YShwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgICAgdm9pZCAqdXNlcl9kYXRhKQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4oc3NvY2ssIFBKX0VJTlZBTCk7CisKKyAgICBzc29jay0+cGFyYW0udXNlcl9kYXRhID0gdXNlcl9kYXRhOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qCisgKiBSZXRyaWV2ZSB0aGUgdXNlciBkYXRhIHByZXZpb3VzbHkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2VjdXJlCisgKiBzb2NrZXQuCisgKi8KK1BKX0RFRih2b2lkKikgcGpfc3NsX3NvY2tfZ2V0X3VzZXJfZGF0YShwal9zc2xfc29ja190ICpzc29jaykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNzb2NrLCBOVUxMKTsKKworICAgIHJldHVybiBzc29jay0+cGFyYW0udXNlcl9kYXRhOworfQorCisKKy8qCisgKiBSZXRyaWV2ZSB0aGUgbG9jYWwgYWRkcmVzcyBhbmQgcG9ydCB1c2VkIGJ5IHNwZWNpZmllZCBTU0wgc29ja2V0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX2dldF9pbmZvIChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICBwal9zc2xfc29ja19pbmZvICppbmZvKQoreworICAgIHBqX2J6ZXJvKGluZm8sIHNpemVvZigqaW5mbykpOworCisgICAgLyogRXN0YWJsaXNoZWQgZmxhZyAqLworICAgIGluZm8tPmVzdGFibGlzaGVkID0gKHNzb2NrLT5zc2xfc3RhdGUgPT0gU1NMX1NUQVRFX0VTVEFCTElTSEVEKTsKKworICAgIC8qIFByb3RvY29sICovCisgICAgaW5mby0+cHJvdG8gPSBzc29jay0+cGFyYW0ucHJvdG87CisKKyAgICAvKiBMb2NhbCBhZGRyZXNzICovCisgICAgcGpfc29ja2FkZHJfY3AoJmluZm8tPmxvY2FsX2FkZHIsICZzc29jay0+bG9jYWxfYWRkcik7CisgICAgCisgICAgaWYgKGluZm8tPmVzdGFibGlzaGVkKSB7CisJY29uc3QgU1NMX0NJUEhFUiAqY2lwaGVyOworCisJLyogQ3VycmVudCBjaXBoZXIgKi8KKwljaXBoZXIgPSBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKHNzb2NrLT5vc3NsX3NzbCk7CisJaW5mby0+Y2lwaGVyID0gKGNpcGhlci0+aWQgJiAweDAwRkZGRkZGKTsKKworCS8qIFJlbW90ZSBhZGRyZXNzICovCisJcGpfc29ja2FkZHJfY3AoJmluZm8tPnJlbW90ZV9hZGRyLCAmc3NvY2stPnJlbV9hZGRyKTsKKworCS8qIENlcnRpZmljYXRlcyBpbmZvICovCisJaW5mby0+bG9jYWxfY2VydF9pbmZvID0gJnNzb2NrLT5sb2NhbF9jZXJ0X2luZm87CisJaW5mby0+cmVtb3RlX2NlcnRfaW5mbyA9ICZzc29jay0+cmVtb3RlX2NlcnRfaW5mbzsKKworCS8qIFZlcmlmaWNhdGlvbiBzdGF0dXMgKi8KKwlpbmZvLT52ZXJpZnlfc3RhdHVzID0gc3NvY2stPnZlcmlmeV9zdGF0dXM7CisgICAgfQorCisgICAgLyogTGFzdCBrbm93biBPcGVuU1NMIGVycm9yIGNvZGUgKi8KKyAgICBpbmZvLT5sYXN0X25hdGl2ZV9lcnIgPSBzc29jay0+bGFzdF9lcnI7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogU3RhcnRzIHJlYWQgb3BlcmF0aW9uIG9uIHRoaXMgc2VjdXJlIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19zdGFydF9yZWFkIChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgIHVuc2lnbmVkIGJ1ZmZfc2l6ZSwKKwkJCQkJICAgIHBqX3VpbnQzMl90IGZsYWdzKQoreworICAgIHZvaWQgKipyZWFkYnVmOworICAgIHVuc2lnbmVkIGk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNzb2NrICYmIHBvb2wgJiYgYnVmZl9zaXplLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc3NvY2stPnNzbF9zdGF0ZT09U1NMX1NUQVRFX0VTVEFCTElTSEVELCBQSl9FSU5WQUxJRE9QKTsKKworICAgIHJlYWRidWYgPSAodm9pZCoqKSBwal9wb29sX2NhbGxvYyhwb29sLCBzc29jay0+cGFyYW0uYXN5bmNfY250LCAKKwkJCQkgICAgICBzaXplb2Yodm9pZCopKTsKKworICAgIGZvciAoaT0wOyBpPHNzb2NrLT5wYXJhbS5hc3luY19jbnQ7ICsraSkgeworCXJlYWRidWZbaV0gPSBwal9wb29sX2FsbG9jKHBvb2wsIGJ1ZmZfc2l6ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHBqX3NzbF9zb2NrX3N0YXJ0X3JlYWQyKHNzb2NrLCBwb29sLCBidWZmX3NpemUsIAorCQkJCSAgIHJlYWRidWYsIGZsYWdzKTsKK30KKworCisvKgorICogU2FtZSBhcyAjcGpfc3NsX3NvY2tfc3RhcnRfcmVhZCgpLCBleGNlcHQgdGhhdCB0aGUgYXBwbGljYXRpb24KKyAqIHN1cHBsaWVzIHRoZSBidWZmZXJzIGZvciB0aGUgcmVhZCBvcGVyYXRpb24gc28gdGhhdCB0aGUgYWNpdmUgc29ja2V0CisgKiBkb2VzIG5vdCBoYXZlIHRvIGFsbG9jYXRlIHRoZSBidWZmZXJzLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3N0YXJ0X3JlYWQyIChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgICBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgdW5zaWduZWQgYnVmZl9zaXplLAorCQkJCQkgICAgIHZvaWQgKnJlYWRidWZbXSwKKwkJCQkJICAgICBwal91aW50MzJfdCBmbGFncykKK3sKKyAgICB1bnNpZ25lZCBpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzc29jayAmJiBwb29sICYmIGJ1ZmZfc2l6ZSAmJiByZWFkYnVmLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc3NvY2stPnNzbF9zdGF0ZT09U1NMX1NUQVRFX0VTVEFCTElTSEVELCBQSl9FSU5WQUxJRE9QKTsKKworICAgIC8qIENyZWF0ZSBTU0wgc29ja2V0IHJlYWQgYnVmZmVyICovCisgICAgc3NvY2stPnNzb2NrX3JidWYgPSAocmVhZF9kYXRhX3QqKXBqX3Bvb2xfY2FsbG9jKHBvb2wsIAorCQkJCQkgICAgICAgc3NvY2stPnBhcmFtLmFzeW5jX2NudCwKKwkJCQkJICAgICAgIHNpemVvZihyZWFkX2RhdGFfdCkpOworCisgICAgLyogU3RvcmUgU1NMIHNvY2tldCByZWFkIGJ1ZmZlciBwb2ludGVyIGluIHRoZSBhY3RpdmVzb2NrIHJlYWQgYnVmZmVyICovCisgICAgZm9yIChpPTA7IGk8c3NvY2stPnBhcmFtLmFzeW5jX2NudDsgKytpKSB7CisJcmVhZF9kYXRhX3QgKipwX3Nzb2NrX3JidWYgPSAKKwkJCU9GRlNFVF9PRl9SRUFEX0RBVEFfUFRSKHNzb2NrLCBzc29jay0+YXNvY2tfcmJ1ZltpXSk7CisKKwlzc29jay0+c3NvY2tfcmJ1ZltpXS5kYXRhID0gcmVhZGJ1ZltpXTsKKwlzc29jay0+c3NvY2tfcmJ1ZltpXS5sZW4gPSAwOworCisJKnBfc3NvY2tfcmJ1ZiA9ICZzc29jay0+c3NvY2tfcmJ1ZltpXTsKKyAgICB9CisKKyAgICBzc29jay0+cmVhZF9zaXplID0gYnVmZl9zaXplOworICAgIHNzb2NrLT5yZWFkX3N0YXJ0ZWQgPSBQSl9UUlVFOworICAgIHNzb2NrLT5yZWFkX2ZsYWdzID0gZmxhZ3M7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogU2FtZSBhcyBwal9zc2xfc29ja19zdGFydF9yZWFkKCksIGV4Y2VwdCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdXNlZAorICogb25seSBmb3IgZGF0YWdyYW0gc29ja2V0cywgYW5kIGl0IHdpbGwgdHJpZ2dlciBcYSBvbl9kYXRhX3JlY3Zmcm9tKCkKKyAqIGNhbGxiYWNrIGluc3RlYWQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc3RhcnRfcmVjdmZyb20gKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCQkJcGpfcG9vbF90ICpwb29sLAorCQkJCQkJdW5zaWduZWQgYnVmZl9zaXplLAorCQkJCQkJcGpfdWludDMyX3QgZmxhZ3MpCit7CisgICAgUEpfVU5VU0VEX0FSRyhzc29jayk7CisgICAgUEpfVU5VU0VEX0FSRyhwb29sKTsKKyAgICBQSl9VTlVTRURfQVJHKGJ1ZmZfc2l6ZSk7CisgICAgUEpfVU5VU0VEX0FSRyhmbGFncyk7CisKKyAgICByZXR1cm4gUEpfRU5PVFNVUDsKK30KKworCisvKgorICogU2FtZSBhcyAjcGpfc3NsX3NvY2tfc3RhcnRfcmVjdmZyb20oKSBleGNlcHQgdGhhdCB0aGUgcmVjdmZyb20oKSAKKyAqIG9wZXJhdGlvbiB0YWtlcyB0aGUgYnVmZmVyIGZyb20gdGhlIGFyZ3VtZW50IHJhdGhlciB0aGFuIGNyZWF0aW5nCisgKiBuZXcgb25lcy4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19zdGFydF9yZWN2ZnJvbTIgKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCQkJIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJCSB1bnNpZ25lZCBidWZmX3NpemUsCisJCQkJCQkgdm9pZCAqcmVhZGJ1ZltdLAorCQkJCQkJIHBqX3VpbnQzMl90IGZsYWdzKQoreworICAgIFBKX1VOVVNFRF9BUkcoc3NvY2spOworICAgIFBKX1VOVVNFRF9BUkcocG9vbCk7CisgICAgUEpfVU5VU0VEX0FSRyhidWZmX3NpemUpOworICAgIFBKX1VOVVNFRF9BUkcocmVhZGJ1Zik7CisgICAgUEpfVU5VU0VEX0FSRyhmbGFncyk7CisKKyAgICByZXR1cm4gUEpfRU5PVFNVUDsKK30KKworLyogV3JpdGUgcGxhaW4gZGF0YSB0byBTU0wgYW5kIGZsdXNoIHdyaXRlIEJJTy4gKi8KK3N0YXRpYyBwal9zdGF0dXNfdCBzc2xfd3JpdGUocGpfc3NsX3NvY2tfdCAqc3NvY2ssIAorCQkJICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpzZW5kX2tleSwKKwkJCSAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKwkJCSAgICAgcGpfc3NpemVfdCBzaXplLAorCQkJICAgICB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisgICAgaW50IG53cml0dGVuOworCisgICAgLyogV3JpdGUgdGhlIHBsYWluIGRhdGEgdG8gU1NMLCBhZnRlciBTU0wgZW5jcnlwdHMgaXQsIHdyaXRlIEJJTyB3aWxsCisgICAgICogY29udGFpbiB0aGUgc2VjdXJlZCBkYXRhIHRvIGJlIHNlbnQgdmlhIHNvY2tldC4gTm90ZSB0aGF0IHJlLQorICAgICAqIG5lZ290aXRhdGlvbiBtYXkgYmUgb24gcHJvZ3Jlc3MsIHNvIHNlbmRpbmcgZGF0YSBzaG91bGQgYmUgZGVsYXllZAorICAgICAqIHVudGlsIHJlLW5lZ290aWF0aW9uIGlzIGNvbXBsZXRlZC4KKyAgICAgKi8KKyAgICBwal9sb2NrX2FjcXVpcmUoc3NvY2stPndyaXRlX211dGV4KTsKKyAgICBud3JpdHRlbiA9IFNTTF93cml0ZShzc29jay0+b3NzbF9zc2wsIGRhdGEsIChpbnQpc2l6ZSk7CisgICAgcGpfbG9ja19yZWxlYXNlKHNzb2NrLT53cml0ZV9tdXRleCk7CisgICAgCisgICAgaWYgKG53cml0dGVuID09IHNpemUpIHsKKwkvKiBBbGwgZGF0YSB3cml0dGVuLCBmbHVzaCB3cml0ZSBCSU8gdG8gbmV0d29yayBzb2NrZXQgKi8KKwlzdGF0dXMgPSBmbHVzaF93cml0ZV9iaW8oc3NvY2ssIHNlbmRfa2V5LCBzaXplLCBmbGFncyk7CisgICAgfSBlbHNlIGlmIChud3JpdHRlbiA8PSAwKSB7CisJLyogU1NMIGZhaWxlZCB0byBwcm9jZXNzIHRoZSBkYXRhLCBpdCBtYXkganVzdCB0aGF0IHJlLW5lZ290aWF0aW9uCisJICogaXMgb24gcHJvZ3Jlc3MuCisJICovCisJaW50IGVycjsKKwllcnIgPSBTU0xfZ2V0X2Vycm9yKHNzb2NrLT5vc3NsX3NzbCwgbndyaXR0ZW4pOworCWlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCB8fCBlcnIgPT0gU1NMX0VSUk9SX05PTkUpIHsKKwkgICAgLyogUmUtbmVnb3RpYXRpb24gaXMgb24gcHJvZ3Jlc3MsIGZsdXNoIHJlLW5lZ290aWF0aW9uIGRhdGEgKi8KKwkgICAgc3RhdHVzID0gZmx1c2hfd3JpdGVfYmlvKHNzb2NrLCAmc3NvY2stPmhhbmRzaGFrZV9vcF9rZXksIDAsIDApOworCSAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MgfHwgc3RhdHVzID09IFBKX0VQRU5ESU5HKQorCQkvKiBKdXN0IHJldHVybiBQSl9FQlVTWSB3aGVuIHJlLW5lZ290aWF0aW9uIGlzIG9uIHByb2dyZXNzICovCisJCXN0YXR1cyA9IFBKX0VCVVNZOworCX0gZWxzZSB7CisJICAgIC8qIFNvbWUgcHJvYmxlbSBvY2N1cmVkICovCisJICAgIHN0YXR1cyA9IFNUQVRVU19GUk9NX1NTTF9FUlIoc3NvY2ssIGVycik7CisJfQorICAgIH0gZWxzZSB7CisJLyogbndyaXR0ZW4gPCAqc2l6ZSwgc2hvdWxkbid0IGhhcHBlbiwgdW5sZXNzIHdyaXRlIEJJTyBjYW5ub3QgaG9sZCAKKwkgKiB0aGUgd2hvbGUgc2VjdXJlZCBkYXRhLCBwZXJoYXBzIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IG1lbW9yeS4KKwkgKi8KKwlzdGF0dXMgPSBQSl9FTk9NRU07CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLyogRmx1c2ggZGVsYXllZCBkYXRhIHNlbmRpbmcgaW4gdGhlIHdyaXRlIHBlbmRpbmcgbGlzdC4gKi8KK3N0YXRpYyBwal9zdGF0dXNfdCBmbHVzaF9kZWxheWVkX3NlbmQocGpfc3NsX3NvY2tfdCAqc3NvY2spCit7CisgICAgLyogQ2hlY2sgZm9yIGFub3RoZXIgb25nb2luZyBmbHVzaCAqLworICAgIGlmIChzc29jay0+Zmx1c2hpbmdfd3JpdGVfcGVuZCkKKwlyZXR1cm4gUEpfRUJVU1k7CisKKyAgICBwal9sb2NrX2FjcXVpcmUoc3NvY2stPndyaXRlX211dGV4KTsKKworICAgIC8qIEFnYWluLCBjaGVjayBmb3IgYW5vdGhlciBvbmdvaW5nIGZsdXNoICovCisgICAgaWYgKHNzb2NrLT5mbHVzaGluZ193cml0ZV9wZW5kKSB7CisJcGpfbG9ja19yZWxlYXNlKHNzb2NrLT53cml0ZV9tdXRleCk7CisJcmV0dXJuIFBKX0VCVVNZOworICAgIH0KKworICAgIC8qIFNldCBvbmdvaW5nIGZsdXNoIGZsYWcgKi8KKyAgICBzc29jay0+Zmx1c2hpbmdfd3JpdGVfcGVuZCA9IFBKX1RSVUU7CisKKyAgICB3aGlsZSAoIXBqX2xpc3RfZW1wdHkoJnNzb2NrLT53cml0ZV9wZW5kaW5nKSkgeworICAgICAgICB3cml0ZV9kYXRhX3QgKndwOworCXBqX3N0YXR1c190IHN0YXR1czsKKworCXdwID0gc3NvY2stPndyaXRlX3BlbmRpbmcubmV4dDsKKworCS8qIFRpY2tldCAjMTU3MzogRG9uJ3QgaG9sZCBtdXRleCB3aGlsZSBjYWxsaW5nIHNvY2tldCBzZW5kLiAqLworCXBqX2xvY2tfcmVsZWFzZShzc29jay0+d3JpdGVfbXV0ZXgpOworCisJc3RhdHVzID0gc3NsX3dyaXRlKHNzb2NrLCAmd3AtPmtleSwgd3AtPmRhdGEucHRyLCAKKwkJCSAgIHdwLT5wbGFpbl9kYXRhX2xlbiwgd3AtPmZsYWdzKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgLyogUmVzZXQgb25nb2luZyBmbHVzaCBmbGFnIGZpcnN0LiAqLworCSAgICBzc29jay0+Zmx1c2hpbmdfd3JpdGVfcGVuZCA9IFBKX0ZBTFNFOworCSAgICByZXR1cm4gc3RhdHVzOworCX0KKworCXBqX2xvY2tfYWNxdWlyZShzc29jay0+d3JpdGVfbXV0ZXgpOworCXBqX2xpc3RfZXJhc2Uod3ApOworCXBqX2xpc3RfcHVzaF9iYWNrKCZzc29jay0+d3JpdGVfcGVuZGluZ19lbXB0eSwgd3ApOworICAgIH0KKworICAgIC8qIFJlc2V0IG9uZ29pbmcgZmx1c2ggZmxhZyAqLworICAgIHNzb2NrLT5mbHVzaGluZ193cml0ZV9wZW5kID0gUEpfRkFMU0U7CisKKyAgICBwal9sb2NrX3JlbGVhc2Uoc3NvY2stPndyaXRlX211dGV4KTsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKiBTZW5kaW5nIGlzIGRlbGF5ZWQsIHB1c2ggYmFjayB0aGUgc2VuZGluZyBkYXRhIGludG8gcGVuZGluZyBsaXN0LiAqLworc3RhdGljIHBqX3N0YXR1c190IGRlbGF5X3NlbmQgKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKnNlbmRfa2V5LAorCQkJICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisJCQkgICAgICAgcGpfc3NpemVfdCBzaXplLAorCQkJICAgICAgIHVuc2lnbmVkIGZsYWdzKQoreworICAgIHdyaXRlX2RhdGFfdCAqd3A7CisKKyAgICBwal9sb2NrX2FjcXVpcmUoc3NvY2stPndyaXRlX211dGV4KTsKKworICAgIC8qIEluaXQgd3JpdGUgcGVuZGluZyBpbnN0YW5jZSAqLworICAgIGlmICghcGpfbGlzdF9lbXB0eSgmc3NvY2stPndyaXRlX3BlbmRpbmdfZW1wdHkpKSB7CisJd3AgPSBzc29jay0+d3JpdGVfcGVuZGluZ19lbXB0eS5uZXh0OworCXBqX2xpc3RfZXJhc2Uod3ApOworICAgIH0gZWxzZSB7CisJd3AgPSBQSl9QT09MX1pBTExPQ19UKHNzb2NrLT5wb29sLCB3cml0ZV9kYXRhX3QpOworICAgIH0KKworICAgIHdwLT5hcHBfa2V5ID0gc2VuZF9rZXk7CisgICAgd3AtPnBsYWluX2RhdGFfbGVuID0gc2l6ZTsKKyAgICB3cC0+ZGF0YS5wdHIgPSBkYXRhOworICAgIHdwLT5mbGFncyA9IGZsYWdzOworCisgICAgcGpfbGlzdF9wdXNoX2JhY2soJnNzb2NrLT53cml0ZV9wZW5kaW5nLCB3cCk7CisgICAgCisgICAgcGpfbG9ja19yZWxlYXNlKHNzb2NrLT53cml0ZV9tdXRleCk7CisKKyAgICAvKiBNdXN0IHJldHVybiBQSl9FUEVORElORyAqLworICAgIHJldHVybiBQSl9FUEVORElORzsKK30KKworLyoqCisgKiBTZW5kIGRhdGEgdXNpbmcgdGhlIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19zZW5kIChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpzZW5kX2tleSwKKwkJCQkgICAgICBjb25zdCB2b2lkICpkYXRhLAorCQkJCSAgICAgIHBqX3NzaXplX3QgKnNpemUsCisJCQkJICAgICAgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzc29jayAmJiBkYXRhICYmIHNpemUgJiYgKCpzaXplPjApLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc3NvY2stPnNzbF9zdGF0ZT09U1NMX1NUQVRFX0VTVEFCTElTSEVELCBQSl9FSU5WQUxJRE9QKTsKKworICAgIC8vIFRpY2tldCAjMTU3MzogRG9uJ3QgaG9sZCBtdXRleCB3aGlsZSBjYWxsaW5nIFBKTElCIHNvY2tldCBzZW5kKCkuCisgICAgLy9wal9sb2NrX2FjcXVpcmUoc3NvY2stPndyaXRlX211dGV4KTsKKworICAgIC8qIEZsdXNoIGRlbGF5ZWQgc2VuZCBmaXJzdC4gU2VuZGluZyBkYXRhIG1pZ2h0IGJlIGRlbGF5ZWQgd2hlbiAKKyAgICAgKiByZS1uZWdvdGlhdGlvbiBpcyBvbi1wcm9ncmVzcy4KKyAgICAgKi8KKyAgICBzdGF0dXMgPSBmbHVzaF9kZWxheWVkX3NlbmQoc3NvY2spOworICAgIGlmIChzdGF0dXMgPT0gUEpfRUJVU1kpIHsKKwkvKiBSZS1uZWdvdGlhdGlvbiBvciBmbHVzaGluZyBpcyBvbiBwcm9ncmVzcywgZGVsYXkgc2VuZGluZyAqLworCXN0YXR1cyA9IGRlbGF5X3NlbmQoc3NvY2ssIHNlbmRfa2V5LCBkYXRhLCAqc2l6ZSwgZmxhZ3MpOworCWdvdG8gb25fcmV0dXJuOworICAgIH0gZWxzZSBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICAvKiBXcml0ZSBkYXRhIHRvIFNTTCAqLworICAgIHN0YXR1cyA9IHNzbF93cml0ZShzc29jaywgc2VuZF9rZXksIGRhdGEsICpzaXplLCBmbGFncyk7CisgICAgaWYgKHN0YXR1cyA9PSBQSl9FQlVTWSkgeworCS8qIFJlLW5lZ290aWF0aW9uIGlzIG9uIHByb2dyZXNzLCBkZWxheSBzZW5kaW5nICovCisJc3RhdHVzID0gZGVsYXlfc2VuZChzc29jaywgc2VuZF9rZXksIGRhdGEsICpzaXplLCBmbGFncyk7CisgICAgfQorCitvbl9yZXR1cm46CisgICAgLy9wal9sb2NrX3JlbGVhc2Uoc3NvY2stPndyaXRlX211dGV4KTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisKKy8qKgorICogU2VuZCBkYXRhZ3JhbSB1c2luZyB0aGUgc29ja2V0LgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3NlbmR0byAocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJCXBqX2lvcXVldWVfb3Bfa2V5X3QgKnNlbmRfa2V5LAorCQkJCQljb25zdCB2b2lkICpkYXRhLAorCQkJCQlwal9zc2l6ZV90ICpzaXplLAorCQkJCQl1bnNpZ25lZCBmbGFncywKKwkJCQkJY29uc3QgcGpfc29ja2FkZHJfdCAqYWRkciwKKwkJCQkJaW50IGFkZHJfbGVuKQoreworICAgIFBKX1VOVVNFRF9BUkcoc3NvY2spOworICAgIFBKX1VOVVNFRF9BUkcoc2VuZF9rZXkpOworICAgIFBKX1VOVVNFRF9BUkcoZGF0YSk7CisgICAgUEpfVU5VU0VEX0FSRyhzaXplKTsKKyAgICBQSl9VTlVTRURfQVJHKGZsYWdzKTsKKyAgICBQSl9VTlVTRURfQVJHKGFkZHIpOworICAgIFBKX1VOVVNFRF9BUkcoYWRkcl9sZW4pOworCisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKKworLyoqCisgKiBTdGFydHMgYXN5bmNocm9ub3VzIHNvY2tldCBhY2NlcHQoKSBvcGVyYXRpb25zIG9uIHRoaXMgc2VjdXJlIHNvY2tldC4gCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc3RhcnRfYWNjZXB0IChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgICAgcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICAgICBjb25zdCBwal9zb2NrYWRkcl90ICpsb2NhbGFkZHIsCisJCQkJCSAgICAgIGludCBhZGRyX2xlbikKK3sKKyAgICBwal9hY3RpdmVzb2NrX2NiIGFzb2NrX2NiOworICAgIHBqX2FjdGl2ZXNvY2tfY2ZnIGFzb2NrX2NmZzsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNzb2NrICYmIHBvb2wgJiYgbG9jYWxhZGRyICYmIGFkZHJfbGVuLCBQSl9FSU5WQUwpOworCisgICAgLyogQ3JlYXRlIHNvY2tldCAqLworICAgIHN0YXR1cyA9IHBqX3NvY2tfc29ja2V0KHNzb2NrLT5wYXJhbS5zb2NrX2FmLCBzc29jay0+cGFyYW0uc29ja190eXBlLCAwLCAKKwkJCSAgICAmc3NvY2stPnNvY2spOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlnb3RvIG9uX2Vycm9yOworCisgICAgLyogQXBwbHkgU09fUkVVU0VBRERSICovCisgICAgaWYgKHNzb2NrLT5wYXJhbS5yZXVzZV9hZGRyKSB7CisJaW50IGVuYWJsZWQgPSAxOworCXN0YXR1cyA9IHBqX3NvY2tfc2V0c29ja29wdChzc29jay0+c29jaywgcGpfU09MX1NPQ0tFVCgpLAorCQkJCSAgICBwal9TT19SRVVTRUFERFIoKSwKKwkJCQkgICAgJmVuYWJsZWQsIHNpemVvZihlbmFibGVkKSk7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIFBKX1BFUlJPUig0LChzc29jay0+cG9vbC0+b2JqX25hbWUsIHN0YXR1cywKKwkJICAgICAgICAgIldhcm5pbmc6IGVycm9yIGFwcGx5aW5nIFNPX1JFVVNFQUREUiIpKTsKKwl9CisgICAgfQorCisgICAgLyogQXBwbHkgUW9TLCBpZiBzcGVjaWZpZWQgKi8KKyAgICBzdGF0dXMgPSBwal9zb2NrX2FwcGx5X3FvczIoc3NvY2stPnNvY2ssIHNzb2NrLT5wYXJhbS5xb3NfdHlwZSwKKwkJCQkmc3NvY2stPnBhcmFtLnFvc19wYXJhbXMsIDIsIAorCQkJCXNzb2NrLT5wb29sLT5vYmpfbmFtZSwgTlVMTCk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTICYmICFzc29jay0+cGFyYW0ucW9zX2lnbm9yZV9lcnJvcikKKwlnb3RvIG9uX2Vycm9yOworCisgICAgLyogQmluZCBzb2NrZXQgKi8KKyAgICBzdGF0dXMgPSBwal9zb2NrX2JpbmQoc3NvY2stPnNvY2ssIGxvY2FsYWRkciwgYWRkcl9sZW4pOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlnb3RvIG9uX2Vycm9yOworCisgICAgLyogU3RhcnQgbGlzdGVuaW5nIHRvIHRoZSBhZGRyZXNzICovCisgICAgc3RhdHVzID0gcGpfc29ja19saXN0ZW4oc3NvY2stPnNvY2ssIFBKX1NPTUFYQ09OTik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fZXJyb3I7CisKKyAgICAvKiBDcmVhdGUgYWN0aXZlIHNvY2tldCAqLworICAgIHBqX2FjdGl2ZXNvY2tfY2ZnX2RlZmF1bHQoJmFzb2NrX2NmZyk7CisgICAgYXNvY2tfY2ZnLmFzeW5jX2NudCA9IHNzb2NrLT5wYXJhbS5hc3luY19jbnQ7CisgICAgYXNvY2tfY2ZnLmNvbmN1cnJlbmN5ID0gc3NvY2stPnBhcmFtLmNvbmN1cnJlbmN5OworICAgIGFzb2NrX2NmZy53aG9sZV9kYXRhID0gUEpfVFJVRTsKKworICAgIHBqX2J6ZXJvKCZhc29ja19jYiwgc2l6ZW9mKGFzb2NrX2NiKSk7CisgICAgYXNvY2tfY2Iub25fYWNjZXB0X2NvbXBsZXRlID0gYXNvY2tfb25fYWNjZXB0X2NvbXBsZXRlOworCisgICAgc3RhdHVzID0gcGpfYWN0aXZlc29ja19jcmVhdGUocG9vbCwKKwkJCQkgIHNzb2NrLT5zb2NrLCAKKwkJCQkgIHNzb2NrLT5wYXJhbS5zb2NrX3R5cGUsCisJCQkJICAmYXNvY2tfY2ZnLAorCQkJCSAgc3NvY2stPnBhcmFtLmlvcXVldWUsIAorCQkJCSAgJmFzb2NrX2NiLAorCQkJCSAgc3NvY2ssCisJCQkJICAmc3NvY2stPmFzb2NrKTsKKworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlnb3RvIG9uX2Vycm9yOworCisgICAgLyogU3RhcnQgYWNjZXB0aW5nICovCisgICAgc3RhdHVzID0gcGpfYWN0aXZlc29ja19zdGFydF9hY2NlcHQoc3NvY2stPmFzb2NrLCBwb29sKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJZ290byBvbl9lcnJvcjsKKworICAgIC8qIFVwZGF0ZSBsb2NhbCBhZGRyZXNzICovCisgICAgc3NvY2stPmFkZHJfbGVuID0gYWRkcl9sZW47CisgICAgc3RhdHVzID0gcGpfc29ja19nZXRzb2NrbmFtZShzc29jay0+c29jaywgJnNzb2NrLT5sb2NhbF9hZGRyLCAKKwkJCQkgJnNzb2NrLT5hZGRyX2xlbik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXBqX3NvY2thZGRyX2NwKCZzc29jay0+bG9jYWxfYWRkciwgbG9jYWxhZGRyKTsKKworICAgIHNzb2NrLT5pc19zZXJ2ZXIgPSBQSl9UUlVFOworCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7CisKK29uX2Vycm9yOgorICAgIHJlc2V0X3NzbF9zb2NrX3N0YXRlKHNzb2NrKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisKKy8qKgorICogU3RhcnRzIGFzeW5jaHJvbm91cyBzb2NrZXQgY29ubmVjdCgpIG9wZXJhdGlvbi4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc3RhcnRfY29ubmVjdChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgICAgIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgICAgIGNvbnN0IHBqX3NvY2thZGRyX3QgKmxvY2FsYWRkciwKKwkJCQkJICAgICAgIGNvbnN0IHBqX3NvY2thZGRyX3QgKnJlbWFkZHIsCisJCQkJCSAgICAgICBpbnQgYWRkcl9sZW4pCit7CisgICAgcGpfYWN0aXZlc29ja19jYiBhc29ja19jYjsKKyAgICBwal9hY3RpdmVzb2NrX2NmZyBhc29ja19jZmc7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzc29jayAmJiBwb29sICYmIGxvY2FsYWRkciAmJiByZW1hZGRyICYmIGFkZHJfbGVuLAorCQkgICAgIFBKX0VJTlZBTCk7CisKKyAgICAvKiBDcmVhdGUgc29ja2V0ICovCisgICAgc3RhdHVzID0gcGpfc29ja19zb2NrZXQoc3NvY2stPnBhcmFtLnNvY2tfYWYsIHNzb2NrLT5wYXJhbS5zb2NrX3R5cGUsIDAsIAorCQkJICAgICZzc29jay0+c29jayk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fZXJyb3I7CisKKyAgICAvKiBBcHBseSBRb1MsIGlmIHNwZWNpZmllZCAqLworICAgIHN0YXR1cyA9IHBqX3NvY2tfYXBwbHlfcW9zMihzc29jay0+c29jaywgc3NvY2stPnBhcmFtLnFvc190eXBlLAorCQkJCSZzc29jay0+cGFyYW0ucW9zX3BhcmFtcywgMiwgCisJCQkJc3NvY2stPnBvb2wtPm9ial9uYW1lLCBOVUxMKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgJiYgIXNzb2NrLT5wYXJhbS5xb3NfaWdub3JlX2Vycm9yKQorCWdvdG8gb25fZXJyb3I7CisKKyAgICAvKiBCaW5kIHNvY2tldCAqLworICAgIHN0YXR1cyA9IHBqX3NvY2tfYmluZChzc29jay0+c29jaywgbG9jYWxhZGRyLCBhZGRyX2xlbik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCWdvdG8gb25fZXJyb3I7CisKKyAgICAvKiBDcmVhdGUgYWN0aXZlIHNvY2tldCAqLworICAgIHBqX2FjdGl2ZXNvY2tfY2ZnX2RlZmF1bHQoJmFzb2NrX2NmZyk7CisgICAgYXNvY2tfY2ZnLmFzeW5jX2NudCA9IHNzb2NrLT5wYXJhbS5hc3luY19jbnQ7CisgICAgYXNvY2tfY2ZnLmNvbmN1cnJlbmN5ID0gc3NvY2stPnBhcmFtLmNvbmN1cnJlbmN5OworICAgIGFzb2NrX2NmZy53aG9sZV9kYXRhID0gUEpfVFJVRTsKKworICAgIHBqX2J6ZXJvKCZhc29ja19jYiwgc2l6ZW9mKGFzb2NrX2NiKSk7CisgICAgYXNvY2tfY2Iub25fY29ubmVjdF9jb21wbGV0ZSA9IGFzb2NrX29uX2Nvbm5lY3RfY29tcGxldGU7CisgICAgYXNvY2tfY2Iub25fZGF0YV9yZWFkID0gYXNvY2tfb25fZGF0YV9yZWFkOworICAgIGFzb2NrX2NiLm9uX2RhdGFfc2VudCA9IGFzb2NrX29uX2RhdGFfc2VudDsKKworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfY3JlYXRlKHBvb2wsCisJCQkJICBzc29jay0+c29jaywgCisJCQkJICBzc29jay0+cGFyYW0uc29ja190eXBlLAorCQkJCSAgJmFzb2NrX2NmZywKKwkJCQkgIHNzb2NrLT5wYXJhbS5pb3F1ZXVlLCAKKwkJCQkgICZhc29ja19jYiwKKwkJCQkgIHNzb2NrLAorCQkJCSAgJnNzb2NrLT5hc29jayk7CisKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJZ290byBvbl9lcnJvcjsKKworICAgIC8qIFNhdmUgcmVtb3RlIGFkZHJlc3MgKi8KKyAgICBwal9zb2NrYWRkcl9jcCgmc3NvY2stPnJlbV9hZGRyLCByZW1hZGRyKTsKKworICAgIC8qIFN0YXJ0IHRpbWVyICovCisgICAgaWYgKHNzb2NrLT5wYXJhbS50aW1lcl9oZWFwICYmIChzc29jay0+cGFyYW0udGltZW91dC5zZWMgIT0gMCB8fAorCXNzb2NrLT5wYXJhbS50aW1lb3V0Lm1zZWMgIT0gMCkpCisgICAgeworCXBqX2Fzc2VydChzc29jay0+dGltZXIuaWQgPT0gVElNRVJfTk9ORSk7CisJc3NvY2stPnRpbWVyLmlkID0gVElNRVJfSEFORFNIQUtFX1RJTUVPVVQ7CisJc3RhdHVzID0gcGpfdGltZXJfaGVhcF9zY2hlZHVsZShzc29jay0+cGFyYW0udGltZXJfaGVhcCwKKwkJCQkJJnNzb2NrLT50aW1lciwKKwkJCQkgICAgICAgICZzc29jay0+cGFyYW0udGltZW91dCk7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCSAgICBzc29jay0+dGltZXIuaWQgPSBUSU1FUl9OT05FOworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfc3RhcnRfY29ubmVjdChzc29jay0+YXNvY2ssIHBvb2wsIHJlbWFkZHIsCisJCQkJCSBhZGRyX2xlbik7CisKKyAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisJYXNvY2tfb25fY29ubmVjdF9jb21wbGV0ZShzc29jay0+YXNvY2ssIFBKX1NVQ0NFU1MpOworICAgIGVsc2UgaWYgKHN0YXR1cyAhPSBQSl9FUEVORElORykKKwlnb3RvIG9uX2Vycm9yOworCisgICAgLyogVXBkYXRlIGxvY2FsIGFkZHJlc3MgKi8KKyAgICBzc29jay0+YWRkcl9sZW4gPSBhZGRyX2xlbjsKKyAgICBzdGF0dXMgPSBwal9zb2NrX2dldHNvY2tuYW1lKHNzb2NrLT5zb2NrLCAmc3NvY2stPmxvY2FsX2FkZHIsCisJCQkJICZzc29jay0+YWRkcl9sZW4pOworICAgIC8qIE5vdGUgdGhhdCB3ZSBtYXkgbm90IGdldCBhbiBJUCBhZGRyZXNzIGhlcmUuIFRoaXMgY2FuCisgICAgICogaGFwcGVuIGZvciBleGFtcGxlIG9uIFdpbmRvd3MsIHdoZXJlIGdldHNvY2tuYW1lKCkKKyAgICAgKiB3b3VsZCByZXR1cm4gMC4wLjAuMCBpZiBzb2NrZXQgaGFzIGp1c3Qgc3RhcnRlZCB0aGUKKyAgICAgKiBhc3luYyBjb25uZWN0LiBJbiB0aGlzIGNhc2UsIGp1c3QgbGVhdmUgdGhlIGxvY2FsCisgICAgICogYWRkcmVzcyB3aXRoIDAuMC4wLjAgZm9yIG5vdzsgaXQgd2lsbCBiZSB1cGRhdGVkCisgICAgICogb25jZSB0aGUgc29ja2V0IGlzIGVzdGFibGlzaGVkLgorICAgICAqLworCisgICAgLyogVXBkYXRlIFNTTCBzdGF0ZSAqLworICAgIHNzb2NrLT5pc19zZXJ2ZXIgPSBQSl9GQUxTRTsKKworICAgIHJldHVybiBQSl9FUEVORElORzsKKworb25fZXJyb3I6CisgICAgcmVzZXRfc3NsX3NvY2tfc3RhdGUoc3NvY2spOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKKworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19yZW5lZ290aWF0ZShwal9zc2xfc29ja190ICpzc29jaykKK3sKKyAgICBpbnQgcmV0OworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oc3NvY2stPnNzbF9zdGF0ZSA9PSBTU0xfU1RBVEVfRVNUQUJMSVNIRUQsIFBKX0VJTlZBTElET1ApOworCisgICAgaWYgKFNTTF9yZW5lZ290aWF0ZV9wZW5kaW5nKHNzb2NrLT5vc3NsX3NzbCkpCisJcmV0dXJuIFBKX0VQRU5ESU5HOworCisgICAgcmV0ID0gU1NMX3JlbmVnb3RpYXRlKHNzb2NrLT5vc3NsX3NzbCk7CisgICAgaWYgKHJldCA8PSAwKSB7CisJc3RhdHVzID0gR0VUX1NTTF9TVEFUVVMoc3NvY2spOworICAgIH0gZWxzZSB7CisJc3RhdHVzID0gZG9faGFuZHNoYWtlKHNzb2NrKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisjZW5kaWYgIC8qIFBKX0hBU19TU0xfU09DSyAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc3NsX3NvY2tfc3ltYmlhbi5jcHAgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc3NsX3NvY2tfc3ltYmlhbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI5YjMxMQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zc2xfc29ja19zeW1iaWFuLmNwcApAQCAtMCwwICsxLDE0MjYgQEAKKy8qICRJZDogc3NsX3NvY2tfc3ltYmlhbi5jcHAgMzk5OSAyMDEyLTAzLTMwIDA3OjEwOjEzWiBiZW5ueWxwICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3NzbF9zb2NrLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3NvY2tldC5oPgorI2luY2x1ZGUgPHBqL2Fzc2VydC5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovbWF0aC5oPgorI2luY2x1ZGUgPHBqL3Bvb2wuaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisKKyNpbmNsdWRlICJvc19zeW1iaWFuLmgiCisjaW5jbHVkZSA8c2VjdXJlc29ja2V0Lmg+CisjaW5jbHVkZSA8eDUwOWNlcnQuaD4KKyNpbmNsdWRlIDxlMzJkZXM4Lmg+CisKKyNkZWZpbmUgVEhJU19GSUxFICJzc2xfc29ja19zeW1iaWFuLmNwcCIKKworCisvKiBDaXBoZXIgbmFtZSBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0IGNpcGhlcl9uYW1lX3QgeworICAgIHBqX3NzbF9jaXBoZXIgICAgY2lwaGVyOworICAgIGNvbnN0IGNoYXIJICAgICpuYW1lOworfSBjaXBoZXJfbmFtZV90OworCisvKiBDaXBoZXIgbmFtZSBjb25zdGFudHMgKi8KK3N0YXRpYyBjaXBoZXJfbmFtZV90IGNpcGhlcl9uYW1lc1tdID0KK3sKKyAgICB7UEpfVExTX05VTExfV0lUSF9OVUxMX05VTEwsICAgICAgICAgICAgICAgIk5VTEwifSwKKworICAgIC8qIFRMUy9TU0x2MyAqLworICAgIHtQSl9UTFNfUlNBX1dJVEhfTlVMTF9NRDUsICAgICAgICAgICAgICAgICAiVExTX1JTQV9XSVRIX05VTExfTUQ1In0sCisgICAge1BKX1RMU19SU0FfV0lUSF9OVUxMX1NIQSwgICAgICAgICAgICAgICAgICJUTFNfUlNBX1dJVEhfTlVMTF9TSEEifSwKKyAgICB7UEpfVExTX1JTQV9XSVRIX05VTExfU0hBMjU2LCAgICAgICAgICAgICAgIlRMU19SU0FfV0lUSF9OVUxMX1NIQTI1NiJ9LAorICAgIHtQSl9UTFNfUlNBX1dJVEhfUkM0XzEyOF9NRDUsICAgICAgICAgICAgICAiVExTX1JTQV9XSVRIX1JDNF8xMjhfTUQ1In0sCisgICAge1BKX1RMU19SU0FfV0lUSF9SQzRfMTI4X1NIQSwgICAgICAgICAgICAgICJUTFNfUlNBX1dJVEhfUkM0XzEyOF9TSEEifSwKKyAgICB7UEpfVExTX1JTQV9XSVRIXzNERVNfRURFX0NCQ19TSEEsICAgICAgICAgIlRMU19SU0FfV0lUSF8zREVTX0VERV9DQkNfU0hBIn0sCisgICAge1BKX1RMU19SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEsICAgICAgICAgICJUTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBIn0sCisgICAge1BKX1RMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEsICAgICAgICAgICJUTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIn0sCisgICAge1BKX1RMU19SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYsICAgICAgICJUTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2In0sCisgICAge1BKX1RMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEyNTYsICAgICAgICJUTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2In0sCisgICAge1BKX1RMU19ESF9EU1NfV0lUSF8zREVTX0VERV9DQkNfU0hBLCAgICAgICJUTFNfREhfRFNTX1dJVEhfM0RFU19FREVfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSwgICAgICAiVExTX0RIX1JTQV9XSVRIXzNERVNfRURFX0NCQ19TSEEifSwKKyAgICB7UEpfVExTX0RIRV9EU1NfV0lUSF8zREVTX0VERV9DQkNfU0hBLCAgICAgIlRMU19ESEVfRFNTX1dJVEhfM0RFU19FREVfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhFX1JTQV9XSVRIXzNERVNfRURFX0NCQ19TSEEsICAgICAiVExTX0RIRV9SU0FfV0lUSF8zREVTX0VERV9DQkNfU0hBIn0sCisgICAge1BKX1RMU19ESF9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEsICAgICAgICJUTFNfREhfRFNTX1dJVEhfQUVTXzEyOF9DQkNfU0hBIn0sCisgICAge1BKX1RMU19ESF9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEsICAgICAgICJUTFNfREhfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBIn0sCisgICAge1BKX1RMU19ESEVfRFNTX1dJVEhfQUVTXzEyOF9DQkNfU0hBLCAgICAgICJUTFNfREhFX0RTU19XSVRIX0FFU18xMjhfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSwgICAgICAiVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEifSwKKyAgICB7UEpfVExTX0RIX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NIQSwgICAgICAgIlRMU19ESF9EU1NfV0lUSF9BRVNfMjU2X0NCQ19TSEEifSwKKyAgICB7UEpfVExTX0RIX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSwgICAgICAgIlRMU19ESF9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEifSwKKyAgICB7UEpfVExTX0RIRV9EU1NfV0lUSF9BRVNfMjU2X0NCQ19TSEEsICAgICAgIlRMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIn0sCisgICAge1BKX1RMU19ESEVfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBLCAgICAgICJUTFNfREhFX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhfRFNTX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2LCAgICAiVExTX0RIX0RTU19XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiJ9LAorICAgIHtQSl9UTFNfREhfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2LCAgICAiVExTX0RIX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiJ9LAorICAgIHtQSl9UTFNfREhFX0RTU19XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiwgICAiVExTX0RIRV9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYifSwKKyAgICB7UEpfVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYsICAgIlRMU19ESEVfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2In0sCisgICAge1BKX1RMU19ESF9EU1NfV0lUSF9BRVNfMjU2X0NCQ19TSEEyNTYsICAgICJUTFNfREhfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2In0sCisgICAge1BKX1RMU19ESF9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEyNTYsICAgICJUTFNfREhfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2In0sCisgICAge1BKX1RMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2LCAgICJUTFNfREhFX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NiJ9LAorICAgIHtQSl9UTFNfREhFX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NiwgICAiVExTX0RIRV9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEyNTYifSwKKyAgICB7UEpfVExTX0RIX2Fub25fV0lUSF9SQzRfMTI4X01ENSwgICAgICAgICAgIlRMU19ESF9hbm9uX1dJVEhfUkM0XzEyOF9NRDUifSwKKyAgICB7UEpfVExTX0RIX2Fub25fV0lUSF8zREVTX0VERV9DQkNfU0hBLCAgICAgIlRMU19ESF9hbm9uX1dJVEhfM0RFU19FREVfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhfYW5vbl9XSVRIX0FFU18xMjhfQ0JDX1NIQSwgICAgICAiVExTX0RIX2Fub25fV0lUSF9BRVNfMTI4X0NCQ19TSEEifSwKKyAgICB7UEpfVExTX0RIX2Fub25fV0lUSF9BRVNfMjU2X0NCQ19TSEEsICAgICAgIlRMU19ESF9hbm9uX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIn0sCisgICAge1BKX1RMU19ESF9hbm9uX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2LCAgICJUTFNfREhfYW5vbl9XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiJ9LAorICAgIHtQSl9UTFNfREhfYW5vbl9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NiwgICAiVExTX0RIX2Fub25fV0lUSF9BRVNfMjU2X0NCQ19TSEEyNTYifSwKKworICAgIC8qIFRMUyAoZGVwcmVjYXRlZCkgKi8KKyAgICB7UEpfVExTX1JTQV9FWFBPUlRfV0lUSF9SQzRfNDBfTUQ1LCAgICAgICAgIlRMU19SU0FfRVhQT1JUX1dJVEhfUkM0XzQwX01ENSJ9LAorICAgIHtQSl9UTFNfUlNBX0VYUE9SVF9XSVRIX1JDMl9DQkNfNDBfTUQ1LCAgICAiVExTX1JTQV9FWFBPUlRfV0lUSF9SQzJfQ0JDXzQwX01ENSJ9LAorICAgIHtQSl9UTFNfUlNBX1dJVEhfSURFQV9DQkNfU0hBLCAgICAgICAgICAgICAiVExTX1JTQV9XSVRIX0lERUFfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfUlNBX0VYUE9SVF9XSVRIX0RFUzQwX0NCQ19TSEEsICAgICAiVExTX1JTQV9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBIn0sCisgICAge1BKX1RMU19SU0FfV0lUSF9ERVNfQ0JDX1NIQSwgICAgICAgICAgICAgICJUTFNfUlNBX1dJVEhfREVTX0NCQ19TSEEifSwKKyAgICB7UEpfVExTX0RIX0RTU19FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBLCAgIlRMU19ESF9EU1NfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhfRFNTX1dJVEhfREVTX0NCQ19TSEEsICAgICAgICAgICAiVExTX0RIX0RTU19XSVRIX0RFU19DQkNfU0hBIn0sCisgICAge1BKX1RMU19ESF9SU0FfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQSwgICJUTFNfREhfUlNBX0VYUE9SVF9XSVRIX0RFUzQwX0NCQ19TSEEifSwKKyAgICB7UEpfVExTX0RIX1JTQV9XSVRIX0RFU19DQkNfU0hBLCAgICAgICAgICAgIlRMU19ESF9SU0FfV0lUSF9ERVNfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhFX0RTU19FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBLCAiVExTX0RIRV9EU1NfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhFX0RTU19XSVRIX0RFU19DQkNfU0hBLCAgICAgICAgICAiVExTX0RIRV9EU1NfV0lUSF9ERVNfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhFX1JTQV9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBLCAiVExTX0RIRV9SU0FfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhFX1JTQV9XSVRIX0RFU19DQkNfU0hBLCAgICAgICAgICAiVExTX0RIRV9SU0FfV0lUSF9ERVNfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhfYW5vbl9FWFBPUlRfV0lUSF9SQzRfNDBfTUQ1LCAgICAiVExTX0RIX2Fub25fRVhQT1JUX1dJVEhfUkM0XzQwX01ENSJ9LAorICAgIHtQSl9UTFNfREhfYW5vbl9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBLCAiVExTX0RIX2Fub25fRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQSJ9LAorICAgIHtQSl9UTFNfREhfYW5vbl9XSVRIX0RFU19DQkNfU0hBLCAgICAgICAgICAiVExTX0RIX2Fub25fV0lUSF9ERVNfQ0JDX1NIQSJ9LAorCisgICAgLyogU1NMdjMgKi8KKyAgICB7UEpfU1NMX0ZPUlRFWlpBX0tFQV9XSVRIX05VTExfU0hBLCAgICAgICAgIlNTTF9GT1JURVpaQV9LRUFfV0lUSF9OVUxMX1NIQSJ9LAorICAgIHtQSl9TU0xfRk9SVEVaWkFfS0VBX1dJVEhfRk9SVEVaWkFfQ0JDX1NIQSwiU1NMX0ZPUlRFWlpBX0tFQV9XSVRIX0ZPUlRFWlpBX0NCQ19TSEEifSwKKyAgICB7UEpfU1NMX0ZPUlRFWlpBX0tFQV9XSVRIX1JDNF8xMjhfU0hBLCAgICAgIlNTTF9GT1JURVpaQV9LRUFfV0lUSF9SQzRfMTI4X1NIQSJ9LAorCisgICAgLyogU1NMdjIgKi8KKyAgICB7UEpfU1NMX0NLX1JDNF8xMjhfV0lUSF9NRDUsICAgICAgICAgICAgICAgIlNTTF9DS19SQzRfMTI4X1dJVEhfTUQ1In0sCisgICAge1BKX1NTTF9DS19SQzRfMTI4X0VYUE9SVDQwX1dJVEhfTUQ1LCAgICAgICJTU0xfQ0tfUkM0XzEyOF9FWFBPUlQ0MF9XSVRIX01ENSJ9LAorICAgIHtQSl9TU0xfQ0tfUkMyXzEyOF9DQkNfV0lUSF9NRDUsICAgICAgICAgICAiU1NMX0NLX1JDMl8xMjhfQ0JDX1dJVEhfTUQ1In0sCisgICAge1BKX1NTTF9DS19SQzJfMTI4X0NCQ19FWFBPUlQ0MF9XSVRIX01ENSwgICJTU0xfQ0tfUkMyXzEyOF9DQkNfRVhQT1JUNDBfV0lUSF9NRDUifSwKKyAgICB7UEpfU1NMX0NLX0lERUFfMTI4X0NCQ19XSVRIX01ENSwgICAgICAgICAgIlNTTF9DS19JREVBXzEyOF9DQkNfV0lUSF9NRDUifSwKKyAgICB7UEpfU1NMX0NLX0RFU182NF9DQkNfV0lUSF9NRDUsICAgICAgICAgICAgIlNTTF9DS19ERVNfNjRfQ0JDX1dJVEhfTUQ1In0sCisgICAge1BKX1NTTF9DS19ERVNfMTkyX0VERTNfQ0JDX1dJVEhfTUQ1LCAgICAgICJTU0xfQ0tfREVTXzE5Ml9FREUzX0NCQ19XSVRIX01ENSJ9Cit9OworCisKKy8qIEdldCBjaXBoZXIgbmFtZSBzdHJpbmcgKi8KK3N0YXRpYyBjb25zdCBjaGFyKiBnZXRfY2lwaGVyX25hbWUocGpfc3NsX2NpcGhlciBjaXBoZXIpCit7CisgICAgdW5zaWduZWQgaSwgbjsKKworICAgIG4gPSBQSl9BUlJBWV9TSVpFKGNpcGhlcl9uYW1lcyk7CisgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgIGlmIChjaXBoZXIgPT0gY2lwaGVyX25hbWVzW2ldLmNpcGhlcikKKyAgICAgICAgICAgcmV0dXJuIGNpcGhlcl9uYW1lc1tpXS5uYW1lOworICAgIH0KKworICAgIHJldHVybiAiQ0lQSEVSX1VOS05PV04iOworfQorCit0eXBlZGVmIHZvaWQgKCpDUGpTU0xTb2NrZXRfY2IpKGludCBlcnIsIHZvaWQgKmtleSk7CisKK2NsYXNzIENQalNTTFNvY2tldFJlYWRlciA6IHB1YmxpYyBDQWN0aXZlCit7CitwdWJsaWM6CisgICAgc3RhdGljIENQalNTTFNvY2tldFJlYWRlciAqTmV3TChDU2VjdXJlU29ja2V0ICZzb2NrKSAKKyAgICB7CisJQ1BqU1NMU29ja2V0UmVhZGVyICpzZWxmID0gbmV3IChFTGVhdmUpIAorCQkJCSAgIENQalNTTFNvY2tldFJlYWRlcihzb2NrKTsKKwlDbGVhbnVwU3RhY2s6OlB1c2hMKHNlbGYpOworCXNlbGYtPkNvbnN0cnVjdEwoKTsKKwlDbGVhbnVwU3RhY2s6OlBvcChzZWxmKTsKKwlyZXR1cm4gc2VsZjsKKyAgICB9CisKKyAgICB+Q1BqU1NMU29ja2V0UmVhZGVyKCkgeworCUNhbmNlbCgpOworICAgIH0KKworICAgIC8qIEFzeW5jaHJvbm91cyByZWFkIGZyb20gdGhlIHNvY2tldC4gKi8KKyAgICBpbnQgUmVhZChDUGpTU0xTb2NrZXRfY2IgY2IsIHZvaWQgKmtleSwgVFB0cjggJmRhdGEsIFRVaW50IGZsYWdzKQorICAgIHsKKwlQSl9BU1NFUlRfUkVUVVJOKCFJc0FjdGl2ZSgpLCBQSl9FQlVTWSk7CisJCisJY2JfID0gY2I7CisJa2V5XyA9IGtleTsKKwlzb2NrXy5SZWN2T25lT3JNb3JlKGRhdGEsIGlTdGF0dXMsIGxlbl9yZWNlaXZlZF8pOworCVNldEFjdGl2ZSgpOworCQorCXJldHVybiBQSl9FUEVORElORzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ1NlY3VyZVNvY2tldCAgCSZzb2NrXzsKKyAgICBDUGpTU0xTb2NrZXRfY2IJIGNiXzsKKyAgICB2b2lkCQkqa2V5XzsKKyAgICBUU29ja1hmckxlbmd0aCAgCSBsZW5fcmVjZWl2ZWRfOyAvKiBub3QgcmVhbGx5IHVzZWZ1bD8gKi8KKworICAgIHZvaWQgRG9DYW5jZWwoKSB7CisJc29ja18uQ2FuY2VsQWxsKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgUnVuTCgpIHsKKwkoKmNiXykoaVN0YXR1cy5JbnQoKSwga2V5Xyk7CisgICAgfQorCisgICAgQ1BqU1NMU29ja2V0UmVhZGVyKENTZWN1cmVTb2NrZXQgJnNvY2spIDogCisJQ0FjdGl2ZSgwKSwgc29ja18oc29jayksIGNiXyhOVUxMKSwga2V5XyhOVUxMKSAKKyAgICB7fQorICAgIAorICAgIHZvaWQgQ29uc3RydWN0TCgpIHsKKwlDQWN0aXZlU2NoZWR1bGVyOjpBZGQodGhpcyk7CisgICAgfQorfTsKKworY2xhc3MgQ1BqU1NMU29ja2V0IDogcHVibGljIENBY3RpdmUKK3sKK3B1YmxpYzoKKyAgICBlbnVtIHNzbF9zdGF0ZSB7CisJU1NMX1NUQVRFX05VTEwsCisJU1NMX1NUQVRFX0NPTk5FQ1RJTkcsCisJU1NMX1NUQVRFX0hBTkRTSEFLSU5HLAorCVNTTF9TVEFURV9FU1RBQkxJU0hFRAorICAgIH07CisgICAgCisgICAgc3RhdGljIENQalNTTFNvY2tldCAqTmV3TChjb25zdCBURGVzQzggJnNzbF9wcm90bywKKwkJCSAgICAgIHBqX3Fvc190eXBlIHFvc190eXBlLAorCQkJICAgICAgY29uc3QgcGpfcW9zX3BhcmFtcyAmcW9zX3BhcmFtcykgCisgICAgeworCUNQalNTTFNvY2tldCAqc2VsZiA9IG5ldyAoRUxlYXZlKSBDUGpTU0xTb2NrZXQocW9zX3R5cGUsIHFvc19wYXJhbXMpOworCUNsZWFudXBTdGFjazo6UHVzaEwoc2VsZik7CisJc2VsZi0+Q29uc3RydWN0TChzc2xfcHJvdG8pOworCUNsZWFudXBTdGFjazo6UG9wKHNlbGYpOworCXJldHVybiBzZWxmOworICAgIH0KKworICAgIH5DUGpTU0xTb2NrZXQoKSB7CisJQ2FuY2VsKCk7CisJQ2xlYW51cFN1Yk9iamVjdHMoKTsKKyAgICB9CisKKyAgICBpbnQgQ29ubmVjdChDUGpTU0xTb2NrZXRfY2IgY2IsIHZvaWQgKmtleSwgY29uc3QgVEluZXRBZGRyICZsb2NhbF9hZGRyLCAKKwkJY29uc3QgVEluZXRBZGRyICZyZW1fYWRkciwgCisJCWNvbnN0IFREZXNDOCAmc2VydmVybmFtZSA9IFRQdHJDOChOVUxMLDApLAorCQljb25zdCBURGVzQzggJmNpcGhlcnMgPSBUUHRyQzgoTlVMTCwwKSk7CisgICAgaW50IFNlbmQoQ1BqU1NMU29ja2V0X2NiIGNiLCB2b2lkICprZXksIGNvbnN0IFREZXNDOCAmYURlc2MsIFRVaW50IGZsYWdzKTsKKyAgICBpbnQgU2VuZFN5bmMoY29uc3QgVERlc0M4ICZhRGVzYywgVFVpbnQgZmxhZ3MpOworCisgICAgQ1BqU1NMU29ja2V0UmVhZGVyKiBHZXRSZWFkZXIoKTsKKyAgICBlbnVtIHNzbF9zdGF0ZSBHZXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlXzsgfQorICAgIGNvbnN0IFRJbmV0QWRkciogR2V0TG9jYWxBZGRyKCkgY29uc3QgeyByZXR1cm4gJmxvY2FsX2FkZHJfOyB9CisgICAgaW50IEdldENpcGhlcihURGVzOCAmY2lwaGVyKSBjb25zdCB7CisJaWYgKHNlY3VyZXNvY2tfKQorCSAgICByZXR1cm4gc2VjdXJlc29ja18tPkN1cnJlbnRDaXBoZXJTdWl0ZShjaXBoZXIpOworCXJldHVybiBLRXJyTm90Rm91bmQ7CisgICAgfQorICAgIGNvbnN0IENYNTA5Q2VydGlmaWNhdGUgKkdldFBlZXJDZXJ0KCkgeworCWlmIChzZWN1cmVzb2NrXykKKwkgICAgcmV0dXJuIHNlY3VyZXNvY2tfLT5TZXJ2ZXJDZXJ0KCk7CisJcmV0dXJuIE5VTEw7CisgICAgfQorCitwcml2YXRlOgorICAgIGVudW0gc3NsX3N0YXRlCSBzdGF0ZV87CisgICAgcGpfc29ja190CSAgICAJIHNvY2tfOworICAgIENTZWN1cmVTb2NrZXQgIAkqc2VjdXJlc29ja187CisgICAgYm9vbAkgICAgCSBpc19jb25uZWN0ZWRfOworICAgIAorICAgIHBqX3Fvc190eXBlIAkgcW9zX3R5cGVfOworICAgIHBqX3Fvc19wYXJhbXMgCSBxb3NfcGFyYW1zXzsKKyAgICAJCQkgICAgICAKKyAgICBDUGpTU0xTb2NrZXRSZWFkZXIgICpyZWFkZXJfOworICAgIFRCdWY8MzI+IAkgICAgCSBzc2xfcHJvdG9fOworICAgIFRJbmV0QWRkciAgICAgICAJIHJlbV9hZGRyXzsKKyAgICBUUHRyQzgJCSBzZXJ2ZXJuYW1lXzsKKyAgICBUUHRyQzgJCSBjaXBoZXJzXzsKKyAgICBUSW5ldEFkZHIgICAgICAgCSBsb2NhbF9hZGRyXzsKKyAgICBUU29ja1hmckxlbmd0aCAJIHNlbnRfbGVuXzsKKworICAgIENQalNTTFNvY2tldF9jYiAJIGNiXzsKKyAgICB2b2lkIAkgICAJKmtleV87CisgICAgCisgICAgdm9pZCBEb0NhbmNlbCgpOworICAgIHZvaWQgUnVuTCgpOworCisgICAgQ1BqU1NMU29ja2V0KHBqX3Fvc190eXBlIHFvc190eXBlLCBjb25zdCBwal9xb3NfcGFyYW1zICZxb3NfcGFyYW1zKSA6CisJQ0FjdGl2ZSgwKSwgc3RhdGVfKFNTTF9TVEFURV9OVUxMKSwgc29ja18oUEpfSU5WQUxJRF9TT0NLRVQpLCAKKwlzZWN1cmVzb2NrXyhOVUxMKSwgaXNfY29ubmVjdGVkXyhmYWxzZSksCisJcW9zX3R5cGVfKHFvc190eXBlKSwgcW9zX3BhcmFtc18ocW9zX3BhcmFtcyksCisJcmVhZGVyXyhOVUxMKSwgCWNiXyhOVUxMKSwga2V5XyhOVUxMKQorICAgIHt9CisgICAgCisgICAgdm9pZCBDb25zdHJ1Y3RMKGNvbnN0IFREZXNDOCAmc3NsX3Byb3RvKSB7CisJc3NsX3Byb3RvXy5Db3B5KHNzbF9wcm90byk7CisJQ0FjdGl2ZVNjaGVkdWxlcjo6QWRkKHRoaXMpOworICAgIH0KKworICAgIHZvaWQgQ2xlYW51cFN1Yk9iamVjdHMoKSB7CisJZGVsZXRlIHJlYWRlcl87CisJcmVhZGVyXyA9IE5VTEw7CisJaWYgKHNlY3VyZXNvY2tfKSB7CisJICAgIGlmIChzdGF0ZV8gPT0gU1NMX1NUQVRFX0VTVEFCTElTSEVEKQorCQlzZWN1cmVzb2NrXy0+Q2xvc2UoKTsKKwkgICAgZGVsZXRlIHNlY3VyZXNvY2tfOworCSAgICBzZWN1cmVzb2NrXyA9IE5VTEw7CisJfQorCWlmIChzb2NrXyAhPSBQSl9JTlZBTElEX1NPQ0tFVCkgeworCSAgICBwal9zb2NrX2Nsb3NlKHNvY2tfKTsKKwkgICAgc29ja18gPSBQSl9JTlZBTElEX1NPQ0tFVDsKKwl9CSAgICAKKyAgICB9Cit9OworCitpbnQgQ1BqU1NMU29ja2V0OjpDb25uZWN0KENQalNTTFNvY2tldF9jYiBjYiwgdm9pZCAqa2V5LCAKKwkJCSAgY29uc3QgVEluZXRBZGRyICZsb2NhbF9hZGRyLCAKKwkJCSAgY29uc3QgVEluZXRBZGRyICZyZW1fYWRkciwKKwkJCSAgY29uc3QgVERlc0M4ICZzZXJ2ZXJuYW1lLAorCQkJICBjb25zdCBURGVzQzggJmNpcGhlcnMpCit7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworICAgIAorICAgIFBKX0FTU0VSVF9SRVRVUk4oc3RhdGVfID09IFNTTF9TVEFURV9OVUxMLCBQSl9FSU5WQUxJRE9QKTsKKyAgICAKKyAgICBzdGF0dXMgPSBwal9zb2NrX3NvY2tldChyZW1fYWRkci5GYW1pbHkoKSwgcGpfU09DS19TVFJFQU0oKSwgMCwgJnNvY2tfKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHN0YXR1czsKKworICAgIC8vIEFwcGx5IFFvUworICAgIHN0YXR1cyA9IHBqX3NvY2tfYXBwbHlfcW9zMihzb2NrXywgcW9zX3R5cGVfLCAmcW9zX3BhcmFtc18sIAorICAgIAkJCQkyLCAgVEhJU19GSUxFLCBOVUxMKTsKKyAgICAKKyAgICBSU29ja2V0ICZyU29jayA9ICgoQ1BqU29ja2V0Kilzb2NrXyktPlNvY2tldCgpOworCisgICAgbG9jYWxfYWRkcl8gPSBsb2NhbF9hZGRyOworICAgIAorICAgIGlmICghbG9jYWxfYWRkcl8uSXNVbnNwZWNpZmllZCgpKSB7CisJVEludCBlcnIgPSByU29jay5CaW5kKGxvY2FsX2FkZHJfKTsKKwlpZiAoZXJyICE9IEtFcnJOb25lKQorCSAgICByZXR1cm4gUEpfUkVUVVJOX09TX0VSUk9SKGVycik7CisgICAgfQorICAgIAorICAgIGNiXyA9IGNiOworICAgIGtleV8gPSBrZXk7CisgICAgcmVtX2FkZHJfID0gcmVtX2FkZHI7CisgICAgCisgICAgLyogTm90ZTogdGhlIGZvbGxvd2luZyBtZW1iZXJzIG9ubHkga2VlcCB0aGUgcG9pbnRlciwgbm90IHRoZSBkYXRhICovCisgICAgc2VydmVybmFtZV8uU2V0KHNlcnZlcm5hbWUpOworICAgIGNpcGhlcnNfLlNldChjaXBoZXJzKTsKKworICAgIHJTb2NrLkNvbm5lY3QocmVtX2FkZHJfLCBpU3RhdHVzKTsKKyAgICBTZXRBY3RpdmUoKTsKKyAgICBzdGF0ZV8gPSBTU0xfU1RBVEVfQ09OTkVDVElORzsKKyAgICAKKyAgICByU29jay5Mb2NhbE5hbWUobG9jYWxfYWRkcl8pOworCisgICAgcmV0dXJuIFBKX0VQRU5ESU5HOworfQorCitpbnQgQ1BqU1NMU29ja2V0OjpTZW5kKENQalNTTFNvY2tldF9jYiBjYiwgdm9pZCAqa2V5LCBjb25zdCBURGVzQzggJmFEZXNjLCAKKwkJICAgICAgIFRVaW50IGZsYWdzKQoreworICAgIFBKX1VOVVNFRF9BUkcoZmxhZ3MpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzdGF0ZV8gPT0gU1NMX1NUQVRFX0VTVEFCTElTSEVELCBQSl9FSU5WQUxJRE9QKTsKKyAgICAKKyAgICBpZiAoSXNBY3RpdmUoKSkKKwlyZXR1cm4gUEpfRUJVU1k7CisgICAgCisgICAgY2JfID0gY2I7CisgICAga2V5XyA9IGtleTsKKyAgICAKKyAgICBzZWN1cmVzb2NrXy0+U2VuZChhRGVzYywgaVN0YXR1cywgc2VudF9sZW5fKTsKKyAgICBTZXRBY3RpdmUoKTsKKyAgICAKKyAgICByZXR1cm4gUEpfRVBFTkRJTkc7Cit9CisKK2ludCBDUGpTU0xTb2NrZXQ6OlNlbmRTeW5jKGNvbnN0IFREZXNDOCAmYURlc2MsIFRVaW50IGZsYWdzKQoreworICAgIFBKX1VOVVNFRF9BUkcoZmxhZ3MpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihzdGF0ZV8gPT0gU1NMX1NUQVRFX0VTVEFCTElTSEVELCBQSl9FSU5WQUxJRE9QKTsKKyAgICAKKyAgICBUUmVxdWVzdFN0YXR1cyByZXFTdGF0dXM7CisgICAgc2VjdXJlc29ja18tPlNlbmQoYURlc2MsIHJlcVN0YXR1cywgc2VudF9sZW5fKTsKKyAgICBVc2VyOjpXYWl0Rm9yUmVxdWVzdChyZXFTdGF0dXMpOworICAgIAorICAgIHJldHVybiBQSl9SRVRVUk5fT1NfRVJST1IocmVxU3RhdHVzLkludCgpKTsKK30KKworQ1BqU1NMU29ja2V0UmVhZGVyKiBDUGpTU0xTb2NrZXQ6OkdldFJlYWRlcigpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzdGF0ZV8gPT0gU1NMX1NUQVRFX0VTVEFCTElTSEVELCBOVUxMKTsKKyAgICAKKyAgICBpZiAocmVhZGVyXykKKwlyZXR1cm4gcmVhZGVyXzsKKyAgICAKKyAgICBUUkFQRChlcnIsCXJlYWRlcl8gPSBDUGpTU0xTb2NrZXRSZWFkZXI6Ok5ld0woKnNlY3VyZXNvY2tfKSk7CisgICAgaWYgKGVyciAhPSBLRXJyTm9uZSkKKwlyZXR1cm4gTlVMTDsKKyAgICAKKyAgICByZXR1cm4gcmVhZGVyXzsKK30KKwordm9pZCBDUGpTU0xTb2NrZXQ6OkRvQ2FuY2VsKCkKK3sKKyAgICAvKiBPcGVyYXRpb24gdG8gYmUgY2FuY2VsbGVkIGRlcGVuZHMgb24gY3VycmVudCBzdGF0ZSAqLworICAgIHN3aXRjaCAoc3RhdGVfKSB7CisgICAgY2FzZSBTU0xfU1RBVEVfQ09OTkVDVElORzoKKwl7CisJICAgIFJTb2NrZXQgJnJTb2NrID0gKChDUGpTb2NrZXQqKXNvY2tfKS0+U29ja2V0KCk7CisKKwkgICAgclNvY2suQ2FuY2VsQ29ubmVjdCgpOworCSAgICBDbGVhbnVwU3ViT2JqZWN0cygpOworCSAgICBzdGF0ZV8gPSBTU0xfU1RBVEVfTlVMTDsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBTU0xfU1RBVEVfSEFORFNIQUtJTkc6CisJeworCSAgICBzZWN1cmVzb2NrXy0+Q2FuY2VsSGFuZHNoYWtlKCk7CisJICAgIENsZWFudXBTdWJPYmplY3RzKCk7CisJICAgIHN0YXRlXyA9IFNTTF9TVEFURV9OVUxMOworCX0KKwlicmVhazsKKyAgICBjYXNlIFNTTF9TVEFURV9FU1RBQkxJU0hFRDoKKwlzZWN1cmVzb2NrXy0+Q2FuY2VsU2VuZCgpOworCWJyZWFrOworICAgIGRlZmF1bHQ6CisJYnJlYWs7CisgICAgfQorfQorCit2b2lkIENQalNTTFNvY2tldDo6UnVuTCgpCit7CisgICAgc3dpdGNoIChzdGF0ZV8pIHsKKyAgICBjYXNlIFNTTF9TVEFURV9DT05ORUNUSU5HOgorCWlmIChpU3RhdHVzICE9IEtFcnJOb25lKSB7CisJICAgIENsZWFudXBTdWJPYmplY3RzKCk7CisJICAgIHN0YXRlXyA9IFNTTF9TVEFURV9OVUxMOworCSAgICAvKiBEaXNwYXRjaCBjb25uZWN0IGZhaWx1cmUgbm90aWZpY2F0aW9uICovCisJICAgIGlmIChjYl8pICgqY2JfKShpU3RhdHVzLkludCgpLCBrZXlfKTsKKwl9IGVsc2UgeworCSAgICBSU29ja2V0ICZyU29jayA9ICgoQ1BqU29ja2V0Kilzb2NrXyktPlNvY2tldCgpOworCisJICAgIC8qIEdldCBsb2NhbCBhZGRyICovCisJICAgIHJTb2NrLkxvY2FsTmFtZShsb2NhbF9hZGRyXyk7CisJICAgIAorCSAgICAvKiBQcmVwYXJlIGFuZCBzdGFydCBoYW5kc2hha2UgKi8KKwkgICAgc2VjdXJlc29ja18gPSBDU2VjdXJlU29ja2V0OjpOZXdMKHJTb2NrLCBzc2xfcHJvdG9fKTsKKwkgICAgc2VjdXJlc29ja18tPlNldERpYWxvZ01vZGUoRURpYWxvZ01vZGVBdHRlbmRlZCk7CisJICAgIGlmIChzZXJ2ZXJuYW1lXy5MZW5ndGgoKSA+IDApCisJCXNlY3VyZXNvY2tfLT5TZXRPcHQoS1NvU1NMRG9tYWluTmFtZSwgS1NvbEluZXRTU0wsCisJCQkJICAgIHNlcnZlcm5hbWVfKTsKKwkgICAgaWYgKGNpcGhlcnNfLkxlbmd0aCgpID4gMCkKKwkJc2VjdXJlc29ja18tPlNldEF2YWlsYWJsZUNpcGhlclN1aXRlcyhjaXBoZXJzXyk7CisKKwkgICAgLy8gRmx1c2hTZXNzaW9uQ2FjaGUoKSBzZWVtcyB0byBhbHNvIGZpcmUgc2lnbmFscyB0byBhbGwgCisJICAgIC8vIGNvbXBsZXRlZCBBT3MgKHNvbWV0aGluZyBsaWtlIENBY3RpdmVTY2hlZHVsZXI6OlJ1bklmUmVhZHkoKSkKKwkgICAgLy8gd2hpY2ggbWF5IGNhdXNlIHByb2JsZW0sIGUuZzogd2UndmUgZXhwZXJpZW5jZWQgdGhhdCB3aGVuIAorCSAgICAvLyBTU0wgdGltZW91dCBpcyBzZXQgdG8gMXMsIHRoZSBTU0wgdGltZW91dCB0aW1lciBmaXJlcyB1cAorCSAgICAvLyBhdCB0aGlzIHBvaW50IGFuZCBzZWN1cmVzb2NrXyBpbnN0YW5jZSBnZXRzIGRlbGV0ZWQgaGVyZSEKKwkgICAgLy8gU28gYmUgY2FyZWZ1bCB1c2luZyB0aGlzLiBBbmQgd2UgZG9uJ3QgdGhpbmsgd2UgbmVlZCBpdCBoZXJlLgorCSAgICAvL3NlY3VyZXNvY2tfLT5GbHVzaFNlc3Npb25DYWNoZSgpOworCisJICAgIHNlY3VyZXNvY2tfLT5TdGFydENsaWVudEhhbmRzaGFrZShpU3RhdHVzKTsKKwkgICAgU2V0QWN0aXZlKCk7CisJICAgIHN0YXRlXyA9IFNTTF9TVEFURV9IQU5EU0hBS0lORzsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBTU0xfU1RBVEVfSEFORFNIQUtJTkc6CisJaWYgKGlTdGF0dXMgPT0gS0Vyck5vbmUpIHsKKwkgICAgc3RhdGVfID0gU1NMX1NUQVRFX0VTVEFCTElTSEVEOworCX0gZWxzZSB7CisJICAgIHN0YXRlXyA9IFNTTF9TVEFURV9OVUxMOworCSAgICBDbGVhbnVwU3ViT2JqZWN0cygpOworCX0KKwkvKiBEaXNwYXRjaCBjb25uZWN0IHN0YXR1cyBub3RpZmljYXRpb24gKi8KKwlpZiAoY2JfKSAoKmNiXykoaVN0YXR1cy5JbnQoKSwga2V5Xyk7CisJYnJlYWs7CisgICAgY2FzZSBTU0xfU1RBVEVfRVNUQUJMSVNIRUQ6CisJLyogRGlzcGF0Y2ggZGF0YSBzZW50IG5vdGlmaWNhdGlvbiAqLworCWlmIChjYl8pICgqY2JfKShpU3RhdHVzLkludCgpLCBrZXlfKTsKKwlicmVhazsKKyAgICBkZWZhdWx0OgorCXBqX2Fzc2VydCgwKTsKKwlicmVhazsKKyAgICB9Cit9CisKK3R5cGVkZWYgdm9pZCAoKkNQalRpbWVyX2NiKSh2b2lkICp1c2VyX2RhdGEpOworCitjbGFzcyBDUGpUaW1lciA6IHB1YmxpYyBDQWN0aXZlIAoreworcHVibGljOgorICAgIENQalRpbWVyKGNvbnN0IHBqX3RpbWVfdmFsICpkZWxheSwgQ1BqVGltZXJfY2IgY2IsIHZvaWQgKnVzZXJfZGF0YSkgOiAKKwlDQWN0aXZlKDApLCBjYl8oY2IpLCB1c2VyX2RhdGFfKHVzZXJfZGF0YSkKKyAgICB7CisJQ0FjdGl2ZVNjaGVkdWxlcjo6QWRkKHRoaXMpOworCisJcnRpbWVyXy5DcmVhdGVMb2NhbCgpOworCXBqX2ludDMyX3QgaW50ZXJ2YWwgPSBQSl9USU1FX1ZBTF9NU0VDKCpkZWxheSkgKiAxMDAwOworCWlmIChpbnRlcnZhbCA8IDApIHsKKwkgICAgaW50ZXJ2YWwgPSAwOworCX0KKwlydGltZXJfLkFmdGVyKGlTdGF0dXMsIGludGVydmFsKTsKKwlTZXRBY3RpdmUoKTsKKyAgICB9CisgICAgCisgICAgfkNQalRpbWVyKCkgeyBDYW5jZWwoKTsgfQorICAgIAorcHJpdmF0ZToJCisgICAgUlRpbWVyCQkgcnRpbWVyXzsKKyAgICBDUGpUaW1lcl9jYgkJIGNiXzsKKyAgICB2b2lkCQkqdXNlcl9kYXRhXzsKKyAgICAKKyAgICB2b2lkIFJ1bkwoKSB7IGlmIChjYl8pICgqY2JfKSh1c2VyX2RhdGFfKTsgfQorICAgIHZvaWQgRG9DYW5jZWwoKSB7IHJ0aW1lcl8uQ2FuY2VsKCk7IH0KK307CisKKy8qCisgKiBTdHJ1Y3R1cmUgb2YgcmVjdi9yZWFkIHN0YXRlLgorICovCit0eXBlZGVmIHN0cnVjdCByZWFkX3N0YXRlX3QgeworICAgIFRQdHI4CQkqcmVhZF9idWY7CisgICAgVFB0cjgJCSpvcmlnX2J1ZjsKKyAgICBwal91aW50MzJfdAkJIGZsYWdzOyAgICAKK30gcmVhZF9zdGF0ZV90OworCisvKgorICogU3RydWN0dXJlIG9mIHNlbmQvd3JpdGUgZGF0YS4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qgd3JpdGVfZGF0YV90IHsKKyAgICBwal9zaXplX3QgCSAJIGxlbjsKKyAgICBwal9pb3F1ZXVlX29wX2tleV90CSprZXk7CisgICAgcGpfc2l6ZV90IAkgCSBkYXRhX2xlbjsKKyAgICBjaGFyCQkgZGF0YVsxXTsKK30gd3JpdGVfZGF0YV90OworCisvKgorICogU3RydWN0dXJlIG9mIHNlbmQvd3JpdGUgc3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IHdyaXRlX3N0YXRlX3QgeworICAgIGNoYXIJCSpidWY7CisgICAgcGpfc2l6ZV90CQkgbWF4X2xlbjsgICAgCisgICAgY2hhcgkJKnN0YXJ0OworICAgIHBqX3NpemVfdAkJIGxlbjsKKyAgICB3cml0ZV9kYXRhX3QJKmN1cnJlbnRfZGF0YTsKKyAgICBUUHRyQzgJCSBzZW5kX3B0cjsKK30gd3JpdGVfc3RhdGVfdDsKKworLyoKKyAqIFNlY3VyZSBzb2NrZXQgc3RydWN0dXJlIGRlZmluaXRpb24uCisgKi8KK3N0cnVjdCBwal9zc2xfc29ja190Cit7CisgICAgcGpfcG9vbF90CQkqcG9vbDsKKyAgICBwal9zc2xfc29ja19jYgkgY2I7CisgICAgdm9pZAkJKnVzZXJfZGF0YTsKKyAgICAKKyAgICBwal9ib29sX3QJCSBlc3RhYmxpc2hlZDsKKyAgICB3cml0ZV9zdGF0ZV90CSB3cml0ZV9zdGF0ZTsKKyAgICByZWFkX3N0YXRlX3QJIHJlYWRfc3RhdGU7CisgICAgQ1BqVGltZXIJCSpjb25uZWN0X3RpbWVyOworCisgICAgQ1BqU1NMU29ja2V0ICAgCSpzb2NrOworICAgIGludAkJCSBzb2NrX2FmOworICAgIGludAkJCSBzb2NrX3R5cGU7CisgICAgcGpfc29ja2FkZHIJCSBsb2NhbF9hZGRyOworICAgIHBqX3NvY2thZGRyCQkgcmVtX2FkZHI7CisKKyAgICAvKiBRb1Mgc2V0dGluZ3MgKi8KKyAgICBwal9xb3NfdHlwZQkJIHFvc190eXBlOworICAgIHBqX3Fvc19wYXJhbXMJIHFvc19wYXJhbXM7CisgICAgcGpfYm9vbF90CQkgcW9zX2lnbm9yZV9lcnJvcjsKKworCisgICAgcGpfc3NsX3NvY2tfcHJvdG8JIHByb3RvOworICAgIHBqX3RpbWVfdmFsCQkgdGltZW91dDsKKyAgICBwal9zdHJfdAkJIHNlcnZlcm5hbWU7CisgICAgcGpfc3RyX3QJCSBjaXBoZXJzOworICAgIHBqX3NzbF9jZXJ0X2luZm8JIHJlbW90ZV9jZXJ0X2luZm87Cit9OworCisKK3N0YXRpYyBwal9zdHJfdCBnZXRfY2VydF9uYW1lKGNoYXIgKmJ1ZiwgdW5zaWduZWQgYnVmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENYNTAwRGlzdGluZ3Vpc2hlZE5hbWUgJm5hbWUpCit7CisgICAgVEludCBpOworICAgIFRVaW50OCAqcDsKKyAgICBUSW50IGwgPSBidWZfbGVuOworICAgIAorICAgIHAgPSAoVFVpbnQ4KilidWY7CisgICAgZm9yKGkgPSAwOyBpIDwgbmFtZS5Db3VudCgpOyArK2kpIHsKKwljb25zdCBDWDUyMEF0dHJpYnV0ZVR5cGVBbmRWYWx1ZSAmYXR0ciA9IG5hbWUuRWxlbWVudChpKTsKKworCS8qIFByaW50IGVsZW1lbnQgc2VwYXJhdG9yICovCisJKnArKyA9ICcvJzsKKwlpZiAoMCA9PSAtLWwpIGJyZWFrOworCisJLyogUHJpbnQgdGhlIHR5cGUuICovCisJVFB0cjggdHlwZShwLCBsKTsKKwl0eXBlLkNvcHkoYXR0ci5UeXBlKCkpOworCXAgKz0gdHlwZS5MZW5ndGgoKTsKKwlsIC09IHR5cGUuTGVuZ3RoKCk7CisJaWYgKDAgPj0gLS1sKSBicmVhazsKKworCS8qIFByaW50IGVxdWFsIHNpZ24gKi8KKwkqcCsrID0gJz0nOworCWlmICgwID09IC0tbCkgYnJlYWs7CisJCisJLyogUHJpbnQgdGhlIHZhbHVlLiBMZXQncyBqdXN0IGdldCB0aGUgcmF3IGRhdGEgaGVyZSAqLworCVRQdHI4IHZhbHVlKHAsIGwpOworCXZhbHVlLkNvcHkoYXR0ci5FbmNvZGVkVmFsdWUoKS5NaWQoMikpOworCXAgKz0gdmFsdWUuTGVuZ3RoKCk7CisJbCAtPSB2YWx1ZS5MZW5ndGgoKTsKKwlpZiAoMCA+PSAtLWwpIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBwal9zdHJfdCBzcmM7CisgICAgcGpfc3Ryc2V0KCZzcmMsIGJ1ZiwgYnVmX2xlbiAtIGwpOworICAgIAorICAgIHJldHVybiBzcmM7Cit9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisvKiBHZXQgY2VydGlmaWNhdGUgaW5mbyBmcm9tIENYNTA5Q2VydGlmaWNhdGUuCisgKi8KK3N0YXRpYyB2b2lkIGdldF9jZXJ0X2luZm8ocGpfcG9vbF90ICpwb29sLCBwal9zc2xfY2VydF9pbmZvICpjaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1g1MDlDZXJ0aWZpY2F0ZSAqeCkKK3sKKyAgICBlbnVtIHsgdG1wX2J1Zl9sZW4gPSA1MTIgfTsKKyAgICBjaGFyICp0bXBfYnVmOworICAgIHVuc2lnbmVkIGxlbjsKKyAgICAKKyAgICBwal9hc3NlcnQocG9vbCAmJiBjaSAmJiB4KTsKKyAgICAKKyAgICAvKiBJbml0ICovCisgICAgdG1wX2J1ZiA9IG5ldyBjaGFyW3RtcF9idWZfbGVuXTsKKyAgICBwal9iemVybyhjaSwgc2l6ZW9mKCpjaSkpOworICAgIAorICAgIC8qIFZlcnNpb24gKi8KKyAgICBjaS0+dmVyc2lvbiA9IHgtPlZlcnNpb24oKTsKKyAgICAKKyAgICAvKiBTZXJpYWwgbnVtYmVyICovCisgICAgbGVuID0geC0+U2VyaWFsTnVtYmVyKCkuTGVuZ3RoKCk7CisgICAgaWYgKGxlbiA+IHNpemVvZihjaS0+c2VyaWFsX25vKSkgCisJbGVuID0gc2l6ZW9mKGNpLT5zZXJpYWxfbm8pOworICAgIHBqX21lbWNweShjaS0+c2VyaWFsX25vICsgc2l6ZW9mKGNpLT5zZXJpYWxfbm8pIC0gbGVuLCAKKyAgICAgICAgICAgICAgeC0+U2VyaWFsTnVtYmVyKCkuUHRyKCksIGxlbik7CisgICAgCisgICAgLyogU3ViamVjdCAqLworICAgIHsKKwlIQnVmQyAqc3ViamVjdCA9IE5VTEw7CisJVFJBUEQoZXJyLCBzdWJqZWN0ID0geC0+U3ViamVjdEwoKSk7CisJaWYgKGVyciA9PSBLRXJyTm9uZSkgeworCSAgICBUUHRyMTYgcHRyMTYoc3ViamVjdC0+RGVzKCkpOworCSAgICBsZW4gPSBwdHIxNi5MZW5ndGgoKTsKKwkgICAgVFB0cjggcHRyOCgoVFVpbnQ4Kilwal9wb29sX2FsbG9jKHBvb2wsIGxlbiksIGxlbik7CisJICAgIHB0cjguQ29weShwdHIxNik7CisJICAgIHBqX3N0cnNldCgmY2ktPnN1YmplY3QuY24sIChjaGFyKilwdHI4LlB0cigpLCBwdHI4Lkxlbmd0aCgpKTsKKwl9CisJcGpfc3RyX3QgdG1wID0gZ2V0X2NlcnRfbmFtZSh0bXBfYnVmLCB0bXBfYnVmX2xlbiwKKwkJCQkgICAgIHgtPlN1YmplY3ROYW1lKCkpOworCXBqX3N0cmR1cChwb29sLCAmY2ktPnN1YmplY3QuaW5mbywgJnRtcCk7CisgICAgfQorCisgICAgLyogSXNzdWVyICovCisgICAgeworCUhCdWZDICppc3N1ZXIgPSBOVUxMOworCVRSQVBEKGVyciwgaXNzdWVyID0geC0+SXNzdWVyTCgpKTsKKwlpZiAoZXJyID09IEtFcnJOb25lKSB7CisJICAgIFRQdHIxNiBwdHIxNihpc3N1ZXItPkRlcygpKTsKKwkgICAgbGVuID0gcHRyMTYuTGVuZ3RoKCk7CisJICAgIFRQdHI4IHB0cjgoKFRVaW50OCopcGpfcG9vbF9hbGxvYyhwb29sLCBsZW4pLCBsZW4pOworCSAgICBwdHI4LkNvcHkocHRyMTYpOworCSAgICBwal9zdHJzZXQoJmNpLT5pc3N1ZXIuY24sIChjaGFyKilwdHI4LlB0cigpLCBwdHI4Lkxlbmd0aCgpKTsKKwl9CisJcGpfc3RyX3QgdG1wID0gZ2V0X2NlcnRfbmFtZSh0bXBfYnVmLCB0bXBfYnVmX2xlbiwKKwkJCQkgICAgIHgtPklzc3Vlck5hbWUoKSk7CisJcGpfc3RyZHVwKHBvb2wsICZjaS0+aXNzdWVyLmluZm8sICZ0bXApOworICAgIH0KKyAgICAKKyAgICAvKiBWYWxpZGl0eSAqLworICAgIGNvbnN0IENWYWxpZGl0eVBlcmlvZCAmdmFsaWRfcGVyaW9kID0geC0+VmFsaWRpdHlQZXJpb2QoKTsKKyAgICBUVGltZSBiYXNlX3RpbWUoVERhdGVUaW1lKDE5NzAsIEVKYW51YXJ5LCAwLCAwLCAwLCAwLCAwKSk7CisgICAgVFRpbWVJbnRlcnZhbFNlY29uZHMgdG1wX3NlYzsKKyAgICB2YWxpZF9wZXJpb2QuU3RhcnQoKS5TZWNvbmRzRnJvbShiYXNlX3RpbWUsIHRtcF9zZWMpOworICAgIGNpLT52YWxpZGl0eS5zdGFydC5zZWMgPSB0bXBfc2VjLkludCgpOyAKKyAgICB2YWxpZF9wZXJpb2QuRmluaXNoKCkuU2Vjb25kc0Zyb20oYmFzZV90aW1lLCB0bXBfc2VjKTsKKyAgICBjaS0+dmFsaWRpdHkuZW5kLnNlYyA9IHRtcF9zZWMuSW50KCk7CisgICAgCisgICAgLyogRGVpbml0ICovCisgICAgZGVsZXRlIFtdIHRtcF9idWY7Cit9CisKKworLyogVXBkYXRlIGNlcnRpZmljYXRlcyBpbmZvLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgaGFuZHNoYWtlCisgKiBvciByZW5lZ290aWF0aW9uIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQuCisgKi8KK3N0YXRpYyB2b2lkIHVwZGF0ZV9jZXJ0c19pbmZvKHBqX3NzbF9zb2NrX3QgKnNzb2NrKQoreworICAgIGNvbnN0IENYNTA5Q2VydGlmaWNhdGUgKng7CisKKyAgICBwal9hc3NlcnQoc3NvY2sgJiYgc3NvY2stPnNvY2sgJiYKKyAgICAgICAgICAgICAgc3NvY2stPnNvY2stPkdldFN0YXRlKCkgPT0gQ1BqU1NMU29ja2V0OjpTU0xfU1RBVEVfRVNUQUJMSVNIRUQpOworICAgICAgICAKKyAgICAvKiBBY3RpdmUgcmVtb3RlIGNlcnRpZmljYXRlICovCisgICAgeCA9IHNzb2NrLT5zb2NrLT5HZXRQZWVyQ2VydCgpOworICAgIGlmICh4KSB7CisJZ2V0X2NlcnRfaW5mbyhzc29jay0+cG9vbCwgJnNzb2NrLT5yZW1vdGVfY2VydF9pbmZvLCB4KTsKKyAgICB9IGVsc2UgeworCXBqX2J6ZXJvKCZzc29jay0+cmVtb3RlX2NlcnRfaW5mbywgc2l6ZW9mKHBqX3NzbF9jZXJ0X2luZm8pKTsKKyAgICB9Cit9CisKKworLyogQXZhaWxhYmxlIGNpcGhlcnMgKi8KK3N0YXRpYyB1bnNpZ25lZCBjaXBoZXJzX251bV8gPSAwOworc3RhdGljIHN0cnVjdCBjaXBoZXJzX3QKK3sKKyAgICBwal9zc2xfY2lwaGVyICAgIGlkOworICAgIGNvbnN0IGNoYXIJICAgICpuYW1lOworfSBjaXBoZXJzX1s2NF07CisKKy8qCisgKiBHZXQgY2lwaGVyIGxpc3Qgc3VwcG9ydGVkIGJ5IFNTTC9UTFMgYmFja2VuZC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfY2lwaGVyX2dldF9hdmFpbGFibGVzIChwal9zc2xfY2lwaGVyIGNpcGhlcnNbXSwKKwkJCQkJICAgICAgICAgIHVuc2lnbmVkICpjaXBoZXJfbnVtKQoreworICAgIHVuc2lnbmVkIGk7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGNpcGhlcnMgJiYgY2lwaGVyX251bSwgUEpfRUlOVkFMKTsKKyAgICAKKyAgICBpZiAoY2lwaGVyc19udW1fID09IDApIHsKKyAgICAgICAgUlNvY2tldCBzb2NrOworICAgICAgICBDU2VjdXJlU29ja2V0ICpzZWN1cmVfc29jazsKKyAgICAgICAgVFB0ckMxNiBwcm90byhfTDE2KCJUTFMxLjAiKSk7CisKKyAgICAgICAgc2VjdXJlX3NvY2sgPSBDU2VjdXJlU29ja2V0OjpOZXdMKHNvY2ssIHByb3RvKTsKKyAgICAgICAgaWYgKHNlY3VyZV9zb2NrKSB7CisgICAgICAgICAgICBUQnVmODwxMjg+IGNpcGhlcnNfYnVmKDApOworICAgICAgICAgICAgc2VjdXJlX3NvY2stPkF2YWlsYWJsZUNpcGhlclN1aXRlcyhjaXBoZXJzX2J1Zik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNpcGhlcnNfbnVtXyA9IGNpcGhlcnNfYnVmLkxlbmd0aCgpIC8gMjsKKyAgICAgICAgICAgIGlmIChjaXBoZXJzX251bV8gPiBQSl9BUlJBWV9TSVpFKGNpcGhlcnNfKSkKKyAgICAgICAgCWNpcGhlcnNfbnVtXyA9IFBKX0FSUkFZX1NJWkUoY2lwaGVyc18pOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNpcGhlcnNfbnVtXzsgKytpKSB7CisgICAgICAgICAgICAgICAgY2lwaGVyc19baV0uaWQgPSAocGpfc3NsX2NpcGhlcikoY2lwaGVyc19idWZbaSoyXSoxMCArIAorCQkJCQkgICAgICAgICBjaXBoZXJzX2J1ZltpKjIrMV0pOworCQljaXBoZXJzX1tpXS5uYW1lID0gZ2V0X2NpcGhlcl9uYW1lKGNpcGhlcnNfW2ldLmlkKTsKKwkgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkZWxldGUgc2VjdXJlX3NvY2s7CisgICAgfQorICAgIAorICAgIGlmIChjaXBoZXJzX251bV8gPT0gMCkgeworCSpjaXBoZXJfbnVtID0gMDsKKwlyZXR1cm4gUEpfRU5PVEZPVU5EOworICAgIH0KKyAgICAKKyAgICAqY2lwaGVyX251bSA9IFBKX01JTigqY2lwaGVyX251bSwgY2lwaGVyc19udW1fKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgKmNpcGhlcl9udW07ICsraSkKKyAgICAgICAgY2lwaGVyc1tpXSA9IGNpcGhlcnNfW2ldLmlkOworICAgIAorICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qIEdldCBjaXBoZXIgbmFtZSBzdHJpbmcgKi8KK1BKX0RFRihjb25zdCBjaGFyKikgcGpfc3NsX2NpcGhlcl9uYW1lKHBqX3NzbF9jaXBoZXIgY2lwaGVyKQoreworICAgIHVuc2lnbmVkIGk7CisKKyAgICBpZiAoY2lwaGVyc19udW1fID09IDApIHsKKwlwal9zc2xfY2lwaGVyIGNbMV07CisJaSA9IDA7CisJcGpfc3NsX2NpcGhlcl9nZXRfYXZhaWxhYmxlcyhjLCAmaSk7CisgICAgfQorCQorICAgIGZvciAoaSA9IDA7IGkgPCBjaXBoZXJzX251bV87ICsraSkgeworCWlmIChjaXBoZXIgPT0gY2lwaGVyc19baV0uaWQpCisJICAgIHJldHVybiBjaXBoZXJzX1tpXS5uYW1lOworICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCisKKy8qIENoZWNrIGlmIHRoZSBzcGVjaWZpZWQgY2lwaGVyIGlzIHN1cHBvcnRlZCBieSBTU0wvVExTIGJhY2tlbmQuICovCitQSl9ERUYocGpfYm9vbF90KSBwal9zc2xfY2lwaGVyX2lzX3N1cHBvcnRlZChwal9zc2xfY2lwaGVyIGNpcGhlcikKK3sKKyAgICB1bnNpZ25lZCBpOworCisgICAgaWYgKGNpcGhlcnNfbnVtXyA9PSAwKSB7CisJcGpfc3NsX2NpcGhlciBjWzFdOworCWkgPSAwOworCXBqX3NzbF9jaXBoZXJfZ2V0X2F2YWlsYWJsZXMoYywgJmkpOworICAgIH0KKwkKKyAgICBmb3IgKGkgPSAwOyBpIDwgY2lwaGVyc19udW1fOyArK2kpIHsKKwlpZiAoY2lwaGVyID09IGNpcGhlcnNfW2ldLmlkKQorCSAgICByZXR1cm4gUEpfVFJVRTsKKyAgICB9CisKKyAgICByZXR1cm4gUEpfRkFMU0U7Cit9CisKKworLyoKKyAqIENyZWF0ZSBTU0wgc29ja2V0IGluc3RhbmNlLiAKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19jcmVhdGUgKHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJY29uc3QgcGpfc3NsX3NvY2tfcGFyYW0gKnBhcmFtLAorCQkJCQlwal9zc2xfc29ja190ICoqcF9zc29jaykKK3sKKyAgICBwal9zc2xfc29ja190ICpzc29jazsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4ocGFyYW0tPmFzeW5jX2NudCA9PSAxLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4ocG9vbCAmJiBwYXJhbSAmJiBwX3Nzb2NrLCBQSl9FSU5WQUwpOworCisgICAgLyogQWxsb2NhdGUgc2VjdXJlIHNvY2tldCAqLworICAgIHNzb2NrID0gUEpfUE9PTF9aQUxMT0NfVChwb29sLCBwal9zc2xfc29ja190KTsKKyAgICAKKyAgICAvKiBBbGxvY2F0ZSB3cml0ZSBidWZmZXIgKi8KKyAgICBzc29jay0+d3JpdGVfc3RhdGUuYnVmID0gKGNoYXIqKXBqX3Bvb2xfYWxsb2MocG9vbCwgCisJCQkJCQkgIHBhcmFtLT5zZW5kX2J1ZmZlcl9zaXplKTsKKyAgICBzc29jay0+d3JpdGVfc3RhdGUubWF4X2xlbiA9IHBhcmFtLT5zZW5kX2J1ZmZlcl9zaXplOworICAgIHNzb2NrLT53cml0ZV9zdGF0ZS5zdGFydCA9IHNzb2NrLT53cml0ZV9zdGF0ZS5idWY7CisgICAgCisgICAgLyogSW5pdCBzZWN1cmUgc29ja2V0ICovCisgICAgc3NvY2stPnBvb2wgPSBwb29sOworICAgIHNzb2NrLT5zb2NrX2FmID0gcGFyYW0tPnNvY2tfYWY7CisgICAgc3NvY2stPnNvY2tfdHlwZSA9IHBhcmFtLT5zb2NrX3R5cGU7CisgICAgc3NvY2stPmNiID0gcGFyYW0tPmNiOworICAgIHNzb2NrLT51c2VyX2RhdGEgPSBwYXJhbS0+dXNlcl9kYXRhOworICAgIHNzb2NrLT50aW1lb3V0ID0gcGFyYW0tPnRpbWVvdXQ7CisgICAgaWYgKHBhcmFtLT5jaXBoZXJzX251bSA+IDApIHsKKwkvKiBDaXBoZXIgbGlzdCBpbiBTeW1iaWFuIGlzIHJlcHJlc2VudGVkIGFzIGFycmF5IG9mIHR3by1vY3RldHMuICovCisJc3NvY2stPmNpcGhlcnMuc2xlbiA9IHBhcmFtLT5jaXBoZXJzX251bSoyOworCXNzb2NrLT5jaXBoZXJzLnB0ciAgPSAoY2hhciopcGpfcG9vbF9hbGxvYyhwb29sLCBzc29jay0+Y2lwaGVycy5zbGVuKTsKKwlwal91aW50OF90ICpjID0gKHBqX3VpbnQ4X3QqKXNzb2NrLT5jaXBoZXJzLnB0cjsKKwlmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW0tPmNpcGhlcnNfbnVtOyArK2kpIHsKKwkgICAgKmMrKyA9IChwal91aW50OF90KShwYXJhbS0+Y2lwaGVyc1tpXSAmIDB4RkYwMCkgPj4gODsKKwkgICAgKmMrKyA9IChwal91aW50OF90KShwYXJhbS0+Y2lwaGVyc1tpXSAmIDB4RkYpOworCX0KKyAgICB9CisgICAgcGpfc3RyZHVwX3dpdGhfbnVsbChwb29sLCAmc3NvY2stPnNlcnZlcm5hbWUsICZwYXJhbS0+c2VydmVyX25hbWUpOworCisgICAgc3NvY2stPnFvc190eXBlID0gcGFyYW0tPnFvc190eXBlOworICAgIHNzb2NrLT5xb3NfaWdub3JlX2Vycm9yID0gcGFyYW0tPnFvc19pZ25vcmVfZXJyb3I7CisgICAgcGpfbWVtY3B5KCZzc29jay0+cW9zX3BhcmFtcywgJnBhcmFtLT5xb3NfcGFyYW1zLAorCSAgICAgIHNpemVvZihwYXJhbS0+cW9zX3BhcmFtcykpOworCisgICAgLyogRmluYWxseSAqLworICAgICpwX3Nzb2NrID0gc3NvY2s7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NzbF9jZXJ0X2xvYWRfZnJvbV9maWxlcyhwal9wb29sX3QgKnBvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWNvbnN0IHBqX3N0cl90ICpDQV9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAljb25zdCBwal9zdHJfdCAqY2VydF9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAljb25zdCBwal9zdHJfdCAqcHJpdmtleV9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAljb25zdCBwal9zdHJfdCAqcHJpdmtleV9wYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlwal9zc2xfY2VydF90ICoqcF9jZXJ0KQoreworICAgIFBKX1VOVVNFRF9BUkcocG9vbCk7CisgICAgUEpfVU5VU0VEX0FSRyhDQV9maWxlKTsKKyAgICBQSl9VTlVTRURfQVJHKGNlcnRfZmlsZSk7CisgICAgUEpfVU5VU0VEX0FSRyhwcml2a2V5X2ZpbGUpOworICAgIFBKX1VOVVNFRF9BUkcocHJpdmtleV9wYXNzKTsKKyAgICBQSl9VTlVTRURfQVJHKHBfY2VydCk7CisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKKy8qCisgKiBTZXQgU1NMIHNvY2tldCBjcmVkZW50aWFsLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3NldF9jZXJ0aWZpY2F0ZSgKKwkJCQkJICAgIHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCQkgICAgcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICAgY29uc3QgcGpfc3NsX2NlcnRfdCAqY2VydCkKK3sKKyAgICBQSl9VTlVTRURfQVJHKHNzb2NrKTsKKyAgICBQSl9VTlVTRURfQVJHKHBvb2wpOworICAgIFBKX1VOVVNFRF9BUkcoY2VydCk7CisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKKy8qCisgKiBDbG9zZSB0aGUgU1NMIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19jbG9zZShwal9zc2xfc29ja190ICpzc29jaykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNzb2NrLCBQSl9FSU5WQUwpOworICAgIAorICAgIGRlbGV0ZSBzc29jay0+Y29ubmVjdF90aW1lcjsKKyAgICBzc29jay0+Y29ubmVjdF90aW1lciA9IE5VTEw7CisgICAgCisgICAgZGVsZXRlIHNzb2NrLT5zb2NrOworICAgIHNzb2NrLT5zb2NrID0gTlVMTDsKKworICAgIGRlbGV0ZSBzc29jay0+cmVhZF9zdGF0ZS5yZWFkX2J1ZjsKKyAgICBkZWxldGUgc3NvY2stPnJlYWRfc3RhdGUub3JpZ19idWY7CisgICAgc3NvY2stPnJlYWRfc3RhdGUucmVhZF9idWYgPSBOVUxMOworICAgIHNzb2NrLT5yZWFkX3N0YXRlLm9yaWdfYnVmID0gTlVMTDsKKyAgICAKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogQXNzb2NpYXRlIGFyYml0cmFyeSBkYXRhIHdpdGggdGhlIFNTTCBzb2NrZXQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc2V0X3VzZXJfZGF0YSAocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJCSAgICAgICB2b2lkICp1c2VyX2RhdGEpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzc29jaywgUEpfRUlOVkFMKTsKKyAgICAKKyAgICBzc29jay0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICAgIAorICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCQkJCQkgICAgICAgCisKKy8qCisgKiBSZXRyaWV2ZSB0aGUgdXNlciBkYXRhIHByZXZpb3VzbHkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgU1NMCisgKiBzb2NrZXQuCisgKi8KK1BKX0RFRih2b2lkKikgcGpfc3NsX3NvY2tfZ2V0X3VzZXJfZGF0YShwal9zc2xfc29ja190ICpzc29jaykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNzb2NrLCBOVUxMKTsKKyAgICAKKyAgICByZXR1cm4gc3NvY2stPnVzZXJfZGF0YTsKK30KKworCisvKgorICogUmV0cmlldmUgdGhlIGxvY2FsIGFkZHJlc3MgYW5kIHBvcnQgdXNlZCBieSBzcGVjaWZpZWQgU1NMIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19nZXRfaW5mbyAocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJCSAgcGpfc3NsX3NvY2tfaW5mbyAqaW5mbykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNzb2NrICYmIGluZm8sIFBKX0VJTlZBTCk7CisgICAgCisgICAgcGpfYnplcm8oaW5mbywgc2l6ZW9mKCppbmZvKSk7CisgICAgCisgICAgaW5mby0+ZXN0YWJsaXNoZWQgPSBzc29jay0+ZXN0YWJsaXNoZWQ7CisgICAgCisgICAgLyogTG9jYWwgYWRkcmVzcyAqLworICAgIGlmIChzc29jay0+c29jaykgeworCWNvbnN0IFRJbmV0QWRkciogbG9jYWxfYWRkcl8gPSBzc29jay0+c29jay0+R2V0TG9jYWxBZGRyKCk7CisJaW50IGFkZHJsZW4gPSBzaXplb2YocGpfc29ja2FkZHIpOworCXBqX3N0YXR1c190IHN0YXR1czsKKwkKKwlzdGF0dXMgPSBQalN5bWJpYW5PUzo6QWRkcjJwaigqbG9jYWxfYWRkcl8sIGluZm8tPmxvY2FsX2FkZHIsICZhZGRybGVuKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJICAgIHJldHVybiBzdGF0dXM7CisgICAgfSBlbHNlIHsKKwlwal9zb2NrYWRkcl9jcCgmaW5mby0+bG9jYWxfYWRkciwgJnNzb2NrLT5sb2NhbF9hZGRyKTsKKyAgICB9CisKKyAgICBpZiAoaW5mby0+ZXN0YWJsaXNoZWQpIHsKKwkvKiBDaXBoZXIgc3VpdGUgKi8KKwlUQnVmODw0PiBjaXBoZXI7CisJaWYgKHNzb2NrLT5zb2NrLT5HZXRDaXBoZXIoY2lwaGVyKSA9PSBLRXJyTm9uZSkgeworCSAgICBpbmZvLT5jaXBoZXIgPSAocGpfc3NsX2NpcGhlciljaXBoZXJbMV07IAorCX0KKworCS8qIFJlbW90ZSBhZGRyZXNzICovCisgICAgICAgIHBqX3NvY2thZGRyX2NwKChwal9zb2NrYWRkcl90KikmaW5mby0+cmVtb3RlX2FkZHIsIAorICAgIAkJICAgICAgIChwal9zb2NrYWRkcl90Kikmc3NvY2stPnJlbV9hZGRyKTsKKyAgICAgICAgCisgICAgICAgIC8qIENlcnRpZmljYXRlcyBpbmZvICovCisgICAgICAgIGluZm8tPnJlbW90ZV9jZXJ0X2luZm8gPSAmc3NvY2stPnJlbW90ZV9jZXJ0X2luZm87CisgICAgfQorCisgICAgLyogUHJvdG9jb2wgKi8KKyAgICBpbmZvLT5wcm90byA9IHNzb2NrLT5wcm90bzsKKyAgICAKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogU3RhcnRzIHJlYWQgb3BlcmF0aW9uIG9uIHRoaXMgU1NMIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19zdGFydF9yZWFkIChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICAgIHVuc2lnbmVkIGJ1ZmZfc2l6ZSwKKwkJCQkJICAgIHBqX3VpbnQzMl90IGZsYWdzKQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4oc3NvY2sgJiYgcG9vbCAmJiBidWZmX3NpemUsIFBKX0VJTlZBTCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzc29jay0+ZXN0YWJsaXNoZWQsIFBKX0VJTlZBTElET1ApOworCisgICAgLyogUmVhZGluZyBpcyBhbHJlYWR5IHN0YXJ0ZWQgKi8KKyAgICBpZiAoc3NvY2stPnJlYWRfc3RhdGUub3JpZ19idWYpIHsKKwlyZXR1cm4gUEpfU1VDQ0VTUzsKKyAgICB9CisKKyAgICB2b2lkICpyZWFkYnVmWzFdOworICAgIHJlYWRidWZbMF0gPSBwal9wb29sX2FsbG9jKHBvb2wsIGJ1ZmZfc2l6ZSk7CisgICAgcmV0dXJuIHBqX3NzbF9zb2NrX3N0YXJ0X3JlYWQyKHNzb2NrLCBwb29sLCBidWZmX3NpemUsIHJlYWRidWYsIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgcmVhZF9jYihpbnQgZXJyLCB2b2lkICprZXkpCit7CisgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2sgPSAocGpfc3NsX3NvY2tfdCopa2V5OworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIHN0YXR1cyA9IChlcnIgPT0gS0Vyck5vbmUpPyBQSl9TVUNDRVNTIDogUEpfUkVUVVJOX09TX0VSUk9SKGVycik7CisKKyAgICAvKiBDaGVjayBjb25uZWN0aW9uIHN0YXR1cyAqLworICAgIGlmIChlcnIgPT0gS0VyckVvZiB8fCAhUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPklzQ29ubmVjdGlvblVwKCkgfHwKKwkhc3NvY2stPmVzdGFibGlzaGVkKSAKKyAgICB7CisJc3RhdHVzID0gUEpfRUVPRjsKKyAgICB9CisgICAgCisgICAgLyogTm90aWZ5IGRhdGEgYXJyaXZhbCAqLworICAgIGlmIChzc29jay0+Y2Iub25fZGF0YV9yZWFkKSB7CisJcGpfc2l6ZV90IHJlbWFpbmRlciA9IDA7CisJY2hhciAqZGF0YSA9IChjaGFyKilzc29jay0+cmVhZF9zdGF0ZS5vcmlnX2J1Zi0+UHRyKCk7CisJcGpfc2l6ZV90IGRhdGFfbGVuID0gc3NvY2stPnJlYWRfc3RhdGUucmVhZF9idWYtPkxlbmd0aCgpICsgCisJCQkgICAgIHNzb2NrLT5yZWFkX3N0YXRlLnJlYWRfYnVmLT5QdHIoKSAtCisJCQkgICAgIHNzb2NrLT5yZWFkX3N0YXRlLm9yaWdfYnVmLT5QdHIoKTsKKwkKKwlpZiAoZGF0YV9sZW4gPiAwKSB7CisJICAgIC8qIE5vdGlmeSByZWNlaXZlZCBkYXRhICovCisJICAgIHBqX2Jvb2xfdCByZXQgPSAoKnNzb2NrLT5jYi5vbl9kYXRhX3JlYWQpKHNzb2NrLCBkYXRhLCBkYXRhX2xlbiwgCisJCQkJCQkgICAgICBzdGF0dXMsICZyZW1haW5kZXIpOworCSAgICBpZiAoIXJldCkgeworCQkvKiBXZSd2ZSBiZWVuIGRlc3Ryb3llZCAqLworCQlyZXR1cm47CisJICAgIH0KKwkgICAgCisJICAgIC8qIENhbGN1bGF0ZSBhdmFpbGFibGUgZGF0YSBmb3IgbmV4dCBSRUFEIG9wZXJhdGlvbiAqLworCSAgICBpZiAocmVtYWluZGVyID4gMCkgeworCQlwal9zaXplX3QgZGF0YV9tYXhsZW4gPSBzc29jay0+cmVhZF9zdGF0ZS5vcmlnX2J1Zi0+TWF4TGVuZ3RoKCk7CisJCQorCQkvKiBUaGVyZSBpcyBzb21lIGRhdGEgbGVmdCB1bmNvbnN1bWVkIGJ5IGFwcGxpY2F0aW9uLCB3ZSBnaXZlCisJCSAqIHNtYWxsZXIgYnVmZmVyIGZvciBuZXh0IFJFQUQgb3BlcmF0aW9uLgorCQkgKi8KKwkJc3NvY2stPnJlYWRfc3RhdGUucmVhZF9idWYtPlNldCgoVFVpbnQ4KilkYXRhK3JlbWFpbmRlciwgMCwgCisJCQkJCSAgICAgICAgZGF0YV9tYXhsZW4gLSByZW1haW5kZXIpOworCSAgICB9IGVsc2UgeworCQkvKiBHaXZlIGFsbCBidWZmZXIgZm9yIG5leHQgUkVBRCBvcGVyYXRpb24uIAorCQkgKi8KKwkJc3NvY2stPnJlYWRfc3RhdGUucmVhZF9idWYtPlNldCgqc3NvY2stPnJlYWRfc3RhdGUub3JpZ19idWYpOworCSAgICB9CisJfQorICAgIH0KKworICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCS8qIFBlcmZvcm0gdGhlICJuZXh0IiBSRUFEIG9wZXJhdGlvbiAqLworCUNQalNTTFNvY2tldFJlYWRlciAqcmVhZGVyID0gc3NvY2stPnNvY2stPkdldFJlYWRlcigpOyAKKwlzc29jay0+cmVhZF9zdGF0ZS5yZWFkX2J1Zi0+U2V0TGVuZ3RoKDApOworCXN0YXR1cyA9IHJlYWRlci0+UmVhZCgmcmVhZF9jYiwgc3NvY2ssICpzc29jay0+cmVhZF9zdGF0ZS5yZWFkX2J1ZiwgCisJCQkgICAgICBzc29jay0+cmVhZF9zdGF0ZS5mbGFncyk7CisgICAgfQorICAgIAorICAgIC8qIENvbm5lY3Rpb24gY2xvc2VkIG9yIHNvbWV0aGluZyBnb2VzIHdyb25nICovCisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTICYmIHN0YXR1cyAhPSBQSl9FUEVORElORykgeworCS8qIE5vdGlmeSBlcnJvciAqLworCWlmIChzc29jay0+Y2Iub25fZGF0YV9yZWFkKSB7CisJICAgIHBqX2Jvb2xfdCByZXQgPSAoKnNzb2NrLT5jYi5vbl9kYXRhX3JlYWQpKHNzb2NrLCBOVUxMLCAwLCAKKwkJCQkJCSAgICAgIHN0YXR1cywgTlVMTCk7CisJICAgIGlmICghcmV0KSB7CisJCS8qIFdlJ3ZlIGJlZW4gZGVzdHJveWVkICovCisJCXJldHVybjsKKwkgICAgfQorCX0KKwkKKwlkZWxldGUgc3NvY2stPnJlYWRfc3RhdGUucmVhZF9idWY7CisJZGVsZXRlIHNzb2NrLT5yZWFkX3N0YXRlLm9yaWdfYnVmOworCXNzb2NrLT5yZWFkX3N0YXRlLnJlYWRfYnVmID0gTlVMTDsKKwlzc29jay0+cmVhZF9zdGF0ZS5vcmlnX2J1ZiA9IE5VTEw7CisJc3NvY2stPmVzdGFibGlzaGVkID0gUEpfRkFMU0U7CisgICAgfQorfQorCisvKgorICogU2FtZSBhcyAjcGpfc3NsX3NvY2tfc3RhcnRfcmVhZCgpLCBleGNlcHQgdGhhdCB0aGUgYXBwbGljYXRpb24KKyAqIHN1cHBsaWVzIHRoZSBidWZmZXJzIGZvciB0aGUgcmVhZCBvcGVyYXRpb24gc28gdGhhdCB0aGUgYWNpdmUgc29ja2V0CisgKiBkb2VzIG5vdCBoYXZlIHRvIGFsbG9jYXRlIHRoZSBidWZmZXJzLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3N0YXJ0X3JlYWQyIChwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJICAgICBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgdW5zaWduZWQgYnVmZl9zaXplLAorCQkJCQkgICAgIHZvaWQgKnJlYWRidWZbXSwKKwkJCQkJICAgICBwal91aW50MzJfdCBmbGFncykKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNzb2NrICYmIGJ1ZmZfc2l6ZSAmJiByZWFkYnVmLCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oc3NvY2stPmVzdGFibGlzaGVkLCBQSl9FSU5WQUxJRE9QKTsKKyAgICAKKyAgICAvKiBSZXR1cm4gZmFpbHVyZSBpZiBhY2Nlc3MgcG9pbnQgaXMgbWFya2VkIGFzIGRvd24gYnkgYXBwLiAqLworICAgIFBKX1NZTUJJQU5fQ0hFQ0tfQ09OTkVDVElPTigpOworICAgIAorICAgIC8qIFJlYWRpbmcgaXMgYWxyZWFkeSBzdGFydGVkICovCisgICAgaWYgKHNzb2NrLT5yZWFkX3N0YXRlLm9yaWdfYnVmKSB7CisJcmV0dXJuIFBKX1NVQ0NFU1M7CisgICAgfQorICAgIAorICAgIFBKX1VOVVNFRF9BUkcocG9vbCk7CisKKyAgICAvKiBHZXQgcmVhZGVyIGluc3RhbmNlICovCisgICAgQ1BqU1NMU29ja2V0UmVhZGVyICpyZWFkZXIgPSBzc29jay0+c29jay0+R2V0UmVhZGVyKCk7CisgICAgaWYgKCFyZWFkZXIpCisJcmV0dXJuIFBKX0VOT01FTTsKKyAgICAKKyAgICAvKiBXZSBtYW5hZ2UgdHdvIGJ1ZmZlciBwb2ludGVycyBoZXJlOgorICAgICAqIDEuIG9yaWdfYnVmIGtlZXBzIHRoZSBvcmdpbmFsIGJ1ZmZlciBhZGRyZXNzIChhbmQgaXRzIG1heCBsZW5ndGgpLgorICAgICAqIDIuIHJlYWRfYnVmIHByb3ZpZGVzIGJ1ZmZlciBmb3IgUkVBRCBvcGVyYXRpb24sIG1pbmQgdGhhdCB0aGVyZSBtYXkgYmUKKyAgICAgKiAgICBzb21lIHJlbWFpbmRlciBkYXRhIGxlZnQgYnkgYXBwbGljYXRpb24uCisgICAgICovCisgICAgc3NvY2stPnJlYWRfc3RhdGUucmVhZF9idWYgPSBuZXcgVFB0cjgoKFRVaW50OCopcmVhZGJ1ZlswXSwgMCwgYnVmZl9zaXplKTsKKyAgICBzc29jay0+cmVhZF9zdGF0ZS5vcmlnX2J1ZiA9IG5ldyBUUHRyOCgoVFVpbnQ4KilyZWFkYnVmWzBdLCAwLCBidWZmX3NpemUpOworICAgIHNzb2NrLT5yZWFkX3N0YXRlLmZsYWdzID0gZmxhZ3M7CisgICAgCisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworICAgIHN0YXR1cyA9IHJlYWRlci0+UmVhZCgmcmVhZF9jYiwgc3NvY2ssICpzc29jay0+cmVhZF9zdGF0ZS5yZWFkX2J1ZiwgCisJCQkgIHNzb2NrLT5yZWFkX3N0YXRlLmZsYWdzKTsKKyAgICAKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgJiYgc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisJZGVsZXRlIHNzb2NrLT5yZWFkX3N0YXRlLnJlYWRfYnVmOworCWRlbGV0ZSBzc29jay0+cmVhZF9zdGF0ZS5vcmlnX2J1ZjsKKwlzc29jay0+cmVhZF9zdGF0ZS5yZWFkX2J1ZiA9IE5VTEw7CisJc3NvY2stPnJlYWRfc3RhdGUub3JpZ19idWYgPSBOVUxMOworCQorCXJldHVybiBzdGF0dXM7CisgICAgfQorICAgIAorICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKgorICogU2FtZSBhcyBwal9zc2xfc29ja19zdGFydF9yZWFkKCksIGV4Y2VwdCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdXNlZAorICogb25seSBmb3IgZGF0YWdyYW0gc29ja2V0cywgYW5kIGl0IHdpbGwgdHJpZ2dlciBcYSBvbl9kYXRhX3JlY3Zmcm9tKCkKKyAqIGNhbGxiYWNrIGluc3RlYWQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc3RhcnRfcmVjdmZyb20gKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCQkJcGpfcG9vbF90ICpwb29sLAorCQkJCQkJdW5zaWduZWQgYnVmZl9zaXplLAorCQkJCQkJcGpfdWludDMyX3QgZmxhZ3MpCit7CisgICAgUEpfVU5VU0VEX0FSRyhzc29jayk7CisgICAgUEpfVU5VU0VEX0FSRyhwb29sKTsKKyAgICBQSl9VTlVTRURfQVJHKGJ1ZmZfc2l6ZSk7CisgICAgUEpfVU5VU0VEX0FSRyhmbGFncyk7CisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKKy8qCisgKiBTYW1lIGFzICNwal9zc2xfc29ja19zdGFydF9yZWN2ZnJvbSgpIGV4Y2VwdCB0aGF0IHRoZSByZWN2ZnJvbSgpIAorICogb3BlcmF0aW9uIHRha2VzIHRoZSBidWZmZXIgZnJvbSB0aGUgYXJndW1lbnQgcmF0aGVyIHRoYW4gY3JlYXRpbmcKKyAqIG5ldyBvbmVzLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3N0YXJ0X3JlY3Zmcm9tMiAocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJCQkgcGpfcG9vbF90ICpwb29sLAorCQkJCQkJIHVuc2lnbmVkIGJ1ZmZfc2l6ZSwKKwkJCQkJCSB2b2lkICpyZWFkYnVmW10sCisJCQkJCQkgcGpfdWludDMyX3QgZmxhZ3MpCit7CisgICAgUEpfVU5VU0VEX0FSRyhzc29jayk7CisgICAgUEpfVU5VU0VEX0FSRyhwb29sKTsKKyAgICBQSl9VTlVTRURfQVJHKGJ1ZmZfc2l6ZSk7CisgICAgUEpfVU5VU0VEX0FSRyhyZWFkYnVmKTsKKyAgICBQSl9VTlVTRURfQVJHKGZsYWdzKTsKKyAgICByZXR1cm4gUEpfRU5PVFNVUDsKK30KKworc3RhdGljIHZvaWQgc2VuZF9jYihpbnQgZXJyLCB2b2lkICprZXkpCit7CisgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2sgPSAocGpfc3NsX3NvY2tfdCopa2V5OworICAgIHdyaXRlX3N0YXRlX3QgKnN0ID0gJnNzb2NrLT53cml0ZV9zdGF0ZTsKKworICAgIC8qIENoZWNrIGNvbm5lY3Rpb24gc3RhdHVzICovCisgICAgaWYgKGVyciAhPSBLRXJyTm9uZSB8fCAhUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPklzQ29ubmVjdGlvblVwKCkgfHwKKwkhc3NvY2stPmVzdGFibGlzaGVkKSAKKyAgICB7CisJc3NvY2stPmVzdGFibGlzaGVkID0gUEpfRkFMU0U7CisJcmV0dXJuOworICAgIH0KKworICAgIC8qIFJlbW92ZSBzZW50IGRhdGEgZnJvbSBidWZmZXIgKi8KKyAgICBzdC0+c3RhcnQgKz0gc3QtPmN1cnJlbnRfZGF0YS0+bGVuOworICAgIHN0LT5sZW4gLT0gc3QtPmN1cnJlbnRfZGF0YS0+bGVuOworCisgICAgLyogUmVzZXQgY3VycmVudCBvdXRzdGFuZGluZyBzZW5kICovCisgICAgc3QtPmN1cnJlbnRfZGF0YSA9IE5VTEw7CisKKyAgICAvKiBMZXQncyBjaGVjayBpZiB0aGVyZSBpcyBwZW5kaW5nIGRhdGEgdG8gc2VuZCAqLworICAgIGlmIChzdC0+bGVuKSB7CisJd3JpdGVfZGF0YV90ICp3ZGF0YSA9ICh3cml0ZV9kYXRhX3QqKXN0LT5zdGFydDsKKwlwal9zdGF0dXNfdCBzdGF0dXM7CisJCisJc3QtPnNlbmRfcHRyLlNldCgoVFVpbnQ4Kil3ZGF0YS0+ZGF0YSwgKFRJbnQpd2RhdGEtPmRhdGFfbGVuKTsKKwlzdC0+Y3VycmVudF9kYXRhID0gd2RhdGE7CisJc3RhdHVzID0gc3NvY2stPnNvY2stPlNlbmQoJnNlbmRfY2IsIHNzb2NrLCBzdC0+c2VuZF9wdHIsIDApOworCWlmIChzdGF0dXMgIT0gUEpfRVBFTkRJTkcpIHsKKwkgICAgc3NvY2stPmVzdGFibGlzaGVkID0gUEpfRkFMU0U7CisJICAgIHN0LT5sZW4gPSAwOworCSAgICByZXR1cm47CisJfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8qIEJ1ZmZlciBlbXB0eSwgcmVzZXQgdGhlIHN0YXJ0IHBvc2l0aW9uICovCisgICAgICAgIHN0LT5zdGFydCA9IHN0LT5idWY7CisgICAgfQorfQorCisvKgorICogU2VuZCBkYXRhIHVzaW5nIHRoZSBzb2NrZXQuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfc3NsX3NvY2tfc2VuZCAocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqc2VuZF9rZXksCisJCQkJICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKwkJCQkgICAgICBwal9zc2l6ZV90ICpzaXplLAorCQkJCSAgICAgIHVuc2lnbmVkIGZsYWdzKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzc29jayAmJiBkYXRhICYmIHNpemUsIFBKX0VJTlZBTCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihzc29jay0+d3JpdGVfc3RhdGUubWF4X2xlbiA9PSAwIHx8IAorCQkgICAgIHNzb2NrLT53cml0ZV9zdGF0ZS5tYXhfbGVuID49IChwal9zaXplX3QpKnNpemUsIAorCQkgICAgIFBKX0VUT09TTUFMTCk7CisgICAgCisgICAgLyogQ2hlY2sgY29ubmVjdGlvbiBzdGF0dXMgKi8KKyAgICBpZiAoIVBqU3ltYmlhbk9TOjpJbnN0YW5jZSgpLT5Jc0Nvbm5lY3Rpb25VcCgpIHx8ICFzc29jay0+ZXN0YWJsaXNoZWQpIAorICAgIHsKKwlzc29jay0+ZXN0YWJsaXNoZWQgPSBQSl9GQUxTRTsKKwlyZXR1cm4gUEpfRUNBTkNFTExFRDsKKyAgICB9CisKKyAgICB3cml0ZV9zdGF0ZV90ICpzdCA9ICZzc29jay0+d3JpdGVfc3RhdGU7CisgICAgCisgICAgLyogU3luY2hyb25vdXMgbW9kZSAqLworICAgIGlmIChzdC0+bWF4X2xlbiA9PSAwKSB7CisJc3QtPnNlbmRfcHRyLlNldCgoVFVpbnQ4KilkYXRhLCAoVEludCkqc2l6ZSk7CisJcmV0dXJuIHNzb2NrLT5zb2NrLT5TZW5kU3luYyhzdC0+c2VuZF9wdHIsIGZsYWdzKTsKKyAgICB9CisKKyAgICAvKiBDU2VjdXJlU29ja2V0IG9ubHkgYWxsb3dzIG9uZSBvdXRzdGFuZGluZyBzZW5kIG9wZXJhdGlvbiwgc28KKyAgICAgKiB3ZSB1c2UgYnVmZmVyaW5nIG1lY2hhbmlzbSB0byBhbGxvdyBhcHBsaWNhdGlvbiB0byBwZXJmb3JtIHNlbmQgCisgICAgICogb3BlcmF0aW9ucyBhdCBhbnkgdGltZS4KKyAgICAgKi8KKyAgICAKKyAgICBwal9zaXplX3QgbmVlZGVkX2xlbiA9ICpzaXplICsgc2l6ZW9mKHdyaXRlX2RhdGFfdCkgLSAxOworICAgIAorICAgIC8qIEFsaWduIG5lZWRlZF9sZW4gdG8gYmUgbXVsdGlwbGljYXRpb24gb2YgNCAqLworICAgIG5lZWRlZF9sZW4gPSAoKG5lZWRlZF9sZW4gKyAzKSA+PiAyKSA8PCAyOyAKKworICAgIC8qIEJsb2NrIHVudGlsIHRoZXJlIGlzIGJ1ZmZlciBzbG90IGF2YWlsYWJsZSBhbmQgY29udGlndW91cyEgKi8KKyAgICB3aGlsZSAoc3QtPnN0YXJ0ICsgc3QtPmxlbiArIG5lZWRlZF9sZW4gPiBzdC0+YnVmICsgc3QtPm1heF9sZW4pIHsKKwlwal9zeW1iaWFub3NfcG9sbCgtMSwgLTEpOworICAgIH0KKworICAgIC8qIFB1c2ggYmFjayB0aGUgc2VuZCBkYXRhIGludG8gdGhlIGJ1ZmZlciAqLworICAgIHdyaXRlX2RhdGFfdCAqd2RhdGEgPSAod3JpdGVfZGF0YV90Kikoc3QtPnN0YXJ0ICsgc3QtPmxlbik7CisgICAgCisgICAgd2RhdGEtPmxlbiA9IG5lZWRlZF9sZW47CisgICAgd2RhdGEtPmtleSA9IHNlbmRfa2V5OworICAgIHdkYXRhLT5kYXRhX2xlbiA9IChwal9zaXplX3QpKnNpemU7CisgICAgcGpfbWVtY3B5KHdkYXRhLT5kYXRhLCBkYXRhLCAqc2l6ZSk7CisgICAgc3QtPmxlbiArPSBuZWVkZWRfbGVuOworCisgICAgLyogSWYgbm8gb3V0c3RhbmRpbmcgc2VuZCwgc2VuZCBpdCAqLworICAgIGlmIChzdC0+Y3VycmVudF9kYXRhID09IE5VTEwpIHsKKwlwal9zdGF0dXNfdCBzdGF0dXM7CisJICAgIAorCXdkYXRhID0gKHdyaXRlX2RhdGFfdCopc3QtPnN0YXJ0OworCXN0LT5jdXJyZW50X2RhdGEgPSB3ZGF0YTsKKwlzdC0+c2VuZF9wdHIuU2V0KChUVWludDgqKXdkYXRhLT5kYXRhLCAoVEludCl3ZGF0YS0+ZGF0YV9sZW4pOworCXN0YXR1cyA9IHNzb2NrLT5zb2NrLT5TZW5kKCZzZW5kX2NiLCBzc29jaywgc3QtPnNlbmRfcHRyLCBmbGFncyk7CisJCisJaWYgKHN0YXR1cyAhPSBQSl9FUEVORElORykgeworCSAgICAqc2l6ZSA9IC1zdGF0dXM7CisJICAgIHJldHVybiBzdGF0dXM7CisJfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworLyoKKyAqIFNlbmQgZGF0YWdyYW0gdXNpbmcgdGhlIHNvY2tldC4KKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19zZW5kdG8gKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCQlwal9pb3F1ZXVlX29wX2tleV90ICpzZW5kX2tleSwKKwkJCQkJY29uc3Qgdm9pZCAqZGF0YSwKKwkJCQkJcGpfc3NpemVfdCAqc2l6ZSwKKwkJCQkJdW5zaWduZWQgZmxhZ3MsCisJCQkJCWNvbnN0IHBqX3NvY2thZGRyX3QgKmFkZHIsCisJCQkJCWludCBhZGRyX2xlbikKK3sKKyAgICBQSl9VTlVTRURfQVJHKHNzb2NrKTsKKyAgICBQSl9VTlVTRURfQVJHKHNlbmRfa2V5KTsKKyAgICBQSl9VTlVTRURfQVJHKGRhdGEpOworICAgIFBKX1VOVVNFRF9BUkcoc2l6ZSk7CisgICAgUEpfVU5VU0VEX0FSRyhmbGFncyk7CisgICAgUEpfVU5VU0VEX0FSRyhhZGRyKTsKKyAgICBQSl9VTlVTRURfQVJHKGFkZHJfbGVuKTsKKyAgICByZXR1cm4gUEpfRU5PVFNVUDsKK30KKworLyoKKyAqIFN0YXJ0cyBhc3luY2hyb25vdXMgc29ja2V0IGFjY2VwdCgpIG9wZXJhdGlvbnMgb24gdGhpcyBTU0wgc29ja2V0LiAKKyAqLworUEpfREVGKHBqX3N0YXR1c190KSBwal9zc2xfc29ja19zdGFydF9hY2NlcHQgKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCQkgICAgICBwal9wb29sX3QgKnBvb2wsCisJCQkJCSAgICAgIGNvbnN0IHBqX3NvY2thZGRyX3QgKmxvY2FsX2FkZHIsCisJCQkJCSAgICAgIGludCBhZGRyX2xlbikKK3sKKyAgICBQSl9VTlVTRURfQVJHKHNzb2NrKTsKKyAgICBQSl9VTlVTRURfQVJHKHBvb2wpOworICAgIFBKX1VOVVNFRF9BUkcobG9jYWxfYWRkcik7CisgICAgUEpfVU5VU0VEX0FSRyhhZGRyX2xlbik7CisgICAgCisgICAgcmV0dXJuIFBKX0VOT1RTVVA7Cit9CisKK3N0YXRpYyB2b2lkIGNvbm5lY3RfY2IoaW50IGVyciwgdm9pZCAqa2V5KQoreworICAgIHBqX3NzbF9zb2NrX3QgKnNzb2NrID0gKHBqX3NzbF9zb2NrX3QqKWtleTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisgICAgCisgICAgaWYgKHNzb2NrLT5jb25uZWN0X3RpbWVyKSB7CisJZGVsZXRlIHNzb2NrLT5jb25uZWN0X3RpbWVyOworCXNzb2NrLT5jb25uZWN0X3RpbWVyID0gTlVMTDsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoZXJyID09IEtFcnJOb25lKT8gUEpfU1VDQ0VTUyA6IFBKX1JFVFVSTl9PU19FUlJPUihlcnIpOworICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCXNzb2NrLT5lc3RhYmxpc2hlZCA9IFBKX1RSVUU7CisJdXBkYXRlX2NlcnRzX2luZm8oc3NvY2spOworICAgIH0gZWxzZSB7CisJZGVsZXRlIHNzb2NrLT5zb2NrOworCXNzb2NrLT5zb2NrID0gTlVMTDsKKwlpZiAoZXJyID09IEtFcnJUaW1lZE91dCkgc3RhdHVzID0gUEpfRVRJTUVET1VUOworICAgIH0KKyAgICAKKyAgICBpZiAoc3NvY2stPmNiLm9uX2Nvbm5lY3RfY29tcGxldGUpIHsKKwlwal9ib29sX3QgcmV0ID0gKCpzc29jay0+Y2Iub25fY29ubmVjdF9jb21wbGV0ZSkoc3NvY2ssIHN0YXR1cyk7CisJaWYgKCFyZXQpIHsKKwkgICAgLyogV2UndmUgYmVlbiBkZXN0cm95ZWQgKi8KKwkgICAgcmV0dXJuOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNvbm5lY3RfdGltZXJfY2Iodm9pZCAqa2V5KQoreworICAgIGNvbm5lY3RfY2IoS0VyclRpbWVkT3V0LCBrZXkpOworfQorCisvKgorICogU3RhcnRzIGFzeW5jaHJvbm91cyBzb2NrZXQgY29ubmVjdCgpIG9wZXJhdGlvbiBhbmQgU1NML1RMUyBoYW5kc2hha2luZyAKKyAqIGZvciB0aGlzIHNvY2tldC4gT25jZSB0aGUgY29ubmVjdGlvbiBpcyBkb25lIChlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIG5vdCksCisgKiB0aGUgXGEgb25fY29ubmVjdF9jb21wbGV0ZSgpIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICovCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3N0YXJ0X2Nvbm5lY3QgKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCQkgICAgICAgcGpfcG9vbF90ICpwb29sLAorCQkJCQkgICAgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqbG9jYWxhZGRyLAorCQkJCQkgICAgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqcmVtYWRkciwKKwkJCQkJICAgICAgIGludCBhZGRyX2xlbikKK3sKKyAgICBDUGpTU0xTb2NrZXQgKnNvY2sgPSBOVUxMOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAKKyAgICBQSl9BU1NFUlRfUkVUVVJOKHNzb2NrICYmIHBvb2wgJiYgbG9jYWxhZGRyICYmIHJlbWFkZHIgJiYgYWRkcl9sZW4sCisJCSAgICAgUEpfRUlOVkFMKTsKKworICAgIC8qIENoZWNrIGNvbm5lY3Rpb24gc3RhdHVzICovCisgICAgUEpfU1lNQklBTl9DSEVDS19DT05ORUNUSU9OKCk7CisgICAgCisgICAgaWYgKHNzb2NrLT5zb2NrICE9IE5VTEwpIHsKKwlDUGpTU0xTb2NrZXQ6OnNzbF9zdGF0ZSBzdGF0ZSA9IHNzb2NrLT5zb2NrLT5HZXRTdGF0ZSgpOworCXN3aXRjaCAoc3RhdGUpIHsKKwljYXNlIENQalNTTFNvY2tldDo6U1NMX1NUQVRFX0VTVEFCTElTSEVEOgorCSAgICByZXR1cm4gUEpfU1VDQ0VTUzsKKwlkZWZhdWx0OgorCSAgICByZXR1cm4gUEpfRVBFTkRJTkc7CisJfQorICAgIH0KKworICAgIC8qIFNldCBTU0wgcHJvdG9jb2wgKi8KKyAgICBUUHRyQzggcHJvdG87CisgICAgCisgICAgaWYgKHNzb2NrLT5wcm90byA9PSBQSl9TU0xfU09DS19QUk9UT19ERUZBVUxUKQorCXNzb2NrLT5wcm90byA9IFBKX1NTTF9TT0NLX1BST1RPX1RMUzE7CisKKyAgICAvKiBDU2VjdXJlU29ja2V0IG9ubHkgc3VwcG9ydCBUTFMxLjAgYW5kIFNTTDMuMCAqLworICAgIHN3aXRjaChzc29jay0+cHJvdG8pIHsKKyAgICBjYXNlIFBKX1NTTF9TT0NLX1BST1RPX1RMUzE6CisJcHJvdG8uU2V0KChjb25zdCBUVWludDgqKSJUTFMxLjAiLCA2KTsKKwlicmVhazsKKyAgICBjYXNlIFBKX1NTTF9TT0NLX1BST1RPX1NTTDM6CisJcHJvdG8uU2V0KChjb25zdCBUVWludDgqKSJTU0wzLjAiLCA2KTsKKwlicmVhazsKKyAgICBkZWZhdWx0OgorCXJldHVybiBQSl9FTk9UU1VQOworICAgIH0KKworICAgIC8qIFByZXBhcmUgYWRkcmVzc2VzICovCisgICAgVEluZXRBZGRyIGxvY2FsYWRkcl8sIHJlbWFkZHJfOworICAgIHN0YXR1cyA9IFBqU3ltYmlhbk9TOjpwajJBZGRyKCoocGpfc29ja2FkZHIqKWxvY2FsYWRkciwgYWRkcl9sZW4sIAorCQkJCSAgbG9jYWxhZGRyXyk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisgICAgCisgICAgc3RhdHVzID0gUGpTeW1iaWFuT1M6OnBqMkFkZHIoKihwal9zb2NrYWRkciopcmVtYWRkciwgYWRkcl9sZW4sCisJCQkJICByZW1hZGRyXyk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisKKyAgICBwal9zb2NrYWRkcl9jcCgocGpfc29ja2FkZHJfdCopJnNzb2NrLT5yZW1fYWRkciwgcmVtYWRkcik7CisKKyAgICAvKiBJbml0IFNTTCBlbmdpbmUgKi8KKyAgICBUUkFQRChlcnIsIHNvY2sgPSBDUGpTU0xTb2NrZXQ6Ok5ld0wocHJvdG8sIHNzb2NrLT5xb3NfdHlwZSwgCisJCQkJICAgICAgICAgc3NvY2stPnFvc19wYXJhbXMpKTsKKyAgICBpZiAoZXJyICE9IEtFcnJOb25lKQorCXJldHVybiBQSl9FTk9NRU07CisgICAgCisgICAgaWYgKHNzb2NrLT50aW1lb3V0LnNlYyAhPSAwIHx8IHNzb2NrLT50aW1lb3V0Lm1zZWMgIT0gMCkgeworCXNzb2NrLT5jb25uZWN0X3RpbWVyID0gbmV3IENQalRpbWVyKCZzc29jay0+dGltZW91dCwgCisJCQkJCSAgICAmY29ubmVjdF90aW1lcl9jYiwgc3NvY2spOworICAgIH0KKyAgICAKKyAgICAvKiBDb252ZXJ0IHNlcnZlciBuYW1lIHRvIFN5bWJpYW4gZGVzY3JpcHRvciAqLworICAgIFRQdHJDOCBzZXJ2ZXJuYW1lXygoVFVpbnQ4Kilzc29jay0+c2VydmVybmFtZS5wdHIsIAorCQkgICAgICAgc3NvY2stPnNlcnZlcm5hbWUuc2xlbik7CisgICAgCisgICAgLyogQ29udmVydCBjaXBoZXIgbGlzdCB0byBTeW1iaWFuIGRlc2NyaXB0b3IgKi8KKyAgICBUUHRyQzggY2lwaGVyc18oKFRVaW50OCopc3NvY2stPmNpcGhlcnMucHRyLCAKKwkJICAgIHNzb2NrLT5jaXBoZXJzLnNsZW4pOworICAgIAorICAgIC8qIFRyeSB0byBjb25uZWN0ICovCisgICAgc3RhdHVzID0gc29jay0+Q29ubmVjdCgmY29ubmVjdF9jYiwgc3NvY2ssIGxvY2FsYWRkcl8sIHJlbWFkZHJfLAorCQkJICAgc2VydmVybmFtZV8sIGNpcGhlcnNfKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgJiYgc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisJZGVsZXRlIHNvY2s7CisJcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICBzc29jay0+c29jayA9IHNvY2s7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3NzbF9zb2NrX3JlbmVnb3RpYXRlKHBqX3NzbF9zb2NrX3QgKnNzb2NrKQoreworICAgIFBKX1VOVVNFRF9BUkcoc3NvY2spOworICAgIHJldHVybiBQSl9FTk9UU1VQOworfQpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3N0cmluZy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3N0cmluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlY2Q1OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc3RyaW5nLmMKQEAgLTAsMCArMSwyNTMgQEAKKy8qICRJZDogc3RyaW5nLmMgNDcwNCAyMDE0LTAxLTE2IDA1OjMwOjQ2WiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovcG9vbC5oPgorI2luY2x1ZGUgPHBqL2N0eXBlLmg+CisjaW5jbHVkZSA8cGovcmFuZC5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisKKyNpZiBQSl9GVU5DVElPTlNfQVJFX0lOTElORUQ9PTAKKyMgIGluY2x1ZGUgPHBqL3N0cmluZ19pLmg+CisjZW5kaWYKKworCitQSl9ERUYoY2hhciopIHBqX3N0cnN0cihjb25zdCBwal9zdHJfdCAqc3RyLCBjb25zdCBwal9zdHJfdCAqc3Vic3RyKQoreworICAgIGNvbnN0IGNoYXIgKnMsICplbmRzOworCisgICAgLyogU3BlY2lhbCBjYXNlIHdoZW4gc3Vic3RyIGlzIHplcm8gKi8KKyAgICBpZiAoc3Vic3RyLT5zbGVuID09IDApIHsKKwlyZXR1cm4gKGNoYXIqKXN0ci0+cHRyOworICAgIH0KKworICAgIHMgPSBzdHItPnB0cjsKKyAgICBlbmRzID0gc3RyLT5wdHIgKyBzdHItPnNsZW4gLSBzdWJzdHItPnNsZW47CisgICAgZm9yICg7IHM8PWVuZHM7ICsrcykgeworCWlmIChwal9hbnNpX3N0cm5jbXAocywgc3Vic3RyLT5wdHIsIHN1YnN0ci0+c2xlbik9PTApCisJICAgIHJldHVybiAoY2hhciopczsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworUEpfREVGKGNoYXIqKSBwal9zdHJpc3RyKGNvbnN0IHBqX3N0cl90ICpzdHIsIGNvbnN0IHBqX3N0cl90ICpzdWJzdHIpCit7CisgICAgY29uc3QgY2hhciAqcywgKmVuZHM7CisKKyAgICAvKiBTcGVjaWFsIGNhc2Ugd2hlbiBzdWJzdHIgaXMgemVybyAqLworICAgIGlmIChzdWJzdHItPnNsZW4gPT0gMCkgeworCXJldHVybiAoY2hhciopc3RyLT5wdHI7CisgICAgfQorCisgICAgcyA9IHN0ci0+cHRyOworICAgIGVuZHMgPSBzdHItPnB0ciArIHN0ci0+c2xlbiAtIHN1YnN0ci0+c2xlbjsKKyAgICBmb3IgKDsgczw9ZW5kczsgKytzKSB7CisJaWYgKHBqX2Fuc2lfc3RybmljbXAocywgc3Vic3RyLT5wdHIsIHN1YnN0ci0+c2xlbik9PTApCisJICAgIHJldHVybiAoY2hhciopczsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworUEpfREVGKHBqX3N0cl90KikgcGpfc3RybHRyaW0oIHBqX3N0cl90ICpzdHIgKQoreworICAgIGNoYXIgKmVuZCA9IHN0ci0+cHRyICsgc3RyLT5zbGVuOworICAgIHJlZ2lzdGVyIGNoYXIgKnAgPSBzdHItPnB0cjsKKyAgICB3aGlsZSAocCA8IGVuZCAmJiBwal9pc3NwYWNlKCpwKSkKKwkrK3A7CisgICAgc3RyLT5zbGVuIC09IChwIC0gc3RyLT5wdHIpOworICAgIHN0ci0+cHRyID0gcDsKKyAgICByZXR1cm4gc3RyOworfQorCitQSl9ERUYocGpfc3RyX3QqKSBwal9zdHJydHJpbSggcGpfc3RyX3QgKnN0ciApCit7CisgICAgY2hhciAqZW5kID0gc3RyLT5wdHIgKyBzdHItPnNsZW47CisgICAgcmVnaXN0ZXIgY2hhciAqcCA9IGVuZCAtIDE7CisgICAgd2hpbGUgKHAgPj0gc3RyLT5wdHIgJiYgcGpfaXNzcGFjZSgqcCkpCisgICAgICAgIC0tcDsKKyAgICBzdHItPnNsZW4gLT0gKChlbmQgLSBwKSAtIDEpOworICAgIHJldHVybiBzdHI7Cit9CisKK1BKX0RFRihjaGFyKikgcGpfY3JlYXRlX3JhbmRvbV9zdHJpbmcoY2hhciAqc3RyLCBwal9zaXplX3QgbGVuKQoreworICAgIHVuc2lnbmVkIGk7CisgICAgY2hhciAqcCA9IHN0cjsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBmb3IgKGk9MDsgaTxsZW4vODsgKytpKSB7CisJcGpfdWludDMyX3QgdmFsID0gcGpfcmFuZCgpOworCXBqX3ZhbF90b19oZXhfZGlnaXQoICh2YWwgJiAweEZGMDAwMDAwKSA+PiAyNCwgcCswICk7CisJcGpfdmFsX3RvX2hleF9kaWdpdCggKHZhbCAmIDB4MDBGRjAwMDApID4+IDE2LCBwKzIgKTsKKwlwal92YWxfdG9faGV4X2RpZ2l0KCAodmFsICYgMHgwMDAwRkYwMCkgPj4gIDgsIHArNCApOworCXBqX3ZhbF90b19oZXhfZGlnaXQoICh2YWwgJiAweDAwMDAwMEZGKSA+PiAgMCwgcCs2ICk7CisJcCArPSA4OworICAgIH0KKyAgICBmb3IgKGk9aSAqIDg7IGk8bGVuOyArK2kpIHsKKwkqcCsrID0gcGpfaGV4X2RpZ2l0c1sgcGpfcmFuZCgpICYgMHgwRiBdOworICAgIH0KKyAgICByZXR1cm4gc3RyOworfQorCitQSl9ERUYobG9uZykgcGpfc3RydG9sKGNvbnN0IHBqX3N0cl90ICpzdHIpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGlmIChzdHItPnNsZW4gPiAwICYmIChzdHItPnB0clswXSA9PSAnKycgfHwgc3RyLT5wdHJbMF0gPT0gJy0nKSkgeworICAgICAgICBwal9zdHJfdCBzOworICAgICAgICAKKyAgICAgICAgcy5wdHIgPSBzdHItPnB0ciArIDE7CisgICAgICAgIHMuc2xlbiA9IHN0ci0+c2xlbiAtIDE7CisgICAgICAgIHJldHVybiAoc3RyLT5wdHJbMF0gPT0gJy0nPyAtKGxvbmcpcGpfc3RydG91bCgmcykgOiBwal9zdHJ0b3VsKCZzKSk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBwal9zdHJ0b3VsKHN0cik7Cit9CisKK1BKX0RFRih1bnNpZ25lZCBsb25nKSBwal9zdHJ0b3VsKGNvbnN0IHBqX3N0cl90ICpzdHIpCit7CisgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKKyAgICB1bnNpZ25lZCBpOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIHZhbHVlID0gMDsKKyAgICBmb3IgKGk9MDsgaTwodW5zaWduZWQpc3RyLT5zbGVuOyArK2kpIHsKKwlpZiAoIXBqX2lzZGlnaXQoc3RyLT5wdHJbaV0pKQorCSAgICBicmVhazsKKwl2YWx1ZSA9IHZhbHVlICogMTAgKyAoc3RyLT5wdHJbaV0gLSAnMCcpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1BKX0RFRih1bnNpZ25lZCBsb25nKSBwal9zdHJ0b3VsMihjb25zdCBwal9zdHJfdCAqc3RyLCBwal9zdHJfdCAqZW5kcHRyLAorCQkJCSAgdW5zaWduZWQgYmFzZSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHZhbHVlOworICAgIHVuc2lnbmVkIGk7CisKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgdmFsdWUgPSAwOworICAgIGlmIChiYXNlIDw9IDEwKSB7CisJZm9yIChpPTA7IGk8KHVuc2lnbmVkKXN0ci0+c2xlbjsgKytpKSB7CisJICAgIHVuc2lnbmVkIGMgPSAoc3RyLT5wdHJbaV0gLSAnMCcpOworCSAgICBpZiAoYyA+PSBiYXNlKQorCQlicmVhazsKKwkgICAgdmFsdWUgPSB2YWx1ZSAqIGJhc2UgKyBjOworCX0KKyAgICB9IGVsc2UgaWYgKGJhc2UgPT0gMTYpIHsKKwlmb3IgKGk9MDsgaTwodW5zaWduZWQpc3RyLT5zbGVuOyArK2kpIHsKKwkgICAgaWYgKCFwal9pc3hkaWdpdChzdHItPnB0cltpXSkpCisJCWJyZWFrOworCSAgICB2YWx1ZSA9IHZhbHVlICogMTYgKyBwal9oZXhfZGlnaXRfdG9fdmFsKHN0ci0+cHRyW2ldKTsKKwl9CisgICAgfSBlbHNlIHsKKwlwal9hc3NlcnQoISJVbnN1cHBvcnRlZCBiYXNlIik7CisJaSA9IDA7CisJdmFsdWUgPSAweEZGRkZGRkZGVUw7CisgICAgfQorCisgICAgaWYgKGVuZHB0cikgeworCWVuZHB0ci0+cHRyID0gc3RyLT5wdHIgKyBpOworCWVuZHB0ci0+c2xlbiA9IHN0ci0+c2xlbiAtIGk7CisgICAgfQorCisgICAgcmV0dXJuIHZhbHVlOworfQorCitQSl9ERUYoZmxvYXQpIHBqX3N0cnRvZihjb25zdCBwal9zdHJfdCAqc3RyKQoreworICAgIHBqX3N0cl90IHBhcnQ7CisgICAgY2hhciAqcGRvdDsKKyAgICBmbG9hdCB2YWw7CisKKyAgICBpZiAoc3RyLT5zbGVuID09IDApCisJcmV0dXJuIDA7CisKKyAgICBwZG90ID0gKGNoYXIqKXBqX21lbWNocihzdHItPnB0ciwgJy4nLCBzdHItPnNsZW4pOworICAgIHBhcnQucHRyID0gc3RyLT5wdHI7CisgICAgcGFydC5zbGVuID0gcGRvdCA/IHBkb3QgLSBzdHItPnB0ciA6IHN0ci0+c2xlbjsKKworICAgIGlmIChwYXJ0LnNsZW4pCisJdmFsID0gKGZsb2F0KXBqX3N0cnRvbCgmcGFydCk7CisgICAgZWxzZQorCXZhbCA9IDA7CisKKyAgICBpZiAocGRvdCkgeworCXBhcnQucHRyID0gcGRvdCArIDE7CisJcGFydC5zbGVuID0gKHN0ci0+cHRyICsgc3RyLT5zbGVuIC0gcGRvdCAtIDEpOworCWlmIChwYXJ0LnNsZW4pIHsKKwkgICAgcGpfc3RyX3QgZW5kcHRyOworCSAgICBmbG9hdCBmcGFydCwgZmRpdjsKKwkgICAgaW50IGk7CisJICAgIGZwYXJ0ID0gKGZsb2F0KXBqX3N0cnRvdWwyKCZwYXJ0LCAmZW5kcHRyLCAxMCk7CisJICAgIGZkaXYgPSAxLjA7CisJICAgIGZvciAoaT0wOyBpPChwYXJ0LnNsZW4gLSBlbmRwdHIuc2xlbik7ICsraSkKKwkJICAgIGZkaXYgPSBmZGl2ICogMTA7CisJICAgIGlmICh2YWwgPj0gMCkKKwkJdmFsICs9IChmcGFydCAvIGZkaXYpOworCSAgICBlbHNlCisJCXZhbCAtPSAoZnBhcnQgLyBmZGl2KTsKKwl9CisgICAgfQorICAgIHJldHVybiB2YWw7Cit9CisKK1BKX0RFRihpbnQpIHBqX3V0b2EodW5zaWduZWQgbG9uZyB2YWwsIGNoYXIgKmJ1ZikKK3sKKyAgICByZXR1cm4gcGpfdXRvYV9wYWQodmFsLCBidWYsIDAsIDApOworfQorCitQSl9ERUYoaW50KSBwal91dG9hX3BhZCggdW5zaWduZWQgbG9uZyB2YWwsIGNoYXIgKmJ1ZiwgaW50IG1pbl9kaWcsIGludCBwYWQpCit7CisgICAgY2hhciAqcDsKKyAgICBpbnQgbGVuOworCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIHAgPSBidWY7CisgICAgZG8geworICAgICAgICB1bnNpZ25lZCBsb25nIGRpZ3ZhbCA9ICh1bnNpZ25lZCBsb25nKSAodmFsICUgMTApOworICAgICAgICB2YWwgLz0gMTA7CisgICAgICAgICpwKysgPSAoY2hhcikgKGRpZ3ZhbCArICcwJyk7CisgICAgfSB3aGlsZSAodmFsID4gMCk7CisKKyAgICBsZW4gPSAoaW50KShwLWJ1Zik7CisgICAgd2hpbGUgKGxlbiA8IG1pbl9kaWcpIHsKKwkqcCsrID0gKGNoYXIpcGFkOworCSsrbGVuOworICAgIH0KKyAgICAqcC0tID0gJ1wwJzsKKworICAgIGRvIHsKKyAgICAgICAgY2hhciB0ZW1wID0gKnA7CisgICAgICAgICpwID0gKmJ1ZjsKKyAgICAgICAgKmJ1ZiA9IHRlbXA7CisgICAgICAgIC0tcDsKKyAgICAgICAgKytidWY7CisgICAgfSB3aGlsZSAoYnVmIDwgcCk7CisKKyAgICByZXR1cm4gbGVuOworfQorCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai9zeW1ib2xzLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc3ltYm9scy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZTk1MjYKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovc3ltYm9scy5jCkBAIC0wLDAgKzEsMzQ4IEBACisvKiAkSWQ6IHN5bWJvbHMuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqbGliLmg+CisKKy8qCisgKiBhZGRyX3Jlc29sdi5oCisgKi8KK1BKX0VYUE9SVF9TWU1CT0wocGpfZ2V0aG9zdGJ5bmFtZSkKKworLyoKKyAqIGFycmF5LmgKKyAqLworUEpfRVhQT1JUX1NZTUJPTChwal9hcnJheV9pbnNlcnQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2FycmF5X2VyYXNlKQorUEpfRVhQT1JUX1NZTUJPTChwal9hcnJheV9maW5kKQorCisvKgorICogY29uZmlnLmgKKyAqLworUEpfRVhQT1JUX1NZTUJPTChwal9kdW1wX2NvbmZpZykKKwkKKy8qCisgKiBlcnJuby5oCisgKi8KK1BKX0VYUE9SVF9TWU1CT0wocGpfZ2V0X29zX2Vycm9yKQorUEpfRVhQT1JUX1NZTUJPTChwal9zZXRfb3NfZXJyb3IpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2dldF9uZXRvc19lcnJvcikKK1BKX0VYUE9SVF9TWU1CT0wocGpfc2V0X25ldG9zX2Vycm9yKQorUEpfRVhQT1JUX1NZTUJPTChwal9zdHJlcnJvcikKKworLyoKKyAqIGV4Y2VwdC5oCisgKi8KK1BKX0VYUE9SVF9TWU1CT0wocGpfdGhyb3dfZXhjZXB0aW9uXykKK1BKX0VYUE9SVF9TWU1CT0wocGpfcHVzaF9leGNlcHRpb25faGFuZGxlcl8pCitQSl9FWFBPUlRfU1lNQk9MKHBqX3BvcF9leGNlcHRpb25faGFuZGxlcl8pCitQSl9FWFBPUlRfU1lNQk9MKHBqX3NldGptcCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9uZ2ptcCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfZXhjZXB0aW9uX2lkX2FsbG9jKQorUEpfRVhQT1JUX1NZTUJPTChwal9leGNlcHRpb25faWRfZnJlZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfZXhjZXB0aW9uX2lkX25hbWUpCisKKworLyoKKyAqIGZpZm9idWYuaAorICovCitQSl9FWFBPUlRfU1lNQk9MKHBqX2ZpZm9idWZfaW5pdCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfZmlmb2J1Zl9tYXhfc2l6ZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfZmlmb2J1Zl9hbGxvYykKK1BKX0VYUE9SVF9TWU1CT0wocGpfZmlmb2J1Zl91bmFsbG9jKQorUEpfRVhQT1JUX1NZTUJPTChwal9maWZvYnVmX2ZyZWUpCisKKy8qCisgKiBndWlkLmgKKyAqLworUEpfRVhQT1JUX1NZTUJPTChwal9nZW5lcmF0ZV91bmlxdWVfc3RyaW5nKQorUEpfRVhQT1JUX1NZTUJPTChwal9jcmVhdGVfdW5pcXVlX3N0cmluZykKKworLyoKKyAqIGhhc2guaAorICovCitQSl9FWFBPUlRfU1lNQk9MKHBqX2hhc2hfY2FsYykKK1BKX0VYUE9SVF9TWU1CT0wocGpfaGFzaF9jcmVhdGUpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2hhc2hfZ2V0KQorUEpfRVhQT1JUX1NZTUJPTChwal9oYXNoX3NldCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfaGFzaF9jb3VudCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfaGFzaF9maXJzdCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfaGFzaF9uZXh0KQorUEpfRVhQT1JUX1NZTUJPTChwal9oYXNoX3RoaXMpCisKKy8qCisgKiBpb3F1ZXVlLmgKKyAqLworUEpfRVhQT1JUX1NZTUJPTChwal9pb3F1ZXVlX2NyZWF0ZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfaW9xdWV1ZV9kZXN0cm95KQorUEpfRVhQT1JUX1NZTUJPTChwal9pb3F1ZXVlX3NldF9sb2NrKQorUEpfRVhQT1JUX1NZTUJPTChwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2spCitQSl9FWFBPUlRfU1lNQk9MKHBqX2lvcXVldWVfdW5yZWdpc3RlcikKK1BKX0VYUE9SVF9TWU1CT0wocGpfaW9xdWV1ZV9nZXRfdXNlcl9kYXRhKQorUEpfRVhQT1JUX1NZTUJPTChwal9pb3F1ZXVlX3BvbGwpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2lvcXVldWVfcmVhZCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfaW9xdWV1ZV9yZWN2KQorUEpfRVhQT1JUX1NZTUJPTChwal9pb3F1ZXVlX3JlY3Zmcm9tKQorUEpfRVhQT1JUX1NZTUJPTChwal9pb3F1ZXVlX3dyaXRlKQorUEpfRVhQT1JUX1NZTUJPTChwal9pb3F1ZXVlX3NlbmQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2lvcXVldWVfc2VuZHRvKQorI2lmIGRlZmluZWQoUEpfSEFTX1RDUCkgJiYgUEpfSEFTX1RDUCAhPSAwCitQSl9FWFBPUlRfU1lNQk9MKHBqX2lvcXVldWVfYWNjZXB0KQorUEpfRVhQT1JUX1NZTUJPTChwal9pb3F1ZXVlX2Nvbm5lY3QpCisjZW5kaWYKKworLyoKKyAqIGxpc3QuaAorICovCitQSl9FWFBPUlRfU1lNQk9MKHBqX2xpc3RfaW5zZXJ0X2JlZm9yZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfbGlzdF9pbnNlcnRfbm9kZXNfYmVmb3JlKQorUEpfRVhQT1JUX1NZTUJPTChwal9saXN0X2luc2VydF9hZnRlcikKK1BKX0VYUE9SVF9TWU1CT0wocGpfbGlzdF9pbnNlcnRfbm9kZXNfYWZ0ZXIpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2xpc3RfbWVyZ2VfZmlyc3QpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2xpc3RfbWVyZ2VfbGFzdCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfbGlzdF9lcmFzZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfbGlzdF9maW5kX25vZGUpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2xpc3Rfc2VhcmNoKQorCisKKy8qCisgKiBsb2cuaAorICovCitQSl9FWFBPUlRfU1lNQk9MKHBqX2xvZ193cml0ZSkKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDEKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nX3NldF9sb2dfZnVuYykKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nX2dldF9sb2dfZnVuYykKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nX3NldF9sZXZlbCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nX2dldF9sZXZlbCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nX3NldF9kZWNvcikKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nX2dldF9kZWNvcikKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nXzEpCisjZW5kaWYKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDIKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nXzIpCisjZW5kaWYKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDMKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nXzMpCisjZW5kaWYKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDQKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nXzQpCisjZW5kaWYKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDUKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nXzUpCisjZW5kaWYKKyNpZiBQSl9MT0dfTUFYX0xFVkVMID49IDYKK1BKX0VYUE9SVF9TWU1CT0wocGpfbG9nXzYpCisjZW5kaWYKKworLyoKKyAqIG9zLmgKKyAqLworUEpfRVhQT1JUX1NZTUJPTChwal9pbml0KQorUEpfRVhQT1JUX1NZTUJPTChwal9nZXRwaWQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3RocmVhZF9yZWdpc3RlcikKK1BKX0VYUE9SVF9TWU1CT0wocGpfdGhyZWFkX2NyZWF0ZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfdGhyZWFkX2dldF9uYW1lKQorUEpfRVhQT1JUX1NZTUJPTChwal90aHJlYWRfcmVzdW1lKQorUEpfRVhQT1JUX1NZTUJPTChwal90aHJlYWRfdGhpcykKK1BKX0VYUE9SVF9TWU1CT0wocGpfdGhyZWFkX2pvaW4pCitQSl9FWFBPUlRfU1lNQk9MKHBqX3RocmVhZF9kZXN0cm95KQorUEpfRVhQT1JUX1NZTUJPTChwal90aHJlYWRfc2xlZXApCisjaWYgZGVmaW5lZChQSl9PU19IQVNfQ0hFQ0tfU1RBQ0spICYmIFBKX09TX0hBU19DSEVDS19TVEFDSyAhPSAwCitQSl9FWFBPUlRfU1lNQk9MKHBqX3RocmVhZF9jaGVja19zdGFjaykKK1BKX0VYUE9SVF9TWU1CT0wocGpfdGhyZWFkX2dldF9zdGFja19tYXhfdXNhZ2UpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3RocmVhZF9nZXRfc3RhY2tfaW5mbykKKyNlbmRpZgorUEpfRVhQT1JUX1NZTUJPTChwal9hdG9taWNfY3JlYXRlKQorUEpfRVhQT1JUX1NZTUJPTChwal9hdG9taWNfZGVzdHJveSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfYXRvbWljX3NldCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfYXRvbWljX2dldCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfYXRvbWljX2luYykKK1BKX0VYUE9SVF9TWU1CT0wocGpfYXRvbWljX2RlYykKK1BKX0VYUE9SVF9TWU1CT0wocGpfdGhyZWFkX2xvY2FsX2FsbG9jKQorUEpfRVhQT1JUX1NZTUJPTChwal90aHJlYWRfbG9jYWxfZnJlZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfdGhyZWFkX2xvY2FsX3NldCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfdGhyZWFkX2xvY2FsX2dldCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfZW50ZXJfY3JpdGljYWxfc2VjdGlvbikKK1BKX0VYUE9SVF9TWU1CT0wocGpfbGVhdmVfY3JpdGljYWxfc2VjdGlvbikKK1BKX0VYUE9SVF9TWU1CT0wocGpfbXV0ZXhfY3JlYXRlKQorUEpfRVhQT1JUX1NZTUJPTChwal9tdXRleF9sb2NrKQorUEpfRVhQT1JUX1NZTUJPTChwal9tdXRleF91bmxvY2spCitQSl9FWFBPUlRfU1lNQk9MKHBqX211dGV4X3RyeWxvY2spCitQSl9FWFBPUlRfU1lNQk9MKHBqX211dGV4X2Rlc3Ryb3kpCisjaWYgZGVmaW5lZChQSl9ERUJVRykgJiYgUEpfREVCVUcgIT0gMAorUEpfRVhQT1JUX1NZTUJPTChwal9tdXRleF9pc19sb2NrZWQpCisjZW5kaWYKKyNpZiBkZWZpbmVkKFBKX0hBU19TRU1BUEhPUkUpICYmIFBKX0hBU19TRU1BUEhPUkUgIT0gMAorUEpfRVhQT1JUX1NZTUJPTChwal9zZW1fY3JlYXRlKQorUEpfRVhQT1JUX1NZTUJPTChwal9zZW1fd2FpdCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfc2VtX3RyeXdhaXQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3NlbV9wb3N0KQorUEpfRVhQT1JUX1NZTUJPTChwal9zZW1fZGVzdHJveSkKKyNlbmRpZgorUEpfRVhQT1JUX1NZTUJPTChwal9nZXR0aW1lb2ZkYXkpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3RpbWVfZGVjb2RlKQorI2lmIGRlZmluZWQoUEpfSEFTX0hJR0hfUkVTX1RJTUVSKSAmJiBQSl9IQVNfSElHSF9SRVNfVElNRVIgIT0gMAorUEpfRVhQT1JUX1NZTUJPTChwal9nZXR0aWNrY291bnQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2dldF90aW1lc3RhbXApCitQSl9FWFBPUlRfU1lNQk9MKHBqX2dldF90aW1lc3RhbXBfZnJlcSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfZWxhcHNlZF90aW1lKQorUEpfRVhQT1JUX1NZTUJPTChwal9lbGFwc2VkX3VzZWMpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2VsYXBzZWRfbmFub3NlYykKK1BKX0VYUE9SVF9TWU1CT0wocGpfZWxhcHNlZF9jeWNsZSkKKyNlbmRpZgorCisJCisvKgorICogcG9vbC5oCisgKi8KK1BKX0VYUE9SVF9TWU1CT0wocGpfcG9vbF9jcmVhdGUpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3Bvb2xfcmVsZWFzZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfcG9vbF9nZXRvYmpuYW1lKQorUEpfRVhQT1JUX1NZTUJPTChwal9wb29sX3Jlc2V0KQorUEpfRVhQT1JUX1NZTUJPTChwal9wb29sX2dldF9jYXBhY2l0eSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfcG9vbF9nZXRfdXNlZF9zaXplKQorUEpfRVhQT1JUX1NZTUJPTChwal9wb29sX2FsbG9jKQorUEpfRVhQT1JUX1NZTUJPTChwal9wb29sX2NhbGxvYykKK1BKX0VYUE9SVF9TWU1CT0wocGpfcG9vbF9mYWN0b3J5X2RlZmF1bHRfcG9saWN5KQorUEpfRVhQT1JUX1NZTUJPTChwal9wb29sX2NyZWF0ZV9pbnQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3Bvb2xfaW5pdF9pbnQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3Bvb2xfZGVzdHJveV9pbnQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX2NhY2hpbmdfcG9vbF9pbml0KQorUEpfRVhQT1JUX1NZTUJPTChwal9jYWNoaW5nX3Bvb2xfZGVzdHJveSkKKworLyoKKyAqIHJhbmQuaAorICovCitQSl9FWFBPUlRfU1lNQk9MKHBqX3JhbmQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3NyYW5kKQorCisvKgorICogcmJ0cmVlLmgKKyAqLworUEpfRVhQT1JUX1NZTUJPTChwal9yYnRyZWVfaW5pdCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfcmJ0cmVlX2ZpcnN0KQorUEpfRVhQT1JUX1NZTUJPTChwal9yYnRyZWVfbGFzdCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfcmJ0cmVlX25leHQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3JidHJlZV9wcmV2KQorUEpfRVhQT1JUX1NZTUJPTChwal9yYnRyZWVfaW5zZXJ0KQorUEpfRVhQT1JUX1NZTUJPTChwal9yYnRyZWVfZmluZCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfcmJ0cmVlX2VyYXNlKQorUEpfRVhQT1JUX1NZTUJPTChwal9yYnRyZWVfbWF4X2hlaWdodCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfcmJ0cmVlX21pbl9oZWlnaHQpCisKKy8qCisgKiBzb2NrLmgKKyAqLworUEpfRVhQT1JUX1NZTUJPTChQSl9BRl9VTklYKQorUEpfRVhQT1JUX1NZTUJPTChQSl9BRl9JTkVUKQorUEpfRVhQT1JUX1NZTUJPTChQSl9BRl9JTkVUNikKK1BKX0VYUE9SVF9TWU1CT0woUEpfQUZfUEFDS0VUKQorUEpfRVhQT1JUX1NZTUJPTChQSl9BRl9JUkRBKQorUEpfRVhQT1JUX1NZTUJPTChQSl9TT0NLX1NUUkVBTSkKK1BKX0VYUE9SVF9TWU1CT0woUEpfU09DS19ER1JBTSkKK1BKX0VYUE9SVF9TWU1CT0woUEpfU09DS19SQVcpCitQSl9FWFBPUlRfU1lNQk9MKFBKX1NPQ0tfUkRNKQorUEpfRVhQT1JUX1NZTUJPTChQSl9TT0xfU09DS0VUKQorUEpfRVhQT1JUX1NZTUJPTChQSl9TT0xfSVApCitQSl9FWFBPUlRfU1lNQk9MKFBKX1NPTF9UQ1ApCitQSl9FWFBPUlRfU1lNQk9MKFBKX1NPTF9VRFApCitQSl9FWFBPUlRfU1lNQk9MKFBKX1NPTF9JUFY2KQorUEpfRVhQT1JUX1NZTUJPTChwal9udG9ocykKK1BKX0VYUE9SVF9TWU1CT0wocGpfaHRvbnMpCitQSl9FWFBPUlRfU1lNQk9MKHBqX250b2hsKQorUEpfRVhQT1JUX1NZTUJPTChwal9odG9ubCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfaW5ldF9udG9hKQorUEpfRVhQT1JUX1NZTUJPTChwal9pbmV0X2F0b24pCitQSl9FWFBPUlRfU1lNQk9MKHBqX2luZXRfYWRkcikKK1BKX0VYUE9SVF9TWU1CT0wocGpfc29ja2FkZHJfaW5fc2V0X3N0cl9hZGRyKQorUEpfRVhQT1JUX1NZTUJPTChwal9zb2NrYWRkcl9pbl9pbml0KQorUEpfRVhQT1JUX1NZTUJPTChwal9nZXRob3N0bmFtZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfZ2V0aG9zdGFkZHIpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3NvY2tfc29ja2V0KQorUEpfRVhQT1JUX1NZTUJPTChwal9zb2NrX2Nsb3NlKQorUEpfRVhQT1JUX1NZTUJPTChwal9zb2NrX2JpbmQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3NvY2tfYmluZF9pbikKKyNpZiBkZWZpbmVkKFBKX0hBU19UQ1ApICYmIFBKX0hBU19UQ1AgIT0gMAorUEpfRVhQT1JUX1NZTUJPTChwal9zb2NrX2xpc3RlbikKK1BKX0VYUE9SVF9TWU1CT0wocGpfc29ja19hY2NlcHQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3NvY2tfc2h1dGRvd24pCisjZW5kaWYKK1BKX0VYUE9SVF9TWU1CT0wocGpfc29ja19jb25uZWN0KQorUEpfRVhQT1JUX1NZTUJPTChwal9zb2NrX2dldHBlZXJuYW1lKQorUEpfRVhQT1JUX1NZTUJPTChwal9zb2NrX2dldHNvY2tuYW1lKQorUEpfRVhQT1JUX1NZTUJPTChwal9zb2NrX2dldHNvY2tvcHQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3NvY2tfc2V0c29ja29wdCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfc29ja19yZWN2KQorUEpfRVhQT1JUX1NZTUJPTChwal9zb2NrX3JlY3Zmcm9tKQorUEpfRVhQT1JUX1NZTUJPTChwal9zb2NrX3NlbmQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3NvY2tfc2VuZHRvKQorCisvKgorICogc29ja19zZWxlY3QuaAorICovCitQSl9FWFBPUlRfU1lNQk9MKFBKX0ZEX1pFUk8pCitQSl9FWFBPUlRfU1lNQk9MKFBKX0ZEX1NFVCkKK1BKX0VYUE9SVF9TWU1CT0woUEpfRkRfQ0xSKQorUEpfRVhQT1JUX1NZTUJPTChQSl9GRF9JU1NFVCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfc29ja19zZWxlY3QpCisKKy8qCisgKiBzdHJpbmcuaAorICovCitQSl9FWFBPUlRfU1lNQk9MKHBqX3N0cikKK1BKX0VYUE9SVF9TWU1CT0wocGpfc3RyYXNzaWduKQorUEpfRVhQT1JUX1NZTUJPTChwal9zdHJjcHkpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3N0cmNweTIpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3N0cmR1cCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfc3RyZHVwX3dpdGhfbnVsbCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfc3RyZHVwMikKK1BKX0VYUE9SVF9TWU1CT0wocGpfc3RyZHVwMykKK1BKX0VYUE9SVF9TWU1CT0wocGpfc3RyY21wKQorUEpfRVhQT1JUX1NZTUJPTChwal9zdHJjbXAyKQorUEpfRVhQT1JUX1NZTUJPTChwal9zdHJuY21wKQorUEpfRVhQT1JUX1NZTUJPTChwal9zdHJuY21wMikKK1BKX0VYUE9SVF9TWU1CT0wocGpfc3RyaWNtcCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfc3RyaWNtcDIpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3N0cm5pY21wKQorUEpfRVhQT1JUX1NZTUJPTChwal9zdHJuaWNtcDIpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3N0cmNhdCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfc3RybHRyaW0pCitQSl9FWFBPUlRfU1lNQk9MKHBqX3N0cnJ0cmltKQorUEpfRVhQT1JUX1NZTUJPTChwal9zdHJ0cmltKQorUEpfRVhQT1JUX1NZTUJPTChwal9jcmVhdGVfcmFuZG9tX3N0cmluZykKK1BKX0VYUE9SVF9TWU1CT0wocGpfc3RydG91bCkKK1BKX0VYUE9SVF9TWU1CT0wocGpfdXRvYSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfdXRvYV9wYWQpCisKKy8qCisgKiB0aW1lci5oCisgKi8KK1BKX0VYUE9SVF9TWU1CT0wocGpfdGltZXJfaGVhcF9tZW1fc2l6ZSkKK1BKX0VYUE9SVF9TWU1CT0wocGpfdGltZXJfaGVhcF9jcmVhdGUpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3RpbWVyX2VudHJ5X2luaXQpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3RpbWVyX2hlYXBfc2NoZWR1bGUpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3RpbWVyX2hlYXBfY2FuY2VsKQorUEpfRVhQT1JUX1NZTUJPTChwal90aW1lcl9oZWFwX2NvdW50KQorUEpfRVhQT1JUX1NZTUJPTChwal90aW1lcl9oZWFwX2VhcmxpZXN0X3RpbWUpCitQSl9FWFBPUlRfU1lNQk9MKHBqX3RpbWVyX2hlYXBfcG9sbCkKKworLyoKKyAqIHR5cGVzLmgKKyAqLworUEpfRVhQT1JUX1NZTUJPTChwal90aW1lX3ZhbF9ub3JtYWxpemUpCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai90aW1lci5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3RpbWVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmViNGNkMQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai90aW1lci5jCkBAIC0wLDAgKzEsNzE5IEBACisvKiAkSWQ6IHRpbWVyLmMgNDU2NyAyMDEzLTA3LTE5IDA2OjMxOjI4WiBiZW5ueWxwICQgKi8KKy8qIAorICogVGhlIFBKTElCJ3MgdGltZXIgaGVhcCBpcyBiYXNlZCAob3IgbW9yZSBjb3JyZWN0bHksIGNvcGllZCBhbmQgbW9kaWVkKQorICogZnJvbSBBQ0UgbGlicmFyeSBieSBEb3VnbGFzIEMuIFNjaG1pZHQuIEFDRSBpcyBhbiBleGNlbGxlbnQgT08gZnJhbWV3b3JrCisgKiB0aGF0IGltcGxlbWVudHMgbWFueSBjb3JlIHBhdHRlcm5zIGZvciBjb25jdXJyZW50IGNvbW11bmljYXRpb24gc29mdHdhcmUuCisgKiBJZiB5b3UncmUgbG9va2luZyBmb3IgQysrIGFsdGVybmF0aXZlIG9mIFBKTElCLCB0aGVuIEFDRSBpcyB5b3VyIGJlc3QKKyAqIHNvbHV0aW9uLgorICoKKyAqIFlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhY2NvcmRpbmcgdG8gQUNFIG9wZW4gc291cmNlIHRlcm1zIG9yIFBKTElCIG9wZW4KKyAqIHNvdXJjZSB0ZXJtcy4gWW91IGNhbiBmaW5kIHRoZSBmaW5lIEFDRSBsaWJyYXJ5IGF0OgorICogIGh0dHA6Ly93d3cuY3Mud3VzdGwuZWR1L35zY2htaWR0L0FDRS5odG1sCisgKgorICogQUNFIGlzIENvcHlyaWdodCAoQykxOTkzLTIwMDYgRG91Z2xhcyBDLiBTY2htaWR0IDxkLnNjaG1pZHRAdmFuZGVyYmlsdC5lZHU+CisgKgorICogR05VIFB1YmxpYyBMaWNlbnNlOgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3RpbWVyLmg+CisjaW5jbHVkZSA8cGovcG9vbC5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai9sb2NrLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovcmFuZC5oPgorCisjZGVmaW5lIFRISVNfRklMRQkidGltZXIuYyIKKworI2RlZmluZSBIRUFQX1BBUkVOVChYKQkoWCA9PSAwID8gMCA6ICgoKFgpIC0gMSkgLyAyKSkKKyNkZWZpbmUgSEVBUF9MRUZUKFgpCSgoKFgpKyhYKSkrMSkKKworCisjZGVmaW5lIERFRkFVTFRfTUFYX1RJTUVEX09VVF9QRVJfUE9MTCAgKDY0KQorCitlbnVtCit7CisgICAgRl9ET05UX0NBTEwgPSAxLAorICAgIEZfRE9OVF9BU1NFUlQgPSAyLAorICAgIEZfU0VUX0lEID0gNAorfTsKKworCisvKioKKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lciBoZWFwLgorICovCitzdHJ1Y3QgcGpfdGltZXJfaGVhcF90Cit7CisgICAgLyoqIFBvb2wgZnJvbSB3aGljaCB0aGUgdGltZXIgaGVhcCByZXNpemUgd2lsbCBnZXQgdGhlIHN0b3JhZ2UgZnJvbSAqLworICAgIHBqX3Bvb2xfdCAqcG9vbDsKKworICAgIC8qKiBNYXhpbXVtIHNpemUgb2YgdGhlIGhlYXAuICovCisgICAgcGpfc2l6ZV90IG1heF9zaXplOworCisgICAgLyoqIEN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcC4gKi8KKyAgICBwal9zaXplX3QgY3VyX3NpemU7CisKKyAgICAvKiogTWF4IHRpbWVkIG91dCBlbnRyaWVzIHRvIHByb2Nlc3MgcGVyIHBvbGwuICovCisgICAgdW5zaWduZWQgbWF4X2VudHJpZXNfcGVyX3BvbGw7CisKKyAgICAvKiogTG9jayBvYmplY3QuICovCisgICAgcGpfbG9ja190ICpsb2NrOworCisgICAgLyoqIEF1dG9kZWxldGUgbG9jay4gKi8KKyAgICBwal9ib29sX3QgYXV0b19kZWxldGVfbG9jazsKKworICAgIC8qKgorICAgICAqIEN1cnJlbnQgY29udGVudHMgb2YgdGhlIEhlYXAsIHdoaWNoIGlzIG9yZ2FuaXplZCBhcyBhICJoZWFwIiBvZgorICAgICAqIHBqX3RpbWVyX2VudHJ5IConcy4gIEluIHRoaXMgY29udGV4dCwgYSBoZWFwIGlzIGEgInBhcnRpYWxseQorICAgICAqIG9yZGVyZWQsIGFsbW9zdCBjb21wbGV0ZSIgYmluYXJ5IHRyZWUsIHdoaWNoIGlzIHN0b3JlZCBpbiBhbgorICAgICAqIGFycmF5LgorICAgICAqLworICAgIHBqX3RpbWVyX2VudHJ5ICoqaGVhcDsKKworICAgIC8qKgorICAgICAqIEFuIGFycmF5IG9mICJwb2ludGVycyIgdGhhdCBhbGxvd3MgZWFjaCBwal90aW1lcl9lbnRyeSBpbiB0aGUKKyAgICAgKiA8aGVhcF8+IHRvIGJlIGxvY2F0ZWQgaW4gTygxKSB0aW1lLiAgQmFzaWNhbGx5LCA8dGltZXJfaWRfW2ldPgorICAgICAqIGNvbnRhaW5zIHRoZSBzbG90IGluIHRoZSA8aGVhcF8+IGFycmF5IHdoZXJlIGFuIHBqX3RpbWVyX2VudHJ5CisgICAgICogd2l0aCB0aW1lciBpZCA8aT4gcmVzaWRlcy4gIFRodXMsIHRoZSB0aW1lciBpZCBwYXNzZWQgYmFjayBmcm9tCisgICAgICogPHNjaGVkdWxlX2VudHJ5PiBpcyByZWFsbHkgYW4gc2xvdCBpbnRvIHRoZSA8dGltZXJfaWRzPiBhcnJheS4gIFRoZQorICAgICAqIDx0aW1lcl9pZHNfPiBhcnJheSBzZXJ2ZXMgdHdvIHB1cnBvc2VzOiBuZWdhdGl2ZSB2YWx1ZXMgYXJlCisgICAgICogdHJlYXRlZCBhcyAicG9pbnRlcnMiIGZvciB0aGUgPGZyZWVsaXN0Xz4sIHdoZXJlYXMgcG9zaXRpdmUKKyAgICAgKiB2YWx1ZXMgYXJlIHRyZWF0ZWQgYXMgInBvaW50ZXJzIiBpbnRvIHRoZSA8aGVhcF8+IGFycmF5LgorICAgICAqLworICAgIHBqX3RpbWVyX2lkX3QgKnRpbWVyX2lkczsKKworICAgIC8qKgorICAgICAqICJQb2ludGVyIiB0byB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgZnJlZWxpc3QgY29udGFpbmVkIHdpdGhpbgorICAgICAqIHRoZSA8dGltZXJfaWRzXz4gYXJyYXksIHdoaWNoIGlzIG9yZ2FuaXplZCBhcyBhIHN0YWNrLgorICAgICAqLworICAgIHBqX3RpbWVyX2lkX3QgdGltZXJfaWRzX2ZyZWVsaXN0OworCisgICAgLyoqIENhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIGEgdGltZXIgZXhwaXJlcy4gKi8KKyAgICBwal90aW1lcl9oZWFwX2NhbGxiYWNrICpjYWxsYmFjazsKKworfTsKKworCisKK1BKX0lOTElORSh2b2lkKSBsb2NrX3RpbWVyX2hlYXAoIHBqX3RpbWVyX2hlYXBfdCAqaHQgKQoreworICAgIGlmIChodC0+bG9jaykgeworCXBqX2xvY2tfYWNxdWlyZShodC0+bG9jayk7CisgICAgfQorfQorCitQSl9JTkxJTkUodm9pZCkgdW5sb2NrX3RpbWVyX2hlYXAoIHBqX3RpbWVyX2hlYXBfdCAqaHQgKQoreworICAgIGlmIChodC0+bG9jaykgeworCXBqX2xvY2tfcmVsZWFzZShodC0+bG9jayk7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIGNvcHlfbm9kZSggcGpfdGltZXJfaGVhcF90ICpodCwgcGpfc2l6ZV90IHNsb3QsIAorCQkgICAgICAgcGpfdGltZXJfZW50cnkgKm1vdmVkX25vZGUgKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvLyBJbnNlcnQgPG1vdmVkX25vZGU+IGludG8gaXRzIG5ldyBsb2NhdGlvbiBpbiB0aGUgaGVhcC4KKyAgICBodC0+aGVhcFtzbG90XSA9IG1vdmVkX25vZGU7CisgICAgCisgICAgLy8gVXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIHNsb3QgaW4gdGhlIHBhcmFsbGVsIDx0aW1lcl9pZHNfPiBhcnJheS4KKyAgICBodC0+dGltZXJfaWRzW21vdmVkX25vZGUtPl90aW1lcl9pZF0gPSAoaW50KXNsb3Q7Cit9CisKK3N0YXRpYyBwal90aW1lcl9pZF90IHBvcF9mcmVlbGlzdCggcGpfdGltZXJfaGVhcF90ICpodCApCit7CisgICAgLy8gV2UgbmVlZCB0byB0cnVuY2F0ZSB0aGlzIHRvIDxpbnQ+IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKyAgICBwal90aW1lcl9pZF90IG5ld19pZCA9IGh0LT50aW1lcl9pZHNfZnJlZWxpc3Q7CisgICAgCisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIC8vIFRoZSBmcmVlbGlzdCB2YWx1ZXMgaW4gdGhlIDx0aW1lcl9pZHNfPiBhcmUgbmVnYXRpdmUsIHNvIHdlIG5lZWQKKyAgICAvLyB0byBuZWdhdGUgdGhlbSB0byBnZXQgdGhlIG5leHQgZnJlZWxpc3QgInBvaW50ZXIuIgorICAgIGh0LT50aW1lcl9pZHNfZnJlZWxpc3QgPQorCS1odC0+dGltZXJfaWRzW2h0LT50aW1lcl9pZHNfZnJlZWxpc3RdOworICAgIAorICAgIHJldHVybiBuZXdfaWQ7CisgICAgCit9CisKK3N0YXRpYyB2b2lkIHB1c2hfZnJlZWxpc3QgKHBqX3RpbWVyX2hlYXBfdCAqaHQsIHBqX3RpbWVyX2lkX3Qgb2xkX2lkKQoreworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICAvLyBUaGUgZnJlZWxpc3QgdmFsdWVzIGluIHRoZSA8dGltZXJfaWRzXz4gYXJlIG5lZ2F0aXZlLCBzbyB3ZSBuZWVkCisgICAgLy8gdG8gbmVnYXRlIHRoZW0gdG8gZ2V0IHRoZSBuZXh0IGZyZWVsaXN0ICJwb2ludGVyLiIKKyAgICBodC0+dGltZXJfaWRzW29sZF9pZF0gPSAtaHQtPnRpbWVyX2lkc19mcmVlbGlzdDsKKyAgICBodC0+dGltZXJfaWRzX2ZyZWVsaXN0ID0gb2xkX2lkOworfQorCisKK3N0YXRpYyB2b2lkIHJlaGVhcF9kb3duKHBqX3RpbWVyX2hlYXBfdCAqaHQsIHBqX3RpbWVyX2VudHJ5ICptb3ZlZF9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNsb3QsIHNpemVfdCBjaGlsZCkKK3sKKyAgICBQSl9DSEVDS19TVEFDSygpOworCisgICAgLy8gUmVzdG9yZSB0aGUgaGVhcCBwcm9wZXJ0eSBhZnRlciBhIGRlbGV0aW9uLgorICAgIAorICAgIHdoaWxlIChjaGlsZCA8IGh0LT5jdXJfc2l6ZSkKKyAgICB7CisJLy8gQ2hvb3NlIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gY2hpbGRyZW4uCisJaWYgKGNoaWxkICsgMSA8IGh0LT5jdXJfc2l6ZQorCSAgICAmJiBQSl9USU1FX1ZBTF9MVChodC0+aGVhcFtjaGlsZCArIDFdLT5fdGltZXJfdmFsdWUsIGh0LT5oZWFwW2NoaWxkXS0+X3RpbWVyX3ZhbHVlKSkKKwkgICAgY2hpbGQrKzsKKwkKKwkvLyBQZXJmb3JtIGEgPGNvcHk+IGlmIHRoZSBjaGlsZCBoYXMgYSBsYXJnZXIgdGltZW91dCB2YWx1ZSB0aGFuCisJLy8gdGhlIDxtb3ZlZF9ub2RlPi4KKwlpZiAoUEpfVElNRV9WQUxfTFQoaHQtPmhlYXBbY2hpbGRdLT5fdGltZXJfdmFsdWUsIG1vdmVkX25vZGUtPl90aW1lcl92YWx1ZSkpCisgICAgICAgIHsKKwkgICAgY29weV9ub2RlKCBodCwgc2xvdCwgaHQtPmhlYXBbY2hpbGRdKTsKKwkgICAgc2xvdCA9IGNoaWxkOworCSAgICBjaGlsZCA9IEhFQVBfTEVGVChjaGlsZCk7CisgICAgICAgIH0KKwllbHNlCisJICAgIC8vIFdlJ3ZlIGZvdW5kIG91ciBsb2NhdGlvbiBpbiB0aGUgaGVhcC4KKwkgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGNvcHlfbm9kZSggaHQsIHNsb3QsIG1vdmVkX25vZGUpOworfQorCitzdGF0aWMgdm9pZCByZWhlYXBfdXAoIHBqX3RpbWVyX2hlYXBfdCAqaHQsIHBqX3RpbWVyX2VudHJ5ICptb3ZlZF9ub2RlLAorCQkgICAgICAgc2l6ZV90IHNsb3QsIHNpemVfdCBwYXJlbnQpCit7CisgICAgLy8gUmVzdG9yZSB0aGUgaGVhcCBwcm9wZXJ0eSBhZnRlciBhbiBpbnNlcnRpb24uCisgICAgCisgICAgd2hpbGUgKHNsb3QgPiAwKQorICAgIHsKKwkvLyBJZiB0aGUgcGFyZW50IG5vZGUgaXMgZ3JlYXRlciB0aGFuIHRoZSA8bW92ZWRfbm9kZT4gd2UgbmVlZAorCS8vIHRvIGNvcHkgaXQgZG93bi4KKwlpZiAoUEpfVElNRV9WQUxfTFQobW92ZWRfbm9kZS0+X3RpbWVyX3ZhbHVlLCBodC0+aGVhcFtwYXJlbnRdLT5fdGltZXJfdmFsdWUpKQorICAgICAgICB7CisJICAgIGNvcHlfbm9kZShodCwgc2xvdCwgaHQtPmhlYXBbcGFyZW50XSk7CisJICAgIHNsb3QgPSBwYXJlbnQ7CisJICAgIHBhcmVudCA9IEhFQVBfUEFSRU5UKHNsb3QpOworICAgICAgICB9CisJZWxzZQorCSAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgLy8gSW5zZXJ0IHRoZSBuZXcgbm9kZSBpbnRvIGl0cyBwcm9wZXIgcmVzdGluZyBwbGFjZSBpbiB0aGUgaGVhcCBhbmQKKyAgICAvLyB1cGRhdGUgdGhlIGNvcnJlc3BvbmRpbmcgc2xvdCBpbiB0aGUgcGFyYWxsZWwgPHRpbWVyX2lkcz4gYXJyYXkuCisgICAgY29weV9ub2RlKGh0LCBzbG90LCBtb3ZlZF9ub2RlKTsKK30KKworCitzdGF0aWMgcGpfdGltZXJfZW50cnkgKiByZW1vdmVfbm9kZSggcGpfdGltZXJfaGVhcF90ICpodCwgc2l6ZV90IHNsb3QpCit7CisgICAgcGpfdGltZXJfZW50cnkgKnJlbW92ZWRfbm9kZSA9IGh0LT5oZWFwW3Nsb3RdOworICAgIAorICAgIC8vIFJldHVybiB0aGlzIHRpbWVyIGlkIHRvIHRoZSBmcmVlbGlzdC4KKyAgICBwdXNoX2ZyZWVsaXN0KCBodCwgcmVtb3ZlZF9ub2RlLT5fdGltZXJfaWQgKTsKKyAgICAKKyAgICAvLyBEZWNyZW1lbnQgdGhlIHNpemUgb2YgdGhlIGhlYXAgYnkgb25lIHNpbmNlIHdlJ3JlIHJlbW92aW5nIHRoZQorICAgIC8vICJzbG90InRoIG5vZGUuCisgICAgaHQtPmN1cl9zaXplLS07CisgICAgCisgICAgLy8gU2V0IHRoZSBJRAorICAgIHJlbW92ZWRfbm9kZS0+X3RpbWVyX2lkID0gLTE7CisKKyAgICAvLyBPbmx5IHRyeSB0byByZWhlYXBpZnkgaWYgd2UncmUgbm90IGRlbGV0aW5nIHRoZSBsYXN0IGVudHJ5LgorICAgIAorICAgIGlmIChzbG90IDwgaHQtPmN1cl9zaXplKQorICAgIHsKKwlwal9zaXplX3QgcGFyZW50OworCXBqX3RpbWVyX2VudHJ5ICptb3ZlZF9ub2RlID0gaHQtPmhlYXBbaHQtPmN1cl9zaXplXTsKKwkKKwkvLyBNb3ZlIHRoZSBlbmQgbm9kZSB0byB0aGUgbG9jYXRpb24gYmVpbmcgcmVtb3ZlZCBhbmQgdXBkYXRlCisJLy8gdGhlIGNvcnJlc3BvbmRpbmcgc2xvdCBpbiB0aGUgcGFyYWxsZWwgPHRpbWVyX2lkcz4gYXJyYXkuCisJY29weV9ub2RlKCBodCwgc2xvdCwgbW92ZWRfbm9kZSk7CisJCisJLy8gSWYgdGhlIDxtb3ZlZF9ub2RlLT50aW1lX3ZhbHVlXz4gaXMgZ3JlYXQgdGhhbiBvciBlcXVhbCBpdHMKKwkvLyBwYXJlbnQgaXQgbmVlZHMgYmUgbW92ZWQgZG93biB0aGUgaGVhcC4KKwlwYXJlbnQgPSBIRUFQX1BBUkVOVCAoc2xvdCk7CisJCisJaWYgKFBKX1RJTUVfVkFMX0dURShtb3ZlZF9ub2RlLT5fdGltZXJfdmFsdWUsIGh0LT5oZWFwW3BhcmVudF0tPl90aW1lcl92YWx1ZSkpCisJICAgIHJlaGVhcF9kb3duKCBodCwgbW92ZWRfbm9kZSwgc2xvdCwgSEVBUF9MRUZUKHNsb3QpKTsKKwllbHNlCisJICAgIHJlaGVhcF91cCggaHQsIG1vdmVkX25vZGUsIHNsb3QsIHBhcmVudCk7CisgICAgfQorICAgIAorICAgIHJldHVybiByZW1vdmVkX25vZGU7Cit9CisKK3N0YXRpYyB2b2lkIGdyb3dfaGVhcChwal90aW1lcl9oZWFwX3QgKmh0KQoreworICAgIC8vIEFsbCB0aGUgY29udGFpbmVycyB3aWxsIGRvdWJsZSBpbiBzaXplIGZyb20gbWF4X3NpemVfCisgICAgc2l6ZV90IG5ld19zaXplID0gaHQtPm1heF9zaXplICogMjsKKyAgICBwal90aW1lcl9pZF90ICpuZXdfdGltZXJfaWRzOworICAgIHBqX3NpemVfdCBpOworICAgIAorICAgIC8vIEZpcnN0IGdyb3cgdGhlIGhlYXAgaXRzZWxmLgorICAgIAorICAgIHBqX3RpbWVyX2VudHJ5ICoqbmV3X2hlYXAgPSAwOworICAgIAorICAgIG5ld19oZWFwID0gKHBqX3RpbWVyX2VudHJ5KiopIAorICAgIAkgICAgICAgcGpfcG9vbF9hbGxvYyhodC0+cG9vbCwgc2l6ZW9mKHBqX3RpbWVyX2VudHJ5KikgKiBuZXdfc2l6ZSk7CisgICAgbWVtY3B5KG5ld19oZWFwLCBodC0+aGVhcCwgaHQtPm1heF9zaXplICogc2l6ZW9mKHBqX3RpbWVyX2VudHJ5KikpOworICAgIC8vZGVsZXRlIFtdIHRoaXMtPmhlYXBfOworICAgIGh0LT5oZWFwID0gbmV3X2hlYXA7CisgICAgCisgICAgLy8gR3JvdyB0aGUgYXJyYXkgb2YgdGltZXIgaWRzLgorICAgIAorICAgIG5ld190aW1lcl9pZHMgPSAwOworICAgIG5ld190aW1lcl9pZHMgPSAocGpfdGltZXJfaWRfdCopCisgICAgCQkgICAgcGpfcG9vbF9hbGxvYyhodC0+cG9vbCwgbmV3X3NpemUgKiBzaXplb2YocGpfdGltZXJfaWRfdCkpOworICAgIAorICAgIG1lbWNweSggbmV3X3RpbWVyX2lkcywgaHQtPnRpbWVyX2lkcywgaHQtPm1heF9zaXplICogc2l6ZW9mKHBqX3RpbWVyX2lkX3QpKTsKKyAgICAKKyAgICAvL2RlbGV0ZSBbXSB0aW1lcl9pZHNfOworICAgIGh0LT50aW1lcl9pZHMgPSBuZXdfdGltZXJfaWRzOworICAgIAorICAgIC8vIEFuZCBhZGQgdGhlIG5ldyBlbGVtZW50cyB0byB0aGUgZW5kIG9mIHRoZSAiZnJlZWxpc3QiLgorICAgIGZvciAoaSA9IGh0LT5tYXhfc2l6ZTsgaSA8IG5ld19zaXplOyBpKyspCisJaHQtPnRpbWVyX2lkc1tpXSA9IC0oKHBqX3RpbWVyX2lkX3QpIChpICsgMSkpOworICAgIAorICAgIGh0LT5tYXhfc2l6ZSA9IG5ld19zaXplOworfQorCitzdGF0aWMgdm9pZCBpbnNlcnRfbm9kZShwal90aW1lcl9oZWFwX3QgKmh0LCBwal90aW1lcl9lbnRyeSAqbmV3X25vZGUpCit7CisgICAgaWYgKGh0LT5jdXJfc2l6ZSArIDIgPj0gaHQtPm1heF9zaXplKQorCWdyb3dfaGVhcChodCk7CisgICAgCisgICAgcmVoZWFwX3VwKCBodCwgbmV3X25vZGUsIGh0LT5jdXJfc2l6ZSwgSEVBUF9QQVJFTlQoaHQtPmN1cl9zaXplKSk7CisgICAgaHQtPmN1cl9zaXplKys7Cit9CisKKworc3RhdGljIHBqX3N0YXR1c190IHNjaGVkdWxlX2VudHJ5KCBwal90aW1lcl9oZWFwX3QgKmh0LAorCQkJCSAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwgCisJCQkJICAgY29uc3QgcGpfdGltZV92YWwgKmZ1dHVyZV90aW1lICkKK3sKKyAgICBpZiAoaHQtPmN1cl9zaXplIDwgaHQtPm1heF9zaXplKQorICAgIHsKKwkvLyBPYnRhaW4gdGhlIG5leHQgdW5pcXVlIHNlcXVlbmNlIG51bWJlci4KKwkvLyBTZXQgdGhlIGVudHJ5CisJZW50cnktPl90aW1lcl9pZCA9IHBvcF9mcmVlbGlzdChodCk7CisJZW50cnktPl90aW1lcl92YWx1ZSA9ICpmdXR1cmVfdGltZTsKKwlpbnNlcnRfbm9kZSggaHQsIGVudHJ5KTsKKwlyZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZQorCXJldHVybiAtMTsKK30KKworCitzdGF0aWMgaW50IGNhbmNlbCggcGpfdGltZXJfaGVhcF90ICpodCwgCisJCSAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwgCisJCSAgIHVuc2lnbmVkIGZsYWdzKQoreworICBsb25nIHRpbWVyX25vZGVfc2xvdDsKKworICBQSl9DSEVDS19TVEFDSygpOworCisgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgdGltZXJfaWQgaXMgb3V0IG9mIHJhbmdlCisgIGlmIChlbnRyeS0+X3RpbWVyX2lkIDwgMCB8fCAocGpfc2l6ZV90KWVudHJ5LT5fdGltZXJfaWQgPiBodC0+bWF4X3NpemUpCisgICAgcmV0dXJuIDA7CisKKyAgdGltZXJfbm9kZV9zbG90ID0gaHQtPnRpbWVyX2lkc1tlbnRyeS0+X3RpbWVyX2lkXTsKKworICBpZiAodGltZXJfbm9kZV9zbG90IDwgMCkgLy8gQ2hlY2sgdG8gc2VlIGlmIHRpbWVyX2lkIGlzIHN0aWxsIHZhbGlkLgorICAgIHJldHVybiAwOworCisgIGlmIChlbnRyeSAhPSBodC0+aGVhcFt0aW1lcl9ub2RlX3Nsb3RdKQorICAgIHsKKyAgICAgIGlmICgoZmxhZ3MgJiBGX0RPTlRfQVNTRVJUKSA9PSAwKQorCSAgcGpfYXNzZXJ0KGVudHJ5ID09IGh0LT5oZWFwW3RpbWVyX25vZGVfc2xvdF0pOworICAgICAgcmV0dXJuIDA7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgcmVtb3ZlX25vZGUoIGh0LCB0aW1lcl9ub2RlX3Nsb3QpOworCisgICAgICBpZiAoKGZsYWdzICYgRl9ET05UX0NBTEwpID09IDApCisgICAgICAgIC8vIENhbGwgdGhlIGNsb3NlIGhvb2suCisJKCpodC0+Y2FsbGJhY2spKGh0LCBlbnRyeSk7CisgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisKKworLyoKKyAqIENhbGN1bGF0ZSBtZW1vcnkgc2l6ZSByZXF1aXJlZCB0byBjcmVhdGUgYSB0aW1lciBoZWFwLgorICovCitQSl9ERUYocGpfc2l6ZV90KSBwal90aW1lcl9oZWFwX21lbV9zaXplKHBqX3NpemVfdCBjb3VudCkKK3sKKyAgICByZXR1cm4gLyogc2l6ZSBvZiB0aGUgdGltZXIgaGVhcCBpdHNlbGY6ICovCisgICAgICAgICAgIHNpemVvZihwal90aW1lcl9oZWFwX3QpICsgCisgICAgICAgICAgIC8qIHNpemUgb2YgZWFjaCBlbnRyeTogKi8KKyAgICAgICAgICAgKGNvdW50KzIpICogKHNpemVvZihwal90aW1lcl9lbnRyeSopK3NpemVvZihwal90aW1lcl9pZF90KSkgKworICAgICAgICAgICAvKiBsb2NrLCBwb29sIGV0YzogKi8KKyAgICAgICAgICAgMTMyOworfQorCisvKgorICogQ3JlYXRlIGEgbmV3IHRpbWVyIGhlYXAuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGltZXJfaGVhcF9jcmVhdGUoIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICBwal9zaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3RpbWVyX2hlYXBfdCAqKnBfaGVhcCkKK3sKKyAgICBwal90aW1lcl9oZWFwX3QgKmh0OworICAgIHBqX3NpemVfdCBpOworCisgICAgUEpfQVNTRVJUX1JFVFVSTihwb29sICYmIHBfaGVhcCwgUEpfRUlOVkFMKTsKKworICAgICpwX2hlYXAgPSBOVUxMOworCisgICAgLyogTWFnaWM/ICovCisgICAgc2l6ZSArPSAyOworCisgICAgLyogQWxsb2NhdGUgdGltZXIgaGVhcCBkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSBwb29sICovCisgICAgaHQgPSBQSl9QT09MX0FMTE9DX1QocG9vbCwgcGpfdGltZXJfaGVhcF90KTsKKyAgICBpZiAoIWh0KQorICAgICAgICByZXR1cm4gUEpfRU5PTUVNOworCisgICAgLyogSW5pdGlhbGl6ZSB0aW1lciBoZWFwIHNpemVzICovCisgICAgaHQtPm1heF9zaXplID0gc2l6ZTsKKyAgICBodC0+Y3VyX3NpemUgPSAwOworICAgIGh0LT5tYXhfZW50cmllc19wZXJfcG9sbCA9IERFRkFVTFRfTUFYX1RJTUVEX09VVF9QRVJfUE9MTDsKKyAgICBodC0+dGltZXJfaWRzX2ZyZWVsaXN0ID0gMTsKKyAgICBodC0+cG9vbCA9IHBvb2w7CisKKyAgICAvKiBMb2NrLiAqLworICAgIGh0LT5sb2NrID0gTlVMTDsKKyAgICBodC0+YXV0b19kZWxldGVfbG9jayA9IDA7CisKKyAgICAvLyBDcmVhdGUgdGhlIGhlYXAgYXJyYXkuCisgICAgaHQtPmhlYXAgPSAocGpfdGltZXJfZW50cnkqKikKKyAgICAJICAgICAgIHBqX3Bvb2xfYWxsb2MocG9vbCwgc2l6ZW9mKHBqX3RpbWVyX2VudHJ5KikgKiBzaXplKTsKKyAgICBpZiAoIWh0LT5oZWFwKQorICAgICAgICByZXR1cm4gUEpfRU5PTUVNOworCisgICAgLy8gQ3JlYXRlIHRoZSBwYXJhbGxlbAorICAgIGh0LT50aW1lcl9pZHMgPSAocGpfdGltZXJfaWRfdCAqKQorICAgIAkJICAgIHBqX3Bvb2xfYWxsb2MoIHBvb2wsIHNpemVvZihwal90aW1lcl9pZF90KSAqIHNpemUpOworICAgIGlmICghaHQtPnRpbWVyX2lkcykKKyAgICAgICAgcmV0dXJuIFBKX0VOT01FTTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlICJmcmVlbGlzdCwiIHdoaWNoIHVzZXMgbmVnYXRpdmUgdmFsdWVzIHRvCisgICAgLy8gZGlzdGluZ3Vpc2ggZnJlZWxpc3QgZWxlbWVudHMgZnJvbSAicG9pbnRlcnMiIGludG8gdGhlIDxoZWFwXz4KKyAgICAvLyBhcnJheS4KKyAgICBmb3IgKGk9MDsgaTxzaXplOyArK2kpCisJaHQtPnRpbWVyX2lkc1tpXSA9IC0oKHBqX3RpbWVyX2lkX3QpIChpICsgMSkpOworCisgICAgKnBfaGVhcCA9IGh0OworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCitQSl9ERUYodm9pZCkgcGpfdGltZXJfaGVhcF9kZXN0cm95KCBwal90aW1lcl9oZWFwX3QgKmh0ICkKK3sKKyAgICBpZiAoaHQtPmxvY2sgJiYgaHQtPmF1dG9fZGVsZXRlX2xvY2spIHsKKyAgICAgICAgcGpfbG9ja19kZXN0cm95KGh0LT5sb2NrKTsKKyAgICAgICAgaHQtPmxvY2sgPSBOVUxMOworICAgIH0KK30KKworUEpfREVGKHZvaWQpIHBqX3RpbWVyX2hlYXBfc2V0X2xvY2soICBwal90aW1lcl9oZWFwX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9sb2NrX3QgKmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2Jvb2xfdCBhdXRvX2RlbCApCit7CisgICAgaWYgKGh0LT5sb2NrICYmIGh0LT5hdXRvX2RlbGV0ZV9sb2NrKQorICAgICAgICBwal9sb2NrX2Rlc3Ryb3koaHQtPmxvY2spOworCisgICAgaHQtPmxvY2sgPSBsb2NrOworICAgIGh0LT5hdXRvX2RlbGV0ZV9sb2NrID0gYXV0b19kZWw7Cit9CisKKworUEpfREVGKHVuc2lnbmVkKSBwal90aW1lcl9oZWFwX3NldF9tYXhfdGltZWRfb3V0X3Blcl9wb2xsKHBqX3RpbWVyX2hlYXBfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY291bnQgKQoreworICAgIHVuc2lnbmVkIG9sZF9jb3VudCA9IGh0LT5tYXhfZW50cmllc19wZXJfcG9sbDsKKyAgICBodC0+bWF4X2VudHJpZXNfcGVyX3BvbGwgPSBjb3VudDsKKyAgICByZXR1cm4gb2xkX2NvdW50OworfQorCitQSl9ERUYocGpfdGltZXJfZW50cnkqKSBwal90aW1lcl9lbnRyeV9pbml0KCBwal90aW1lcl9lbnRyeSAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aW1lcl9oZWFwX2NhbGxiYWNrICpjYiApCit7CisgICAgcGpfYXNzZXJ0KGVudHJ5ICYmIGNiKTsKKworICAgIGVudHJ5LT5fdGltZXJfaWQgPSAtMTsKKyAgICBlbnRyeS0+aWQgPSBpZDsKKyAgICBlbnRyeS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICAgIGVudHJ5LT5jYiA9IGNiOworICAgIGVudHJ5LT5fZ3JwX2xvY2sgPSBOVUxMOworCisgICAgcmV0dXJuIGVudHJ5OworfQorCitQSl9ERUYocGpfYm9vbF90KSBwal90aW1lcl9lbnRyeV9ydW5uaW5nKCBwal90aW1lcl9lbnRyeSAqZW50cnkgKQoreworICAgIHJldHVybiAoZW50cnktPl90aW1lcl9pZCA+PSAxKTsKK30KKworI2lmIFBKX1RJTUVSX0RFQlVHCitzdGF0aWMgcGpfc3RhdHVzX3Qgc2NoZWR1bGVfd19ncnBfbG9ja19kYmcocGpfdGltZXJfaGVhcF90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aW1lcl9lbnRyeSAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGpfdGltZV92YWwgKmRlbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2Jvb2xfdCBzZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlkX3ZhbCwKKwkJCQkJICAgcGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2ssCisJCQkJCSAgIGNvbnN0IGNoYXIgKnNyY19maWxlLAorCQkJCQkgICBpbnQgc3JjX2xpbmUpCisjZWxzZQorc3RhdGljIHBqX3N0YXR1c190IHNjaGVkdWxlX3dfZ3JwX2xvY2socGpfdGltZXJfaGVhcF90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3RpbWVfdmFsICpkZWxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2Jvb2xfdCBzZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWRfdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2spCisjZW5kaWYKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisgICAgcGpfdGltZV92YWwgZXhwaXJlczsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4oaHQgJiYgZW50cnkgJiYgZGVsYXksIFBKX0VJTlZBTCk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihlbnRyeS0+Y2IgIT0gTlVMTCwgUEpfRUlOVkFMKTsKKworICAgIC8qIFByZXZlbnQgc2FtZSBlbnRyeSBmcm9tIGJlaW5nIHNjaGVkdWxlZCBtb3JlIHRoYW4gb25jZSAqLworICAgIFBKX0FTU0VSVF9SRVRVUk4oZW50cnktPl90aW1lcl9pZCA8IDEsIFBKX0VJTlZBTElET1ApOworCisjaWYgUEpfVElNRVJfREVCVUcKKyAgICBlbnRyeS0+c3JjX2ZpbGUgPSBzcmNfZmlsZTsKKyAgICBlbnRyeS0+c3JjX2xpbmUgPSBzcmNfbGluZTsKKyNlbmRpZgorICAgIHBqX2dldHRpY2tjb3VudCgmZXhwaXJlcyk7CisgICAgUEpfVElNRV9WQUxfQUREKGV4cGlyZXMsICpkZWxheSk7CisgICAgCisgICAgbG9ja190aW1lcl9oZWFwKGh0KTsKKyAgICBzdGF0dXMgPSBzY2hlZHVsZV9lbnRyeShodCwgZW50cnksICZleHBpcmVzKTsKKyAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpIHsKKwlpZiAoc2V0X2lkKQorCSAgICBlbnRyeS0+aWQgPSBpZF92YWw7CisJZW50cnktPl9ncnBfbG9jayA9IGdycF9sb2NrOworCWlmIChlbnRyeS0+X2dycF9sb2NrKSB7CisJICAgIHBqX2dycF9sb2NrX2FkZF9yZWYoZW50cnktPl9ncnBfbG9jayk7CisJfQorICAgIH0KKyAgICB1bmxvY2tfdGltZXJfaGVhcChodCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisKKyNpZiBQSl9USU1FUl9ERUJVRworUEpfREVGKHBqX3N0YXR1c190KSBwal90aW1lcl9oZWFwX3NjaGVkdWxlX2RiZyggcGpfdGltZXJfaGVhcF90ICpodCwKKwkJCQkJCXBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKwkJCQkJCWNvbnN0IHBqX3RpbWVfdmFsICpkZWxheSwKKwkJCQkJCWNvbnN0IGNoYXIgKnNyY19maWxlLAorCQkJCQkJaW50IHNyY19saW5lKQoreworICAgIHJldHVybiBzY2hlZHVsZV93X2dycF9sb2NrX2RiZyhodCwgZW50cnksIGRlbGF5LCBQSl9GQUxTRSwgMSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2ZpbGUsIHNyY19saW5lKTsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal90aW1lcl9oZWFwX3NjaGVkdWxlX3dfZ3JwX2xvY2tfZGJnKAorCQkJCQkJcGpfdGltZXJfaGVhcF90ICpodCwKKwkJCQkJCXBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKwkJCQkJCWNvbnN0IHBqX3RpbWVfdmFsICpkZWxheSwKKwkJCQkJCWludCBpZF92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9ncnBfbG9ja190ICpncnBfbG9jaywKKwkJCQkJCWNvbnN0IGNoYXIgKnNyY19maWxlLAorCQkJCQkJaW50IHNyY19saW5lKQoreworICAgIHJldHVybiBzY2hlZHVsZV93X2dycF9sb2NrX2RiZyhodCwgZW50cnksIGRlbGF5LCBQSl9UUlVFLCBpZF92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycF9sb2NrLCBzcmNfZmlsZSwgc3JjX2xpbmUpOworfQorCisjZWxzZQorUEpfREVGKHBqX3N0YXR1c190KSBwal90aW1lcl9oZWFwX3NjaGVkdWxlKCBwal90aW1lcl9oZWFwX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aW1lcl9lbnRyeSAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3RpbWVfdmFsICpkZWxheSkKK3sKKyAgICByZXR1cm4gc2NoZWR1bGVfd19ncnBfbG9jayhodCwgZW50cnksIGRlbGF5LCBQSl9GQUxTRSwgMSwgTlVMTCk7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGltZXJfaGVhcF9zY2hlZHVsZV93X2dycF9sb2NrKHBqX3RpbWVyX2hlYXBfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aW1lcl9lbnRyeSAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwal90aW1lX3ZhbCAqZGVsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWRfdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfZ3JwX2xvY2tfdCAqZ3JwX2xvY2spCit7CisgICAgcmV0dXJuIHNjaGVkdWxlX3dfZ3JwX2xvY2soaHQsIGVudHJ5LCBkZWxheSwgUEpfVFJVRSwgaWRfdmFsLCBncnBfbG9jayk7Cit9CisjZW5kaWYKKworc3RhdGljIGludCBjYW5jZWxfdGltZXIocGpfdGltZXJfaGVhcF90ICpodCwKKwkJCXBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKwkJCXVuc2lnbmVkIGZsYWdzLAorCQkJaW50IGlkX3ZhbCkKK3sKKyAgICBpbnQgY291bnQ7CisKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGh0ICYmIGVudHJ5LCBQSl9FSU5WQUwpOworCisgICAgbG9ja190aW1lcl9oZWFwKGh0KTsKKyAgICBjb3VudCA9IGNhbmNlbChodCwgZW50cnksIGZsYWdzIHwgRl9ET05UX0NBTEwpOworICAgIGlmIChmbGFncyAmIEZfU0VUX0lEKSB7CisJZW50cnktPmlkID0gaWRfdmFsOworICAgIH0KKyAgICBpZiAoZW50cnktPl9ncnBfbG9jaykgeworCXBqX2dycF9sb2NrX3QgKmdycF9sb2NrID0gZW50cnktPl9ncnBfbG9jazsKKwllbnRyeS0+X2dycF9sb2NrID0gTlVMTDsKKwlwal9ncnBfbG9ja19kZWNfcmVmKGdycF9sb2NrKTsKKyAgICB9CisgICAgdW5sb2NrX3RpbWVyX2hlYXAoaHQpOworCisgICAgcmV0dXJuIGNvdW50OworfQorCitQSl9ERUYoaW50KSBwal90aW1lcl9oZWFwX2NhbmNlbCggcGpfdGltZXJfaGVhcF90ICpodCwKKwkJCQkgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSkKK3sKKyAgICByZXR1cm4gY2FuY2VsX3RpbWVyKGh0LCBlbnRyeSwgMCwgMCk7Cit9CisKK1BKX0RFRihpbnQpIHBqX3RpbWVyX2hlYXBfY2FuY2VsX2lmX2FjdGl2ZShwal90aW1lcl9oZWFwX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWRfdmFsKQoreworICAgIHJldHVybiBjYW5jZWxfdGltZXIoaHQsIGVudHJ5LCBGX1NFVF9JRCB8IEZfRE9OVF9BU1NFUlQsIGlkX3ZhbCk7Cit9CisKK1BKX0RFRih1bnNpZ25lZCkgcGpfdGltZXJfaGVhcF9wb2xsKCBwal90aW1lcl9oZWFwX3QgKmh0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aW1lX3ZhbCAqbmV4dF9kZWxheSApCit7CisgICAgcGpfdGltZV92YWwgbm93OworICAgIHVuc2lnbmVkIGNvdW50OworCisgICAgUEpfQVNTRVJUX1JFVFVSTihodCwgMCk7CisKKyAgICBsb2NrX3RpbWVyX2hlYXAoaHQpOworICAgIGlmICghaHQtPmN1cl9zaXplICYmIG5leHRfZGVsYXkpIHsKKwluZXh0X2RlbGF5LT5zZWMgPSBuZXh0X2RlbGF5LT5tc2VjID0gUEpfTUFYSU5UMzI7CisgICAgICAgIHVubG9ja190aW1lcl9oZWFwKGh0KTsKKwlyZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb3VudCA9IDA7CisgICAgcGpfZ2V0dGlja2NvdW50KCZub3cpOworCisgICAgd2hpbGUgKCBodC0+Y3VyX3NpemUgJiYgCisJICAgIFBKX1RJTUVfVkFMX0xURShodC0+aGVhcFswXS0+X3RpbWVyX3ZhbHVlLCBub3cpICYmCisgICAgICAgICAgICBjb3VudCA8IGh0LT5tYXhfZW50cmllc19wZXJfcG9sbCApIAorICAgIHsKKwlwal90aW1lcl9lbnRyeSAqbm9kZSA9IHJlbW92ZV9ub2RlKGh0LCAwKTsKKwlwal9ncnBfbG9ja190ICpncnBfbG9jazsKKworCSsrY291bnQ7CisKKwlncnBfbG9jayA9IG5vZGUtPl9ncnBfbG9jazsKKwlub2RlLT5fZ3JwX2xvY2sgPSBOVUxMOworCisJdW5sb2NrX3RpbWVyX2hlYXAoaHQpOworCisJUEpfUkFDRV9NRSg1KTsKKworCWlmIChub2RlLT5jYikKKwkgICAgKCpub2RlLT5jYikoaHQsIG5vZGUpOworCisJaWYgKGdycF9sb2NrKQorCSAgICBwal9ncnBfbG9ja19kZWNfcmVmKGdycF9sb2NrKTsKKworCWxvY2tfdGltZXJfaGVhcChodCk7CisgICAgfQorICAgIGlmIChodC0+Y3VyX3NpemUgJiYgbmV4dF9kZWxheSkgeworCSpuZXh0X2RlbGF5ID0gaHQtPmhlYXBbMF0tPl90aW1lcl92YWx1ZTsKKwlQSl9USU1FX1ZBTF9TVUIoKm5leHRfZGVsYXksIG5vdyk7CisJaWYgKG5leHRfZGVsYXktPnNlYyA8IDAgfHwgbmV4dF9kZWxheS0+bXNlYyA8IDApCisJICAgIG5leHRfZGVsYXktPnNlYyA9IG5leHRfZGVsYXktPm1zZWMgPSAwOworICAgIH0gZWxzZSBpZiAobmV4dF9kZWxheSkgeworCW5leHRfZGVsYXktPnNlYyA9IG5leHRfZGVsYXktPm1zZWMgPSBQSl9NQVhJTlQzMjsKKyAgICB9CisgICAgdW5sb2NrX3RpbWVyX2hlYXAoaHQpOworCisgICAgcmV0dXJuIGNvdW50OworfQorCitQSl9ERUYocGpfc2l6ZV90KSBwal90aW1lcl9oZWFwX2NvdW50KCBwal90aW1lcl9oZWFwX3QgKmh0ICkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGh0LCAwKTsKKworICAgIHJldHVybiBodC0+Y3VyX3NpemU7Cit9CisKK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGltZXJfaGVhcF9lYXJsaWVzdF90aW1lKCBwal90aW1lcl9oZWFwX3QgKiBodCwKKwkJCQkJICAgICAgICAgcGpfdGltZV92YWwgKnRpbWV2YWwpCit7CisgICAgcGpfYXNzZXJ0KGh0LT5jdXJfc2l6ZSAhPSAwKTsKKyAgICBpZiAoaHQtPmN1cl9zaXplID09IDApCisgICAgICAgIHJldHVybiBQSl9FTk9URk9VTkQ7CisKKyAgICBsb2NrX3RpbWVyX2hlYXAoaHQpOworICAgICp0aW1ldmFsID0gaHQtPmhlYXBbMF0tPl90aW1lcl92YWx1ZTsKKyAgICB1bmxvY2tfdGltZXJfaGVhcChodCk7CisKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworI2lmIFBKX1RJTUVSX0RFQlVHCitQSl9ERUYodm9pZCkgcGpfdGltZXJfaGVhcF9kdW1wKHBqX3RpbWVyX2hlYXBfdCAqaHQpCit7CisgICAgbG9ja190aW1lcl9oZWFwKGh0KTsKKworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICJEdW1waW5nIHRpbWVyIGhlYXA6IikpOworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIgIEN1ciBzaXplOiAlZCBlbnRyaWVzLCBtYXg6ICVkIiwKKwkJCSAoaW50KWh0LT5jdXJfc2l6ZSwgKGludClodC0+bWF4X3NpemUpKTsKKworICAgIGlmIChodC0+Y3VyX3NpemUpIHsKKwl1bnNpZ25lZCBpOworCXBqX3RpbWVfdmFsIG5vdzsKKworCVBKX0xPRygzLChUSElTX0ZJTEUsICIgIEVudHJpZXM6ICIpKTsKKwlQSl9MT0coMywoVEhJU19GSUxFLCAiICAgIF9pZFx0SWRcdEVsYXBzZWRcdFNvdXJjZSIpKTsKKwlQSl9MT0coMywoVEhJU19GSUxFLCAiICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKSk7CisKKwlwal9nZXR0aWNrY291bnQoJm5vdyk7CisKKwlmb3IgKGk9MDsgaTwodW5zaWduZWQpaHQtPmN1cl9zaXplOyArK2kpIHsKKwkgICAgcGpfdGltZXJfZW50cnkgKmUgPSBodC0+aGVhcFtpXTsKKwkgICAgcGpfdGltZV92YWwgZGVsdGE7CisKKwkgICAgaWYgKFBKX1RJTUVfVkFMX0xURShlLT5fdGltZXJfdmFsdWUsIG5vdykpCisJCWRlbHRhLnNlYyA9IGRlbHRhLm1zZWMgPSAwOworCSAgICBlbHNlIHsKKwkJZGVsdGEgPSBlLT5fdGltZXJfdmFsdWU7CisJCVBKX1RJTUVfVkFMX1NVQihkZWx0YSwgbm93KTsKKwkgICAgfQorCisJICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIgICAgJWRcdCVkXHQlZC4lMDNkXHQlczolZCIsCisJCSAgICAgIGUtPl90aW1lcl9pZCwgZS0+aWQsCisJCSAgICAgIChpbnQpZGVsdGEuc2VjLCAoaW50KWRlbHRhLm1zZWMsCisJCSAgICAgIGUtPnNyY19maWxlLCBlLT5zcmNfbGluZSkpOworCX0KKyAgICB9CisKKyAgICB1bmxvY2tfdGltZXJfaGVhcChodCk7Cit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3RpbWVyX3N5bWJpYW4uY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3RpbWVyX3N5bWJpYW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiMTg1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovdGltZXJfc3ltYmlhbi5jcHAKQEAgLTAsMCArMSw0NzUgQEAKKy8qICRJZDogdGltZXJfc3ltYmlhbi5jcHAgNDM3NCAyMDEzLTAyLTI3IDA3OjE1OjU3WiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovdGltZXIuaD4KKyNpbmNsdWRlIDxwai9wb29sLmg+CisjaW5jbHVkZSA8cGovYXNzZXJ0Lmg+CisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai9sb2NrLmg+CisKKyNpbmNsdWRlICJvc19zeW1iaWFuLmgiCisKKworI2RlZmluZSBERUZBVUxUX01BWF9USU1FRF9PVVRfUEVSX1BPTEwgICg2NCkKKworLy8gTWF4aW11bSBudW1iZXIgb2YgbWlsaXNlY29uZHMgdGhhdCBSVGltZXIuQXQoKSBzdXBwb3J0cworI2RlZmluZSBNQVhfUlRJTUVSX0lOVEVSVkFMCQkyMTQ3CisKKy8qIEFic29sdXRlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVyIGVudHJpZXMgKi8KKyNpZm5kZWYgUEpfU1lNQklBTl9USU1FUl9NQVhfQ09VTlQKKyMgIGRlZmluZSBQSl9TWU1CSUFOX1RJTUVSX01BWF9DT1VOVAk2NTUzNQorI2VuZGlmCisKKy8qIEdldCB0aGUgbnVtYmVyIG9mIGZyZWUgc2xvdHMgaW4gdGhlIHRpbWVyIGhlYXAgKi8KKyNkZWZpbmUgRlJFRUNOVCh0aCkJKHRoLT5tYXhfc2l6ZSAtIHRoLT5jdXJfc2l6ZSkKKworLy8gRm9yd2FyZCBkZWNsYXJhdGlvbgorY2xhc3MgQ1BqVGltZXJFbnRyeTsKKworLyoqCisgKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGltZXIgaGVhcC4KKyAqLworc3RydWN0IHBqX3RpbWVyX2hlYXBfdAoreworICAgIC8qKiBNYXhpbXVtIHNpemUgb2YgdGhlIGhlYXAuICovCisgICAgcGpfc2l6ZV90IG1heF9zaXplOworCisgICAgLyoqIEN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcC4gKi8KKyAgICBwal9zaXplX3QgY3VyX3NpemU7CisKKyAgICAvKiogQXJyYXkgb2YgdGltZXIgZW50cmllcy4gQSBzY2hlZHVsZWQgdGltZXIgd2lsbCBvY2N1cHkgb25lIHNsb3QsIGFuZAorICAgICAqICB0aGUgc2xvdCBudW1iZXIgd2lsbCBiZSBzYXZlZCBpbiBlbnRyeS0+X3RpbWVyX2lkCisgICAgICovCisgICAgQ1BqVGltZXJFbnRyeSAqKmVudHJpZXM7CisgICAgCisgICAgLyoqIEFycmF5IG9mIGZyZWUgc2xvdCBpbmRleGVzIGluIHRoZSAiZW50cmllcyIgYXJyYXkgKi8KKyAgICBpbnQgKmZyZWVfc2xvdHM7Cit9OworCisvKioKKyAqIEFjdGl2ZSBvYmplY3QgZm9yIGVhY2ggdGltZXIgZW50cnkuCisgKi8KK2NsYXNzIENQalRpbWVyRW50cnkgOiBwdWJsaWMgQ0FjdGl2ZSAKK3sKK3B1YmxpYzoKKyAgICBwal90aW1lcl9lbnRyeSAgKmVudHJ5XzsKKyAgICAKKyAgICBzdGF0aWMgQ1BqVGltZXJFbnRyeSogTmV3TCgJcGpfdGltZXJfaGVhcF90ICp0aW1lcl9oZWFwLAorICAgIAkJCQlwal90aW1lcl9lbnRyeSAqZW50cnksCisgICAgCQkJCWNvbnN0IHBqX3RpbWVfdmFsICpkZWxheSk7CisgICAgCisgICAgfkNQalRpbWVyRW50cnkoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgUnVuTCgpOworICAgIHZpcnR1YWwgdm9pZCBEb0NhbmNlbCgpOworCitwcml2YXRlOgkKKyAgICBwal90aW1lcl9oZWFwX3QgKnRpbWVyX2hlYXBfOworICAgIFJUaW1lcgkgICAgIHJ0aW1lcl87CisgICAgcGpfdWludDMyX3QJICAgICBpbnRlcnZhbF9sZWZ0XzsKKyAgICAKKyAgICBDUGpUaW1lckVudHJ5KHBqX3RpbWVyX2hlYXBfdCAqdGltZXJfaGVhcCwgcGpfdGltZXJfZW50cnkgKmVudHJ5KTsKKyAgICB2b2lkIENvbnN0cnVjdEwoY29uc3QgcGpfdGltZV92YWwgKmRlbGF5KTsKKyAgICB2b2lkIFNjaGVkdWxlKCk7Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8qCisgKiBJbXBsZW1lbnRhdGlvbi4KKyAqLworCisvKiBHcm93IHRpbWVyIGhlYXAgdG8gdGhlIHNwZWNpZmllZCBzaXplICovCitzdGF0aWMgcGpfc3RhdHVzX3QgcmVhbGxvY190aW1lcl9oZWFwKHBqX3RpbWVyX2hlYXBfdCAqdGgsIHBqX3NpemVfdCBuZXdfc2l6ZSkKK3sKKyAgICB0eXBlZGVmIENQalRpbWVyRW50cnkgKmVudHJ5X3B0cjsKKyAgICBDUGpUaW1lckVudHJ5ICoqZW50cmllcyA9IE5VTEw7CisgICAgaW50ICpmcmVlX3Nsb3RzID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpLCBqOworIAorICAgIGlmIChuZXdfc2l6ZSA+IFBKX1NZTUJJQU5fVElNRVJfTUFYX0NPVU5UKSB7CisJLyogSnVzdCBzb21lIHNhbml0eSBsaW1pdCAqLworCW5ld19zaXplID0gUEpfU1lNQklBTl9USU1FUl9NQVhfQ09VTlQ7CisJaWYgKG5ld19zaXplIDw9IHRoLT5tYXhfc2l6ZSkgeworCSAgICAvKiBXZSd2ZSBncm93biBsYXJnZSBlbm91Z2ggKi8KKwkgICAgcGpfYXNzZXJ0KCEiVG9vIG1hbnkgdGltZXIgaGVhcCBlbnRyaWVzIik7CisJICAgIHJldHVybiBQSl9FVE9PTUFOWTsKKwl9CisgICAgfQorICAgIAorICAgIC8qIEFsbG9jYXRlIGVudHJpZXMsIG1vdmUgZW50cmllcyBmcm9tIHRoZSBvbGQgYXJyYXkgaWYgdGhlcmUgaXMgb25lICovCisgICAgZW50cmllcyA9IG5ldyBlbnRyeV9wdHJbbmV3X3NpemVdOworICAgIGlmICh0aC0+ZW50cmllcykgeworCXBqX21lbWNweShlbnRyaWVzLCB0aC0+ZW50cmllcywgdGgtPm1heF9zaXplICogc2l6ZW9mKHRoLT5lbnRyaWVzWzBdKSk7CisgICAgfQorICAgIC8qIEluaXRpYWxpemUgdGhlIHJlbWFpbmluZyBuZXcgYXJlYSAqLworICAgIHBqX2J6ZXJvKCZlbnRyaWVzW3RoLT5tYXhfc2l6ZV0sIAorCSAgICAobmV3X3NpemUgLSB0aC0+bWF4X3NpemUpICogc2l6ZW9mKHRoLT5lbnRyaWVzWzBdKSk7CisgICAgCisgICAgLyogQWxsb2NhdGUgZnJlZSBzbG90cyBhcnJheSAqLworICAgIGZyZWVfc2xvdHMgPSBuZXcgaW50W25ld19zaXplXTsKKyAgICBpZiAodGgtPmZyZWVfc2xvdHMpIHsKKwlwal9tZW1jcHkoZnJlZV9zbG90cywgdGgtPmZyZWVfc2xvdHMsIAorCQkgIEZSRUVDTlQodGgpICogc2l6ZW9mKHRoLT5mcmVlX3Nsb3RzWzBdKSk7CisgICAgfQorICAgIC8qIEluaXRpYWxpemUgdGhlIHJlbWFpbmluZyBuZXcgYXJlYSAqLworICAgIGZvciAoaT1GUkVFQ05UKHRoKSwgaj10aC0+bWF4X3NpemU7IGo8bmV3X3NpemU7ICsraSwgKytqKSB7CisJZnJlZV9zbG90c1tpXSA9IGo7CisgICAgfQorICAgIGZvciAoIDsgaTxuZXdfc2l6ZTsgKytpKSB7CisJZnJlZV9zbG90c1tpXSA9IC0xOworICAgIH0KKyAgICAKKyAgICAvKiBBcHBseSAqLworICAgIGRlbGV0ZSBbXSB0aC0+ZW50cmllczsKKyAgICB0aC0+ZW50cmllcyA9IGVudHJpZXM7CisgICAgdGgtPm1heF9zaXplID0gbmV3X3NpemU7CisgICAgZGVsZXRlIFtdIHRoLT5mcmVlX3Nsb3RzOworICAgIHRoLT5mcmVlX3Nsb3RzID0gZnJlZV9zbG90czsKKworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKiBBbGxvY2F0ZSBhbmQgcmVnaXN0ZXIgYW4gZW50cnkgdG8gdGltZXIgaGVhcCBmb3IgbmV3bHkgc2NoZWR1bGVkIGVudHJ5ICovCitzdGF0aWMgcGpfc3RhdHVzX3QgYWRkX2VudHJ5KHBqX3RpbWVyX2hlYXBfdCAqdGgsIENQalRpbWVyRW50cnkgKmVudHJ5KQoreworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICBpbnQgc2xvdDsKKyAgICAKKyAgICAvKiBDaGVjayB0aGF0IHRoZXJlJ3Mgc3RpbGwgY2FwYWNpdHkgbGVmdCBpbiB0aGUgdGltZXIgaGVhcCAqLworICAgIGlmIChGUkVFQ05UKHRoKSA8IDEpIHsKKwkvLyBHcm93IHRoZSB0aW1lciBoZWFwIHR3aWNlIHRoZSBjYXBhY2l0eQorCXN0YXR1cyA9IHJlYWxsb2NfdGltZXJfaGVhcCh0aCwgdGgtPm1heF9zaXplICogMik7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCSAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKyAgICAKKyAgICAvKiBBbGxvY2F0ZSBvbmUgZnJlZSBzbG90LiBVc2UgTElGTyAqLworICAgIHNsb3QgPSB0aC0+ZnJlZV9zbG90c1tGUkVFQ05UKHRoKS0xXTsKKyAgICBQSl9BU1NFUlRfUkVUVVJOKChzbG90ID49IDApICYmIChzbG90IDwgKGludCl0aC0+bWF4X3NpemUpICYmIAorCQkgICAgICh0aC0+ZW50cmllc1tzbG90XT09TlVMTCksIFBKX0VCVUcpOworICAgIAorICAgIHRoLT5mcmVlX3Nsb3RzW0ZSRUVDTlQodGgpLTFdID0gLTE7CisgICAgdGgtPmVudHJpZXNbc2xvdF0gPSBlbnRyeTsKKyAgICBlbnRyeS0+ZW50cnlfLT5fdGltZXJfaWQgPSBzbG90OworICAgICsrdGgtPmN1cl9zaXplOworICAgIAorICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisvKiBGcmVlIGEgc2xvdCB3aGVuIGFuIGVudHJ5J3MgdGltZXIgaGFzIGVsYXBzZWQgb3IgY2FuY2VsICovCitzdGF0aWMgcGpfc3RhdHVzX3QgcmVtb3ZlX2VudHJ5KHBqX3RpbWVyX2hlYXBfdCAqdGgsIENQalRpbWVyRW50cnkgKmVudHJ5KQoreworICAgIGludCBzbG90ID0gZW50cnktPmVudHJ5Xy0+X3RpbWVyX2lkOworICAgIAorICAgIFBKX0FTU0VSVF9SRVRVUk4oc2xvdCA+PSAwICYmIHNsb3QgPCAoaW50KXRoLT5tYXhfc2l6ZSwgUEpfRUJVRyk7CisgICAgUEpfQVNTRVJUX1JFVFVSTihGUkVFQ05UKHRoKSA8IHRoLT5tYXhfc2l6ZSwgUEpfRUJVRyk7CisgICAgUEpfQVNTRVJUX1JFVFVSTih0aC0+ZW50cmllc1tzbG90XT09ZW50cnksIFBKX0VCVUcpOworICAgIFBKX0FTU0VSVF9SRVRVUk4odGgtPmZyZWVfc2xvdHNbRlJFRUNOVCh0aCldPT0tMSwgUEpfRUJVRyk7CisgICAgCisgICAgdGgtPmVudHJpZXNbc2xvdF0gPSBOVUxMOworICAgIHRoLT5mcmVlX3Nsb3RzW0ZSRUVDTlQodGgpXSA9IHNsb3Q7CisgICAgZW50cnktPmVudHJ5Xy0+X3RpbWVyX2lkID0gLTE7CisgICAgLS10aC0+Y3VyX3NpemU7CisgICAgCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworQ1BqVGltZXJFbnRyeTo6Q1BqVGltZXJFbnRyeShwal90aW1lcl9oZWFwX3QgKnRpbWVyX2hlYXAsCisJCQkgICAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSkKKzogQ0FjdGl2ZShQSl9TWU1CSUFOX1RJTUVSX1BSSU9SSVRZKSwgZW50cnlfKGVudHJ5KSwgdGltZXJfaGVhcF8odGltZXJfaGVhcCksIAorICBpbnRlcnZhbF9sZWZ0XygwKQoreworfQorCitDUGpUaW1lckVudHJ5Ojp+Q1BqVGltZXJFbnRyeSgpIAoreworICAgIENhbmNlbCgpOworICAgIHJ0aW1lcl8uQ2xvc2UoKTsKK30KKwordm9pZCBDUGpUaW1lckVudHJ5OjpTY2hlZHVsZSgpCit7CisgICAgcGpfaW50MzJfdCBpbnRlcnZhbDsKKyAgICAKKyAgICBpZiAoaW50ZXJ2YWxfbGVmdF8gPiBNQVhfUlRJTUVSX0lOVEVSVkFMKSB7CisJaW50ZXJ2YWwgPSBNQVhfUlRJTUVSX0lOVEVSVkFMOworICAgIH0gZWxzZSB7CisJaW50ZXJ2YWwgPSBpbnRlcnZhbF9sZWZ0XzsKKyAgICB9CisgICAgCisgICAgaW50ZXJ2YWxfbGVmdF8gLT0gaW50ZXJ2YWw7CisgICAgcnRpbWVyXy5BZnRlcihpU3RhdHVzLCBpbnRlcnZhbCAqIDEwMDApOworICAgIFNldEFjdGl2ZSgpOworfQorCit2b2lkIENQalRpbWVyRW50cnk6OkNvbnN0cnVjdEwoY29uc3QgcGpfdGltZV92YWwgKmRlbGF5KSAKK3sKKyAgICBydGltZXJfLkNyZWF0ZUxvY2FsKCk7CisgICAgQ0FjdGl2ZVNjaGVkdWxlcjo6QWRkKHRoaXMpOworICAgIAorICAgIGludGVydmFsX2xlZnRfID0gUEpfVElNRV9WQUxfTVNFQygqZGVsYXkpOworICAgIFNjaGVkdWxlKCk7Cit9CisKK0NQalRpbWVyRW50cnkqIENQalRpbWVyRW50cnk6Ok5ld0wocGpfdGltZXJfaGVhcF90ICp0aW1lcl9oZWFwLAorCQkJCSAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKwkJCQkgICBjb25zdCBwal90aW1lX3ZhbCAqZGVsYXkpIAoreworICAgIENQalRpbWVyRW50cnkgKnNlbGYgPSBuZXcgQ1BqVGltZXJFbnRyeSh0aW1lcl9oZWFwLCBlbnRyeSk7CisgICAgQ2xlYW51cFN0YWNrOjpQdXNoTChzZWxmKTsKKyAgICBzZWxmLT5Db25zdHJ1Y3RMKGRlbGF5KTsKKyAgICBDbGVhbnVwU3RhY2s6OlBvcChzZWxmKTsKKworICAgIHJldHVybiBzZWxmOworfQorCit2b2lkIENQalRpbWVyRW50cnk6OlJ1bkwoKSAKK3sKKyAgICBpZiAoaW50ZXJ2YWxfbGVmdF8gPiAwKSB7CisJU2NoZWR1bGUoKTsKKwlyZXR1cm47CisgICAgfQorICAgIAorICAgIHJlbW92ZV9lbnRyeSh0aW1lcl9oZWFwXywgdGhpcyk7CisgICAgZW50cnlfLT5jYih0aW1lcl9oZWFwXywgZW50cnlfKTsKKyAgICAKKyAgICAvLyBGaW5nZXIncyBjcm9zc2VkIQorICAgIGRlbGV0ZSB0aGlzOworfQorCit2b2lkIENQalRpbWVyRW50cnk6OkRvQ2FuY2VsKCkgCit7CisgICAgLyogSXQncyBwb3NzaWJsZSB0aGF0IF90aW1lcl9pZCBpcyAtMSwgc2VlIHNjaGVkdWxlKCkuIEluIHRoaXMgY2FzZSwKKyAgICAgKiB0aGUgZW50cnkgaGFzIG5vdCBiZWVuIGFkZGVkIHRvIHRoZSB0aW1lciBoZWFwLCBzbyBkb24ndCByZW1vdmUKKyAgICAgKiBpdC4KKyAgICAgKi8KKyAgICBpZiAoZW50cnlfICYmIGVudHJ5Xy0+X3RpbWVyX2lkICE9IC0xKQorCXJlbW92ZV9lbnRyeSh0aW1lcl9oZWFwXywgdGhpcyk7CisgICAgCisgICAgcnRpbWVyXy5DYW5jZWwoKTsKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworCisvKgorICogQ2FsY3VsYXRlIG1lbW9yeSBzaXplIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHRpbWVyIGhlYXAuCisgKi8KK1BKX0RFRihwal9zaXplX3QpIHBqX3RpbWVyX2hlYXBfbWVtX3NpemUocGpfc2l6ZV90IGNvdW50KQoreworICAgIHJldHVybiAvKiBzaXplIG9mIHRoZSB0aW1lciBoZWFwIGl0c2VsZjogKi8KKyAgICAgICAgICAgc2l6ZW9mKHBqX3RpbWVyX2hlYXBfdCkgKyAKKyAgICAgICAgICAgLyogc2l6ZSBvZiBlYWNoIGVudHJ5OiAqLworICAgICAgICAgICAoY291bnQrMikgKiAoc2l6ZW9mKHZvaWQqKStzaXplb2YoaW50KSkgKworICAgICAgICAgICAvKiBsb2NrLCBwb29sIGV0YzogKi8KKyAgICAgICAgICAgMTMyOworfQorCisvKgorICogQ3JlYXRlIGEgbmV3IHRpbWVyIGhlYXAuCisgKi8KK1BKX0RFRihwal9zdGF0dXNfdCkgcGpfdGltZXJfaGVhcF9jcmVhdGUoIHBqX3Bvb2xfdCAqcG9vbCwKKwkJCQkJICBwal9zaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3RpbWVyX2hlYXBfdCAqKnBfaGVhcCkKK3sKKyAgICBwal90aW1lcl9oZWFwX3QgKmh0OworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIFBKX0FTU0VSVF9SRVRVUk4ocG9vbCAmJiBwX2hlYXAsIFBKX0VJTlZBTCk7CisKKyAgICAqcF9oZWFwID0gTlVMTDsKKworICAgIC8qIEFsbG9jYXRlIHRpbWVyIGhlYXAgZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcG9vbCAqLworICAgIGh0ID0gUEpfUE9PTF9aQUxMT0NfVChwb29sLCBwal90aW1lcl9oZWFwX3QpOworICAgIGlmICghaHQpCisgICAgICAgIHJldHVybiBQSl9FTk9NRU07CisKKyAgICAvKiBBbGxvY2F0ZSBzbG90cyAqLworICAgIHN0YXR1cyA9IHJlYWxsb2NfdGltZXJfaGVhcChodCwgc2l6ZSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiBzdGF0dXM7CisKKyAgICAqcF9oZWFwID0gaHQ7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK1BKX0RFRih2b2lkKSBwal90aW1lcl9oZWFwX2Rlc3Ryb3koIHBqX3RpbWVyX2hlYXBfdCAqaHQgKQoreworICAgIC8qIENhbmNlbCBhbmQgZGVsZXRlIHBlbmRpbmcgYWN0aXZlIG9iamVjdHMgKi8KKyAgICBpZiAoaHQtPmVudHJpZXMpIHsKKwl1bnNpZ25lZCBpOworCWZvciAoaT0wOyBpPGh0LT5tYXhfc2l6ZTsgKytpKSB7CisJICAgIGlmIChodC0+ZW50cmllc1tpXSkgeworCQlodC0+ZW50cmllc1tpXS0+ZW50cnlfID0gTlVMTDsKKwkJaHQtPmVudHJpZXNbaV0tPkNhbmNlbCgpOworCQlkZWxldGUgaHQtPmVudHJpZXNbaV07CisJCWh0LT5lbnRyaWVzW2ldID0gTlVMTDsKKwkgICAgfQorCX0KKyAgICB9CisgICAgCisgICAgZGVsZXRlIFtdIGh0LT5lbnRyaWVzOworICAgIGRlbGV0ZSBbXSBodC0+ZnJlZV9zbG90czsKKyAgICAKKyAgICBodC0+ZW50cmllcyA9IE5VTEw7CisgICAgaHQtPmZyZWVfc2xvdHMgPSBOVUxMOworfQorCitQSl9ERUYodm9pZCkgcGpfdGltZXJfaGVhcF9zZXRfbG9jayggIHBqX3RpbWVyX2hlYXBfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2xvY2tfdCAqbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfYm9vbF90IGF1dG9fZGVsICkKK3sKKyAgICBQSl9VTlVTRURfQVJHKGh0KTsKKyAgICBpZiAoYXV0b19kZWwpCisgICAgCXBqX2xvY2tfZGVzdHJveShsb2NrKTsKK30KKworCitQSl9ERUYodW5zaWduZWQpIHBqX3RpbWVyX2hlYXBfc2V0X21heF90aW1lZF9vdXRfcGVyX3BvbGwocGpfdGltZXJfaGVhcF90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCApCit7CisgICAgLyogTm90IGFwcGxpY2FibGUgKi8KKyAgICBQSl9VTlVTRURfQVJHKGNvdW50KTsKKyAgICByZXR1cm4gaHQtPm1heF9zaXplOworfQorCitQSl9ERUYocGpfdGltZXJfZW50cnkqKSBwal90aW1lcl9lbnRyeV9pbml0KCBwal90aW1lcl9lbnRyeSAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal90aW1lcl9oZWFwX2NhbGxiYWNrICpjYiApCit7CisgICAgcGpfYXNzZXJ0KGVudHJ5ICYmIGNiKTsKKworICAgIGVudHJ5LT5fdGltZXJfaWQgPSAtMTsKKyAgICBlbnRyeS0+aWQgPSBpZDsKKyAgICBlbnRyeS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICAgIGVudHJ5LT5jYiA9IGNiOworCisgICAgcmV0dXJuIGVudHJ5OworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RpbWVyX2hlYXBfc2NoZWR1bGUoIHBqX3RpbWVyX2hlYXBfdCAqaHQsCisJCQkJCSAgICBwal90aW1lcl9lbnRyeSAqZW50cnksIAorCQkJCQkgICAgY29uc3QgcGpfdGltZV92YWwgKmRlbGF5KQoreworICAgIENQalRpbWVyRW50cnkgKnRpbWVyT2JqOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICAKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGh0ICYmIGVudHJ5ICYmIGRlbGF5LCBQSl9FSU5WQUwpOworICAgIFBKX0FTU0VSVF9SRVRVUk4oZW50cnktPmNiICE9IE5VTEwsIFBKX0VJTlZBTCk7CisKKyAgICAvKiBQcmV2ZW50IHNhbWUgZW50cnkgZnJvbSBiZWluZyBzY2hlZHVsZWQgbW9yZSB0aGFuIG9uY2UgKi8KKyAgICBQSl9BU1NFUlRfUkVUVVJOKGVudHJ5LT5fdGltZXJfaWQgPCAxLCBQSl9FSU5WQUxJRE9QKTsKKworICAgIGVudHJ5LT5fdGltZXJfaWQgPSAtMTsKKyAgICAKKyAgICB0aW1lck9iaiA9IENQalRpbWVyRW50cnk6Ok5ld0woaHQsIGVudHJ5LCBkZWxheSk7CisgICAgc3RhdHVzID0gYWRkX2VudHJ5KGh0LCB0aW1lck9iaik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJdGltZXJPYmotPkNhbmNlbCgpOworCWRlbGV0ZSB0aW1lck9iajsKKwlyZXR1cm4gc3RhdHVzOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworUEpfREVGKHBqX3N0YXR1c190KSBwal90aW1lcl9oZWFwX3NjaGVkdWxlX3dfZ3JwX2xvY2socGpfdGltZXJfaGVhcF90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqX3RpbWVfdmFsICpkZWxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZF92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9ncnBfbG9ja190ICpncnBfbG9jaykKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisJICAgIAorICAgIFBKX1VOVVNFRF9BUkcoZ3JwX2xvY2spOworCisgICAgc3RhdHVzID0gcGpfdGltZXJfaGVhcF9zY2hlZHVsZShodCwgZW50cnksIGRlbGF5KTsKKyAgICAKKyAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisgICAgCWVudHJ5LT5pZCA9IGlkX3ZhbDsKKyAgICAKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitQSl9ERUYoaW50KSBwal90aW1lcl9oZWFwX2NhbmNlbCggcGpfdGltZXJfaGVhcF90ICpodCwKKwkJCQkgIHBqX3RpbWVyX2VudHJ5ICplbnRyeSkKK3sKKyAgICBQSl9BU1NFUlRfUkVUVVJOKGh0ICYmIGVudHJ5LCBQSl9FSU5WQUwpOworICAgIAorICAgIGlmIChlbnRyeS0+X3RpbWVyX2lkID49IDAgJiYgZW50cnktPl90aW1lcl9pZCA8IChpbnQpaHQtPm1heF9zaXplKSB7CisgICAgCUNQalRpbWVyRW50cnkgKnRpbWVyT2JqID0gaHQtPmVudHJpZXNbZW50cnktPl90aW1lcl9pZF07CisgICAgCWlmICh0aW1lck9iaikgeworICAgIAkgICAgdGltZXJPYmotPkNhbmNlbCgpOworICAgIAkgICAgZGVsZXRlIHRpbWVyT2JqOworICAgIAkgICAgcmV0dXJuIDE7CisgICAgCX0gZWxzZSB7CisgICAgCSAgICByZXR1cm4gMDsKKyAgICAJfQorICAgIH0gZWxzZSB7CisgICAgCXJldHVybiAwOworICAgIH0KK30KKworUEpfREVGKGludCkgcGpfdGltZXJfaGVhcF9jYW5jZWxfaWZfYWN0aXZlKHBqX3RpbWVyX2hlYXBfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfdGltZXJfZW50cnkgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZF92YWwpCit7CisgICAgaW50IGNvdW50ID0gcGpfdGltZXJfaGVhcF9jYW5jZWwoaHQsIGVudHJ5KTsKKyAgICBpZiAoY291bnQgPT0gMSkKKyAgICAJZW50cnktPmlkID0gaWRfdmFsOworICAgIAorICAgIHJldHVybiBjb3VudDsKK30KKworUEpfREVGKHVuc2lnbmVkKSBwal90aW1lcl9oZWFwX3BvbGwoIHBqX3RpbWVyX2hlYXBfdCAqaHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3RpbWVfdmFsICpuZXh0X2RlbGF5ICkKK3sKKyAgICAvKiBQb2xsaW5nIGlzIG5vdCBuZWNlc3Nhcnkgb24gU3ltYmlhbiwgc2luY2UgYWxsIGFzeW5jIGFjdGl2aXRpZXMKKyAgICAgKiBhcmUgcmVnaXN0ZXJlZCB0byBhY3RpdmUgc2NoZWR1bGVyLgorICAgICAqLworICAgIFBKX1VOVVNFRF9BUkcoaHQpOworICAgIGlmIChuZXh0X2RlbGF5KSB7CisgICAgCW5leHRfZGVsYXktPnNlYyA9IDE7CisgICAgCW5leHRfZGVsYXktPm1zZWMgPSAwOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworUEpfREVGKHBqX3NpemVfdCkgcGpfdGltZXJfaGVhcF9jb3VudCggcGpfdGltZXJfaGVhcF90ICpodCApCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTihodCwgMCk7CisKKyAgICByZXR1cm4gaHQtPmN1cl9zaXplOworfQorCitQSl9ERUYocGpfc3RhdHVzX3QpIHBqX3RpbWVyX2hlYXBfZWFybGllc3RfdGltZSggcGpfdGltZXJfaGVhcF90ICogaHQsCisJCQkJCSAgICAgICAgIHBqX3RpbWVfdmFsICp0aW1ldmFsKQoreworICAgIC8qIFdlIGRvbid0IHN1cHBvcnQgdGhpcyEgKi8KKyAgICBQSl9VTlVTRURfQVJHKGh0KTsKKyAgICAKKyAgICB0aW1ldmFsLT5zZWMgPSAxOworICAgIHRpbWV2YWwtPm1zZWMgPSAwOworICAgIAorICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovdHlwZXMuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai90eXBlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMmFmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovdHlwZXMuYwpAQCAtMCwwICsxLDQ2IEBACisvKiAkSWQ6IHR5cGVzLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai90eXBlcy5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisKK1BKX0RFRih2b2lkKSBwal90aW1lX3ZhbF9ub3JtYWxpemUocGpfdGltZV92YWwgKnQpCit7CisgICAgUEpfQ0hFQ0tfU1RBQ0soKTsKKworICAgIGlmICh0LT5tc2VjID49IDEwMDApIHsKKwl0LT5zZWMgKz0gKHQtPm1zZWMgLyAxMDAwKTsKKwl0LT5tc2VjID0gKHQtPm1zZWMgJSAxMDAwKTsKKyAgICB9CisgICAgZWxzZSBpZiAodC0+bXNlYyA8PSAtMTAwMCkgeworCWRvIHsKKwkgICAgdC0+c2VjLS07CisJICAgIHQtPm1zZWMgKz0gMTAwMDsKKyAgICAgICAgfSB3aGlsZSAodC0+bXNlYyA8PSAtMTAwMCk7CisgICAgfQorCisgICAgaWYgKHQtPnNlYyA+PSAxICYmIHQtPm1zZWMgPCAwKSB7CisJdC0+c2VjLS07CisJdC0+bXNlYyArPSAxMDAwOworCisgICAgfSBlbHNlIGlmICh0LT5zZWMgPCAwICYmIHQtPm1zZWMgPiAwKSB7CisJdC0+c2VjKys7CisJdC0+bXNlYyAtPSAxMDAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai91bmljb2RlX3N5bWJpYW4uY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqL3VuaWNvZGVfc3ltYmlhbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUxMDllNwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai91bmljb2RlX3N5bWJpYW4uY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qICRJZDogdW5pY29kZV9zeW1iaWFuLmNwcCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3VuaWNvZGUuaD4KKworI2luY2x1ZGUgIm9zX3N5bWJpYW4uaCIKKworCisvKgorICogQ29udmVydCBBTlNJIHN0cmluZ3MgdG8gVW5pY29kZSBzdHJpbmdzLgorICovCitQSl9ERUYod2NoYXJfdCopIHBqX2Fuc2lfdG9fdW5pY29kZSggY29uc3QgY2hhciAqc3RyLCBwal9zaXplX3QgbGVuLAorCQkJCSAgICAgd2NoYXJfdCAqd2J1ZiwgcGpfc2l6ZV90IHdidWZfY291bnQpCit7CisgICAgVFB0ckM4IGFGb3JlaWduKChjb25zdCBUVWludDgqKXN0ciwgKFRJbnQpbGVuKTsKKyAgICBUUHRyMTYgYVVuaWNvZGUoKFRVaW50MTYqKXdidWYsIChUSW50KSh3YnVmX2NvdW50LTEpKTsKKyAgICBUSW50IGxlZnQ7CisKKyAgICBsZWZ0ID0gUGpTeW1iaWFuT1M6Okluc3RhbmNlKCktPkNvbnZlcnRUb1VuaWNvZGUoYVVuaWNvZGUsIGFGb3JlaWduKTsKKworICAgIGlmIChsZWZ0ICE9IDApIHsKKwkvLyBFcnJvciwgb3IgdGhlcmUgYXJlIHVuY29udmVydGFibGUgY2hhcmFjdGVycworCSp3YnVmID0gMDsKKyAgICB9IGVsc2UgeworCWlmIChsZW4gPCB3YnVmX2NvdW50KQorCSAgICB3YnVmW2xlbl0gPSAwOworCWVsc2UKKwkgICAgd2J1ZltsZW4tMV0gPSAwOworICAgIH0KKworICAgIHJldHVybiB3YnVmOworfQorCisKKy8qCisgKiBDb252ZXJ0IFVuaWNvZGUgc3RyaW5nIHRvIEFOU0kgc3RyaW5nLgorICovCitQSl9ERUYoY2hhciopIHBqX3VuaWNvZGVfdG9fYW5zaSggY29uc3Qgd2NoYXJfdCAqd3N0ciwgcGpfc2l6ZV90IGxlbiwKKwkJCQkgIGNoYXIgKmJ1ZiwgcGpfc2l6ZV90IGJ1Zl9zaXplKQoreworICAgIFRQdHJDMTYgYVVuaWNvZGUoKGNvbnN0IFRVaW50MTYqKXdzdHIsIChUSW50KWxlbik7CisgICAgVFB0cjggYUZvcmVpZ24oKFRVaW50OCopYnVmLCAoVEludCkoYnVmX3NpemUtMSkpOworICAgIFRJbnQgbGVmdDsKKworICAgIGxlZnQgPSBQalN5bWJpYW5PUzo6SW5zdGFuY2UoKS0+Q29udmVydEZyb21Vbmljb2RlKGFGb3JlaWduLCBhVW5pY29kZSk7CisKKyAgICBpZiAobGVmdCAhPSAwKSB7CisJLy8gRXJyb3IsIG9yIHRoZXJlIGFyZSB1bmNvbnZlcnRhYmxlIGNoYXJhY3RlcnMKKwlidWZbMF0gPSAnXDAnOworICAgIH0gZWxzZSB7CisJaWYgKGxlbiA8IGJ1Zl9zaXplKQorCSAgICBidWZbbGVuXSA9ICdcMCc7CisJZWxzZQorCSAgICBidWZbbGVuLTFdID0gJ1wwJzsKKyAgICB9CisKKyAgICByZXR1cm4gYnVmOworfQorCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wai91bmljb2RlX3dpbjMyLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovdW5pY29kZV93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYTYzYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGovdW5pY29kZV93aW4zMi5jCkBAIC0wLDAgKzEsNjAgQEAKKy8qICRJZDogdW5pY29kZV93aW4zMi5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3VuaWNvZGUuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKworUEpfREVGKHdjaGFyX3QqKSBwal9hbnNpX3RvX3VuaWNvZGUoY29uc3QgY2hhciAqcywgaW50IGxlbiwKKwkJCQkgICAgd2NoYXJfdCAqYnVmLCBpbnQgYnVmX2NvdW50KQoreworICAgIFBKX0FTU0VSVF9SRVRVUk4ocyAmJiBidWYsIE5VTEwpOworCisgICAgbGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIHMsIGxlbiwgCisJCQkgICAgICBidWYsIGJ1Zl9jb3VudCk7CisgICAgaWYgKGJ1Zl9jb3VudCkgeworCWlmIChsZW4gPCBidWZfY291bnQpCisJICAgIGJ1ZltsZW5dID0gMDsKKwllbHNlCisJICAgIGJ1ZltsZW4tMV0gPSAwOworICAgIH0KKworICAgIHJldHVybiBidWY7Cit9CisKKworUEpfREVGKGNoYXIqKSBwal91bmljb2RlX3RvX2Fuc2koIGNvbnN0IHdjaGFyX3QgKndzdHIsIHBqX3NzaXplX3QgbGVuLAorCQkJCSAgY2hhciAqYnVmLCBpbnQgYnVmX3NpemUpCit7CisgICAgUEpfQVNTRVJUX1JFVFVSTih3c3RyICYmIGJ1ZiwgTlVMTCk7CisKKyAgICBsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgd3N0ciwgKGludClsZW4sIGJ1ZiwgYnVmX3NpemUsIAorCQkJICAgICAgTlVMTCwgTlVMTCk7CisgICAgaWYgKGJ1Zl9zaXplKSB7CisJaWYgKGxlbiA8IGJ1Zl9zaXplKQorCSAgICBidWZbbGVuXSA9ICdcMCc7CisJZWxzZQorCSAgICBidWZbbGVuLTFdID0gJ1wwJzsKKyAgICB9CisKKyAgICByZXR1cm4gYnVmOworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWIrKy10ZXN0L21haW4uY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliKystdGVzdC9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjc1NjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliKystdGVzdC9tYWluLmNwcApAQCAtMCwwICsxLDYyIEBACisvKiAkSWQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGorKy9maWxlLmhwcD4KKyNpbmNsdWRlIDxwaisrL2xpc3QuaHBwPgorI2luY2x1ZGUgPHBqKysvbG9jay5ocHA+CisjaW5jbHVkZSA8cGorKy9oYXNoLmhwcD4KKyNpbmNsdWRlIDxwaisrL29zLmhwcD4KKyNpbmNsdWRlIDxwaisrL3Byb2FjdG9yLmhwcD4KKyNpbmNsdWRlIDxwaisrL3NvY2suaHBwPgorI2luY2x1ZGUgPHBqKysvc3RyaW5nLmhwcD4KKyNpbmNsdWRlIDxwaisrL3RpbWVyLmhwcD4KKyNpbmNsdWRlIDxwaisrL3RyZWUuaHBwPgorCitjbGFzcyBNeV9Bc3luY19PcCA6IHB1YmxpYyBQal9Bc3luY19PcAoreworfTsKKworY2xhc3MgTXlfRXZlbnRfSGFuZGxlciA6IHB1YmxpYyBQal9FdmVudF9IYW5kbGVyCit7Cit9OworCitpbnQgbWFpbigpCit7CisgICAgUGpsaWIgbGliOworICAgIFBqX0NhY2hpbmdfUG9vbCBtZW07CisgICAgUGpfUG9vbCB0aGVfcG9vbDsKKyAgICBQal9Qb29sICpwb29sID0gJnRoZV9wb29sOworICAgIAorICAgIHRoZV9wb29sLmF0dGFjaChtZW0uY3JlYXRlX3Bvb2woNDAwMCw0MDAwKSk7CisKKyAgICBQal9TZW1hcGhvcmVfTG9jayBsc2VtKHBvb2wpOworICAgIFBqX1NlbWFwaG9yZV9Mb2NrICpwbHNlbTsKKworICAgIHBsc2VtID0gbmV3KHBvb2wpIFBqX1NlbWFwaG9yZV9Mb2NrKHBvb2wpOworICAgIGRlbGV0ZSBwbHNlbTsKKworICAgIFBqX1Byb2FjdG9yIHByb2FjdG9yKHBvb2wsIDEwMCwgMTAwKTsKKworICAgIE15X0V2ZW50X0hhbmRsZXIgKmV2ZW50X2hhbmRsZXIgPSBuZXcodGhlX3Bvb2wpIE15X0V2ZW50X0hhbmRsZXI7CisgICAgcHJvYWN0b3IucmVnaXN0ZXJfc29ja2V0X2hhbmRsZXIocG9vbCwgZXZlbnRfaGFuZGxlcik7CisgICAgcHJvYWN0b3IudW5yZWdpc3Rlcl9oYW5kbGVyKGV2ZW50X2hhbmRsZXIpOworCisgICAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi1zYW1wbGVzL2V4Y2VwdC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXNhbXBsZXMvZXhjZXB0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU3YWEzMwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi1zYW1wbGVzL2V4Y2VwdC5jCkBAIC0wLDAgKzEsODIgQEAKKy8qICRJZDogZXhjZXB0LmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9leGNlcHQuaD4KKyNpbmNsdWRlIDxwai9yYW5kLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworLyoqCisgKiBccGFnZSBwYWdlX3BqbGliX3NhbXBsZXNfZXhjZXB0X2MgRXhhbXBsZTogRXhjZXB0aW9uIEhhbmRsaW5nCisgKgorICogQmVsb3cgaXMgc2FtcGxlIHByb2dyYW0gdG8gZGVtb25zdHJhdGUgaG93IHRvIHVzZSBleGNlcHRpb24gaGFuZGxpbmcuCisgKgorICogXGluY2x1ZGVsaW5lbm8gcGpsaWItc2FtcGxlcy9leGNlcHQuYworICovCisKK3N0YXRpYyBwal9leGNlcHRpb25faWRfdCBOT19NRU1PUlksIE9USEVSX0VYQ0VQVElPTjsKKworc3RhdGljIHZvaWQgcmFuZG9tbHlfdGhyb3dfZXhjZXB0aW9uKCkKK3sKKyAgICBpZiAocGpfcmFuZCgpICUgMikKKyAgICAgICAgUEpfVEhST1coT1RIRVJfRVhDRVBUSU9OKTsKK30KKworc3RhdGljIHZvaWQgKm15X21hbGxvYyhzaXplX3Qgc2l6ZSkKK3sKKyAgICB2b2lkICpwdHIgPSBtYWxsb2Moc2l6ZSk7CisgICAgaWYgKCFwdHIpCisgICAgICAgIFBKX1RIUk9XKE5PX01FTU9SWSk7CisgICAgcmV0dXJuIHB0cjsKK30KKworc3RhdGljIGludCB0ZXN0X2V4Y2VwdGlvbigpCit7CisgICAgUEpfVVNFX0VYQ0VQVElPTjsKKyAgICAKKyAgICBQSl9UUlkgeworICAgICAgICB2b2lkICpkYXRhID0gbXlfbWFsbG9jKDIwMCk7CisgICAgICAgIGZyZWUoZGF0YSk7CisgICAgICAgIHJhbmRvbWx5X3Rocm93X2V4Y2VwdGlvbigpOworICAgIH0KKyAgICBQSl9DQVRDSF9BTlkgeworICAgICAgICBwal9leGNlcHRpb25faWRfdCB4X2lkOworICAgICAgICAKKyAgICAgICAgeF9pZCA9IFBKX0dFVF9FWENFUFRJT04oKTsKKyAgICAgICAgcHJpbnRmKCJDYXVnaHQgZXhjZXB0aW9uICVkICglcylcbiIsIAorICAgICAgICAgICAgeF9pZCwgcGpfZXhjZXB0aW9uX2lkX25hbWUoeF9pZCkpOworICAgIH0KKyAgICBQSl9FTkQKKyAgICAgICAgcmV0dXJuIDE7Cit9CisKK2ludCBtYWluKCkKK3sKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICAKKyAgICAvLyBFcnJvciBoYW5kbGluZyBpcyBvbWl0ZWQgZm9yIGNsYXJpdHkuCisgICAgCisgICAgcmMgPSBwal9pbml0KCk7CisKKyAgICByYyA9IHBqX2V4Y2VwdGlvbl9pZF9hbGxvYygiTm8gTWVtb3J5IiwgJk5PX01FTU9SWSk7CisgICAgcmMgPSBwal9leGNlcHRpb25faWRfYWxsb2MoIk90aGVyIEV4Y2VwdGlvbiIsICZPVEhFUl9FWENFUFRJT04pOworICAgIAorICAgIHJldHVybiB0ZXN0X2V4Y2VwdGlvbigpOworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItc2FtcGxlcy9saXN0LmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItc2FtcGxlcy9saXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjZTM0MgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi1zYW1wbGVzL2xpc3QuYwpAQCAtMCwwICsxLDcyIEBACisvKiAkSWQ6IGxpc3QuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2xpc3QuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKworLyoqCisgKiBccGFnZSBwYWdlX3BqbGliX3NhbXBsZXNfbGlzdF9jIEV4YW1wbGU6IExpc3QgTWFuaXB1bGF0aW9uCisgKgorICogQmVsb3cgaXMgc2FtcGxlIHByb2dyYW0gdG8gZGVtb25zdHJhdGUgaG93IHRvIG1hbmlwdWxhdGUgbGlua2VkIGxpc3QuCisgKgorICogXGluY2x1ZGVsaW5lbm8gcGpsaWItc2FtcGxlcy9saXN0LmMKKyAqLworCitzdHJ1Y3QgbXlfbm9kZQoreworICAgIC8vIFRoaXMgbXVzdCBiZSB0aGUgZmlyc3QgbWVtYmVyIGRlY2xhcmVkIGluIHRoZSBzdHJ1Y3QhCisgICAgUEpfREVDTF9MSVNUX01FTUJFUihzdHJ1Y3QgbXlfbm9kZSk7CisgICAgaW50IHZhbHVlOworfTsKKworCitpbnQgbWFpbigpCit7CisgICAgc3RydWN0IG15X25vZGUgbm9kZXNbMTBdOworICAgIHN0cnVjdCBteV9ub2RlIGxpc3Q7CisgICAgc3RydWN0IG15X25vZGUgKml0OworICAgIGludCBpOworICAgIAorICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3QgYXMgZW1wdHkuCisgICAgcGpfbGlzdF9pbml0KCZsaXN0KTsKKyAgICAKKyAgICAvLyBJbnNlcnQgbm9kZXMuCisgICAgZm9yIChpPTA7IGk8MTA7ICsraSkgeworICAgICAgICBub2Rlc1tpXS52YWx1ZSA9IGk7CisgICAgICAgIHBqX2xpc3RfaW5zZXJ0X2JlZm9yZSgmbGlzdCwgJm5vZGVzW2ldKTsKKyAgICB9CisgICAgCisgICAgLy8gSXRlcmF0ZSBsaXN0IG5vZGVzLgorICAgIGl0ID0gbGlzdC5uZXh0OworICAgIHdoaWxlIChpdCAhPSAmbGlzdCkgeworICAgICAgICBQSl9MT0coMywoImxpc3QiLCAidmFsdWUgPSAlZCIsIGl0LT52YWx1ZSkpOworICAgICAgICBpdCA9IGl0LT5uZXh0OworICAgIH0KKyAgICAKKyAgICAvLyBFcmFzZSBhbGwgbm9kZXMuCisgICAgZm9yIChpPTA7IGk8MTA7ICsraSkgeworICAgICAgICBwal9saXN0X2VyYXNlKCZub2Rlc1tpXSk7CisgICAgfQorICAgIAorICAgIC8vIExpc3QgbXVzdCBiZSBlbXB0eSBieSBub3cuCisgICAgcGpfYXNzZXJ0KCBwal9saXN0X2VtcHR5KCZsaXN0KSApOworICAgIAorICAgIHJldHVybiAwOworfTsKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi1zYW1wbGVzL2xvZy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXNhbXBsZXMvbG9nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU3MWVjNQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi1zYW1wbGVzL2xvZy5jCkBAIC0wLDAgKzEsNDMgQEAKKy8qICRJZDogbG9nLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9sb2cuaD4KKworLyoqCisgKiBccGFnZSBwYWdlX3BqbGliX3NhbXBsZXNfbG9nX2MgRXhhbXBsZTogTG9nLCBIZWxsbyBXb3JsZAorICoKKyAqIFZlcnkgc2ltcGxlIHByb2dyYW0gdG8gd3JpdGUgbG9nLgorICoKKyAqIFxpbmNsdWRlbGluZW5vIHBqbGliLXNhbXBsZXMvbG9nLmMKKyAqLworCitpbnQgbWFpbigpCit7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICAvLyBFcnJvciBoYW5kbGluZyBvbWl0ZWQgZm9yIGNsYXJpdHkKKyAgICAKKyAgICAvLyBNdXN0IGluaXRpYWxpemUgUEpMSUIgZmlyc3QhCisgICAgcmMgPSBwal9pbml0KCk7CisKKyAgICBQSl9MT0coMywgKCJtYWluLmMiLCAiSGVsbG8gd29ybGQhIikpOworCisgICAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2FjdGl2ZXNvY2suYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2FjdGl2ZXNvY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTZkY2NhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvYWN0aXZlc29jay5jCkBAIC0wLDAgKzEsNTIwIEBACisvKiAkSWQ6IGFjdGl2ZXNvY2suYyA0NDg3IDIwMTMtMDQtMjMgMDU6Mzc6NDFaIGJlbm55bHAgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisjaW5jbHVkZSA8cGpsaWIuaD4KKworLyoqCisgKiBccGFnZSBwYWdlX3BqbGliX2FjdGl2ZXNvY2tfdGVzdCBUZXN0OiBBY3RpdmUgU29ja2V0CisgKgorICogVGhpcyBmaWxlIGlzIDxiPnBqbGliLXRlc3QvYWN0aXZlc29jay5jPC9iPgorICoKKyAqIFxpbmNsdWRlIHBqbGliLXRlc3QvYWN0aXZlc29jay5jCisgKi8KKworI2lmIElOQ0xVREVfQUNUSVZFU09DS19URVNUCisKKyNkZWZpbmUgVEhJU19GSUxFICAgImFjdGl2ZXNvY2suYyIKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogU2ltcGxlIFVEUCBlY2hvIHNlcnZlci4KKyAqLworc3RydWN0IHVkcF9lY2hvX3NydgoreworICAgIHBqX2FjdGl2ZXNvY2tfdAkqYXNvY2s7CisgICAgcGpfYm9vbF90CQkgZWNob19lbmFibGVkOworICAgIHBqX3VpbnQxNl90CQkgcG9ydDsKKyAgICBwal9pb3F1ZXVlX29wX2tleV90CSBzZW5kX2tleTsKKyAgICBwal9zdGF0dXNfdAkJIHN0YXR1czsKKyAgICB1bnNpZ25lZAkJIHJ4X2NudDsKKyAgICB1bnNpZ25lZAkJIHJ4X2Vycl9jbnQsIHR4X2Vycl9jbnQ7Cit9OworCitzdGF0aWMgdm9pZCB1ZHBfZWNob19lcnIoY29uc3QgY2hhciAqdGl0bGUsIHBqX3N0YXR1c190IHN0YXR1cykKK3sKKyAgICBjaGFyIGVycm1zZ1tQSl9FUlJfTVNHX1NJWkVdOworCisgICAgcGpfc3RyZXJyb3Ioc3RhdHVzLCBlcnJtc2csIHNpemVvZihlcnJtc2cpKTsKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiICAgZXJyb3I6ICVzOiAlcyIsIHRpdGxlLCBlcnJtc2cpKTsKK30KKworc3RhdGljIHBqX2Jvb2xfdCB1ZHBfZWNob19zcnZfb25fZGF0YV9yZWN2ZnJvbShwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkgICAgICAgdm9pZCAqZGF0YSwKKwkJCQkJICAgICAgIHBqX3NpemVfdCBzaXplLAorCQkJCQkgICAgICAgY29uc3QgcGpfc29ja2FkZHJfdCAqc3JjX2FkZHIsCisJCQkJCSAgICAgICBpbnQgYWRkcl9sZW4sCisJCQkJCSAgICAgICBwal9zdGF0dXNfdCBzdGF0dXMpCit7CisgICAgc3RydWN0IHVkcF9lY2hvX3NydiAqc3J2OworICAgIHBqX3NzaXplX3Qgc2VudDsKKworCisgICAgc3J2ID0gKHN0cnVjdCB1ZHBfZWNob19zcnYqKSBwal9hY3RpdmVzb2NrX2dldF91c2VyX2RhdGEoYXNvY2spOworCisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJc3J2LT5zdGF0dXMgPSBzdGF0dXM7CisJc3J2LT5yeF9lcnJfY250Kys7CisJdWRwX2VjaG9fZXJyKCJyZWN2ZnJvbSgpIGNhbGxiYWNrIiwgc3RhdHVzKTsKKwlyZXR1cm4gUEpfVFJVRTsKKyAgICB9CisKKyAgICBzcnYtPnJ4X2NudCsrOworCisgICAgLyogU2VuZCBiYWNrIGlmIGVjaG8gaXMgZW5hYmxlZCAqLworICAgIGlmIChzcnYtPmVjaG9fZW5hYmxlZCkgeworCXNlbnQgPSBzaXplOworCXNydi0+c3RhdHVzID0gcGpfYWN0aXZlc29ja19zZW5kdG8oYXNvY2ssICZzcnYtPnNlbmRfa2V5LCBkYXRhLCAKKwkJCQkJICAgJnNlbnQsIDAsCisJCQkJCSAgIHNyY19hZGRyLCBhZGRyX2xlbik7CisJaWYgKHNydi0+c3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgc3J2LT50eF9lcnJfY250Kys7CisJICAgIHVkcF9lY2hvX2Vycigic2VuZHRvKCkiLCBzdGF0dXMpOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gUEpfVFJVRTsKK30KKworCitzdGF0aWMgcGpfc3RhdHVzX3QgdWRwX2VjaG9fc3J2X2NyZWF0ZShwal9wb29sX3QgKnBvb2wsCisJCQkJICAgICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCQkgICAgICAgcGpfYm9vbF90IGVuYWJsZV9lY2hvLAorCQkJCSAgICAgICBzdHJ1Y3QgdWRwX2VjaG9fc3J2ICoqcF9zcnYpCit7CisgICAgc3RydWN0IHVkcF9lY2hvX3NydiAqc3J2OworICAgIHBqX3NvY2tfdCBzb2NrX2ZkID0gUEpfSU5WQUxJRF9TT0NLRVQ7CisgICAgcGpfc29ja2FkZHIgYWRkcjsKKyAgICBwal9hY3RpdmVzb2NrX2NiIGFjdGl2ZXNvY2tfY2I7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgc3J2ID0gUEpfUE9PTF9aQUxMT0NfVChwb29sLCBzdHJ1Y3QgdWRwX2VjaG9fc3J2KTsKKyAgICBzcnYtPmVjaG9fZW5hYmxlZCA9IGVuYWJsZV9lY2hvOworCisgICAgcGpfc29ja2FkZHJfaW5faW5pdCgmYWRkci5pcHY0LCBOVUxMLCAwKTsKKworICAgIHBqX2J6ZXJvKCZhY3RpdmVzb2NrX2NiLCBzaXplb2YoYWN0aXZlc29ja19jYikpOworICAgIGFjdGl2ZXNvY2tfY2Iub25fZGF0YV9yZWN2ZnJvbSA9ICZ1ZHBfZWNob19zcnZfb25fZGF0YV9yZWN2ZnJvbTsKKworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfY3JlYXRlX3VkcChwb29sLCAmYWRkciwgTlVMTCwgaW9xdWV1ZSwgJmFjdGl2ZXNvY2tfY2IsIAorCQkJCSAgICAgIHNydiwgJnNydi0+YXNvY2ssICZhZGRyKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlwal9zb2NrX2Nsb3NlKHNvY2tfZmQpOworCXVkcF9lY2hvX2VycigicGpfYWN0aXZlc29ja19jcmVhdGUoKSIsIHN0YXR1cyk7CisJcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICBzcnYtPnBvcnQgPSBwal9udG9ocyhhZGRyLmlwdjQuc2luX3BvcnQpOworCisgICAgcGpfaW9xdWV1ZV9vcF9rZXlfaW5pdCgmc3J2LT5zZW5kX2tleSwgc2l6ZW9mKHNydi0+c2VuZF9rZXkpKTsKKworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfc3RhcnRfcmVjdmZyb20oc3J2LT5hc29jaywgcG9vbCwgMzIsIDApOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCXBqX2FjdGl2ZXNvY2tfY2xvc2Uoc3J2LT5hc29jayk7CisJdWRwX2VjaG9fZXJyKCJwal9hY3RpdmVzb2NrX3N0YXJ0X3JlY3Zmcm9tKCkiLCBzdGF0dXMpOworCXJldHVybiBzdGF0dXM7CisgICAgfQorCisKKyAgICAqcF9zcnYgPSBzcnY7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyB2b2lkIHVkcF9lY2hvX3Nydl9kZXN0cm95KHN0cnVjdCB1ZHBfZWNob19zcnYgKnNydikKK3sKKyAgICBwal9hY3RpdmVzb2NrX2Nsb3NlKHNydi0+YXNvY2spOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogVURQIHBpbmcgcG9uZyB0ZXN0IChzZW5kIHBhY2tldCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHR3byBVRFAgZWNobworICogc2VydmVycy4KKyAqLworc3RhdGljIGludCB1ZHBfcGluZ19wb25nX3Rlc3Qodm9pZCkKK3sKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWUgPSBOVUxMOworICAgIHBqX3Bvb2xfdCAqcG9vbCA9IE5VTEw7CisgICAgc3RydWN0IHVkcF9lY2hvX3NydiAqc3J2MT1OVUxMLCAqc3J2Mj1OVUxMOworICAgIHBqX2Jvb2xfdCBuZWVkX3NlbmQgPSBQSl9UUlVFOworICAgIHVuc2lnbmVkIGRhdGEgPSAwOworICAgIGludCBjb3VudCwgcmV0OworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIHBvb2wgPSBwal9wb29sX2NyZWF0ZShtZW0sICJwaW5ncG9uZyIsIDUxMiwgNTEyLCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpCisJcmV0dXJuIC0xMDsKKworICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfY3JlYXRlKHBvb2wsIDQsICZpb3F1ZXVlKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlyZXQgPSAtMjA7CisJdWRwX2VjaG9fZXJyKCJwal9pb3F1ZXVlX2NyZWF0ZSgpIiwgc3RhdHVzKTsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSB1ZHBfZWNob19zcnZfY3JlYXRlKHBvb2wsIGlvcXVldWUsIFBKX1RSVUUsICZzcnYxKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlyZXQgPSAtMzA7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgc3RhdHVzID0gdWRwX2VjaG9fc3J2X2NyZWF0ZShwb29sLCBpb3F1ZXVlLCBQSl9UUlVFLCAmc3J2Mik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJcmV0ID0gLTQwOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIGluaXRpYXRlIHRoZSBmaXJzdCBzZW5kICovCisgICAgZm9yIChjb3VudD0wOyBjb3VudDwxMDAwOyArK2NvdW50KSB7CisJdW5zaWduZWQgbGFzdF9yeDEsIGxhc3RfcngyOworCXVuc2lnbmVkIGk7CisKKwlpZiAobmVlZF9zZW5kKSB7CisJICAgIHBqX3N0cl90IGxvb3BiYWNrOworCSAgICBwal9zb2NrYWRkcl9pbiBhZGRyOworCSAgICBwal9zc2l6ZV90IHNlbnQ7CisKKwkgICAgKytkYXRhOworCisJICAgIHNlbnQgPSBzaXplb2YoZGF0YSk7CisJICAgIGxvb3BiYWNrID0gcGpfc3RyKCIxMjcuMC4wLjEiKTsKKwkgICAgcGpfc29ja2FkZHJfaW5faW5pdCgmYWRkciwgJmxvb3BiYWNrLCBzcnYyLT5wb3J0KTsKKwkgICAgc3RhdHVzID0gcGpfYWN0aXZlc29ja19zZW5kdG8oc3J2MS0+YXNvY2ssICZzcnYxLT5zZW5kX2tleSwKKwkJCQkJICAmZGF0YSwgJnNlbnQsIDAsCisJCQkJCSAgJmFkZHIsIHNpemVvZihhZGRyKSk7CisJICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUyAmJiBzdGF0dXMgIT0gUEpfRVBFTkRJTkcpIHsKKwkJcmV0ID0gLTUwOworCQl1ZHBfZWNob19lcnIoInNlbmR0bygpIiwgc3RhdHVzKTsKKwkJZ290byBvbl9yZXR1cm47CisJICAgIH0KKworCSAgICBuZWVkX3NlbmQgPSBQSl9GQUxTRTsKKwl9CisKKwlsYXN0X3J4MSA9IHNydjEtPnJ4X2NudDsKKwlsYXN0X3J4MiA9IHNydjItPnJ4X2NudDsKKworCWZvciAoaT0wOyBpPDEwICYmIGxhc3RfcngxID09IHNydjEtPnJ4X2NudCAmJiBsYXN0X3J4MiA9PSBzcnYyLT5yeF9jbnQ7ICsraSkgeworCSAgICBwal90aW1lX3ZhbCBkZWxheSA9IHswLCAxMH07CisjaWZkZWYgUEpfU1lNQklBTgorCSAgICBQSl9VTlVTRURfQVJHKGRlbGF5KTsKKwkgICAgcGpfc3ltYmlhbm9zX3BvbGwoLTEsIDEwMCk7CisjZWxzZQorCSAgICBwal9pb3F1ZXVlX3BvbGwoaW9xdWV1ZSwgJmRlbGF5KTsKKyNlbmRpZgorCX0KKworCWlmIChzcnYxLT5yeF9lcnJfY250K3NydjEtPnR4X2Vycl9jbnQgIT0gMCB8fAorCSAgICBzcnYyLT5yeF9lcnJfY250K3NydjItPnR4X2Vycl9jbnQgIT0gMCkKKwl7CisJICAgIC8qIEdvdCBlcnJvciAqLworCSAgICByZXQgPSAtNjA7CisJICAgIGdvdG8gb25fcmV0dXJuOworCX0KKworCWlmIChsYXN0X3J4MSA9PSBzcnYxLT5yeF9jbnQgJiYgbGFzdF9yeDIgPT0gc3J2Mi0+cnhfY250KSB7CisJICAgIC8qIFBhY2tldCBsb3N0ICovCisJICAgIHJldCA9IC03MDsKKwkgICAgdWRwX2VjaG9fZXJyKCJwYWNrZXRzIGhhdmUgYmVlbiBsb3N0IiwgUEpfRVRJTUVET1VUKTsKKwkgICAgZ290byBvbl9yZXR1cm47CisJfQorICAgIH0KKworICAgIHJldCA9IDA7CisKK29uX3JldHVybjoKKyAgICBpZiAoc3J2MikKKwl1ZHBfZWNob19zcnZfZGVzdHJveShzcnYyKTsKKyAgICBpZiAoc3J2MSkKKwl1ZHBfZWNob19zcnZfZGVzdHJveShzcnYxKTsKKyAgICBpZiAoaW9xdWV1ZSkKKwlwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xdWV1ZSk7CisgICAgaWYgKHBvb2wpCisJcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworICAgIAorICAgIHJldHVybiByZXQ7Cit9CisKKworCisjZGVmaW5lIFNJR05BVFVSRSAgIDB4ZGVhZGJlZWYKK3N0cnVjdCB0Y3BfcGt0Cit7CisgICAgcGpfdWludDMyX3QJc2lnbmF0dXJlOworICAgIHBqX3VpbnQzMl90CXNlcTsKKyAgICBjaGFyCWZpbGxbNTEzXTsKK307CisKK3N0cnVjdCB0Y3Bfc3RhdGUKK3sKKyAgICBwal9ib29sX3QJZXJyOworICAgIHBqX2Jvb2xfdAlzZW50OworICAgIHBqX3VpbnQzMl90CW5leHRfcmVjdl9zZXE7CisgICAgcGpfdWludDhfdAlwa3RbNjAwXTsKK307CisKK3N0cnVjdCBzZW5kX2tleQoreworICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QJb3Bfa2V5OworfTsKKworCitzdGF0aWMgcGpfYm9vbF90IHRjcF9vbl9kYXRhX3JlYWQocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkgIHZvaWQgKmRhdGEsCisJCQkJICBwal9zaXplX3Qgc2l6ZSwKKwkJCQkgIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCQkgIHBqX3NpemVfdCAqcmVtYWluZGVyKQoreworICAgIHN0cnVjdCB0Y3Bfc3RhdGUgKnN0ID0gKHN0cnVjdCB0Y3Bfc3RhdGUqKSBwal9hY3RpdmVzb2NrX2dldF91c2VyX2RhdGEoYXNvY2spOworICAgIGNoYXIgKm5leHQgPSAoY2hhciopIGRhdGE7CisKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgJiYgc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisJUEpfTE9HKDEsKCIiLCAiICAgZXJyOiBzdGF0dXM9JWQiLCBzdGF0dXMpKTsKKwlzdC0+ZXJyID0gUEpfVFJVRTsKKwlyZXR1cm4gUEpfRkFMU0U7CisgICAgfQorCisgICAgd2hpbGUgKHNpemUgPj0gc2l6ZW9mKHN0cnVjdCB0Y3BfcGt0KSkgeworCXN0cnVjdCB0Y3BfcGt0ICp0Y3BfcGt0ID0gKHN0cnVjdCB0Y3BfcGt0KikgbmV4dDsKKworCWlmICh0Y3BfcGt0LT5zaWduYXR1cmUgIT0gU0lHTkFUVVJFKSB7CisJICAgIFBKX0xPRygxLCgiIiwgIiAgIGVycjogaW52YWxpZCBzaWduYXR1cmUgYXQgc2VxPSVkIiwgCisJCQkgIHN0LT5uZXh0X3JlY3Zfc2VxKSk7CisJICAgIHN0LT5lcnIgPSBQSl9UUlVFOworCSAgICByZXR1cm4gUEpfRkFMU0U7CisJfQorCWlmICh0Y3BfcGt0LT5zZXEgIT0gc3QtPm5leHRfcmVjdl9zZXEpIHsKKwkgICAgUEpfTE9HKDEsKCIiLCAiICAgZXJyOiB3cm9uZyBzZXF1ZW5jZSIpKTsKKwkgICAgc3QtPmVyciA9IFBKX1RSVUU7CisJICAgIHJldHVybiBQSl9GQUxTRTsKKwl9CisKKwlzdC0+bmV4dF9yZWN2X3NlcSsrOworCW5leHQgKz0gc2l6ZW9mKHN0cnVjdCB0Y3BfcGt0KTsKKwlzaXplIC09IHNpemVvZihzdHJ1Y3QgdGNwX3BrdCk7CisgICAgfQorCisgICAgaWYgKHNpemUpIHsKKwlwal9tZW1tb3ZlKGRhdGEsIG5leHQsIHNpemUpOworCSpyZW1haW5kZXIgPSBzaXplOworICAgIH0KKworICAgIHJldHVybiBQSl9UUlVFOworfQorCitzdGF0aWMgcGpfYm9vbF90IHRjcF9vbl9kYXRhX3NlbnQocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKwkJCQkgIHBqX3NzaXplX3Qgc2VudCkKK3sKKyAgICBzdHJ1Y3QgdGNwX3N0YXRlICpzdD0oc3RydWN0IHRjcF9zdGF0ZSopcGpfYWN0aXZlc29ja19nZXRfdXNlcl9kYXRhKGFzb2NrKTsKKworICAgIFBKX1VOVVNFRF9BUkcob3Bfa2V5KTsKKworICAgIHN0LT5zZW50ID0gMTsKKworICAgIGlmIChzZW50IDwgMSkgeworCXN0LT5lcnIgPSBQSl9UUlVFOworCXJldHVybiBQSl9GQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gUEpfVFJVRTsKK30KKworc3RhdGljIGludCB0Y3BfcGVyZl90ZXN0KHZvaWQpCit7CisgICAgZW51bSB7IENPVU5UPTEwMDAwIH07CisgICAgcGpfcG9vbF90ICpwb29sID0gTlVMTDsKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWUgPSBOVUxMOworICAgIHBqX3NvY2tfdCBzb2NrMT1QSl9JTlZBTElEX1NPQ0tFVCwgc29jazI9UEpfSU5WQUxJRF9TT0NLRVQ7CisgICAgcGpfYWN0aXZlc29ja190ICphc29jazEgPSBOVUxMLCAqYXNvY2syID0gTlVMTDsKKyAgICBwal9hY3RpdmVzb2NrX2NiIGNiOworICAgIHN0cnVjdCB0Y3Bfc3RhdGUgKnN0YXRlMSwgKnN0YXRlMjsKKyAgICB1bnNpZ25lZCBpOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIHBvb2wgPSBwal9wb29sX2NyZWF0ZShtZW0sICJ0Y3BwZXJmIiwgMjU2LCAyNTYsIE5VTEwpOworCisgICAgc3RhdHVzID0gYXBwX3NvY2tldHBhaXIocGpfQUZfSU5FVCgpLCBwal9TT0NLX1NUUkVBTSgpLCAwLCAmc29jazEsIAorCQkJICAgICZzb2NrMik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJc3RhdHVzID0gLTEwMDsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBwal9pb3F1ZXVlX2NyZWF0ZShwb29sLCA0LCAmaW9xdWV1ZSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJc3RhdHVzID0gLTExMDsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBwal9iemVybygmY2IsIHNpemVvZihjYikpOworICAgIGNiLm9uX2RhdGFfcmVhZCA9ICZ0Y3Bfb25fZGF0YV9yZWFkOworICAgIGNiLm9uX2RhdGFfc2VudCA9ICZ0Y3Bfb25fZGF0YV9zZW50OworCisgICAgc3RhdGUxID0gUEpfUE9PTF9aQUxMT0NfVChwb29sLCBzdHJ1Y3QgdGNwX3N0YXRlKTsKKyAgICBzdGF0dXMgPSBwal9hY3RpdmVzb2NrX2NyZWF0ZShwb29sLCBzb2NrMSwgcGpfU09DS19TVFJFQU0oKSwgTlVMTCwgaW9xdWV1ZSwKKwkJCQkgICZjYiwgc3RhdGUxLCAmYXNvY2sxKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlzdGF0dXMgPSAtMTIwOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIHN0YXRlMiA9IFBKX1BPT0xfWkFMTE9DX1QocG9vbCwgc3RydWN0IHRjcF9zdGF0ZSk7CisgICAgc3RhdHVzID0gcGpfYWN0aXZlc29ja19jcmVhdGUocG9vbCwgc29jazIsIHBqX1NPQ0tfU1RSRUFNKCksIE5VTEwsIGlvcXVldWUsCisJCQkJICAmY2IsIHN0YXRlMiwgJmFzb2NrMik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJc3RhdHVzID0gLTEzMDsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBwal9hY3RpdmVzb2NrX3N0YXJ0X3JlYWQoYXNvY2sxLCBwb29sLCAxMDAwLCAwKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlzdGF0dXMgPSAtMTQwOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIFNlbmQgcGFja2V0IGFzIHF1aWNrbHkgYXMgcG9zc2libGUgKi8KKyAgICBmb3IgKGk9MDsgaTxDT1VOVCAmJiAhc3RhdGUxLT5lcnIgJiYgIXN0YXRlMi0+ZXJyOyArK2kpIHsKKwlzdHJ1Y3QgdGNwX3BrdCAqcGt0OworCXN0cnVjdCBzZW5kX2tleSBzZW5kX2tleVsyXSwgKm9wX2tleTsKKwlwal9zc2l6ZV90IGxlbjsKKworCXBrdCA9IChzdHJ1Y3QgdGNwX3BrdCopc3RhdGUyLT5wa3Q7CisJcGt0LT5zaWduYXR1cmUgPSBTSUdOQVRVUkU7CisJcGt0LT5zZXEgPSBpOworCXBqX21lbXNldChwa3QtPmZpbGwsICdhJywgc2l6ZW9mKHBrdC0+ZmlsbCkpOworCisJb3Bfa2V5ID0gJnNlbmRfa2V5W2klMl07CisJcGpfaW9xdWV1ZV9vcF9rZXlfaW5pdCgmb3Bfa2V5LT5vcF9rZXksIHNpemVvZigqb3Bfa2V5KSk7CisKKwlzdGF0ZTItPnNlbnQgPSBQSl9GQUxTRTsKKwlsZW4gPSBzaXplb2YoKnBrdCk7CisJc3RhdHVzID0gcGpfYWN0aXZlc29ja19zZW5kKGFzb2NrMiwgJm9wX2tleS0+b3Bfa2V5LCBwa3QsICZsZW4sIDApOworCWlmIChzdGF0dXMgPT0gUEpfRVBFTkRJTkcpIHsKKwkgICAgZG8geworI2lmIFBKX1NZTUJJQU4KKwkJcGpfc3ltYmlhbm9zX3BvbGwoLTEsIC0xKTsKKyNlbHNlCisJCXBqX2lvcXVldWVfcG9sbChpb3F1ZXVlLCBOVUxMKTsKKyNlbmRpZgorCSAgICB9IHdoaWxlICghc3RhdGUyLT5zZW50KTsKKwl9IGVsc2UgeworI2lmIFBKX1NZTUJJQU4KKwkJLyogVGhlIFN5bWJpYW4gc29ja2V0IGFsd2F5cyByZXR1cm5zIFBKX1NVQ0NFU1MgZm9yIFRDUCBzZW5kLAorCQkgKiBldmVudGhvdWdoIHRoZSByZW1vdGUgZW5kIGhhc24ndCByZWNlaXZlZCB0aGUgZGF0YSB5ZXQuCisJCSAqIElmIHdlIGNvbnRpbnVlIHNlbmRpbmcsIGV2ZW50dWFsbHkgc2VuZCgpIHdpbGwgYmxvY2ssCisJCSAqIHBvc3NpYmx5IGJlY2F1c2UgdGhlIHNlbmQgYnVmZmVyIGlzIGZ1bGwuIFNvIHdlIG5lZWQgdG8KKwkJICogcG9sbCB0aGUgaW9xdWV1ZSBwZXJpb2RpY2FsbHksIHRvIGxldCByZWNlaXZlciBnZXRzIHRoZSAKKwkJICogZGF0YS4KKwkJICovCisJCXBqX3N5bWJpYW5vc19wb2xsKC0xLCAwKTsKKyNlbmRpZgorCQlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkJICAgIFBKX0xPRygxLCgiIiwgIiAgIGVycjogc2VuZCBzdGF0dXM9JWQiLCBzdGF0dXMpKTsKKwkJICAgIHN0YXR1cyA9IC0xODA7CisJCSAgICBicmVhazsKKwkJfSBlbHNlIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCQkgICAgaWYgKGxlbiAhPSBzaXplb2YoKnBrdCkpIHsKKwkJCVBKX0xPRygxLCgiIiwgIiAgIGVycjogc2hvdWxkbid0IHJlcG9ydCBwYXJ0aWFsIHNlbnQiKSk7CisJCQlzdGF0dXMgPSAtMTkwOworCQkJYnJlYWs7CisJCSAgICB9CisJCX0KKwl9CisKKyNpZm5kZWYgUEpfU1lNQklBTgorCWZvciAoOzspIHsKKwkgICAgcGpfdGltZV92YWwgdGltZW91dCA9IHswLCAxMH07CisJICAgIGlmIChwal9pb3F1ZXVlX3BvbGwoaW9xdWV1ZSwgJnRpbWVvdXQpIDwgMSkKKwkJYnJlYWs7CisJfQorI2VuZGlmCisKKyAgICB9CisKKyAgICAvKiBXYWl0IHVudGlsIGV2ZXJ5dGhpbmcgaGFzIGJlZW4gc2VudC9yZWNlaXZlZCAqLworICAgIGlmIChzdGF0ZTEtPm5leHRfcmVjdl9zZXEgPCBDT1VOVCkgeworI2lmZGVmIFBKX1NZTUJJQU4KKwl3aGlsZSAocGpfc3ltYmlhbm9zX3BvbGwoLTEsIDEwMDApID09IFBKX1RSVUUpCisJICAgIDsKKyNlbHNlCisJcGpfdGltZV92YWwgZGVsYXkgPSB7MCwgMTAwfTsKKwl3aGlsZSAocGpfaW9xdWV1ZV9wb2xsKGlvcXVldWUsICZkZWxheSkgPiAwKQorCSAgICA7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoc3RhdHVzID09IFBKX0VQRU5ESU5HKQorCXN0YXR1cyA9IFBKX1NVQ0NFU1M7CisKKyAgICBpZiAoc3RhdHVzICE9IDApCisJZ290byBvbl9yZXR1cm47CisKKyAgICBpZiAoc3RhdGUxLT5lcnIpIHsKKwlzdGF0dXMgPSAtMTgzOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKyAgICBpZiAoc3RhdGUyLT5lcnIpIHsKKwlzdGF0dXMgPSAtMTg2OworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKyAgICBpZiAoc3RhdGUxLT5uZXh0X3JlY3Zfc2VxICE9IENPVU5UKSB7CisJUEpfTE9HKDMsKCIiLCAiICAgZXJyOiBvbmx5ICV1IHBhY2tldHMgcmVjZWl2ZWQsIGV4cGVjdGluZyAldSIsIAorCQkgICAgICBzdGF0ZTEtPm5leHRfcmVjdl9zZXEsIENPVU5UKSk7CisJc3RhdHVzID0gLTE5NTsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKK29uX3JldHVybjoKKyAgICBpZiAoYXNvY2syKQorCXBqX2FjdGl2ZXNvY2tfY2xvc2UoYXNvY2syKTsKKyAgICBpZiAoYXNvY2sxKQorCXBqX2FjdGl2ZXNvY2tfY2xvc2UoYXNvY2sxKTsKKyAgICBpZiAoaW9xdWV1ZSkKKwlwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xdWV1ZSk7CisgICAgaWYgKHBvb2wpCisJcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworCisKK2ludCBhY3RpdmVzb2NrX3Rlc3Qodm9pZCkKK3sKKyAgICBpbnQgcmV0OworCisgICAgUEpfTE9HKDMsKCIiLCAiLi51ZHAgcGluZy9wb25nIHRlc3QiKSk7CisgICAgcmV0ID0gdWRwX3BpbmdfcG9uZ190ZXN0KCk7CisgICAgaWYgKHJldCAhPSAwKQorCXJldHVybiByZXQ7CisKKyAgICBQSl9MT0coMywoIiIsICIuLnRjcCBwZXJmIHRlc3QiKSk7CisgICAgcmV0ID0gdGNwX3BlcmZfdGVzdCgpOworICAgIGlmIChyZXQgIT0gMCkKKwlyZXR1cm4gcmV0OworCisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCS8qIElOQ0xVREVfQUNUSVZFU09DS19URVNUICovCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV9hY3RpdmVfc29ja190ZXN0OworI2VuZGlmCS8qIElOQ0xVREVfQUNUSVZFU09DS19URVNUICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2F0b21pYy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvYXRvbWljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjljZGRmNAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2F0b21pYy5jCkBAIC0wLDAgKzEsMTA5IEBACisvKiAkSWQ6IGF0b21pYy5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSAidGVzdC5oIgorI2luY2x1ZGUgPHBqbGliLmg+CisKKy8qKgorICogXHBhZ2UgcGFnZV9wamxpYl9hdG9taWNfdGVzdCBUZXN0OiBBdG9taWMgVmFyaWFibGUKKyAqCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgaW1wbGVtZW50YXRpb24gb2YgXGIgYXRvbWljX3Rlc3QoKS4gSXQgdGVzdHMgdGhlCisgKiBmdW5jdGlvbmFsaXR5IG9mIHRoZSBhdG9taWMgdmFyaWFibGUgQVBJLgorICoKKyAqIFxzZWN0aW9uIGF0b21pY190ZXN0X3NlYyBTY29wZSBvZiB0aGUgVGVzdAorICoKKyAqIEFQSSB0ZXN0ZWQ6CisgKiAgLSBwal9hdG9taWNfY3JlYXRlKCkKKyAqICAtIHBqX2F0b21pY19nZXQoKQorICogIC0gcGpfYXRvbWljX2luYygpCisgKiAgLSBwal9hdG9taWNfZGVjKCkKKyAqICAtIHBqX2F0b21pY19zZXQoKQorICogIC0gcGpfYXRvbWljX2Rlc3Ryb3koKQorICoKKyAqCisgKiBUaGlzIGZpbGUgaXMgPGI+cGpsaWItdGVzdC9hdG9taWMuYzwvYj4KKyAqCisgKiBcaW5jbHVkZSBwamxpYi10ZXN0L2F0b21pYy5jCisgKi8KKworCisjaWYgSU5DTFVERV9BVE9NSUNfVEVTVAorCitpbnQgYXRvbWljX3Rlc3Qodm9pZCkKK3sKKyAgICBwal9wb29sX3QgKnBvb2w7CisgICAgcGpfYXRvbWljX3QgKmF0b21pY192YXI7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCBOVUxMLCA0MDk2LCAwLCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpCisgICAgICAgIHJldHVybiAtMTA7CisKKyAgICAvKiBjcmVhdGUoKSAqLworICAgIHJjID0gcGpfYXRvbWljX2NyZWF0ZShwb29sLCAxMTEsICZhdG9taWNfdmFyKTsKKyAgICBpZiAocmMgIT0gMCkgeworICAgICAgICByZXR1cm4gLTIwOworICAgIH0KKworICAgIC8qIGdldDogY2hlY2sgdGhlIHZhbHVlLiAqLworICAgIGlmIChwal9hdG9taWNfZ2V0KGF0b21pY192YXIpICE9IDExMSkKKyAgICAgICAgcmV0dXJuIC0zMDsKKworICAgIC8qIGluY3JlbWVudC4gKi8KKyAgICBwal9hdG9taWNfaW5jKGF0b21pY192YXIpOworICAgIGlmIChwal9hdG9taWNfZ2V0KGF0b21pY192YXIpICE9IDExMikKKyAgICAgICAgcmV0dXJuIC00MDsKKworICAgIC8qIGRlY3JlbWVudC4gKi8KKyAgICBwal9hdG9taWNfZGVjKGF0b21pY192YXIpOworICAgIGlmIChwal9hdG9taWNfZ2V0KGF0b21pY192YXIpICE9IDExMSkKKyAgICAgICAgcmV0dXJuIC01MDsKKworICAgIC8qIHNldCAqLworICAgIHBqX2F0b21pY19zZXQoYXRvbWljX3ZhciwgMjExKTsKKyAgICBpZiAocGpfYXRvbWljX2dldChhdG9taWNfdmFyKSAhPSAyMTEpCisgICAgICAgIHJldHVybiAtNjA7CisKKyAgICAvKiBhZGQgKi8KKyAgICBwal9hdG9taWNfYWRkKGF0b21pY192YXIsIDEwKTsKKyAgICBpZiAocGpfYXRvbWljX2dldChhdG9taWNfdmFyKSAhPSAyMjEpCisgICAgICAgIHJldHVybiAtNjA7CisKKyAgICAvKiBjaGVjayB0aGUgdmFsdWUgYWdhaW4uICovCisgICAgaWYgKHBqX2F0b21pY19nZXQoYXRvbWljX3ZhcikgIT0gMjIxKQorICAgICAgICByZXR1cm4gLTcwOworCisgICAgLyogZGVzdHJveSAqLworICAgIHJjID0gcGpfYXRvbWljX2Rlc3Ryb3koYXRvbWljX3Zhcik7CisgICAgaWYgKHJjICE9IDApCisgICAgICAgIHJldHVybiAtODA7CisKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisKKyAgICByZXR1cm4gMDsKK30KKworCisjZWxzZQorLyogVG8gcHJldmVudCB3YXJuaW5nIGFib3V0ICJ0cmFuc2xhdGlvbiB1bml0IGlzIGVtcHR5IgorICogd2hlbiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQuIAorICovCitpbnQgZHVtbXlfYXRvbWljX3Rlc3Q7CisjZW5kaWYgIC8qIElOQ0xVREVfQVRPTUlDX1RFU1QgKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvZWNob19jbHQuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2VjaG9fY2x0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNlMjdkYwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2VjaG9fY2x0LmMKQEAgLTAsMCArMSwyNjkgQEAKKy8qICRJZDogZWNob19jbHQuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgInRlc3QuaCIKKyNpbmNsdWRlIDxwamxpYi5oPgorCisjaWYgSU5DTFVERV9FQ0hPX0NMSUVOVAorCitlbnVtIHsgQlVGX1NJWkUgPSA1MTIgfTsKKworc3RydWN0IGNsaWVudAoreworICAgIGludCBzb2NrX3R5cGU7CisgICAgY29uc3QgY2hhciAqc2VydmVyOworICAgIGludCBwb3J0OworfTsKKworc3RhdGljIHBqX2F0b21pY190ICp0b3RhbEJ5dGVzOworc3RhdGljIHBqX2F0b21pY190ICp0aW1lb3V0X2NvdW50ZXI7CitzdGF0aWMgcGpfYXRvbWljX3QgKmludmFsaWRfY291bnRlcjsKKworI2RlZmluZSBNU0VDX1BSSU5UX0RVUkFUSU9OIDEwMDAKKworc3RhdGljIGludCB3YWl0X3NvY2tldChwal9zb2NrX3Qgc29jaywgdW5zaWduZWQgbXNlY190aW1lb3V0KQoreworICAgIHBqX2ZkX3NldF90IGZkc2V0OworICAgIHBqX3RpbWVfdmFsIHRpbWVvdXQ7CisKKyAgICB0aW1lb3V0LnNlYyA9IDA7CisgICAgdGltZW91dC5tc2VjID0gbXNlY190aW1lb3V0OworICAgIHBqX3RpbWVfdmFsX25vcm1hbGl6ZSgmdGltZW91dCk7CisKKyAgICBQSl9GRF9aRVJPKCZmZHNldCk7CisgICAgUEpfRkRfU0VUKHNvY2ssICZmZHNldCk7CisgICAgCisgICAgcmV0dXJuIHBqX3NvY2tfc2VsZWN0KEZEX1NFVFNJWkUsICZmZHNldCwgTlVMTCwgTlVMTCwgJnRpbWVvdXQpOworfQorCitzdGF0aWMgaW50IGVjaG9fY2xpZW50X3RocmVhZCh2b2lkICphcmcpCit7CisgICAgcGpfc29ja190IHNvY2s7CisgICAgY2hhciBzZW5kX2J1ZltCVUZfU0laRV07CisgICAgY2hhciByZWN2X2J1ZltCVUZfU0laRV07CisgICAgcGpfc29ja2FkZHJfaW4gYWRkcjsKKyAgICBwal9zdHJfdCBzOworICAgIHBqX3N0YXR1c190IHJjOworICAgIHBqX3VpbnQzMl90IGJ1ZmZlcl9pZDsKKyAgICBwal91aW50MzJfdCBidWZmZXJfY291bnRlcjsKKyAgICBzdHJ1Y3QgY2xpZW50ICpjbGllbnQgPSBhcmc7CisgICAgcGpfc3RhdHVzX3QgbGFzdF9yZWN2X2VyciA9IFBKX1NVQ0NFU1MsIGxhc3Rfc2VuZF9lcnIgPSBQSl9TVUNDRVNTOworICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOworCisgICAgcmMgPSBhcHBfc29ja2V0KHBqX0FGX0lORVQoKSwgY2xpZW50LT5zb2NrX3R5cGUsIDAsIC0xLCAmc29jayk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4udW5hYmxlIHRvIGNyZWF0ZSBzb2NrZXQiLCByYyk7CisgICAgICAgIHJldHVybiAtMTA7CisgICAgfQorCisgICAgcmMgPSBwal9zb2NrYWRkcl9pbl9pbml0KCAmYWRkciwgcGpfY3N0cigmcywgY2xpZW50LT5zZXJ2ZXIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwal91aW50MTZfdCljbGllbnQtPnBvcnQpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLnVuYWJsZSB0byByZXNvbHZlIHNlcnZlciIsIHJjKTsKKyAgICAgICAgcmV0dXJuIC0xNTsKKyAgICB9CisKKyAgICByYyA9IHBqX3NvY2tfY29ubmVjdChzb2NrLCAmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5jb25uZWN0KCkgZXJyb3IiLCByYyk7CisgICAgICAgIHBqX3NvY2tfY2xvc2Uoc29jayk7CisgICAgICAgIHJldHVybiAtMjA7CisgICAgfQorCisgICAgUEpfTE9HKDMsKCIiLCAiLi4uc29ja2V0IGNvbm5lY3RlZCB0byAlczolZCIsIAorCQkgIHBqX2luZXRfbnRvYShhZGRyLnNpbl9hZGRyKSwKKwkJICBwal9udG9ocyhhZGRyLnNpbl9wb3J0KSkpOworCisgICAgcGpfbWVtc2V0KHNlbmRfYnVmLCAnQScsIEJVRl9TSVpFKTsKKyAgICBzZW5kX2J1ZltCVUZfU0laRS0xXT0nXDAnOworCisgICAgLyogR2l2ZSBvdGhlciB0aHJlYWQgY2hhbmNlIHRvIGluaXRpYWxpemUgdGhlbXNlbHZlcyEgKi8KKyAgICBwal90aHJlYWRfc2xlZXAoMjAwKTsKKworICAgIC8vUEpfTE9HKDMsKCIiLCAiLi4udGhyZWFkICVwIHJ1bm5pbmciLCBwal90aHJlYWRfdGhpcygpKSk7CisKKyAgICBidWZmZXJfaWQgPSAocGpfdWludDMyX3QpIHBqX3RocmVhZF90aGlzKCk7CisgICAgYnVmZmVyX2NvdW50ZXIgPSAwOworCisgICAgKihwal91aW50MzJfdCopc2VuZF9idWYgPSBidWZmZXJfaWQ7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGludCByYzsKKyAgICAgICAgcGpfc3NpemVfdCBieXRlczsKKworCSsrY291bnRlcjsKKworCS8vd2hpbGUgKHdhaXRfc29ja2V0KHNvY2ssMCkgPiAwKQorCS8vICAgIDsKKworICAgICAgICAvKiBTZW5kIGEgcGFja2V0LiAqLworICAgICAgICBieXRlcyA9IEJVRl9TSVpFOworCSoocGpfdWludDMyX3QqKShzZW5kX2J1Zis0KSA9ICsrYnVmZmVyX2NvdW50ZXI7CisgICAgICAgIHJjID0gcGpfc29ja19zZW5kKHNvY2ssIHNlbmRfYnVmLCAmYnl0ZXMsIDApOworICAgICAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUyB8fCBieXRlcyAhPSBCVUZfU0laRSkgeworICAgICAgICAgICAgaWYgKHJjICE9IGxhc3Rfc2VuZF9lcnIpIHsKKyAgICAgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5zZW5kKCkgZXJyb3IiLCByYyk7CisgICAgICAgICAgICAgICAgUEpfTE9HKDMsKCIiLCAiLi4uaWdub3Jpbmcgc3Vic2VxdWVudCBlcnJvci4uIikpOworICAgICAgICAgICAgICAgIGxhc3Rfc2VuZF9lcnIgPSByYzsKKyAgICAgICAgICAgICAgICBwal90aHJlYWRfc2xlZXAoMTAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSB3YWl0X3NvY2tldChzb2NrLCA1MDApOworICAgICAgICBpZiAocmMgPT0gMCkgeworICAgICAgICAgICAgUEpfTE9HKDMsKCIiLCAiLi4udGltZW91dCIpKTsKKwkgICAgYnl0ZXMgPSAwOworCSAgICBwal9hdG9taWNfaW5jKHRpbWVvdXRfY291bnRlcik7CisJfSBlbHNlIGlmIChyYyA8IDApIHsKKwkgICAgcmMgPSBwal9nZXRfbmV0b3NfZXJyb3IoKTsKKwkgICAgYXBwX3BlcnJvcigiLi4uc2VsZWN0KCkgZXJyb3IiLCByYyk7CisJICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogUmVjZWl2ZSBiYWNrIHRoZSBvcmlnaW5hbCBwYWNrZXQuICovCisgICAgICAgICAgICBieXRlcyA9IDA7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgcGpfc3NpemVfdCByZWNlaXZlZCA9IEJVRl9TSVpFIC0gYnl0ZXM7CisgICAgICAgICAgICAgICAgcmMgPSBwal9zb2NrX3JlY3Yoc29jaywgcmVjdl9idWYrYnl0ZXMsICZyZWNlaXZlZCwgMCk7CisgICAgICAgICAgICAgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MgfHwgcmVjZWl2ZWQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAocmMgIT0gbGFzdF9yZWN2X2VycikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4ucmVjdigpIGVycm9yIiwgcmMpOworICAgICAgICAgICAgICAgICAgICAgICAgUEpfTE9HKDMsKCIiLCAiLi4uaWdub3Jpbmcgc3Vic2VxdWVudCBlcnJvci4uIikpOworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9yZWN2X2VyciA9IHJjOworICAgICAgICAgICAgICAgICAgICAgICAgcGpfdGhyZWFkX3NsZWVwKDEwMCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnl0ZXMgPSAwOworCQkgICAgcmVjZWl2ZWQgPSAwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnl0ZXMgKz0gcmVjZWl2ZWQ7CisgICAgICAgICAgICB9IHdoaWxlIChieXRlcyAhPSBCVUZfU0laRSAmJiBieXRlcyAhPSAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChieXRlcyA9PSAwKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHBqX21lbWNtcChzZW5kX2J1ZiwgcmVjdl9idWYsIEJVRl9TSVpFKSAhPSAwKSB7CisJICAgIHJlY3ZfYnVmW0JVRl9TSVpFLTFdID0gJ1wwJzsKKyAgICAgICAgICAgIFBKX0xPRygzLCgiIiwgIi4uLmVycm9yOiBidWZmZXIgJXUgaGFzIGNoYW5nZWQhXG4iCisJCQkgICJzZW5kX2J1Zj0lc1xuIgorCQkJICAicmVjdl9idWY9JXNcbiIsIAorCQkJICBjb3VudGVyLCBzZW5kX2J1ZiwgcmVjdl9idWYpKTsKKwkgICAgcGpfYXRvbWljX2luYyhpbnZhbGlkX2NvdW50ZXIpOworICAgICAgICB9CisKKyAgICAgICAgLyogQWNjdW11bGF0ZSB0b3RhbCByZWNlaXZlZC4gKi8KKwlwal9hdG9taWNfYWRkKHRvdGFsQnl0ZXMsIGJ5dGVzKTsKKyAgICB9CisKKyAgICBwal9zb2NrX2Nsb3NlKHNvY2spOworICAgIHJldHVybiAwOworfQorCitpbnQgZWNob19jbGllbnQoaW50IHNvY2tfdHlwZSwgY29uc3QgY2hhciAqc2VydmVyLCBpbnQgcG9ydCkKK3sKKyAgICBwal9wb29sX3QgKnBvb2w7CisgICAgcGpfdGhyZWFkX3QgKnRocmVhZFtFQ0hPX0NMSUVOVF9NQVhfVEhSRUFEU107CisgICAgcGpfc3RhdHVzX3QgcmM7CisgICAgc3RydWN0IGNsaWVudCBjbGllbnQ7CisgICAgaW50IGk7CisgICAgcGpfYXRvbWljX3ZhbHVlX3QgbGFzdF9yZWNlaXZlZDsKKyAgICBwal90aW1lc3RhbXAgbGFzdF9yZXBvcnQ7CisKKyAgICBjbGllbnQuc29ja190eXBlID0gc29ja190eXBlOworICAgIGNsaWVudC5zZXJ2ZXIgPSBzZXJ2ZXI7CisgICAgY2xpZW50LnBvcnQgPSBwb3J0OworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKCBtZW0sIE5VTEwsIDQwMDAsIDQwMDAsIE5VTEwgKTsKKworICAgIHJjID0gcGpfYXRvbWljX2NyZWF0ZShwb29sLCAwLCAmdG90YWxCeXRlcyk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgUEpfTE9HKDMsKCIiLCAiLi4uZXJyb3I6IHVuYWJsZSB0byBjcmVhdGUgYXRvbWljIHZhcmlhYmxlIiwgcmMpKTsKKyAgICAgICAgcmV0dXJuIC0zMDsKKyAgICB9CisgICAgcmMgPSBwal9hdG9taWNfY3JlYXRlKHBvb2wsIDAsICZpbnZhbGlkX2NvdW50ZXIpOworICAgIHJjID0gcGpfYXRvbWljX2NyZWF0ZShwb29sLCAwLCAmdGltZW91dF9jb3VudGVyKTsKKworICAgIFBKX0xPRygzLCgiIiwgIkVjaG8gY2xpZW50IHN0YXJ0ZWQiKSk7CisgICAgUEpfTE9HKDMsKCIiLCAiICBEZXN0aW5hdGlvbjogJXM6JWQiLCAKKyAgICAgICAgICAgICAgICAgIEVDSE9fU0VSVkVSX0FERFJFU1MsIEVDSE9fU0VSVkVSX1NUQVJUX1BPUlQpKTsKKyAgICBQSl9MT0coMywoIiIsICIgIFByZXNzIEN0cmwtQyB0byBleGl0IikpOworCisgICAgZm9yIChpPTA7IGk8RUNIT19DTElFTlRfTUFYX1RIUkVBRFM7ICsraSkgeworICAgICAgICByYyA9IHBqX3RocmVhZF9jcmVhdGUoIHBvb2wsIE5VTEwsICZlY2hvX2NsaWVudF90aHJlYWQsICZjbGllbnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBKX1RIUkVBRF9ERUZBVUxUX1NUQUNLX1NJWkUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRocmVhZFtpXSk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogdW5hYmxlIHRvIGNyZWF0ZSB0aHJlYWQiLCByYyk7CisgICAgICAgICAgICByZXR1cm4gLTEwOworICAgICAgICB9CisgICAgfQorCisgICAgbGFzdF9yZWNlaXZlZCA9IDA7CisgICAgcGpfZ2V0X3RpbWVzdGFtcCgmbGFzdF9yZXBvcnQpOworCisgICAgZm9yICg7OykgeworCXBqX3RpbWVzdGFtcCBub3c7CisJdW5zaWduZWQgbG9uZyByZWNlaXZlZCwgY3VyX3JlY2VpdmVkOworCXVuc2lnbmVkIG1zZWM7CisJcGpfaGlnaHByZWNfdCBidzsKKwlwal90aW1lX3ZhbCBlbGFwc2VkOworCXVuc2lnbmVkIGJ3MzI7CisJcGpfdWludDMyX3QgdGltZW91dCwgaW52YWxpZDsKKworCXBqX3RocmVhZF9zbGVlcCgxMDAwKTsKKworCXBqX2dldF90aW1lc3RhbXAoJm5vdyk7CisJZWxhcHNlZCA9IHBqX2VsYXBzZWRfdGltZSgmbGFzdF9yZXBvcnQsICZub3cpOworCW1zZWMgPSBQSl9USU1FX1ZBTF9NU0VDKGVsYXBzZWQpOworCisJcmVjZWl2ZWQgPSBwal9hdG9taWNfZ2V0KHRvdGFsQnl0ZXMpOworCWN1cl9yZWNlaXZlZCA9IHJlY2VpdmVkIC0gbGFzdF9yZWNlaXZlZDsKKwkKKwlidyA9IGN1cl9yZWNlaXZlZDsKKwlwal9oaWdocHJlY19tdWwoYncsIDEwMDApOworCXBqX2hpZ2hwcmVjX2RpdihidywgbXNlYyk7CisKKwlidzMyID0gKHVuc2lnbmVkKWJ3OworCQorCWxhc3RfcmVwb3J0ID0gbm93OworCWxhc3RfcmVjZWl2ZWQgPSByZWNlaXZlZDsKKworCXRpbWVvdXQgPSBwal9hdG9taWNfZ2V0KHRpbWVvdXRfY291bnRlcik7CisJaW52YWxpZCA9IHBqX2F0b21pY19nZXQoaW52YWxpZF9jb3VudGVyKTsKKworICAgICAgICBQSl9MT0coMywoIiIsIAorCSAgICAgICAgICAiLi4uJWQgdGhyZWFkcywgdG90YWwgYmFuZHdpZHRoOiAlZCBLQi9zLCAiCisJCSAgInRpbWVvdXQ9JWQsIGludmFsaWQ9JWQiLCAKKyAgICAgICAgICAgICAgICAgIEVDSE9fQ0xJRU5UX01BWF9USFJFQURTLCBidzMyLzEwMDAsCisJCSAgdGltZW91dCwgaW52YWxpZCkpOworICAgIH0KKworICAgIGZvciAoaT0wOyBpPEVDSE9fQ0xJRU5UX01BWF9USFJFQURTOyArK2kpIHsKKyAgICAgICAgcGpfdGhyZWFkX2pvaW4oIHRocmVhZFtpXSApOworICAgIH0KKworICAgIHBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKyAgICByZXR1cm4gMDsKK30KKworCisjZWxzZQoraW50IGR1bW15X2VjaG9fY2xpZW50OworI2VuZGlmICAvKiBJTkNMVURFX0VDSE9fQ0xJRU5UICovCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9lcnJuby5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvZXJybm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGYxZmMyCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvZXJybm8uYwpAQCAtMCwwICsxLDE3MiBAQAorLyogJElkOiBlcnJuby5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgInRlc3QuaCIKKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL2N0eXBlLmg+CisjaW5jbHVkZSA8cGovY29tcGF0L3NvY2tldC5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorCisjaWYgSU5DTFVERV9FUlJOT19URVNUCisKKyNkZWZpbmUgVEhJU19GSUxFICAgImVycm5vIgorCisjaWYgKGRlZmluZWQoUEpfV0lOMzIpICYmIFBKX1dJTjMyICE9IDApIHx8IFwKKyAgICAoZGVmaW5lZChQSl9XSU42NCkgJiYgUEpfV0lONjQgIT0gMCkKKyMgICBpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfSEFTX0VSUk5PX0gpICYmIFBKX0hBU19FUlJOT19IICE9IDAKKyMgICBpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHRyaW1fbmV3bGluZXMoY2hhciAqcykKK3sKKyAgICB3aGlsZSAoKnMpIHsKKyAgICAgICAgaWYgKCpzID09ICdccicgfHwgKnMgPT0gJ1xuJykKKyAgICAgICAgICAgICpzID0gJyAnOworICAgICAgICArK3M7CisgICAgfQorfQorCitpbnQgbXlfc3RybmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBpbnQgbWF4X2xlbikKK3sKKyAgICB3aGlsZSAoKnMxICYmICpzMiAmJiBtYXhfbGVuID4gMCkgeworICAgICAgICBpZiAocGpfdG9sb3dlcigqczEpICE9IHBqX3RvbG93ZXIoKnMyKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgKytzMTsKKyAgICAgICAgKytzMjsKKyAgICAgICAgLS1tYXhfbGVuOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgY2hhciAqbXlfc3RyaXN0cihjb25zdCBjaGFyICp3aG9sZSwgY29uc3QgY2hhciAqcGFydCkKK3sKKyAgICBpbnQgcGFydF9sZW4gPSAoaW50KXN0cmxlbihwYXJ0KTsKKyAgICB3aGlsZSAoKndob2xlKSB7CisgICAgICAgIGlmIChteV9zdHJuY2FzZWNtcCh3aG9sZSwgcGFydCwgcGFydF9sZW4pID09IDApCisgICAgICAgICAgICByZXR1cm4gd2hvbGU7CisgICAgICAgICsrd2hvbGU7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitpbnQgZXJybm9fdGVzdCh2b2lkKQoreworICAgIGVudW0geyBDVVQgPSA2IH07CisgICAgcGpfc3RhdHVzX3QgcmMgPSAwOworICAgIGNoYXIgZXJyYnVmWzI1Nl07CisKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uZXJybm8gdGVzdDogY2hlY2sgdGhlIG1zZyBjYXJlZnVsbHkiKSk7CisKKyAgICBQSl9VTlVTRURfQVJHKHJjKTsKKyAgICAKKyAgICAvKiAKKyAgICAgKiBXaW5kb3dzIHBsYXRmb3JtIGVycm9yLiAKKyAgICAgKi8KKyMgICBpZmRlZiBFUlJPUl9JTlZBTElEX0RBVEEKKyAgICByYyA9IFBKX1NUQVRVU19GUk9NX09TKEVSUk9SX0lOVkFMSURfREFUQSk7CisgICAgcGpfc2V0X29zX2Vycm9yKHJjKTsKKworICAgIC8qIFdob2xlICovCisgICAgcGpfc3RyZXJyb3IocmMsIGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpOworICAgIHRyaW1fbmV3bGluZXMoZXJyYnVmKTsKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi4ubXNnIGZvciByYz1FUlJPUl9JTlZBTElEX0RBVEE6ICclcyciLCBlcnJidWYpKTsKKyAgICBpZiAobXlfc3RyaXN0cihlcnJidWYsICJpbnZhbGlkIikgPT0gTlVMTCkgeworICAgICAgICBQSl9MT0coMywgKFRISVNfRklMRSwgCisgICAgICAgICAgICAgICAgICAgIi4uLmVycm9yOiBleHBlY3RpbmcgXCJpbnZhbGlkXCIgc3RyaW5nIGluIHRoZSBtc2ciKSk7CisjaWZuZGVmIFBKX1dJTjMyX1dJTkNFCisgICAgICAgIHJldHVybiAtMjA7CisjZW5kaWYKKyAgICB9CisKKyAgICAvKiBDdXQgdmVyc2lvbi4gKi8KKyAgICBwal9zdHJlcnJvcihyYywgZXJyYnVmLCBDVVQpOworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi5tc2cgZm9yIHJjPUVSUk9SX0lOVkFMSURfREFUQSAoY3V0KTogJyVzJyIsIGVycmJ1ZikpOworIyAgIGVuZGlmCisKKyAgICAvKgorICAgICAqIFVuaXggZXJyb3JzCisgICAgICovCisjICAgaWYgZGVmaW5lZChFSU5WQUwpICYmICFkZWZpbmVkKFBKX1NZTUJJQU4pCisgICAgcmMgPSBQSl9TVEFUVVNfRlJPTV9PUyhFSU5WQUwpOworICAgIHBqX3NldF9vc19lcnJvcihyYyk7CisKKyAgICAvKiBXaG9sZSAqLworICAgIHBqX3N0cmVycm9yKHJjLCBlcnJidWYsIHNpemVvZihlcnJidWYpKTsKKyAgICB0cmltX25ld2xpbmVzKGVycmJ1Zik7CisgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLm1zZyBmb3IgcmM9RUlOVkFMOiAnJXMnIiwgZXJyYnVmKSk7CisgICAgaWYgKG15X3N0cmlzdHIoZXJyYnVmLCAiaW52YWxpZCIpID09IE5VTEwpIHsKKyAgICAgICAgUEpfTE9HKDMsIChUSElTX0ZJTEUsIAorICAgICAgICAgICAgICAgICAgICIuLi5lcnJvcjogZXhwZWN0aW5nIFwiaW52YWxpZFwiIHN0cmluZyBpbiB0aGUgbXNnIikpOworICAgICAgICByZXR1cm4gLTMwOworICAgIH0KKworICAgIC8qIEN1dCAqLworICAgIHBqX3N0cmVycm9yKHJjLCBlcnJidWYsIENVVCk7CisgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLm1zZyBmb3IgcmM9RUlOVkFMIChjdXQpOiAnJXMnIiwgZXJyYnVmKSk7CisjICAgZW5kaWYKKworICAgIC8qIAorICAgICAqIFdpbmRvd3MgV1NBIGVycm9ycworICAgICAqLworIyAgIGlmZGVmIFdTQUVJTlZBTAorICAgIHJjID0gUEpfU1RBVFVTX0ZST01fT1MoV1NBRUlOVkFMKTsKKyAgICBwal9zZXRfb3NfZXJyb3IocmMpOworCisgICAgLyogV2hvbGUgKi8KKyAgICBwal9zdHJlcnJvcihyYywgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSk7CisgICAgdHJpbV9uZXdsaW5lcyhlcnJidWYpOworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi5tc2cgZm9yIHJjPVdTQUVJTlZBTDogJyVzJyIsIGVycmJ1ZikpOworICAgIGlmIChteV9zdHJpc3RyKGVycmJ1ZiwgImludmFsaWQiKSA9PSBOVUxMKSB7CisgICAgICAgIFBKX0xPRygzLCAoVEhJU19GSUxFLCAKKyAgICAgICAgICAgICAgICAgICAiLi4uZXJyb3I6IGV4cGVjdGluZyBcImludmFsaWRcIiBzdHJpbmcgaW4gdGhlIG1zZyIpKTsKKyAgICAgICAgcmV0dXJuIC00MDsKKyAgICB9CisKKyAgICAvKiBDdXQgKi8KKyAgICBwal9zdHJlcnJvcihyYywgZXJyYnVmLCBDVVQpOworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi5tc2cgZm9yIHJjPVdTQUVJTlZBTCAoY3V0KTogJyVzJyIsIGVycmJ1ZikpOworIyAgIGVuZGlmCisKKyAgICBwal9zdHJlcnJvcihQSl9FQlVHLCBlcnJidWYsIHNpemVvZihlcnJidWYpKTsKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi4ubXNnIGZvciByYz1QSl9FQlVHOiAnJXMnIiwgZXJyYnVmKSk7CisgICAgaWYgKG15X3N0cmlzdHIoZXJyYnVmLCAiQlVHIikgPT0gTlVMTCkgeworICAgICAgICBQSl9MT0coMywgKFRISVNfRklMRSwgCisgICAgICAgICAgICAgICAgICAgIi4uLmVycm9yOiBleHBlY3RpbmcgXCJCVUdcIiBzdHJpbmcgaW4gdGhlIG1zZyIpKTsKKyAgICAgICAgcmV0dXJuIC0yMDsKKyAgICB9CisKKyAgICBwal9zdHJlcnJvcihQSl9FQlVHLCBlcnJidWYsIENVVCk7CisgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLm1zZyBmb3IgcmM9UEpfRUJVRywgY3V0IGF0ICVkIGNoYXJzOiAnJXMnIiwgCisgICAgICAgICAgICAgIENVVCwgZXJyYnVmKSk7CisKKyAgICAvKiBQZXJyb3IgKi8KKyAgICBwal9wZXJyb3IoMywgVEhJU19GSUxFLCBQSl9TVUNDRVNTLCAiLi4udGVzdGluZyAlcyIsICJwal9wZXJyb3IiKTsKKyAgICBQSl9QRVJST1IoMywoVEhJU19GSUxFLCBQSl9TVUNDRVNTLCAiLi4udGVzdGluZyAlcyIsICJQSl9QRVJST1IiKSk7CisKKyAgICByZXR1cm4gMDsKK30KKworCisjZW5kaWYJLyogSU5DTFVERV9FUlJOT19URVNUICovCisKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvZXhjZXB0aW9uLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9leGNlcHRpb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDRiMWNkCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvZXhjZXB0aW9uLmMKQEAgLTAsMCArMSwyODIgQEAKKy8qICRJZDogZXhjZXB0aW9uLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKworLyoqCisgKiBccGFnZSBwYWdlX3BqbGliX2V4Y2VwdGlvbl90ZXN0IFRlc3Q6IEV4Y2VwdGlvbiBIYW5kbGluZworICoKKyAqIFRoaXMgZmlsZSBwcm92aWRlcyBpbXBsZW1lbnRhdGlvbiBvZiBcYiBleGNlcHRpb25fdGVzdCgpLiBJdCB0ZXN0cyB0aGUKKyAqIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGV4Y2VwdGlvbiBoYW5kbGluZyBBUEkuCisgKgorICogQG5vdGUgVGhpcyB0ZXN0IHVzZSBzdGF0aWMgSUQgbm90IGFjcXVpcmVkIHRocm91Z2ggcHJvcGVyIHJlZ2lzdHJhdGlvbi4KKyAqIFRoaXMgaXMgbm90IHJlY29tbWVuZGVkLCBzaW5jZSBpdCBtYXkgY3JlYXRlIElEIGNvbGxpc3Npb25zLgorICoKKyAqIFxzZWN0aW9uIGV4Y2VwdGlvbl90ZXN0X3NlYyBTY29wZSBvZiB0aGUgVGVzdAorICoKKyAqIFNvbWUgc2NlbmFyaW9zIHRlc3RlZDoKKyAqICAtIG5vIGV4Y2VwdGlvbiBzaXR1YXRpb24KKyAqICAtIGJhc2ljIFRSWS9DQVRDSAorICogIC0gbXVsdGlwbGUgZXhjZXB0aW9uIGhhbmRsZXJzCisgKiAgLSBkZWZhdWx0IGhhbmRsZXJzCisgKgorICoKKyAqIFRoaXMgZmlsZSBpcyA8Yj5wamxpYi10ZXN0L2V4Y2VwdGlvbi5jPC9iPgorICoKKyAqIFxpbmNsdWRlIHBqbGliLXRlc3QvZXhjZXB0aW9uLmMKKyAqLworCisKKyNpZiBJTkNMVURFX0VYQ0VQVElPTl9URVNUCisKKyNpbmNsdWRlIDxwamxpYi5oPgorCisjZGVmaW5lCUlEXzEJMQorI2RlZmluZSBJRF8yCTIKKworc3RhdGljIGludCB0aHJvd19pZF8xKHZvaWQpCit7CisgICAgUEpfVEhST1coIElEXzEgKTsKKyAgICBQSl9VTlJFQUNIRUQocmV0dXJuIC0xOykKK30KKworc3RhdGljIGludCB0aHJvd19pZF8yKHZvaWQpCit7CisgICAgUEpfVEhST1coIElEXzIgKTsKKyAgICBQSl9VTlJFQUNIRUQocmV0dXJuIC0xOykKK30KKworc3RhdGljIGludCB0cnlfY2F0Y2hfdGVzdCh2b2lkKQoreworICAgIFBKX1VTRV9FWENFUFRJT047CisgICAgaW50IHJjID0gLTIwMDsKKworICAgIFBKX1RSWSB7CisJUEpfVEhST1coSURfMSk7CisgICAgfQorICAgIFBKX0NBVENIX0FOWSB7CisJcmMgPSAwOworICAgIH0KKyAgICBQSl9FTkQ7CisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IHRocm93X2luX2hhbmRsZXIodm9pZCkKK3sKKyAgICBQSl9VU0VfRVhDRVBUSU9OOworICAgIGludCByYyA9IDA7CisKKyAgICBQSl9UUlkgeworCVBKX1RIUk9XKElEXzEpOworICAgIH0KKyAgICBQSl9DQVRDSF9BTlkgeworCWlmIChQSl9HRVRfRVhDRVBUSU9OKCkgIT0gSURfMSkKKwkgICAgcmMgPSAtMzAwOworCWVsc2UKKwkgICAgUEpfVEhST1coSURfMik7CisgICAgfQorICAgIFBKX0VORDsKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgcmV0dXJuX2luX2hhbmRsZXIodm9pZCkKK3sKKyAgICBQSl9VU0VfRVhDRVBUSU9OOworCisgICAgUEpfVFJZIHsKKwlQSl9USFJPVyhJRF8xKTsKKyAgICB9CisgICAgUEpfQ0FUQ0hfQU5ZIHsKKwlyZXR1cm4gMDsKKyAgICB9CisgICAgUEpfRU5EOworICAgIHJldHVybiAtNDAwOworfQorCisKK3N0YXRpYyBpbnQgdGVzdCh2b2lkKQoreworICAgIGludCByYyA9IDA7CisgICAgUEpfVVNFX0VYQ0VQVElPTjsKKworICAgIC8qCisgICAgICogTm8gZXhjZXB0aW9uIHNpdHVhdGlvbi4KKyAgICAgKi8KKyAgICBQSl9UUlkgeworICAgICAgICByYyA9IHJjOworICAgIH0KKyAgICBQSl9DQVRDSF9BTlkgeworICAgICAgICByYyA9IC0zOworICAgIH0KKyAgICBQSl9FTkQ7CisKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gcmM7CisKKworICAgIC8qCisgICAgICogQmFzaWMgVFJZL0NBVENICisgICAgICovIAorICAgIFBKX1RSWSB7CisJcmMgPSB0aHJvd19pZF8xKCk7CisKKwkvLyBzaG91bGQgbm90IHJlYWNoIGhlcmUuCisJcmMgPSAtMTA7CisgICAgfQorICAgIFBKX0NBVENIX0FOWSB7CisgICAgICAgIGludCBpZCA9IFBKX0dFVF9FWENFUFRJT04oKTsKKwlpZiAoaWQgIT0gSURfMSkgeworCSAgICBQSl9MT0coMywoIiIsICIuLi5lcnJvcjogZ290IHVuZXhwZWN0ZWQgZXhjZXB0aW9uICVkICglcykiLCAKKwkJICAgICAgaWQsIHBqX2V4Y2VwdGlvbl9pZF9uYW1lKGlkKSkpOworCSAgICBpZiAoIXJjKSByYyA9IC0yMDsKKwl9CisgICAgfQorICAgIFBKX0VORDsKKworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIC8qCisgICAgICogTXVsdGlwbGUgZXhjZXB0aW9ucyBoYW5kbGVycworICAgICAqLworICAgIFBKX1RSWSB7CisJcmMgPSB0aHJvd19pZF8yKCk7CisJLy8gc2hvdWxkIG5vdCByZWFjaCBoZXJlLgorCXJjID0gLTI1OworICAgIH0KKyAgICBQSl9DQVRDSF9BTlkgeworCXN3aXRjaCAoUEpfR0VUX0VYQ0VQVElPTigpKSB7CisJY2FzZSBJRF8xOgorCSAgICBpZiAoIXJjKSByYyA9IC0zMDsgYnJlYWs7CisJY2FzZSBJRF8yOgorCSAgICBpZiAoIXJjKSByYyA9IDA7IGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGlmICghcmMpIHJjID0gLTQwOworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIFBKX0VORDsKKworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIC8qCisgICAgICogVGVzdCBkZWZhdWx0IGhhbmRsZXIuCisgICAgICovCisgICAgUEpfVFJZIHsKKwlyYyA9IHRocm93X2lkXzEoKTsKKwkvLyBzaG91bGQgbm90IHJlYWNoIGhlcmUKKwlyYyA9IC01MDsKKyAgICB9CisgICAgUEpfQ0FUQ0hfQU5ZIHsKKwlzd2l0Y2ggKFBKX0dFVF9FWENFUFRJT04oKSkgeworCWNhc2UgSURfMToKKwkgICAgaWYgKCFyYykgcmMgPSAwOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICBpZiAoIXJjKSByYyA9IC02MDsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBQSl9FTkQ7CisKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gcmM7CisKKyAgICAvKgorICAgICAqIE5lc3RlZCBoYW5kbGVycworICAgICAqLworICAgIFBKX1RSWSB7CisJcmMgPSB0cnlfY2F0Y2hfdGVzdCgpOworICAgIH0KKyAgICBQSl9DQVRDSF9BTlkgeworCXJjID0gLTcwOworICAgIH0KKyAgICBQSl9FTkQ7CisKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gcmM7CisKKyAgICAvKgorICAgICAqIFRocm93aW5nIGV4Y2VwdGlvbiBpbnNpZGUgaGFuZGxlcgorICAgICAqLworICAgIHJjID0gLTgwOworICAgIFBKX1RSWSB7CisJaW50IHJjMjsKKwlyYzIgPSB0aHJvd19pbl9oYW5kbGVyKCk7CisJaWYgKHJjMikKKwkgICAgcmMgPSByYzI7CisgICAgfQorICAgIFBKX0NBVENIX0FOWSB7CisJaWYgKFBKX0dFVF9FWENFUFRJT04oKSA9PSBJRF8yKSB7CisJICAgIHJjID0gMDsKKwl9IGVsc2UgeworCSAgICByYyA9IC05MDsKKwl9CisgICAgfQorICAgIFBKX0VORDsKKworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworCisgICAgLyoKKyAgICAgKiBSZXR1cm4gZnJvbSBoYW5kbGVyLiBSZXR1cm5pbmcgZnJvbSB0aGUgZnVuY3Rpb24gaW5zaWRlIGEgaGFuZGxlcgorICAgICAqIHNob3VsZCBiZSBva2F5ICh0aG91Z2ggcmV0dXJuaW5nIGZyb20gdGhlIGZ1bmN0aW9uIGluc2lkZSB0aGUKKyAgICAgKiBQSl9UUlkgYmxvY2sgSVMgTk9UIE9LQVkhISkuIFdlIHdhbnQgdG8gdGVzdCB0byBzZWUgaWYgaGFuZGxlcgorICAgICAqIGlzIGNsZWFuZWQgdXAgcHJvcGVybHksIGJ1dCBub3Qgc3VyZSBob3cgdG8gZG8gdGhpcy4KKyAgICAgKi8KKyAgICBQSl9UUlkgeworCWludCByYzI7CisJcmMyID0gcmV0dXJuX2luX2hhbmRsZXIoKTsKKwlpZiAocmMyKQorCSAgICByYyA9IHJjMjsKKyAgICB9CisgICAgUEpfQ0FUQ0hfQU5ZIHsKKwlyYyA9IC0xMDA7CisgICAgfQorICAgIFBKX0VORDsKKworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBleGNlcHRpb25fdGVzdCh2b2lkKQoreworICAgIGludCBpLCByYzsKKyAgICBlbnVtIHsgTE9PUCA9IDEwIH07CisKKyAgICBmb3IgKGk9MDsgaTxMT09QOyArK2kpIHsKKwlpZiAoKHJjPXRlc3QoKSkgIT0gMCkgeworCSAgICBQSl9MT0coMywoIiIsICIuLi5mYWlsZWQgYXQgaT0lZCAocmM9JWQpIiwgaSwgcmMpKTsKKwkgICAgcmV0dXJuIHJjOworCX0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV9leGNlcHRpb25fdGVzdDsKKyNlbmRpZgkvKiBJTkNMVURFX0VYQ0VQVElPTl9URVNUICovCisKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvZXhjZXB0aW9uX3dyYXAuY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvZXhjZXB0aW9uX3dyYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNWIzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9leGNlcHRpb25fd3JhcC5jcHAKQEAgLTAsMCArMSwyNCBAQAorLyogJElkOiBleGNlcHRpb25fd3JhcC5jcHAgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisKKy8qCisgKiBUaGlzIGZpbGUgaXMgYSBDKysgd3JhcHBlciwgc2VlIHRpY2tldCAjODg2IGZvciBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlICJleGNlcHRpb24uYyIKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2ZpZm9idWYuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2ZpZm9idWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWMzZWUyCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvZmlmb2J1Zi5jCkBAIC0wLDAgKzEsMTE3IEBACisvKiAkSWQ6IGZpZm9idWYuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgInRlc3QuaCIKKworLyogVG8gcHJldmVudCB3YXJuaW5nIGFib3V0ICJ0cmFuc2xhdGlvbiB1bml0IGlzIGVtcHR5IgorICogd2hlbiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQuIAorICovCitpbnQgZHVtbXlfZmlmb2J1Zl90ZXN0OworCisjaWYgSU5DTFVERV9GSUZPQlVGX1RFU1QKKworI2luY2x1ZGUgPHBqbGliLmg+CisKK2ludCBmaWZvYnVmX3Rlc3QoKQoreworICAgIGVudW0geyBTSVpFID0gMTAyNCwgTUFYX0VOVFJJRVMgPSAxMjgsIAorCSAgIE1JTl9TSVpFID0gNCwgTUFYX1NJWkUgPSA2NCwgCisJICAgTE9PUD0xMDAwMCB9OworICAgIHBqX3Bvb2xfdCAqcG9vbDsKKyAgICBwal9maWZvYnVmX3QgZmlmbzsKKyAgICB1bnNpZ25lZCBhdmFpbGFibGUgPSBTSVpFOworICAgIHZvaWQgKmVudHJpZXNbTUFYX0VOVFJJRVNdOworICAgIHZvaWQgKmJ1ZmZlcjsKKyAgICBpbnQgaTsKKworICAgIHBvb2wgPSBwal9wb29sX2NyZWF0ZShtZW0sIE5VTEwsIFNJWkUrMjU2LCAwLCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpCisJcmV0dXJuIC0xMDsKKworICAgIGJ1ZmZlciA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgU0laRSk7CisgICAgaWYgKCFidWZmZXIpCisJcmV0dXJuIC0yMDsKKworICAgIHBqX2ZpZm9idWZfaW5pdCAoJmZpZm8sIGJ1ZmZlciwgU0laRSk7CisgICAgCisgICAgLy8gVGVzdCAxCisgICAgZm9yIChpPTA7IGk8TE9PUCpNQVhfRU5UUklFUzsgKytpKSB7CisJaW50IHNpemU7CisJaW50IGMsIGY7CisJYyA9IGklMjsKKwlmID0gKGkrMSklMjsKKwlkbyB7CisJICAgIHNpemUgPSBNSU5fU0laRSsocGpfcmFuZCgpICUgTUFYX1NJWkUpOworCSAgICBlbnRyaWVzW2NdID0gcGpfZmlmb2J1Zl9hbGxvYyAoJmZpZm8sIHNpemUpOworCX0gd2hpbGUgKGVudHJpZXNbY10gPT0gMCk7CisJaWYgKCBpIT0wKSB7CisJICAgIHBqX2ZpZm9idWZfZnJlZSgmZmlmbywgZW50cmllc1tmXSk7CisJfQorICAgIH0KKyAgICBpZiAoZW50cmllc1soaSsxKSUyXSkKKwlwal9maWZvYnVmX2ZyZWUoJmZpZm8sIGVudHJpZXNbKGkrMSklMl0pOworCisgICAgaWYgKHBqX2ZpZm9idWZfbWF4X3NpemUoJmZpZm8pIDwgU0laRS00KSB7CisJcGpfYXNzZXJ0KDApOworCXJldHVybiAtMTsKKyAgICB9CisKKyAgICAvLyBUZXN0IDIKKyAgICBlbnRyaWVzWzBdID0gcGpfZmlmb2J1Zl9hbGxvYyAoJmZpZm8sIE1JTl9TSVpFKTsKKyAgICBpZiAoIWVudHJpZXNbMF0pIHJldHVybiAtMTsKKyAgICBmb3IgKGk9MDsgaTxMT09QKk1BWF9FTlRSSUVTOyArK2kpIHsKKwlpbnQgc2l6ZSA9IE1JTl9TSVpFKyhwal9yYW5kKCkgJSBNQVhfU0laRSk7CisJZW50cmllc1sxXSA9IHBqX2ZpZm9idWZfYWxsb2MgKCZmaWZvLCBzaXplKTsKKwlpZiAoZW50cmllc1sxXSkKKwkgICAgcGpfZmlmb2J1Zl91bmFsbG9jKCZmaWZvLCBlbnRyaWVzWzFdKTsKKyAgICB9CisgICAgcGpfZmlmb2J1Zl91bmFsbG9jKCZmaWZvLCBlbnRyaWVzWzBdKTsKKyAgICBpZiAocGpfZmlmb2J1Zl9tYXhfc2l6ZSgmZmlmbykgPCBTSVpFLTQpIHsKKwlwal9hc3NlcnQoMCk7CisJcmV0dXJuIC0yOworICAgIH0KKworICAgIC8vIFRlc3QgMworICAgIGZvciAoaT0wOyBpPExPT1A7ICsraSkgeworCWludCBjb3VudCwgajsKKwlmb3IgKGNvdW50PTA7IGF2YWlsYWJsZT49TUlOX1NJWkUrNCAmJiBjb3VudCA8IE1BWF9FTlRSSUVTOykgeworCSAgICBpbnQgc2l6ZSA9IE1JTl9TSVpFKyhwal9yYW5kKCkgJSBNQVhfU0laRSk7CisJICAgIGVudHJpZXNbY291bnRdID0gcGpfZmlmb2J1Zl9hbGxvYyAoJmZpZm8sIHNpemUpOworCSAgICBpZiAoZW50cmllc1tjb3VudF0pIHsKKwkJYXZhaWxhYmxlIC09IChzaXplKzQpOworCQkrK2NvdW50OworCSAgICB9CisJfQorCWZvciAoaj0wOyBqPGNvdW50OyArK2opIHsKKwkgICAgcGpfZmlmb2J1Zl9mcmVlICgmZmlmbywgZW50cmllc1tqXSk7CisJfQorCWF2YWlsYWJsZSA9IFNJWkU7CisgICAgfQorCisgICAgaWYgKHBqX2ZpZm9idWZfbWF4X3NpemUoJmZpZm8pIDwgU0laRS00KSB7CisJcGpfYXNzZXJ0KDApOworCXJldHVybiAtMzsKKyAgICB9CisgICAgcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworICAgIHJldHVybiAwOworfQorCisjZW5kaWYJLyogSU5DTFVERV9GSUZPQlVGX1RFU1QgKi8KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9maWxlLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9maWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYwODZlNQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2ZpbGUuYwpAQCAtMCwwICsxLDIyNSBAQAorLyogJElkOiBmaWxlLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisjaW5jbHVkZSA8cGpsaWIuaD4KKworI2lmIElOQ0xVREVfRklMRV9URVNUCisKKyNkZWZpbmUgRklMRU5BTUUgICAgICAgICAgICAgICAgInRlc3RmaWwxLnR4dCIKKyNkZWZpbmUgTkVXTkFNRSAgICAgICAgICAgICAgICAgInRlc3RmaWwyLnR4dCIKKyNkZWZpbmUgSU5DTFVERV9GSUxFX1RJTUVfVEVTVCAgMAorCitzdGF0aWMgY2hhciBidWZmZXJbMTFdID0geydIJywgJ2UnLCAnbCcsICdsJywgJ28nLCAnICcsCisJCSAgICAgICAgICAnVycsICdvJywgJ3InLCAnbCcsICdkJyB9OworCitzdGF0aWMgaW50IGZpbGVfdGVzdF9pbnRlcm5hbCh2b2lkKQoreworICAgIGVudW0geyBGSUxFX01BWF9BR0UgPSAxMDAwIH07CisgICAgcGpfb3NoYW5kbGVfdCBmZCA9IDA7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworICAgIGNoYXIgcmVhZGJ1ZltzaXplb2YoYnVmZmVyKSsxNl07CisgICAgcGpfZmlsZV9zdGF0IHN0YXQ7CisgICAgcGpfdGltZV92YWwgc3RhcnRfdGltZTsKKyAgICBwal9zc2l6ZV90IHNpemU7CisgICAgcGpfb2ZmX3QgcG9zOworCisgICAgUEpfTE9HKDMsKCIiLCAiLi5maWxlIGlvIHRlc3QuLiIpKTsKKworICAgIC8qIEdldCB0aW1lLiAqLworICAgIHBqX2dldHRpbWVvZmRheSgmc3RhcnRfdGltZSk7CisKKyAgICAvKiBEZWxldGUgb3JpZ2luYWwgZmlsZSBpZiBleGlzdHMuICovCisgICAgaWYgKHBqX2ZpbGVfZXhpc3RzKEZJTEVOQU1FKSkKKyAgICAgICAgcGpfZmlsZV9kZWxldGUoRklMRU5BTUUpOworCisgICAgLyoKKyAgICAgKiBXcml0ZSBkYXRhIHRvIHRoZSBmaWxlLgorICAgICAqLworICAgIHN0YXR1cyA9IHBqX2ZpbGVfb3BlbihOVUxMLCBGSUxFTkFNRSwgUEpfT19XUk9OTFksICZmZCk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmZpbGVfb3BlbigpIGVycm9yIiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIC0xMDsKKyAgICB9CisKKyAgICBzaXplID0gc2l6ZW9mKGJ1ZmZlcik7CisgICAgc3RhdHVzID0gcGpfZmlsZV93cml0ZShmZCwgYnVmZmVyLCAmc2l6ZSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmZpbGVfd3JpdGUoKSBlcnJvciIsIHN0YXR1cyk7CisgICAgICAgIHBqX2ZpbGVfY2xvc2UoZmQpOworICAgICAgICByZXR1cm4gLTIwOworICAgIH0KKyAgICBpZiAoc2l6ZSAhPSBzaXplb2YoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIC0yNTsKKworICAgIHN0YXR1cyA9IHBqX2ZpbGVfY2xvc2UoZmQpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5maWxlX2Nsb3NlKCkgZXJyb3IiLCBzdGF0dXMpOworICAgICAgICByZXR1cm4gLTMwOworICAgIH0KKworICAgIC8qIENoZWNrIHRoZSBmaWxlIGV4aXN0YW5jZSBhbmQgc2l6ZS4gKi8KKyAgICBpZiAoIXBqX2ZpbGVfZXhpc3RzKEZJTEVOQU1FKSkKKyAgICAgICAgcmV0dXJuIC00MDsKKworICAgIGlmIChwal9maWxlX3NpemUoRklMRU5BTUUpICE9IHNpemVvZihidWZmZXIpKQorICAgICAgICByZXR1cm4gLTUwOworCisgICAgLyogR2V0IGZpbGUgc3RhdC4gKi8KKyAgICBzdGF0dXMgPSBwal9maWxlX2dldHN0YXQoRklMRU5BTUUsICZzdGF0KTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiAtNjA7CisKKyAgICAvKiBDaGVjayBzdGF0IHNpemUuICovCisgICAgaWYgKHN0YXQuc2l6ZSAhPSBzaXplb2YoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIC03MDsKKworI2lmIElOQ0xVREVfRklMRV9USU1FX1RFU1QKKyAgICAvKiBDaGVjayBmaWxlIGNyZWF0aW9uIHRpbWUgPj0gc3RhcnRfdGltZS4gKi8KKyAgICBpZiAoIVBKX1RJTUVfVkFMX0dURShzdGF0LmN0aW1lLCBzdGFydF90aW1lKSkKKyAgICAgICAgcmV0dXJuIC04MDsKKyAgICAvKiBDaGVjayBmaWxlIGNyZWF0aW9uIHRpbWUgaXMgbm90IG11Y2ggbGF0ZXIuICovCisgICAgUEpfVElNRV9WQUxfU1VCKHN0YXQuY3RpbWUsIHN0YXJ0X3RpbWUpOworICAgIGlmIChzdGF0LmN0aW1lLnNlYyA+IEZJTEVfTUFYX0FHRSkKKyAgICAgICAgcmV0dXJuIC05MDsKKworICAgIC8qIENoZWNrIGZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgPj0gc3RhcnRfdGltZS4gKi8KKyAgICBpZiAoIVBKX1RJTUVfVkFMX0dURShzdGF0Lm10aW1lLCBzdGFydF90aW1lKSkKKyAgICAgICAgcmV0dXJuIC04MDsKKyAgICAvKiBDaGVjayBmaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIG5vdCBtdWNoIGxhdGVyLiAqLworICAgIFBKX1RJTUVfVkFMX1NVQihzdGF0Lm10aW1lLCBzdGFydF90aW1lKTsKKyAgICBpZiAoc3RhdC5tdGltZS5zZWMgPiBGSUxFX01BWF9BR0UpCisgICAgICAgIHJldHVybiAtOTA7CisKKyAgICAvKiBDaGVjayBmaWxlIGFjY2VzcyB0aW1lID49IHN0YXJ0X3RpbWUuICovCisgICAgaWYgKCFQSl9USU1FX1ZBTF9HVEUoc3RhdC5hdGltZSwgc3RhcnRfdGltZSkpCisgICAgICAgIHJldHVybiAtODA7CisgICAgLyogQ2hlY2sgZmlsZSBhY2Nlc3MgdGltZSBpcyBub3QgbXVjaCBsYXRlci4gKi8KKyAgICBQSl9USU1FX1ZBTF9TVUIoc3RhdC5hdGltZSwgc3RhcnRfdGltZSk7CisgICAgaWYgKHN0YXQuYXRpbWUuc2VjID4gRklMRV9NQVhfQUdFKQorICAgICAgICByZXR1cm4gLTkwOworI2VuZGlmCisKKyAgICAvKgorICAgICAqIFJlLW9wZW4gdGhlIGZpbGUgYW5kIHJlYWQgZGF0YS4KKyAgICAgKi8KKyAgICBzdGF0dXMgPSBwal9maWxlX29wZW4oTlVMTCwgRklMRU5BTUUsIFBKX09fUkRPTkxZLCAmZmQpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5maWxlX29wZW4oKSBlcnJvciIsIHN0YXR1cyk7CisgICAgICAgIHJldHVybiAtMTAwOworICAgIH0KKworICAgIHNpemUgPSAwOworICAgIHdoaWxlIChzaXplIDwgKHBqX3NzaXplX3Qpc2l6ZW9mKHJlYWRidWYpKSB7CisgICAgICAgIHBqX3NzaXplX3QgcmVhZDsKKyAgICAgICAgcmVhZCA9IDE7CisgICAgICAgIHN0YXR1cyA9IHBqX2ZpbGVfcmVhZChmZCwgJnJlYWRidWZbc2l6ZV0sICZyZWFkKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIFBKX0xPRygzLCgiIiwgIi4uLmVycm9yIHJlYWRpbmcgZmlsZSBhZnRlciAlZCBieXRlcyAoZXJyb3IgZm9sbG93cykiLCAKKwkJICAgICAgc2l6ZSkpOworICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3IiLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIC0xMTA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlYWQgPT0gMCkgeworICAgICAgICAgICAgLy8gRU9GCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzaXplICs9IHJlYWQ7CisgICAgfQorCisgICAgaWYgKHNpemUgIT0gc2l6ZW9mKGJ1ZmZlcikpCisgICAgICAgIHJldHVybiAtMTIwOworCisgICAgLyoKKyAgICBpZiAoIXBqX2ZpbGVfZW9mKGZkLCBQSl9PX1JET05MWSkpCisgICAgICAgIHJldHVybiAtMTMwOworICAgICAqLworCisgICAgaWYgKHBqX21lbWNtcChyZWFkYnVmLCBidWZmZXIsIHNpemUpICE9IDApCisgICAgICAgIHJldHVybiAtMTQwOworCisgICAgLyogU2VlayB0ZXN0LiAqLworICAgIHN0YXR1cyA9IHBqX2ZpbGVfc2V0cG9zKGZkLCA0LCBQSl9TRUVLX1NFVCk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmZpbGVfc2V0cG9zKCkgZXJyb3IiLCBzdGF0dXMpOworICAgICAgICByZXR1cm4gLTE0MTsKKyAgICB9CisKKyAgICAvKiBnZXRwb3MgdGVzdC4gKi8KKyAgICBzdGF0dXMgPSBwal9maWxlX2dldHBvcyhmZCwgJnBvcyk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmZpbGVfZ2V0cG9zKCkgZXJyb3IiLCBzdGF0dXMpOworICAgICAgICByZXR1cm4gLTE0MjsKKyAgICB9CisgICAgaWYgKHBvcyAhPSA0KQorICAgICAgICByZXR1cm4gLTE0MzsKKworICAgIHN0YXR1cyA9IHBqX2ZpbGVfY2xvc2UoZmQpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5maWxlX2Nsb3NlKCkgZXJyb3IiLCBzdGF0dXMpOworICAgICAgICByZXR1cm4gLTE1MDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFJlbmFtZSB0ZXN0LgorICAgICAqLworICAgIHN0YXR1cyA9IHBqX2ZpbGVfbW92ZShGSUxFTkFNRSwgTkVXTkFNRSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmZpbGVfbW92ZSgpIGVycm9yIiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIC0xNjA7CisgICAgfQorCisgICAgaWYgKHBqX2ZpbGVfZXhpc3RzKEZJTEVOQU1FKSkKKyAgICAgICAgcmV0dXJuIC0xNzA7CisgICAgaWYgKCFwal9maWxlX2V4aXN0cyhORVdOQU1FKSkKKyAgICAgICAgcmV0dXJuIC0xODA7CisKKyAgICBpZiAocGpfZmlsZV9zaXplKE5FV05BTUUpICE9IHNpemVvZihidWZmZXIpKQorICAgICAgICByZXR1cm4gLTE5MDsKKworICAgIC8qIERlbGV0ZSB0ZXN0LiAqLworICAgIHN0YXR1cyA9IHBqX2ZpbGVfZGVsZXRlKE5FV05BTUUpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5maWxlX2RlbGV0ZSgpIGVycm9yIiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIC0yMDA7CisgICAgfQorCisgICAgaWYgKHBqX2ZpbGVfZXhpc3RzKE5FV05BTUUpKQorICAgICAgICByZXR1cm4gLTIxMDsKKworICAgIFBKX0xPRygzLCgiIiwgIi4uLnN1Y2Nlc3MiKSk7CisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworaW50IGZpbGVfdGVzdCh2b2lkKQoreworICAgIGludCByYyA9IGZpbGVfdGVzdF9pbnRlcm5hbCgpOworCisgICAgLyogRGVsZXRlIHRlc3QgZmlsZSBpZiBleGlzdHMuICovCisgICAgaWYgKHBqX2ZpbGVfZXhpc3RzKEZJTEVOQU1FKSkKKyAgICAgICAgcGpfZmlsZV9kZWxldGUoRklMRU5BTUUpOworCisgICAgcmV0dXJuIHJjOworfQorCisjZWxzZQoraW50IGR1bW15X2ZpbGVfdGVzdDsKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9oYXNoX3Rlc3QuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2hhc2hfdGVzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ODEwN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9oYXNoX3Rlc3QuYwpAQCAtMCwwICsxLDE2MyBAQAorLyogJElkOiBoYXNoX3Rlc3QuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL2hhc2guaD4KKyNpbmNsdWRlIDxwai9yYW5kLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovcG9vbC5oPgorI2luY2x1ZGUgInRlc3QuaCIKKworI2lmIElOQ0xVREVfSEFTSF9URVNUCisKKyNkZWZpbmUgSEFTSF9DT1VOVCAgMzEKKworc3RhdGljIGludCBoYXNoX3Rlc3Rfd2l0aF9rZXkocGpfcG9vbF90ICpwb29sLCB1bnNpZ25lZCBjaGFyIGtleSkKK3sKKyAgICBwal9oYXNoX3RhYmxlX3QgKmh0OworICAgIHVuc2lnbmVkIHZhbHVlID0gMHgxMjM0NTsKKyAgICBwal9oYXNoX2l0ZXJhdG9yX3QgaXRfYnVmLCAqaXQ7CisgICAgdW5zaWduZWQgKmVudHJ5OworCisgICAgaHQgPSBwal9oYXNoX2NyZWF0ZShwb29sLCBIQVNIX0NPVU5UKTsKKyAgICBpZiAoIWh0KQorCXJldHVybiAtMTA7CisKKyAgICBwal9oYXNoX3NldChwb29sLCBodCwgJmtleSwgc2l6ZW9mKGtleSksIDAsICZ2YWx1ZSk7CisKKyAgICBlbnRyeSA9ICh1bnNpZ25lZCopIHBqX2hhc2hfZ2V0KGh0LCAma2V5LCBzaXplb2Yoa2V5KSwgTlVMTCk7CisgICAgaWYgKCFlbnRyeSkKKwlyZXR1cm4gLTIwOworCisgICAgaWYgKCplbnRyeSAhPSB2YWx1ZSkKKwlyZXR1cm4gLTMwOworCisgICAgaWYgKHBqX2hhc2hfY291bnQoaHQpICE9IDEpCisJcmV0dXJuIC0zMDsKKworICAgIGl0ID0gcGpfaGFzaF9maXJzdChodCwgJml0X2J1Zik7CisgICAgaWYgKGl0ID09IE5VTEwpCisJcmV0dXJuIC00MDsKKworICAgIGVudHJ5ID0gKHVuc2lnbmVkKikgcGpfaGFzaF90aGlzKGh0LCBpdCk7CisgICAgaWYgKCFlbnRyeSkKKwlyZXR1cm4gLTUwOworCisgICAgaWYgKCplbnRyeSAhPSB2YWx1ZSkKKwlyZXR1cm4gLTYwOworCisgICAgaXQgPSBwal9oYXNoX25leHQoaHQsIGl0KTsKKyAgICBpZiAoaXQgIT0gTlVMTCkKKwlyZXR1cm4gLTcwOworCisgICAgLyogRXJhc2UgaXRlbSAqLworCisgICAgcGpfaGFzaF9zZXQoTlVMTCwgaHQsICZrZXksIHNpemVvZihrZXkpLCAwLCBOVUxMKTsKKworICAgIGlmIChwal9oYXNoX2dldChodCwgJmtleSwgc2l6ZW9mKGtleSksIE5VTEwpICE9IE5VTEwpCisJcmV0dXJuIC04MDsKKworICAgIGlmIChwal9oYXNoX2NvdW50KGh0KSAhPSAwKQorCXJldHVybiAtOTA7CisKKyAgICBpdCA9IHBqX2hhc2hfZmlyc3QoaHQsICZpdF9idWYpOworICAgIGlmIChpdCAhPSBOVUxMKQorCXJldHVybiAtMTAwOworCisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludCBoYXNoX2NvbGxpc2lvbl90ZXN0KHBqX3Bvb2xfdCAqcG9vbCkKK3sKKyAgICBlbnVtIHsKKwlDT1VOVCA9IEhBU0hfQ09VTlQgKiA0CisgICAgfTsKKyAgICBwal9oYXNoX3RhYmxlX3QgKmh0OworICAgIHBqX2hhc2hfaXRlcmF0b3JfdCBpdF9idWYsICppdDsKKyAgICB1bnNpZ25lZCBjaGFyICp2YWx1ZXM7CisgICAgdW5zaWduZWQgaTsKKworICAgIGh0ID0gcGpfaGFzaF9jcmVhdGUocG9vbCwgSEFTSF9DT1VOVCk7CisgICAgaWYgKCFodCkKKwlyZXR1cm4gLTIwMDsKKworICAgIHZhbHVlcyA9ICh1bnNpZ25lZCBjaGFyKikgcGpfcG9vbF9hbGxvYyhwb29sLCBDT1VOVCk7CisKKyAgICBmb3IgKGk9MDsgaTxDT1VOVDsgKytpKSB7CisJdmFsdWVzW2ldID0gKHVuc2lnbmVkIGNoYXIpaTsKKwlwal9oYXNoX3NldChwb29sLCBodCwgJmksIHNpemVvZihpKSwgMCwgJnZhbHVlc1tpXSk7CisgICAgfQorCisgICAgaWYgKHBqX2hhc2hfY291bnQoaHQpICE9IENPVU5UKQorCXJldHVybiAtMjEwOworCisgICAgZm9yIChpPTA7IGk8Q09VTlQ7ICsraSkgeworCXVuc2lnbmVkIGNoYXIgKmVudHJ5OworCWVudHJ5ID0gKHVuc2lnbmVkIGNoYXIqKSBwal9oYXNoX2dldChodCwgJmksIHNpemVvZihpKSwgTlVMTCk7CisJaWYgKCFlbnRyeSkKKwkgICAgcmV0dXJuIC0yMjA7CisJaWYgKCplbnRyeSAhPSB2YWx1ZXNbaV0pCisJICAgIHJldHVybiAtMjMwOworICAgIH0KKworICAgIGkgPSAwOworICAgIGl0ID0gcGpfaGFzaF9maXJzdChodCwgJml0X2J1Zik7CisgICAgd2hpbGUgKGl0KSB7CisJKytpOworCWl0ID0gcGpfaGFzaF9uZXh0KGh0LCBpdCk7CisgICAgfQorCisgICAgaWYgKGkgIT0gQ09VTlQpCisJcmV0dXJuIC0yNDA7CisKKyAgICByZXR1cm4gMDsKK30KKworCisvKgorICogSGFzaCB0YWJsZSB0ZXN0LgorICovCitpbnQgaGFzaF90ZXN0KHZvaWQpCit7CisgICAgcGpfcG9vbF90ICpwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCAiaGFzaCIsIDUxMiwgNTEyLCBOVUxMKTsKKyAgICBpbnQgcmM7CisgICAgdW5zaWduZWQgaTsKKworICAgIC8qIFRlc3QgdG8gZmlsbCBpbiBlYWNoIHJvdyBpbiB0aGUgdGFibGUgKi8KKyAgICBmb3IgKGk9MDsgaTw9SEFTSF9DT1VOVDsgKytpKSB7CisJcmMgPSBoYXNoX3Rlc3Rfd2l0aF9rZXkocG9vbCwgKHVuc2lnbmVkIGNoYXIpaSk7CisJaWYgKHJjICE9IDApIHsKKwkgICAgcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworCSAgICByZXR1cm4gcmM7CisJfQorICAgIH0KKworICAgIC8qIENvbGxpc2lvbiB0ZXN0ICovCisgICAgcmMgPSBoYXNoX2NvbGxpc2lvbl90ZXN0KHBvb2wpOworICAgIGlmIChyYyAhPSAwKSB7CisJcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworCXJldHVybiByYzsKKyAgICB9CisKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgkvKiBJTkNMVURFX0hBU0hfVEVTVCAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9pb3FfcGVyZi5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvaW9xX3BlcmYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTc3NDhmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvaW9xX3BlcmYuYwpAQCAtMCwwICsxLDU3MiBAQAorLyogJElkOiBpb3FfcGVyZi5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgInRlc3QuaCIKKyNpbmNsdWRlIDxwamxpYi5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9oaWdoX3ByZWNpc2lvbi5oPgorCisvKioKKyAqIFxwYWdlIHBhZ2VfcGpsaWJfaW9xdWV1ZV9wZXJmX3Rlc3QgVGVzdDogSS9PIFF1ZXVlIFBlcmZvcm1hbmNlCisgKgorICogVGVzdCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIEkvTyBxdWV1ZSwgdXNpbmcgdHlwaWNhbCBwcm9kdWNlcgorICogY29uc3VtZXIgdGVzdC4gVGhlIHRlc3Qgc2hvdWxkIGV4YW1pbmUgdGhlIGVmZmVjdCBvZiB1c2luZyBtdWx0aXBsZQorICogdGhyZWFkcyBvbiB0aGUgcGVyZm9ybWFuY2UuCisgKgorICogVGhpcyBmaWxlIGlzIDxiPnBqbGliLXRlc3QvaW9xX3BlcmYuYzwvYj4KKyAqCisgKiBcaW5jbHVkZSBwamxpYi10ZXN0L2lvcV9wZXJmLmMKKyAqLworCisjaWYgSU5DTFVERV9JT1FVRVVFX1BFUkZfVEVTVAorCisjaWZkZWYgX01TQ19WRVIKKyMgICBwcmFnbWEgd2FybmluZyAoIGRpc2FibGU6IDQyMDQpICAgICAvLyBub24tY29uc3RhbnQgYWdncmVnYXRlIGluaXRpYWxpemVyCisjZW5kaWYKKworI2RlZmluZSBUSElTX0ZJTEUJImlvcV9wZXJmIgorLy8jZGVmaW5lIFRSQUNFXyhleHByKQlQSl9MT0coMyxleHByKQorI2RlZmluZSBUUkFDRV8oZXhwcikKKworCitzdGF0aWMgcGpfYm9vbF90IHRocmVhZF9xdWl0X2ZsYWc7CitzdGF0aWMgcGpfc3RhdHVzX3QgbGFzdF9lcnJvcjsKK3N0YXRpYyB1bnNpZ25lZCBsYXN0X2Vycm9yX2NvdW50ZXI7CisKKy8qIERlc2NyaXB0b3IgZm9yIGVhY2ggcHJvZHVjZXIvY29uc3VtZXIgcGFpci4gKi8KK3R5cGVkZWYgc3RydWN0IHRlc3RfaXRlbQoreworICAgIHBqX3NvY2tfdCAgICAgICAgICAgIHNlcnZlcl9mZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2ZkOworICAgIHBqX2lvcXVldWVfdCAgICAgICAgKmlvcXVldWU7CisgICAgcGpfaW9xdWV1ZV9rZXlfdCAgICAqc2VydmVyX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICpjbGllbnRfa2V5OworICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgIHJlY3Zfb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9vcDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICBoYXNfcGVuZGluZ19zZW5kOworICAgIHBqX3NpemVfdCAgICAgICAgICAgIGJ1ZmZlcl9zaXplOworICAgIGNoYXIgICAgICAgICAgICAgICAgKm91dGdvaW5nX2J1ZmZlcjsKKyAgICBjaGFyICAgICAgICAgICAgICAgICppbmNvbWluZ19idWZmZXI7CisgICAgcGpfc2l6ZV90ICAgICAgICAgICAgYnl0ZXNfc2VudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfcmVjdjsKK30gdGVzdF9pdGVtOworCisvKiBDYWxsYmFjayB3aGVuIGRhdGEgaGFzIGJlZW4gcmVhZC4KKyAqIEluY3JlbWVudCBpdGVtLT5ieXRlc19yZWN2IGFuZCByZWFkeSB0byByZWFkIHRoZSBuZXh0IGRhdGEuCisgKi8KK3N0YXRpYyB2b2lkIG9uX3JlYWRfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zc2l6ZV90IGJ5dGVzX3JlYWQpCit7CisgICAgdGVzdF9pdGVtICppdGVtID0gKHRlc3RfaXRlbSopcGpfaW9xdWV1ZV9nZXRfdXNlcl9kYXRhKGtleSk7CisgICAgcGpfc3RhdHVzX3QgcmM7CisgICAgaW50IGRhdGFfaXNfYXZhaWxhYmxlID0gMTsKKworICAgIC8vVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgIHJlYWQgY29tcGxldGUsIGJ5dGVzX3JlYWQ9JWQiLCBieXRlc19yZWFkKSk7CisKKyAgICBkbyB7CisgICAgICAgIGlmICh0aHJlYWRfcXVpdF9mbGFnKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChieXRlc19yZWFkIDwgMCkgeworICAgICAgICAgICAgcGpfc3RhdHVzX3QgcmMgPSAocGpfc3RhdHVzX3QpLWJ5dGVzX3JlYWQ7CisgICAgICAgICAgICBjaGFyIGVycm1zZ1tQSl9FUlJfTVNHX1NJWkVdOworCisJICAgIGlmIChyYyAhPSBsYXN0X2Vycm9yKSB7CisJICAgICAgICAvL2xhc3RfZXJyb3IgPSByYzsKKwkgICAgICAgIHBqX3N0cmVycm9yKHJjLCBlcnJtc2csIHNpemVvZihlcnJtc2cpKTsKKwkgICAgICAgIFBKX0xPRygzLChUSElTX0ZJTEUsIi4uLmVycm9yOiByZWFkIGVycm9yLCBieXRlc19yZWFkPSVkICglcykiLCAKKwkJICAgICAgICAgIGJ5dGVzX3JlYWQsIGVycm1zZykpOworCSAgICAgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgCisJCSAgICAgICAgICAiLi4uLi5hZGRpdGlvbmFsIGluZm86IHRvdGFsIHJlYWQ9JXUsIHRvdGFsIHNlbnQ9JXUiLAorCQkgICAgICAgICAgaXRlbS0+Ynl0ZXNfcmVjdiwgaXRlbS0+Ynl0ZXNfc2VudCkpOworCSAgICB9IGVsc2UgeworCSAgICAgICAgbGFzdF9lcnJvcl9jb3VudGVyKys7CisJICAgIH0KKyAgICAgICAgICAgIGJ5dGVzX3JlYWQgPSAwOworCisgICAgICAgIH0gZWxzZSBpZiAoYnl0ZXNfcmVhZCA9PSAwKSB7CisgICAgICAgICAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uc29ja2V0IGhhcyBjbG9zZWQhIikpOworICAgICAgICB9CisKKyAgICAgICAgaXRlbS0+Ynl0ZXNfcmVjdiArPSBieXRlc19yZWFkOworICAgIAorICAgICAgICAvKiBUbyBhc3N1cmUgdGhhdCB0aGUgdGVzdCBxdWl0cywgZXZlbiBpZiBtYWluIHRocmVhZAorICAgICAgICAgKiBkb2Vzbid0IGhhdmUgdGltZSB0byBydW4uCisgICAgICAgICAqLworICAgICAgICBpZiAoaXRlbS0+Ynl0ZXNfcmVjdiA+IGl0ZW0tPmJ1ZmZlcl9zaXplICogMTAwMDApIAorCSAgICB0aHJlYWRfcXVpdF9mbGFnID0gMTsKKworICAgICAgICBieXRlc19yZWFkID0gaXRlbS0+YnVmZmVyX3NpemU7CisgICAgICAgIHJjID0gcGpfaW9xdWV1ZV9yZWN2KCBrZXksIG9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPmluY29taW5nX2J1ZmZlciwgJmJ5dGVzX3JlYWQsIDAgKTsKKworICAgICAgICBpZiAocmMgPT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgZGF0YV9pc19hdmFpbGFibGUgPSAxOworICAgICAgICB9IGVsc2UgaWYgKHJjID09IFBKX0VQRU5ESU5HKSB7CisgICAgICAgICAgICBkYXRhX2lzX2F2YWlsYWJsZSA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkYXRhX2lzX2F2YWlsYWJsZSA9IDA7CisJICAgIGlmIChyYyAhPSBsYXN0X2Vycm9yKSB7CisJICAgICAgICBsYXN0X2Vycm9yID0gcmM7CisJICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcmVhZCBlcnJvcigxKSIsIHJjKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIGxhc3RfZXJyb3JfY291bnRlcisrOworCSAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWl0ZW0tPmhhc19wZW5kaW5nX3NlbmQpIHsKKyAgICAgICAgICAgIHBqX3NzaXplX3Qgc2VudCA9IGl0ZW0tPmJ1ZmZlcl9zaXplOworICAgICAgICAgICAgcmMgPSBwal9pb3F1ZXVlX3NlbmQoaXRlbS0+Y2xpZW50X2tleSwgJml0ZW0tPnNlbmRfb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5vdXRnb2luZ19idWZmZXIsICZzZW50LCAwKTsKKyAgICAgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTICYmIHJjICE9IFBKX0VQRU5ESU5HKSB7CisgICAgICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IHdyaXRlIGVycm9yIiwgcmMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpdGVtLT5oYXNfcGVuZGluZ19zZW5kID0gKHJjPT1QSl9FUEVORElORyk7CisgICAgICAgIH0KKworICAgIH0gd2hpbGUgKGRhdGFfaXNfYXZhaWxhYmxlKTsKK30KKworLyogQ2FsbGJhY2sgd2hlbiBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4uCisgKiBJbmNyZW1lbnQgaXRlbS0+Ynl0ZXNfc2VudCBhbmQgd3JpdGUgdGhlIG5leHQgZGF0YS4KKyAqLworc3RhdGljIHZvaWQgb25fd3JpdGVfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NzaXplX3QgYnl0ZXNfc2VudCkKK3sKKyAgICB0ZXN0X2l0ZW0gKml0ZW0gPSAodGVzdF9pdGVtKikgcGpfaW9xdWV1ZV9nZXRfdXNlcl9kYXRhKGtleSk7CisgICAgCisgICAgLy9UUkFDRV8oKFRISVNfRklMRSwgIiAgICAgd3JpdGUgY29tcGxldGU6IHNlbnQgPSAlZCIsIGJ5dGVzX3NlbnQpKTsKKworICAgIGlmICh0aHJlYWRfcXVpdF9mbGFnKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVtLT5oYXNfcGVuZGluZ19zZW5kID0gMDsKKyAgICBpdGVtLT5ieXRlc19zZW50ICs9IGJ5dGVzX3NlbnQ7CisKKyAgICBpZiAoYnl0ZXNfc2VudCA8PSAwKSB7CisgICAgICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi5lcnJvcjogc2VuZGluZyBzdG9wcGVkLiBieXRlc19zZW50PSVkIiwgCisgICAgICAgICAgICAgICAgICBieXRlc19zZW50KSk7CisgICAgfSAKKyAgICBlbHNlIHsKKyAgICAgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICAgICAgYnl0ZXNfc2VudCA9IGl0ZW0tPmJ1ZmZlcl9zaXplOworICAgICAgICByYyA9IHBqX2lvcXVldWVfc2VuZCggaXRlbS0+Y2xpZW50X2tleSwgb3Bfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+b3V0Z29pbmdfYnVmZmVyLCAmYnl0ZXNfc2VudCwgMCk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTICYmIHJjICE9IFBKX0VQRU5ESU5HKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogd3JpdGUgZXJyb3IiLCByYyk7CisgICAgICAgIH0KKworICAgICAgICBpdGVtLT5oYXNfcGVuZGluZ19zZW5kID0gKHJjPT1QSl9FUEVORElORyk7CisgICAgfQorfQorCitzdHJ1Y3QgdGhyZWFkX2FyZworeworICAgIGludAkJICBpZDsKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWU7CisgICAgdW5zaWduZWQJICBjb3VudGVyOworfTsKKworLyogVGhlIHdvcmtlciB0aHJlYWQuICovCitzdGF0aWMgaW50IHdvcmtlcl90aHJlYWQodm9pZCAqcCkKK3sKKyAgICBzdHJ1Y3QgdGhyZWFkX2FyZyAqYXJnID0gKHN0cnVjdCB0aHJlYWRfYXJnKikgcDsKKyAgICBjb25zdCBwal90aW1lX3ZhbCB0aW1lb3V0ID0gezAsIDEwMH07CisgICAgaW50IHJjOworCisgICAgd2hpbGUgKCF0aHJlYWRfcXVpdF9mbGFnKSB7CisKKwkrK2FyZy0+Y291bnRlcjsKKyAgICAgICAgcmMgPSBwal9pb3F1ZXVlX3BvbGwoYXJnLT5pb3F1ZXVlLCAmdGltZW91dCk7CisJLy9UUkFDRV8oKFRISVNfRklMRSwgIiAgICAgdGhyZWFkOiBwb2xsIHJldHVybmVkIHJjPSVkIiwgcmMpKTsKKyAgICAgICAgaWYgKHJjIDwgMCkgeworCSAgICBjaGFyIGVycm1zZ1tQSl9FUlJfTVNHX1NJWkVdOworCSAgICBwal9zdHJlcnJvcigtcmMsIGVycm1zZywgc2l6ZW9mKGVycm1zZykpOworICAgICAgICAgICAgUEpfTE9HKDMsIChUSElTX0ZJTEUsIAorCQkgICAgICAgIi4uLmVycm9yIGluIHBqX2lvcXVldWVfcG9sbCgpIGluIHRocmVhZCAlZCAiCisJCSAgICAgICAiYWZ0ZXIgJWQgbG9vcDogJXMgW3BqX3N0YXR1c190PSVkXSIsIAorCQkgICAgICAgYXJnLT5pZCwgYXJnLT5jb3VudGVyLCBlcnJtc2csIC1yYykpOworICAgICAgICAgICAgLy9yZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENhbGN1bGF0ZSB0aGUgYmFuZHdpZHRoIGZvciB0aGUgc3BlY2lmaWMgdGVzdCBjb25maWd1cmF0aW9uLgorICogVGhlIHRlc3QgaXMgc2ltcGxlOgorICogIC0gY3JlYXRlIHNvY2twYWlyX2NudCBudW1iZXIgb2YgcHJvZHVjZXItY29uc3VtZXIgc29ja2V0IHBhaXIuCisgKiAgLSBjcmVhdGUgdGhyZWFkX2NudCBudW1iZXIgb2Ygd29ya2VyIHRocmVhZHMuCisgKiAgLSBlYWNoIHByb2R1Y2VyIHdpbGwgc2VuZCBidWZmZXJfc2l6ZSBieXRlcyBkYXRhIGFzIGZhc3QgYW5kCisgKiAgICBhcyBzb29uIGFzIGl0IGNhbi4KKyAqICAtIGVhY2ggY29uc3VtZXIgd2lsbCByZWFkIGJ1ZmZlcl9zaXplIGJ5dGVzIG9mIGRhdGEgYXMgZmFzdCAKKyAqICAgIGFzIGl0IGNvdWxkLgorICogIC0gbWVhc3VyZSB0aGUgdG90YWwgYnl0ZXMgcmVjZWl2ZWQgYnkgYWxsIGNvbnN1bWVycyBkdXJpbmcgYQorICogICAgcGVyaW9kIG9mIHRpbWUuCisgKi8KK3N0YXRpYyBpbnQgcGVyZm9ybV90ZXN0KHBqX2Jvb2xfdCBhbGxvd19jb25jdXIsCisJCQlpbnQgc29ja190eXBlLCBjb25zdCBjaGFyICp0eXBlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0aHJlYWRfY250LCB1bnNpZ25lZCBzb2NrcGFpcl9jbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBwal9zaXplX3QgYnVmZmVyX3NpemUsIAorICAgICAgICAgICAgICAgICAgICAgICAgcGpfc2l6ZV90ICpwX2JhbmR3aWR0aCkKK3sKKyAgICBlbnVtIHsgTVNFQ19EVVJBVElPTiA9IDUwMDAgfTsKKyAgICBwal9wb29sX3QgKnBvb2w7CisgICAgdGVzdF9pdGVtICppdGVtczsKKyAgICBwal90aHJlYWRfdCAqKnRocmVhZDsKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWU7CisgICAgcGpfc3RhdHVzX3QgcmM7CisgICAgcGpfaW9xdWV1ZV9jYWxsYmFjayBpb3F1ZXVlX2NhbGxiYWNrOworICAgIHBqX3VpbnQzMl90IHRvdGFsX2VsYXBzZWRfdXNlYywgdG90YWxfcmVjZWl2ZWQ7CisgICAgcGpfaGlnaHByZWNfdCBiYW5kd2lkdGg7CisgICAgcGpfdGltZXN0YW1wIHN0YXJ0LCBzdG9wOworICAgIHVuc2lnbmVkIGk7CisKKyAgICBUUkFDRV8oKFRISVNfRklMRSwgIiAgICBzdGFydGluZyB0ZXN0Li4iKSk7CisKKyAgICBpb3F1ZXVlX2NhbGxiYWNrLm9uX3JlYWRfY29tcGxldGUgPSAmb25fcmVhZF9jb21wbGV0ZTsKKyAgICBpb3F1ZXVlX2NhbGxiYWNrLm9uX3dyaXRlX2NvbXBsZXRlID0gJm9uX3dyaXRlX2NvbXBsZXRlOworCisgICAgdGhyZWFkX3F1aXRfZmxhZyA9IDA7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCBOVUxMLCA0MDk2LCA0MDk2LCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpCisgICAgICAgIHJldHVybiAtMTA7CisKKyAgICBpdGVtcyA9ICh0ZXN0X2l0ZW0qKSBwal9wb29sX2FsbG9jKHBvb2wsIHNvY2twYWlyX2NudCpzaXplb2YodGVzdF9pdGVtKSk7CisgICAgdGhyZWFkID0gKHBqX3RocmVhZF90KiopCisgICAgCSAgICAgcGpfcG9vbF9hbGxvYyhwb29sLCB0aHJlYWRfY250KnNpemVvZihwal90aHJlYWRfdCopKTsKKworICAgIFRSQUNFXygoVEhJU19GSUxFLCAiICAgICBjcmVhdGluZyBpb3F1ZXVlLi4iKSk7CisgICAgcmMgPSBwal9pb3F1ZXVlX2NyZWF0ZShwb29sLCBzb2NrcGFpcl9jbnQqMiwgJmlvcXVldWUpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yOiB1bmFibGUgdG8gY3JlYXRlIGlvcXVldWUiLCByYyk7CisgICAgICAgIHJldHVybiAtMTU7CisgICAgfQorCisgICAgcmMgPSBwal9pb3F1ZXVlX3NldF9kZWZhdWx0X2NvbmN1cnJlbmN5KGlvcXVldWUsIGFsbG93X2NvbmN1cik7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfaW9xdWV1ZV9zZXRfZGVmYXVsdF9jb25jdXJyZW5jeSgpIiwgcmMpOworICAgICAgICByZXR1cm4gLTE2OworICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgZWFjaCBwcm9kdWNlci1jb25zdW1lciBwYWlyLiAqLworICAgIGZvciAoaT0wOyBpPHNvY2twYWlyX2NudDsgKytpKSB7CisgICAgICAgIHBqX3NzaXplX3QgYnl0ZXM7CisKKyAgICAgICAgaXRlbXNbaV0uaW9xdWV1ZSA9IGlvcXVldWU7CisgICAgICAgIGl0ZW1zW2ldLmJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemU7CisgICAgICAgIGl0ZW1zW2ldLm91dGdvaW5nX2J1ZmZlciA9IChjaGFyKikgcGpfcG9vbF9hbGxvYyhwb29sLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGl0ZW1zW2ldLmluY29taW5nX2J1ZmZlciA9IChjaGFyKikgcGpfcG9vbF9hbGxvYyhwb29sLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGl0ZW1zW2ldLmJ5dGVzX3JlY3YgPSBpdGVtc1tpXS5ieXRlc19zZW50ID0gMDsKKworICAgICAgICAvKiByYW5kb21pemUgb3V0Z29pbmcgYnVmZmVyLiAqLworICAgICAgICBwal9jcmVhdGVfcmFuZG9tX3N0cmluZyhpdGVtc1tpXS5vdXRnb2luZ19idWZmZXIsIGJ1ZmZlcl9zaXplKTsKKworICAgICAgICAvKiBDcmVhdGUgc29ja2V0IHBhaXIuICovCisJVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgICBjYWxsaW5nIHNvY2tldHBhaXIuLiIpKTsKKyAgICAgICAgcmMgPSBhcHBfc29ja2V0cGFpcihwal9BRl9JTkVUKCksIHNvY2tfdHlwZSwgMCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0ZW1zW2ldLnNlcnZlcl9mZCwgJml0ZW1zW2ldLmNsaWVudF9mZCk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogdW5hYmxlIHRvIGNyZWF0ZSBzb2NrZXQgcGFpciIsIHJjKTsKKyAgICAgICAgICAgIHJldHVybiAtMjA7CisgICAgICAgIH0KKworICAgICAgICAvKiBSZWdpc3RlciBzZXJ2ZXIgc29ja2V0IHRvIGlvcXVldWUuICovCisJVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgICByZWdpc3RlcigxKS4uIikpOworICAgICAgICByYyA9IHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayhwb29sLCBpb3F1ZXVlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNbaV0uc2VydmVyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlbXNbaV0sICZpb3F1ZXVlX2NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlbXNbaV0uc2VydmVyX2tleSk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcmVnaXN0ZXJpbmcgc2VydmVyIHNvY2tldCB0byBpb3F1ZXVlIiwgcmMpOworICAgICAgICAgICAgcmV0dXJuIC02MDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFJlZ2lzdGVyIGNsaWVudCBzb2NrZXQgdG8gaW9xdWV1ZS4gKi8KKwlUUkFDRV8oKFRISVNfRklMRSwgIiAgICAgIHJlZ2lzdGVyKDIpLi4iKSk7CisgICAgICAgIHJjID0gcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrKHBvb2wsIGlvcXVldWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc1tpXS5jbGllbnRfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpdGVtc1tpXSwgICZpb3F1ZXVlX2NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlbXNbaV0uY2xpZW50X2tleSk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcmVnaXN0ZXJpbmcgc2VydmVyIHNvY2tldCB0byBpb3F1ZXVlIiwgcmMpOworICAgICAgICAgICAgcmV0dXJuIC03MDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFN0YXJ0IHJlYWRpbmcuICovCisJVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgICBwal9pb3F1ZXVlX3JlY3YuLiIpKTsKKyAgICAgICAgYnl0ZXMgPSBpdGVtc1tpXS5idWZmZXJfc2l6ZTsKKyAgICAgICAgcmMgPSBwal9pb3F1ZXVlX3JlY3YoaXRlbXNbaV0uc2VydmVyX2tleSwgJml0ZW1zW2ldLnJlY3Zfb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zW2ldLmluY29taW5nX2J1ZmZlciwgJmJ5dGVzLAorCQkJICAgICAwKTsKKyAgICAgICAgaWYgKHJjICE9IFBKX0VQRU5ESU5HKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfaW9xdWV1ZV9yZWN2IiwgcmMpOworICAgICAgICAgICAgcmV0dXJuIC03MzsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFN0YXJ0IHdyaXRpbmcuICovCisJVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgICBwal9pb3F1ZXVlX3dyaXRlLi4iKSk7CisgICAgICAgIGJ5dGVzID0gaXRlbXNbaV0uYnVmZmVyX3NpemU7CisgICAgICAgIHJjID0gcGpfaW9xdWV1ZV9zZW5kKGl0ZW1zW2ldLmNsaWVudF9rZXksICZpdGVtc1tpXS5zZW5kX29wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc1tpXS5vdXRnb2luZ19idWZmZXIsICZieXRlcywgMCk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTICYmIHJjICE9IFBKX0VQRU5ESU5HKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfaW9xdWV1ZV93cml0ZSIsIHJjKTsKKyAgICAgICAgICAgIHJldHVybiAtNzY7CisgICAgICAgIH0KKworICAgICAgICBpdGVtc1tpXS5oYXNfcGVuZGluZ19zZW5kID0gKHJjPT1QSl9FUEVORElORyk7CisgICAgfQorCisgICAgLyogQ3JlYXRlIHRoZSB0aHJlYWRzLiAqLworICAgIGZvciAoaT0wOyBpPHRocmVhZF9jbnQ7ICsraSkgeworCXN0cnVjdCB0aHJlYWRfYXJnICphcmc7CisKKwlhcmcgPSAoc3RydWN0IHRocmVhZF9hcmcqKSBwal9wb29sX3phbGxvYyhwb29sLCBzaXplb2YoKmFyZykpOworCWFyZy0+aWQgPSBpOworCWFyZy0+aW9xdWV1ZSA9IGlvcXVldWU7CisJYXJnLT5jb3VudGVyID0gMDsKKworICAgICAgICByYyA9IHBqX3RocmVhZF9jcmVhdGUoIHBvb2wsIE5VTEwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3b3JrZXJfdGhyZWFkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBKX1RIUkVBRF9ERUZBVUxUX1NUQUNLX1NJWkUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBKX1RIUkVBRF9TVVNQRU5ERUQsICZ0aHJlYWRbaV0gKTsKKyAgICAgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yOiB1bmFibGUgdG8gY3JlYXRlIHRocmVhZCIsIHJjKTsKKyAgICAgICAgICAgIHJldHVybiAtODA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBNYXJrIHN0YXJ0IHRpbWUuICovCisgICAgcmMgPSBwal9nZXRfdGltZXN0YW1wKCZzdGFydCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiAtOTA7CisKKyAgICAvKiBTdGFydCB0aGUgdGhyZWFkLiAqLworICAgIFRSQUNFXygoVEhJU19GSUxFLCAiICAgICByZXN1bWluZyBhbGwgdGhyZWFkcy4uIikpOworICAgIGZvciAoaT0wOyBpPHRocmVhZF9jbnQ7ICsraSkgeworICAgICAgICByYyA9IHBqX3RocmVhZF9yZXN1bWUodGhyZWFkW2ldKTsKKyAgICAgICAgaWYgKHJjICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTEwMDsKKyAgICB9CisKKyAgICAvKiBXYWl0IGZvciBNU0VDX0RVUkFUSU9OIHNlY29uZHMuIAorICAgICAqIFRoaXMgc2hvdWxkIGJlIGFzIHNpbXBsZSBhcyBwal90aHJlYWRfc2xlZXAoTVNFQ19EVVJBVElPTikgYWN0dWFsbHksCisgICAgICogYnV0IHVuZm9ydHVuYXRlbHkgaXQgZG9lc24ndCB3b3JrIHdoZW4gc3lzdGVtIGRvZXNuJ3QgZW1wbG95CisgICAgICogdGltZXNsaWNpbmcgZm9yIHRocmVhZHMuCisgICAgICovCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgIHdhaXQgZm9yIGZldyBzZWNvbmRzLi4iKSk7CisgICAgZG8geworCXBqX3RocmVhZF9zbGVlcCgxKTsKKworCS8qIE1hcmsgZW5kIHRpbWUuICovCisJcmMgPSBwal9nZXRfdGltZXN0YW1wKCZzdG9wKTsKKworCWlmICh0aHJlYWRfcXVpdF9mbGFnKSB7CisJICAgIFRSQUNFXygoVEhJU19GSUxFLCAiICAgICAgdHJhbnNmZXIgbGltaXQgcmVhY2hlZC4uIikpOworCSAgICBicmVhazsKKwl9CisKKwlpZiAocGpfZWxhcHNlZF91c2VjKCZzdGFydCwmc3RvcCk8TVNFQ19EVVJBVElPTiAqIDEwMDApIHsKKwkgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgICB0aW1lIGxpbWl0IHJlYWNoZWQuLiIpKTsKKwkgICAgYnJlYWs7CisJfQorCisgICAgfSB3aGlsZSAoMSk7CisKKyAgICAvKiBUZXJtaW5hdGUgYWxsIHRocmVhZHMuICovCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgIHRlcm1pbmF0aW5nIGFsbCB0aHJlYWRzLi4iKSk7CisgICAgdGhyZWFkX3F1aXRfZmxhZyA9IDE7CisKKyAgICBmb3IgKGk9MDsgaTx0aHJlYWRfY250OyArK2kpIHsKKwlUUkFDRV8oKFRISVNfRklMRSwgIiAgICAgIGpvaW4gdGhyZWFkICVkLi4iLCBpKSk7CisgICAgICAgIHBqX3RocmVhZF9qb2luKHRocmVhZFtpXSk7CisgICAgfQorCisgICAgLyogQ2xvc2UgYWxsIHNvY2tldHMuICovCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgIGNsb3NpbmcgYWxsIHNvY2tldHMuLiIpKTsKKyAgICBmb3IgKGk9MDsgaTxzb2NrcGFpcl9jbnQ7ICsraSkgeworICAgICAgICBwal9pb3F1ZXVlX3VucmVnaXN0ZXIoaXRlbXNbaV0uc2VydmVyX2tleSk7CisgICAgICAgIHBqX2lvcXVldWVfdW5yZWdpc3RlcihpdGVtc1tpXS5jbGllbnRfa2V5KTsKKyAgICB9CisKKyAgICAvKiBEZXN0cm95IHRocmVhZHMgKi8KKyAgICBmb3IgKGk9MDsgaTx0aHJlYWRfY250OyArK2kpIHsKKyAgICAgICAgcGpfdGhyZWFkX2Rlc3Ryb3kodGhyZWFkW2ldKTsKKyAgICB9CisKKyAgICAvKiBEZXN0cm95IGlvcXVldWUuICovCisgICAgVFJBQ0VfKChUSElTX0ZJTEUsICIgICAgIGRlc3Ryb3lpbmcgaW9xdWV1ZS4uIikpOworICAgIHBqX2lvcXVldWVfZGVzdHJveShpb3F1ZXVlKTsKKworICAgIC8qIENhbGN1bGF0ZSBhY3R1YWwgdGltZSBpbiB1c2VjLiAqLworICAgIHRvdGFsX2VsYXBzZWRfdXNlYyA9IHBqX2VsYXBzZWRfdXNlYygmc3RhcnQsICZzdG9wKTsKKworICAgIC8qIENhbGN1bGF0ZSB0b3RhbCBieXRlcyByZWNlaXZlZC4gKi8KKyAgICB0b3RhbF9yZWNlaXZlZCA9IDA7CisgICAgZm9yIChpPTA7IGk8c29ja3BhaXJfY250OyArK2kpIHsKKyAgICAgICAgdG90YWxfcmVjZWl2ZWQgPSAocGpfdWludDMyX3QpaXRlbXNbaV0uYnl0ZXNfcmVjdjsKKyAgICB9CisKKyAgICAvKiBiYW5kd2lkdGggPSB0b3RhbF9yZWNlaXZlZCoxMDAwL3RvdGFsX2VsYXBzZWRfdXNlYyAqLworICAgIGJhbmR3aWR0aCA9IHRvdGFsX3JlY2VpdmVkOworICAgIHBqX2hpZ2hwcmVjX211bChiYW5kd2lkdGgsIDEwMDApOworICAgIHBqX2hpZ2hwcmVjX2RpdihiYW5kd2lkdGgsIHRvdGFsX2VsYXBzZWRfdXNlYyk7CisgICAgCisgICAgKnBfYmFuZHdpZHRoID0gKHBqX3VpbnQzMl90KWJhbmR3aWR0aDsKKworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIgICAlLjRzICAgICUyZCAgICAgICAgJTJkICAgICAgICU4ZCBLQi9zIiwKKyAgICAgICAgICAgICAgdHlwZV9uYW1lLCB0aHJlYWRfY250LCBzb2NrcGFpcl9jbnQsCisgICAgICAgICAgICAgICpwX2JhbmR3aWR0aCkpOworCisgICAgLyogRG9uZS4gKi8KKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisKKyAgICBUUkFDRV8oKFRISVNfRklMRSwgIiAgICBkb25lLi4iKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaW9xdWV1ZV9wZXJmX3Rlc3RfaW1wKHBqX2Jvb2xfdCBhbGxvd19jb25jdXIpCit7CisgICAgZW51bSB7IEJVRl9TSVpFID0gNTEyIH07CisgICAgaW50IGksIHJjOworICAgIHN0cnVjdCB7CisgICAgICAgIGludCAgICAgICAgIHR5cGU7CisgICAgICAgIGNvbnN0IGNoYXIgKnR5cGVfbmFtZTsKKyAgICAgICAgaW50ICAgICAgICAgdGhyZWFkX2NudDsKKyAgICAgICAgaW50ICAgICAgICAgc29ja3BhaXJfY250OworICAgIH0gdGVzdF9wYXJhbVtdID0gCisgICAgeworICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDEsIDF9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDEsIDJ9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDEsIDR9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDEsIDh9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDIsIDF9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDIsIDJ9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDIsIDR9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDIsIDh9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDQsIDF9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDQsIDJ9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDQsIDR9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDQsIDh9LAorICAgICAgICB7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDQsIDE2fSwKKyAgICAgICAgeyBwal9TT0NLX1NUUkVBTSgpLCAidGNwIiwgMSwgMX0sCisgICAgICAgIHsgcGpfU09DS19TVFJFQU0oKSwgInRjcCIsIDEsIDJ9LAorICAgICAgICB7IHBqX1NPQ0tfU1RSRUFNKCksICJ0Y3AiLCAxLCA0fSwKKyAgICAgICAgeyBwal9TT0NLX1NUUkVBTSgpLCAidGNwIiwgMSwgOH0sCisgICAgICAgIHsgcGpfU09DS19TVFJFQU0oKSwgInRjcCIsIDIsIDF9LAorICAgICAgICB7IHBqX1NPQ0tfU1RSRUFNKCksICJ0Y3AiLCAyLCAyfSwKKyAgICAgICAgeyBwal9TT0NLX1NUUkVBTSgpLCAidGNwIiwgMiwgNH0sCisgICAgICAgIHsgcGpfU09DS19TVFJFQU0oKSwgInRjcCIsIDIsIDh9LAorICAgICAgICB7IHBqX1NPQ0tfU1RSRUFNKCksICJ0Y3AiLCA0LCAxfSwKKyAgICAgICAgeyBwal9TT0NLX1NUUkVBTSgpLCAidGNwIiwgNCwgMn0sCisgICAgICAgIHsgcGpfU09DS19TVFJFQU0oKSwgInRjcCIsIDQsIDR9LAorICAgICAgICB7IHBqX1NPQ0tfU1RSRUFNKCksICJ0Y3AiLCA0LCA4fSwKKyAgICAgICAgeyBwal9TT0NLX1NUUkVBTSgpLCAidGNwIiwgNCwgMTZ9LAorLyoKKwl7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDMyLCAxfSwKKwl7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDMyLCAxfSwKKwl7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDMyLCAxfSwKKwl7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDMyLCAxfSwKKwl7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDEsIDMyfSwKKwl7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDEsIDMyfSwKKwl7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDEsIDMyfSwKKwl7IHBqX1NPQ0tfREdSQU0oKSwgInVkcCIsIDEsIDMyfSwKKwl7IHBqX1NPQ0tfU1RSRUFNKCksICJ0Y3AiLCAzMiwgMX0sCisJeyBwal9TT0NLX1NUUkVBTSgpLCAidGNwIiwgMzIsIDF9LAorCXsgcGpfU09DS19TVFJFQU0oKSwgInRjcCIsIDMyLCAxfSwKKwl7IHBqX1NPQ0tfU1RSRUFNKCksICJ0Y3AiLCAzMiwgMX0sCisJeyBwal9TT0NLX1NUUkVBTSgpLCAidGNwIiwgMSwgMzJ9LAorCXsgcGpfU09DS19TVFJFQU0oKSwgInRjcCIsIDEsIDMyfSwKKwl7IHBqX1NPQ0tfU1RSRUFNKCksICJ0Y3AiLCAxLCAzMn0sCisJeyBwal9TT0NLX1NUUkVBTSgpLCAidGNwIiwgMSwgMzJ9LAorKi8KKyAgICB9OworICAgIHBqX3NpemVfdCBiZXN0X2JhbmR3aWR0aDsKKyAgICBpbnQgYmVzdF9pbmRleCA9IDA7CisKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiICAgQmVuY2htYXJraW5nICVzIGlvcXVldWU6IiwgcGpfaW9xdWV1ZV9uYW1lKCkpKTsKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiICAgVGVzdGluZyB3aXRoIGNvbmN1cmVuY3k9JWQiLCBhbGxvd19jb25jdXIpKTsKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IikpOworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIgICBUeXBlICBUaHJlYWRzICBTa3QuUGFpcnMgICAgICBCYW5kd2lkdGgiKSk7CisgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpKTsKKworICAgIGJlc3RfYmFuZHdpZHRoID0gMDsKKyAgICBmb3IgKGk9MDsgaTwoaW50KShzaXplb2YodGVzdF9wYXJhbSkvc2l6ZW9mKHRlc3RfcGFyYW1bMF0pKTsgKytpKSB7CisgICAgICAgIHBqX3NpemVfdCBiYW5kd2lkdGg7CisKKyAgICAgICAgcmMgPSBwZXJmb3JtX3Rlc3QoYWxsb3dfY29uY3VyLAorCQkJICB0ZXN0X3BhcmFtW2ldLnR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhcmFtW2ldLnR5cGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXJhbVtpXS50aHJlYWRfY250LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXJhbVtpXS5zb2NrcGFpcl9jbnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICBCVUZfU0laRSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICZiYW5kd2lkdGgpOworICAgICAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiByYzsKKworICAgICAgICBpZiAoYmFuZHdpZHRoID4gYmVzdF9iYW5kd2lkdGgpCisgICAgICAgICAgICBiZXN0X2JhbmR3aWR0aCA9IGJhbmR3aWR0aCwgYmVzdF9pbmRleCA9IGk7CisKKyAgICAgICAgLyogR2l2ZSBpdCBhIHJlc3QgYmVmb3JlIG5leHQgdGVzdCwgdG8gYWxsb3cgc3lzdGVtIHRvIGNsb3NlIHRoZQorCSAqIHNvY2tldHMgcHJvcGVybHkuIAorCSAqLworICAgICAgICBwal90aHJlYWRfc2xlZXAoNTAwKTsKKyAgICB9CisKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAKKyAgICAgICAgICAgICAgIiAgIEJlc3Q6IFR5cGU9JXMgVGhyZWFkcz0lZCwgU2t0LlBhaXJzPSVkLCBCYW5kd2lkdGg9JXUgS0IvcyIsCisgICAgICAgICAgICAgIHRlc3RfcGFyYW1bYmVzdF9pbmRleF0udHlwZV9uYW1lLAorICAgICAgICAgICAgICB0ZXN0X3BhcmFtW2Jlc3RfaW5kZXhdLnRocmVhZF9jbnQsCisgICAgICAgICAgICAgIHRlc3RfcGFyYW1bYmVzdF9pbmRleF0uc29ja3BhaXJfY250LAorICAgICAgICAgICAgICBiZXN0X2JhbmR3aWR0aCkpOworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIgICAoTm90ZTogcGFja2V0IHNpemU9JWQsIHRvdGFsIGVycm9ycz0ldSkiLCAKKwkJCSBCVUZfU0laRSwgbGFzdF9lcnJvcl9jb3VudGVyKSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBtYWluIHRlc3QgZW50cnkuCisgKi8KK2ludCBpb3F1ZXVlX3BlcmZfdGVzdCh2b2lkKQoreworICAgIGludCByYzsKKworICAgIHJjID0gaW9xdWV1ZV9wZXJmX3Rlc3RfaW1wKFBKX1RSVUUpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIHJjID0gaW9xdWV1ZV9wZXJmX3Rlc3RfaW1wKFBKX0ZBTFNFKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gcmM7CisKKyAgICByZXR1cm4gMDsKK30KKworI2Vsc2UKKy8qIFRvIHByZXZlbnQgd2FybmluZyBhYm91dCAidHJhbnNsYXRpb24gdW5pdCBpcyBlbXB0eSIKKyAqIHdoZW4gdGhpcyB0ZXN0IGlzIGRpc2FibGVkLiAKKyAqLworaW50IGR1bW15X3VpcV9wZXJmX3Rlc3Q7CisjZW5kaWYgIC8qIElOQ0xVREVfSU9RVUVVRV9QRVJGX1RFU1QgKi8KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9pb3FfdGNwLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9pb3FfdGNwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE5ZTFlZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2lvcV90Y3AuYwpAQCAtMCwwICsxLDk3MiBAQAorLyogJElkOiBpb3FfdGNwLmMgNDU1MCAyMDEzLTA3LTAyIDExOjQ1OjU3WiByaXphICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSAidGVzdC5oIgorCisvKioKKyAqIFxwYWdlIHBhZ2VfcGpsaWJfaW9xdWV1ZV90Y3BfdGVzdCBUZXN0OiBJL08gUXVldWUgKFRDUCkKKyAqCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgaW1wbGVtZW50YXRpb24gdG8gdGVzdCB0aGUKKyAqIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEkvTyBxdWV1ZSB3aGVuIFRDUCBzb2NrZXQgaXMgdXNlZC4KKyAqCisgKgorICogVGhpcyBmaWxlIGlzIDxiPnBqbGliLXRlc3QvaW9xX3RjcC5jPC9iPgorICoKKyAqIFxpbmNsdWRlIHBqbGliLXRlc3QvaW9xX3RjcC5jCisgKi8KKworCisjaWYgSU5DTFVERV9UQ1BfSU9RVUVVRV9URVNUCisKKyNpbmNsdWRlIDxwamxpYi5oPgorCisjaWYgUEpfSEFTX1RDUAorCisjZGVmaW5lIFRISVNfRklMRQkgICAgInRlc3RfdGNwIgorI2RlZmluZSBOT05fRVhJU1RBTlRfUE9SVCAgIDUwMTIzCisjZGVmaW5lIExPT1AJCSAgICAxMDAKKyNkZWZpbmUgQlVGX01JTl9TSVpFCSAgICAzMgorI2RlZmluZSBCVUZfTUFYX1NJWkUJICAgIDIwNDgKKyNkZWZpbmUgU09DS19JTkFDVElWRV9NSU4gICAoNC0yKQorI2RlZmluZSBTT0NLX0lOQUNUSVZFX01BWCAgIChQSl9JT1FVRVVFX01BWF9IQU5ETEVTIC0gMikKKyNkZWZpbmUgUE9PTF9TSVpFCSAgICAoMipCVUZfTUFYX1NJWkUgKyBTT0NLX0lOQUNUSVZFX01BWCoxMjggKyAyMDQ4KQorCitzdGF0aWMgcGpfc3NpemVfdAkgICAgIGNhbGxiYWNrX3JlYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYWNjZXB0X3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfY29ubmVjdF9zdGF0dXM7CitzdGF0aWMgdW5zaWduZWQJCSAgICAgY2FsbGJhY2tfY2FsbF9jb3VudDsKK3N0YXRpYyBwal9pb3F1ZXVlX2tleV90ICAgICAqY2FsbGJhY2tfcmVhZF9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxiYWNrX3dyaXRlX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbGJhY2tfYWNjZXB0X2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbGJhY2tfY29ubmVjdF9rZXk7CitzdGF0aWMgcGpfaW9xdWV1ZV9vcF9rZXlfdCAgKmNhbGxiYWNrX3JlYWRfb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxiYWNrX3dyaXRlX29wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjYWxsYmFja19hY2NlcHRfb3A7CisKK3N0YXRpYyB2b2lkIG9uX2lvcXVldWVfcmVhZChwal9pb3F1ZXVlX2tleV90ICprZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zc2l6ZV90IGJ5dGVzX3JlYWQpCit7CisgICAgY2FsbGJhY2tfcmVhZF9rZXkgPSBrZXk7CisgICAgY2FsbGJhY2tfcmVhZF9vcCA9IG9wX2tleTsKKyAgICBjYWxsYmFja19yZWFkX3NpemUgPSBieXRlc19yZWFkOworICAgIGNhbGxiYWNrX2NhbGxfY291bnQrKzsKK30KKworc3RhdGljIHZvaWQgb25faW9xdWV1ZV93cml0ZShwal9pb3F1ZXVlX2tleV90ICprZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NzaXplX3QgYnl0ZXNfd3JpdHRlbikKK3sKKyAgICBjYWxsYmFja193cml0ZV9rZXkgPSBrZXk7CisgICAgY2FsbGJhY2tfd3JpdGVfb3AgPSBvcF9rZXk7CisgICAgY2FsbGJhY2tfd3JpdGVfc2l6ZSA9IGJ5dGVzX3dyaXR0ZW47CisgICAgY2FsbGJhY2tfY2FsbF9jb3VudCsrOworfQorCitzdGF0aWMgdm9pZCBvbl9pb3F1ZXVlX2FjY2VwdChwal9pb3F1ZXVlX2tleV90ICprZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc29ja190IHNvY2ssIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cykKK3sKKyAgICBpZiAoc29jayA9PSBQSl9JTlZBTElEX1NPQ0tFVCkgeworCisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIC8qIElnbm9yZS4gQ291bGQgYmUgYmxvY2tpbmcgZXJyb3IgKi8KKwkgICAgYXBwX3BlcnJvcigiLi4uLi53YXJuaW5nOiByZWNlaXZlZCBlcnJvciBpbiBvbl9pb3F1ZXVlX2FjY2VwdCgpIGNhbGxiYWNrIiwKKwkJICAgICAgIHN0YXR1cyk7CisJfSBlbHNlIHsKKwkgICAgY2FsbGJhY2tfYWNjZXB0X3N0YXR1cyA9IC02MTsKKwkgICAgUEpfTE9HKDMsKCIiLCAiLi4uLi4gb25faW9xdWV1ZV9hY2NlcHQoKSBjYWxsYmFjayB3YXMgZ2l2ZW4gIgorCQkJICAiaW52YWxpZCBzb2NrZXQgYW5kIHN0YXR1cyBpcyAlZCIsIHN0YXR1cykpOworCX0KKyAgICB9IGVsc2UgeworICAgICAgICBwal9zb2NrYWRkciBhZGRyOworICAgICAgICBpbnQgY2xpZW50X2FkZHJfbGVuOworCisgICAgICAgIGNsaWVudF9hZGRyX2xlbiA9IHNpemVvZihhZGRyKTsKKyAgICAgICAgc3RhdHVzID0gcGpfc29ja19nZXRzb2NrbmFtZShzb2NrLCAmYWRkciwgJmNsaWVudF9hZGRyX2xlbik7CisgICAgICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uRVJST1IgaW4gcGpfc29ja19nZXRzb2NrbmFtZSgpIiwgc3RhdHVzKTsKKyAgICAgICAgfQorCisJY2FsbGJhY2tfYWNjZXB0X2tleSA9IGtleTsKKwljYWxsYmFja19hY2NlcHRfb3AgPSBvcF9rZXk7CisJY2FsbGJhY2tfYWNjZXB0X3N0YXR1cyA9IHN0YXR1czsKKwljYWxsYmFja19jYWxsX2NvdW50Kys7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBvbl9pb3F1ZXVlX2Nvbm5lY3QocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCBpbnQgc3RhdHVzKQoreworICAgIGNhbGxiYWNrX2Nvbm5lY3Rfa2V5ID0ga2V5OworICAgIGNhbGxiYWNrX2Nvbm5lY3Rfc3RhdHVzID0gc3RhdHVzOworICAgIGNhbGxiYWNrX2NhbGxfY291bnQrKzsKK30KKworc3RhdGljIHBqX2lvcXVldWVfY2FsbGJhY2sgdGVzdF9jYiA9IAoreworICAgICZvbl9pb3F1ZXVlX3JlYWQsCisgICAgJm9uX2lvcXVldWVfd3JpdGUsCisgICAgJm9uX2lvcXVldWVfYWNjZXB0LAorICAgICZvbl9pb3F1ZXVlX2Nvbm5lY3QsCit9OworCitzdGF0aWMgaW50IHNlbmRfcmVjdl90ZXN0KHBqX2lvcXVldWVfdCAqaW9xdWUsCisJCQkgIHBqX2lvcXVldWVfa2V5X3QgKnNrZXksCisJCQkgIHBqX2lvcXVldWVfa2V5X3QgKmNrZXksCisJCQkgIHZvaWQgKnNlbmRfYnVmLAorCQkJICB2b2lkICpyZWN2X2J1ZiwKKwkJCSAgcGpfc3NpemVfdCBidWZzaXplLAorCQkJICBwal90aW1lc3RhbXAgKnRfZWxhcHNlZCkKK3sKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisgICAgcGpfc3NpemVfdCBieXRlczsKKyAgICBwal90aW1lX3ZhbCB0aW1lb3V0OworICAgIHBqX3RpbWVzdGFtcCB0MSwgdDI7CisgICAgaW50IHBlbmRpbmdfb3AgPSAwOworICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgcmVhZF9vcCwgd3JpdGVfb3A7CisKKyAgICAvLyBTdGFydCByZWFkaW5nIG9uIHRoZSBzZXJ2ZXIgc2lkZS4KKyAgICBieXRlcyA9IGJ1ZnNpemU7CisgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9yZWN2KHNrZXksICZyZWFkX29wLCByZWN2X2J1ZiwgJmJ5dGVzLCAwKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgJiYgc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLnBqX2lvcXVldWVfcmVjdiBlcnJvciIsIHN0YXR1cyk7CisJcmV0dXJuIC0xMDA7CisgICAgfQorICAgIAorICAgIGlmIChzdGF0dXMgPT0gUEpfRVBFTkRJTkcpCisgICAgICAgICsrcGVuZGluZ19vcDsKKyAgICBlbHNlIHsKKyAgICAgICAgLyogRG9lcyBub3QgZXhwZWN0IHRvIHJldHVybiBlcnJvciBvciBpbW1lZGlhdGUgZGF0YS4gKi8KKyAgICAgICAgcmV0dXJuIC0xMTU7CisgICAgfQorCisgICAgLy8gUmFuZG9taXplIHNlbmQgYnVmZmVyLgorICAgIHBqX2NyZWF0ZV9yYW5kb21fc3RyaW5nKChjaGFyKilzZW5kX2J1ZiwgYnVmc2l6ZSk7CisKKyAgICAvLyBTdGFydHMgc2VuZCBvbiB0aGUgY2xpZW50IHNpZGUuCisgICAgYnl0ZXMgPSBidWZzaXplOworICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfc2VuZChja2V5LCAmd3JpdGVfb3AsIHNlbmRfYnVmLCAmYnl0ZXMsIDApOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUyAmJiBieXRlcyAhPSBQSl9FUEVORElORykgeworCXJldHVybiAtMTIwOworICAgIH0KKyAgICBpZiAoc3RhdHVzID09IFBKX0VQRU5ESU5HKSB7CisJKytwZW5kaW5nX29wOworICAgIH0KKworICAgIC8vIEJlZ2luIHRpbWUuCisgICAgcGpfZ2V0X3RpbWVzdGFtcCgmdDEpOworCisgICAgLy8gUmVzZXQgaW5kaWNhdG9ycworICAgIGNhbGxiYWNrX3JlYWRfc2l6ZSA9IGNhbGxiYWNrX3dyaXRlX3NpemUgPSAwOworICAgIGNhbGxiYWNrX3JlYWRfa2V5ID0gY2FsbGJhY2tfd3JpdGVfa2V5ID0gTlVMTDsKKyAgICBjYWxsYmFja19yZWFkX29wID0gY2FsbGJhY2tfd3JpdGVfb3AgPSBOVUxMOworCisgICAgLy8gUG9sbCB0aGUgcXVldWUgdW50aWwgd2UndmUgZ290IGNvbXBsZXRpb24gZXZlbnQgaW4gdGhlIHNlcnZlciBzaWRlLgorICAgIHN0YXR1cyA9IDA7CisgICAgd2hpbGUgKHBlbmRpbmdfb3AgPiAwKSB7CisgICAgICAgIHRpbWVvdXQuc2VjID0gMTsgdGltZW91dC5tc2VjID0gMDsKKyNpZmRlZiBQSl9TWU1CSUFOCisJUEpfVU5VU0VEX0FSRyhpb3F1ZSk7CisJc3RhdHVzID0gcGpfc3ltYmlhbm9zX3BvbGwoLTEsIDEwMDApOworI2Vsc2UKKwlzdGF0dXMgPSBwal9pb3F1ZXVlX3BvbGwoaW9xdWUsICZ0aW1lb3V0KTsKKyNlbmRpZgorCWlmIChzdGF0dXMgPiAwKSB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2tfcmVhZF9zaXplKSB7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrX3JlYWRfc2l6ZSAhPSBidWZzaXplKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE2MDsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tfcmVhZF9rZXkgIT0gc2tleSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xNjE7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrX3JlYWRfb3AgIT0gJnJlYWRfb3ApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTYyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNhbGxiYWNrX3dyaXRlX3NpemUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tfd3JpdGVfa2V5ICE9IGNrZXkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTYzOworICAgICAgICAgICAgICAgIGlmIChjYWxsYmFja193cml0ZV9vcCAhPSAmd3JpdGVfb3ApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTY0OworICAgICAgICAgICAgfQorCSAgICBwZW5kaW5nX29wIC09IHN0YXR1czsKKwl9CisgICAgICAgIGlmIChzdGF0dXMgPT0gMCkgeworICAgICAgICAgICAgUEpfTE9HKDMsKCIiLCAiLi4uZXJyb3I6IHRpbWVkIG91dCIpKTsKKyAgICAgICAgfQorCWlmIChzdGF0dXMgPCAwKSB7CisJICAgIHJldHVybiAtMTcwOworCX0KKyAgICB9CisKKyAgICAvLyBQZW5kaW5nIG9wIGlzIHplcm8uCisgICAgLy8gU3Vic2VxdWVudCBwb2xsIHNob3VsZCB5aWVsZCB6ZXJvIHRvby4KKyAgICB0aW1lb3V0LnNlYyA9IHRpbWVvdXQubXNlYyA9IDA7CisjaWZkZWYgUEpfU1lNQklBTgorICAgIHN0YXR1cyA9IHBqX3N5bWJpYW5vc19wb2xsKC0xLCAxKTsKKyNlbHNlCisgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9wb2xsKGlvcXVlLCAmdGltZW91dCk7CisjZW5kaWYKKyAgICBpZiAoc3RhdHVzICE9IDApCisgICAgICAgIHJldHVybiAtMTczOworCisgICAgLy8gRW5kIHRpbWUuCisgICAgcGpfZ2V0X3RpbWVzdGFtcCgmdDIpOworICAgIHRfZWxhcHNlZC0+dTMyLmxvICs9ICh0Mi51MzIubG8gLSB0MS51MzIubG8pOworCisgICAgLy8gQ29tcGFyZSByZWN2IGJ1ZmZlciB3aXRoIHNlbmQgYnVmZmVyLgorICAgIGlmIChwal9tZW1jbXAoc2VuZF9idWYsIHJlY3ZfYnVmLCBidWZzaXplKSAhPSAwKSB7CisJcmV0dXJuIC0xODA7CisgICAgfQorCisgICAgLy8gU3VjY2VzcworICAgIHJldHVybiAwOworfQorCisKKy8qCisgKiBDb21wbGlhbmNlIHRlc3QgZm9yIHN1Y2Nlc3Mgc2NlbmFyaW8uCisgKi8KK3N0YXRpYyBpbnQgY29tcGxpYW5jZV90ZXN0XzAocGpfYm9vbF90IGFsbG93X2NvbmN1cikKK3sKKyAgICBwal9zb2NrX3Qgc3NvY2s9LTEsIGNzb2NrMD0tMSwgY3NvY2sxPS0xOworICAgIHBqX3NvY2thZGRyX2luIGFkZHIsIGNsaWVudF9hZGRyLCBybXRfYWRkcjsKKyAgICBpbnQgY2xpZW50X2FkZHJfbGVuOworICAgIHBqX3Bvb2xfdCAqcG9vbCA9IE5VTEw7CisgICAgY2hhciAqc2VuZF9idWYsICpyZWN2X2J1ZjsKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVlID0gTlVMTDsKKyAgICBwal9pb3F1ZXVlX2tleV90ICpza2V5PU5VTEwsICpja2V5MD1OVUxMLCAqY2tleTE9TlVMTDsKKyAgICBwal9pb3F1ZXVlX29wX2tleV90IGFjY2VwdF9vcDsKKyAgICBpbnQgYnVmc2l6ZSA9IEJVRl9NSU5fU0laRTsKKyAgICBpbnQgc3RhdHVzID0gLTE7CisgICAgaW50IHBlbmRpbmdfb3AgPSAwOworICAgIHBqX3RpbWVzdGFtcCB0X2VsYXBzZWQ7CisgICAgcGpfc3RyX3QgczsKKyAgICBwal9zdGF0dXNfdCByYzsKKworICAgIC8vIENyZWF0ZSBwb29sLgorICAgIHBvb2wgPSBwal9wb29sX2NyZWF0ZShtZW0sIE5VTEwsIFBPT0xfU0laRSwgNDAwMCwgTlVMTCk7CisKKyAgICAvLyBBbGxvY2F0ZSBidWZmZXJzIGZvciBzZW5kIGFuZCByZWNlaXZlLgorICAgIHNlbmRfYnVmID0gKGNoYXIqKXBqX3Bvb2xfYWxsb2MocG9vbCwgYnVmc2l6ZSk7CisgICAgcmVjdl9idWYgPSAoY2hhciopcGpfcG9vbF9hbGxvYyhwb29sLCBidWZzaXplKTsKKworICAgIC8vIENyZWF0ZSBzZXJ2ZXIgc29ja2V0IGFuZCBjbGllbnQgc29ja2V0IGZvciBjb25uZWN0aW5nCisgICAgcmMgPSBwal9zb2NrX3NvY2tldChwal9BRl9JTkVUKCksIHBqX1NPQ0tfU1RSRUFNKCksIDAsICZzc29jayk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3IgY3JlYXRpbmcgc29ja2V0IiwgcmMpOworICAgICAgICBzdGF0dXM9LTE7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgcmMgPSBwal9zb2NrX3NvY2tldChwal9BRl9JTkVUKCksIHBqX1NPQ0tfU1RSRUFNKCksIDAsICZjc29jazEpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yIGNyZWF0aW5nIHNvY2tldCIsIHJjKTsKKwlzdGF0dXM9LTE7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gQmluZCBzZXJ2ZXIgc29ja2V0LgorICAgIHBqX3NvY2thZGRyX2luX2luaXQoJmFkZHIsIDAsIDApOworICAgIGlmICgocmM9cGpfc29ja19iaW5kKHNzb2NrLCAmYWRkciwgc2l6ZW9mKGFkZHIpKSkgIT0gMCApIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uYmluZCBlcnJvciIsIHJjKTsKKwlzdGF0dXM9LTEwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8vIEdldCBzZXJ2ZXIgYWRkcmVzcy4KKyAgICBjbGllbnRfYWRkcl9sZW4gPSBzaXplb2YoYWRkcik7CisgICAgcmMgPSBwal9zb2NrX2dldHNvY2tuYW1lKHNzb2NrLCAmYWRkciwgJmNsaWVudF9hZGRyX2xlbik7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uRVJST1IgaW4gcGpfc29ja19nZXRzb2NrbmFtZSgpIiwgcmMpOworCXN0YXR1cz0tMTU7IGdvdG8gb25fZXJyb3I7CisgICAgfQorICAgIGFkZHIuc2luX2FkZHIgPSBwal9pbmV0X2FkZHIocGpfY3N0cigmcywgIjEyNy4wLjAuMSIpKTsKKworICAgIC8vIENyZWF0ZSBJL08gUXVldWUuCisgICAgcmMgPSBwal9pb3F1ZXVlX2NyZWF0ZShwb29sLCBQSl9JT1FVRVVFX01BWF9IQU5ETEVTLCAmaW9xdWUpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIGluIHBqX2lvcXVldWVfY3JlYXRlKCkiLCByYyk7CisJc3RhdHVzPS0yMDsgZ290byBvbl9lcnJvcjsKKyAgICB9CisKKyAgICAvLyBDb25jdXJyZW5jeQorICAgIHJjID0gcGpfaW9xdWV1ZV9zZXRfZGVmYXVsdF9jb25jdXJyZW5jeShpb3F1ZSwgYWxsb3dfY29uY3VyKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal9pb3F1ZXVlX3NldF9kZWZhdWx0X2NvbmN1cnJlbmN5KCkiLCByYyk7CisJc3RhdHVzPS0yMTsgZ290byBvbl9lcnJvcjsKKyAgICB9CisKKyAgICAvLyBSZWdpc3RlciBzZXJ2ZXIgc29ja2V0IGFuZCBjbGllbnQgc29ja2V0LgorICAgIHJjID0gcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrKHBvb2wsIGlvcXVlLCBzc29jaywgTlVMTCwgJnRlc3RfY2IsICZza2V5KTsKKyAgICBpZiAocmMgPT0gUEpfU1VDQ0VTUykKKyAgICAgICAgcmMgPSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2socG9vbCwgaW9xdWUsIGNzb2NrMSwgTlVMTCwgJnRlc3RfY2IsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2tleTEpOworICAgIGVsc2UKKyAgICAgICAgY2tleTEgPSBOVUxMOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIGluIHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jaygpIiwgcmMpOworCXN0YXR1cz0tMjM7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gU2VydmVyIHNvY2tldCBsaXN0ZW4oKS4KKyAgICBpZiAocGpfc29ja19saXN0ZW4oc3NvY2ssIDUpKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIGluIHBqX3NvY2tfbGlzdGVuKCkiLCByYyk7CisJc3RhdHVzPS0yNTsgZ290byBvbl9lcnJvcjsKKyAgICB9CisKKyAgICAvLyBTZXJ2ZXIgc29ja2V0IGFjY2VwdCgpCisgICAgY2xpZW50X2FkZHJfbGVuID0gc2l6ZW9mKHBqX3NvY2thZGRyX2luKTsKKyAgICBzdGF0dXMgPSBwal9pb3F1ZXVlX2FjY2VwdChza2V5LCAmYWNjZXB0X29wLCAmY3NvY2swLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xpZW50X2FkZHIsICZybXRfYWRkciwgJmNsaWVudF9hZGRyX2xlbik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9FUEVORElORykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal9pb3F1ZXVlX2FjY2VwdCgpIiwgcmMpOworCXN0YXR1cz0tMzA7IGdvdG8gb25fZXJyb3I7CisgICAgfQorICAgIGlmIChzdGF0dXM9PVBKX0VQRU5ESU5HKSB7CisJKytwZW5kaW5nX29wOworICAgIH0KKworICAgIC8vIENsaWVudCBzb2NrZXQgY29ubmVjdCgpCisgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9jb25uZWN0KGNrZXkxLCAmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKyAgICBpZiAoc3RhdHVzIT1QSl9TVUNDRVNTICYmIHN0YXR1cyAhPSBQSl9FUEVORElORykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal9pb3F1ZXVlX2Nvbm5lY3QoKSIsIHJjKTsKKwlzdGF0dXM9LTQwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKyAgICBpZiAoc3RhdHVzPT1QSl9FUEVORElORykgeworCSsrcGVuZGluZ19vcDsKKyAgICB9CisKKyAgICAvLyBQb2xsIHVudGlsIGNvbm5lY3RlZAorICAgIGNhbGxiYWNrX3JlYWRfc2l6ZSA9IGNhbGxiYWNrX3dyaXRlX3NpemUgPSAwOworICAgIGNhbGxiYWNrX2FjY2VwdF9zdGF0dXMgPSBjYWxsYmFja19jb25uZWN0X3N0YXR1cyA9IC0yOworICAgIGNhbGxiYWNrX2NhbGxfY291bnQgPSAwOworCisgICAgY2FsbGJhY2tfcmVhZF9rZXkgPSBjYWxsYmFja193cml0ZV9rZXkgPSAKKyAgICAgICAgY2FsbGJhY2tfYWNjZXB0X2tleSA9IGNhbGxiYWNrX2Nvbm5lY3Rfa2V5ID0gTlVMTDsKKyAgICBjYWxsYmFja19hY2NlcHRfb3AgPSBjYWxsYmFja19yZWFkX29wID0gY2FsbGJhY2tfd3JpdGVfb3AgPSBOVUxMOworCisgICAgd2hpbGUgKHBlbmRpbmdfb3ApIHsKKwlwal90aW1lX3ZhbCB0aW1lb3V0ID0gezEsIDB9OworCisjaWZkZWYgUEpfU1lNQklBTgorCWNhbGxiYWNrX2NhbGxfY291bnQgPSAwOworCXBqX3N5bWJpYW5vc19wb2xsKC0xLCBQSl9USU1FX1ZBTF9NU0VDKHRpbWVvdXQpKTsKKwlzdGF0dXMgPSBjYWxsYmFja19jYWxsX2NvdW50OworI2Vsc2UKKwlzdGF0dXMgPSBwal9pb3F1ZXVlX3BvbGwoaW9xdWUsICZ0aW1lb3V0KTsKKyNlbmRpZgorCWlmIChzdGF0dXMgPiAwKSB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2tfYWNjZXB0X3N0YXR1cyAhPSAtMikgeworICAgICAgICAgICAgICAgIGlmIChjYWxsYmFja19hY2NlcHRfc3RhdHVzICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPS00MTsgZ290byBvbl9lcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrX2FjY2VwdF9rZXkgIT0gc2tleSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXM9LTQyOyBnb3RvIG9uX2Vycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tfYWNjZXB0X29wICE9ICZhY2NlcHRfb3ApIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPS00MzsgZ290byBvbl9lcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FsbGJhY2tfYWNjZXB0X3N0YXR1cyA9IC0yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2FsbGJhY2tfY29ubmVjdF9zdGF0dXMgIT0gLTIpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tfY29ubmVjdF9zdGF0dXMgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXM9LTUwOyBnb3RvIG9uX2Vycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tfY29ubmVjdF9rZXkgIT0gY2tleTEpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPS01MTsgZ290byBvbl9lcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FsbGJhY2tfY29ubmVjdF9zdGF0dXMgPSAtMjsKKyAgICAgICAgICAgIH0KKworCSAgICBpZiAoc3RhdHVzID4gcGVuZGluZ19vcCkgeworCQlQSl9MT0coMywoVEhJU19GSUxFLAorCQkJICAiLi4uZXJyb3I6IHBqX2lvcXVldWVfcG9sbCgpIHJldHVybmVkICVkICIKKwkJCSAgIihvbmx5IGV4cGVjdGluZyAlZCkiLAorCQkJICBzdGF0dXMsIHBlbmRpbmdfb3ApKTsKKwkJcmV0dXJuIC01MjsKKwkgICAgfQorCSAgICBwZW5kaW5nX29wIC09IHN0YXR1czsKKworCSAgICBpZiAocGVuZGluZ19vcCA9PSAwKSB7CisJCXN0YXR1cyA9IDA7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgLy8gVGhlcmUncyBubyBwZW5kaW5nIG9wZXJhdGlvbi4KKyAgICAvLyBXaGVuIHdlIHBvbGwgdGhlIGlvcXVldWUsIHRoZXJlIG11c3Qgbm90IGJlIGV2ZW50cy4KKyAgICBpZiAocGVuZGluZ19vcCA9PSAwKSB7CisgICAgICAgIHBqX3RpbWVfdmFsIHRpbWVvdXQgPSB7MSwgMH07CisjaWZkZWYgUEpfU1lNQklBTgorCXN0YXR1cyA9IHBqX3N5bWJpYW5vc19wb2xsKC0xLCBQSl9USU1FX1ZBTF9NU0VDKHRpbWVvdXQpKTsKKyNlbHNlCisgICAgICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfcG9sbChpb3F1ZSwgJnRpbWVvdXQpOworI2VuZGlmCisgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgeworICAgICAgICAgICAgc3RhdHVzPS02MDsgZ290byBvbl9lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENoZWNrIGFjY2VwdGVkIHNvY2tldC4KKyAgICBpZiAoY3NvY2swID09IFBKX0lOVkFMSURfU09DS0VUKSB7CisJc3RhdHVzID0gLTY5OworICAgICAgICBhcHBfcGVycm9yKCIuLi5hY2NlcHQoKSBlcnJvciIsIHBqX2dldF9vc19lcnJvcigpKTsKKwlnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8vIFJlZ2lzdGVyIG5ld2x5IGFjY2VwdGVkIHNvY2tldC4KKyAgICByYyA9IHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayhwb29sLCBpb3F1ZSwgY3NvY2swLCBOVUxMLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGVzdF9jYiwgJmNrZXkwKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2siLCByYyk7CisJc3RhdHVzID0gLTcwOworCWdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gVGVzdCBzZW5kIGFuZCByZWNlaXZlLgorICAgIHRfZWxhcHNlZC51MzIubG8gPSAwOworICAgIHN0YXR1cyA9IHNlbmRfcmVjdl90ZXN0KGlvcXVlLCBja2V5MCwgY2tleTEsIHNlbmRfYnVmLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN2X2J1ZiwgYnVmc2l6ZSwgJnRfZWxhcHNlZCk7CisgICAgaWYgKHN0YXR1cyAhPSAwKSB7CisJZ290byBvbl9lcnJvcjsKKyAgICB9CisKKyAgICAvLyBTdWNjZXNzCisgICAgc3RhdHVzID0gMDsKKworb25fZXJyb3I6CisgICAgaWYgKHNrZXkgIT0gTlVMTCkKKyAgICAJcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKHNrZXkpOworICAgIGVsc2UgaWYgKHNzb2NrICE9IFBKX0lOVkFMSURfU09DS0VUKQorCXBqX3NvY2tfY2xvc2Uoc3NvY2spOworICAgIAorICAgIGlmIChja2V5MSAhPSBOVUxMKQorICAgIAlwal9pb3F1ZXVlX3VucmVnaXN0ZXIoY2tleTEpOworICAgIGVsc2UgaWYgKGNzb2NrMSAhPSBQSl9JTlZBTElEX1NPQ0tFVCkKKwlwal9zb2NrX2Nsb3NlKGNzb2NrMSk7CisgICAgCisgICAgaWYgKGNrZXkwICE9IE5VTEwpCisgICAgCXBqX2lvcXVldWVfdW5yZWdpc3Rlcihja2V5MCk7CisgICAgZWxzZSBpZiAoY3NvY2swICE9IFBKX0lOVkFMSURfU09DS0VUKQorCXBqX3NvY2tfY2xvc2UoY3NvY2swKTsKKyAgICAKKyAgICBpZiAoaW9xdWUgIT0gTlVMTCkKKwlwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xdWUpOworICAgIHBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKyAgICByZXR1cm4gc3RhdHVzOworCit9CisKKy8qCisgKiBDb21wbGlhbmNlIHRlc3QgZm9yIGZhaWxlZCBzY2VuYXJpby4KKyAqIEluIHRoaXMgY2FzZSwgdGhlIGNsaWVudCBjb25uZWN0cyB0byBhIG5vbi1leGlzdGFudCBzZXJ2aWNlLgorICovCitzdGF0aWMgaW50IGNvbXBsaWFuY2VfdGVzdF8xKHBqX2Jvb2xfdCBhbGxvd19jb25jdXIpCit7CisgICAgcGpfc29ja190IGNzb2NrMT1QSl9JTlZBTElEX1NPQ0tFVDsKKyAgICBwal9zb2NrYWRkcl9pbiBhZGRyOworICAgIHBqX3Bvb2xfdCAqcG9vbCA9IE5VTEw7CisgICAgcGpfaW9xdWV1ZV90ICppb3F1ZSA9IE5VTEw7CisgICAgcGpfaW9xdWV1ZV9rZXlfdCAqY2tleTEgPSBOVUxMOworICAgIGludCBzdGF0dXMgPSAtMTsKKyAgICBpbnQgcGVuZGluZ19vcCA9IDA7CisgICAgcGpfc3RyX3QgczsKKyAgICBwal9zdGF0dXNfdCByYzsKKworICAgIC8vIENyZWF0ZSBwb29sLgorICAgIHBvb2wgPSBwal9wb29sX2NyZWF0ZShtZW0sIE5VTEwsIFBPT0xfU0laRSwgNDAwMCwgTlVMTCk7CisKKyAgICAvLyBDcmVhdGUgSS9PIFF1ZXVlLgorICAgIHJjID0gcGpfaW9xdWV1ZV9jcmVhdGUocG9vbCwgUEpfSU9RVUVVRV9NQVhfSEFORExFUywgJmlvcXVlKTsKKyAgICBpZiAoIWlvcXVlKSB7CisJc3RhdHVzPS0yMDsgZ290byBvbl9lcnJvcjsKKyAgICB9CisKKyAgICAvLyBDb25jdXJyZW5jeQorICAgIHJjID0gcGpfaW9xdWV1ZV9zZXRfZGVmYXVsdF9jb25jdXJyZW5jeShpb3F1ZSwgYWxsb3dfY29uY3VyKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCXN0YXR1cz0tMjE7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGNsaWVudCBzb2NrZXQKKyAgICByYyA9IHBqX3NvY2tfc29ja2V0KHBqX0FGX0lORVQoKSwgcGpfU09DS19TVFJFQU0oKSwgMCwgJmNzb2NrMSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uRVJST1IgaW4gcGpfc29ja19zb2NrZXQoKSIsIHJjKTsKKwlzdGF0dXM9LTE7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gUmVnaXN0ZXIgY2xpZW50IHNvY2tldC4KKyAgICByYyA9IHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayhwb29sLCBpb3F1ZSwgY3NvY2sxLCBOVUxMLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGVzdF9jYiwgJmNrZXkxKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2soKSIsIHJjKTsKKwlzdGF0dXM9LTIzOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8vIEluaXRpYWxpemUgcmVtb3RlIGFkZHJlc3MuCisgICAgcGpfc29ja2FkZHJfaW5faW5pdCgmYWRkciwgcGpfY3N0cigmcywgIjEyNy4wLjAuMSIpLCBOT05fRVhJU1RBTlRfUE9SVCk7CisKKyAgICAvLyBDbGllbnQgc29ja2V0IGNvbm5lY3QoKQorICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfY29ubmVjdChja2V5MSwgJmFkZHIsIHNpemVvZihhZGRyKSk7CisgICAgaWYgKHN0YXR1cz09UEpfU1VDQ0VTUykgeworCS8vIHVuZXhwZWN0ZWRseSBzdWNjZXNzIQorCXN0YXR1cyA9IC0zMDsKKwlnb3RvIG9uX2Vycm9yOworICAgIH0KKyAgICBpZiAoc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisJLy8gc3VjY2VzcworICAgIH0gZWxzZSB7CisJKytwZW5kaW5nX29wOworICAgIH0KKworICAgIGNhbGxiYWNrX2Nvbm5lY3Rfc3RhdHVzID0gLTI7CisgICAgY2FsbGJhY2tfY29ubmVjdF9rZXkgPSBOVUxMOworCisgICAgLy8gUG9sbCB1bnRpbCB3ZSd2ZSBnb3QgcmVzdWx0CisgICAgd2hpbGUgKHBlbmRpbmdfb3ApIHsKKwlwal90aW1lX3ZhbCB0aW1lb3V0ID0gezEsIDB9OworCisjaWZkZWYgUEpfU1lNQklBTgorCWNhbGxiYWNrX2NhbGxfY291bnQgPSAwOworCXBqX3N5bWJpYW5vc19wb2xsKC0xLCBQSl9USU1FX1ZBTF9NU0VDKHRpbWVvdXQpKTsKKwlzdGF0dXMgPSBjYWxsYmFja19jYWxsX2NvdW50OworI2Vsc2UKKwlzdGF0dXMgPSBwal9pb3F1ZXVlX3BvbGwoaW9xdWUsICZ0aW1lb3V0KTsKKyNlbmRpZgorCWlmIChzdGF0dXMgPiAwKSB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2tfY29ubmVjdF9rZXk9PWNrZXkxKSB7CisJCWlmIChjYWxsYmFja19jb25uZWN0X3N0YXR1cyA9PSAwKSB7CisJCSAgICAvLyB1bmV4cGVjdGVkbHkgY29ubmVjdGVkIQorCQkgICAgc3RhdHVzID0gLTUwOworCQkgICAgZ290byBvbl9lcnJvcjsKKwkJfQorCSAgICB9CisKKwkgICAgaWYgKHN0YXR1cyA+IHBlbmRpbmdfb3ApIHsKKwkJUEpfTE9HKDMsKFRISVNfRklMRSwKKwkJCSAgIi4uLmVycm9yOiBwal9pb3F1ZXVlX3BvbGwoKSByZXR1cm5lZCAlZCAiCisJCQkgICIob25seSBleHBlY3RpbmcgJWQpIiwKKwkJCSAgc3RhdHVzLCBwZW5kaW5nX29wKSk7CisJCXJldHVybiAtNTUyOworCSAgICB9CisKKwkgICAgcGVuZGluZ19vcCAtPSBzdGF0dXM7CisJICAgIGlmIChwZW5kaW5nX29wID09IDApIHsKKwkJc3RhdHVzID0gMDsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvLyBUaGVyZSdzIG5vIHBlbmRpbmcgb3BlcmF0aW9uLgorICAgIC8vIFdoZW4gd2UgcG9sbCB0aGUgaW9xdWV1ZSwgdGhlcmUgbXVzdCBub3QgYmUgZXZlbnRzLgorICAgIGlmIChwZW5kaW5nX29wID09IDApIHsKKyAgICAgICAgcGpfdGltZV92YWwgdGltZW91dCA9IHsxLCAwfTsKKyNpZmRlZiBQSl9TWU1CSUFOCisJc3RhdHVzID0gcGpfc3ltYmlhbm9zX3BvbGwoLTEsIFBKX1RJTUVfVkFMX01TRUModGltZW91dCkpOworI2Vsc2UKKyAgICAgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9wb2xsKGlvcXVlLCAmdGltZW91dCk7CisjZW5kaWYKKyAgICAgICAgaWYgKHN0YXR1cyAhPSAwKSB7CisgICAgICAgICAgICBzdGF0dXM9LTYwOyBnb3RvIG9uX2Vycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gU3VjY2VzcworICAgIHN0YXR1cyA9IDA7CisKK29uX2Vycm9yOgorICAgIGlmIChja2V5MSAhPSBOVUxMKQorICAgIAlwal9pb3F1ZXVlX3VucmVnaXN0ZXIoY2tleTEpOworICAgIGVsc2UgaWYgKGNzb2NrMSAhPSBQSl9JTlZBTElEX1NPQ0tFVCkKKwlwal9zb2NrX2Nsb3NlKGNzb2NrMSk7CisgICAgCisgICAgaWYgKGlvcXVlICE9IE5VTEwpCisJcGpfaW9xdWV1ZV9kZXN0cm95KGlvcXVlKTsKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworCisvKgorICogUmVwZWF0ZWQgY29ubmVjdC9hY2NlcHQgb24gdGhlIHNhbWUgbGlzdGVuZXIgc29ja2V0LgorICovCitzdGF0aWMgaW50IGNvbXBsaWFuY2VfdGVzdF8yKHBqX2Jvb2xfdCBhbGxvd19jb25jdXIpCit7CisjaWYgZGVmaW5lZChQSl9TWU1CSUFOKSAmJiBQSl9TWU1CSUFOIT0wCisgICAgZW51bSB7IE1BWF9QQUlSID0gMSwgVEVTVF9MT09QID0gMiB9OworI2Vsc2UKKyAgICBlbnVtIHsgTUFYX1BBSVIgPSA0LCBURVNUX0xPT1AgPSAyIH07CisjZW5kaWYKKworICAgIHN0cnVjdCBsaXN0ZW5lcgorICAgIHsKKwlwal9zb2NrX3QJICAgICBzb2NrOworCXBqX2lvcXVldWVfa2V5X3QgICAgKmtleTsKKwlwal9zb2NrYWRkcl9pbgkgICAgIGFkZHI7CisJaW50CQkgICAgIGFkZHJfbGVuOworICAgIH0gbGlzdGVuZXI7CisKKyAgICBzdHJ1Y3Qgc2VydmVyCisgICAgeworCXBqX3NvY2tfdAkgICAgIHNvY2s7CisJcGpfaW9xdWV1ZV9rZXlfdCAgICAqa2V5OworCXBqX3NvY2thZGRyX2luCSAgICAgbG9jYWxfYWRkcjsKKwlwal9zb2NrYWRkcl9pbgkgICAgIHJlbV9hZGRyOworCWludAkJICAgICByZW1fYWRkcl9sZW47CisJcGpfaW9xdWV1ZV9vcF9rZXlfdCAgYWNjZXB0X29wOworICAgIH0gc2VydmVyW01BWF9QQUlSXTsKKworICAgIHN0cnVjdCBjbGllbnQKKyAgICB7CisJcGpfc29ja190CSAgICAgc29jazsKKwlwal9pb3F1ZXVlX2tleV90ICAgICprZXk7CisgICAgfSBjbGllbnRbTUFYX1BBSVJdOworCisgICAgcGpfcG9vbF90ICpwb29sID0gTlVMTDsKKyAgICBjaGFyICpzZW5kX2J1ZiwgKnJlY3ZfYnVmOworICAgIHBqX2lvcXVldWVfdCAqaW9xdWUgPSBOVUxMOworICAgIGludCBpLCBidWZzaXplID0gQlVGX01JTl9TSVpFOworICAgIGludCBzdGF0dXM7CisgICAgaW50IHRlc3RfbG9vcCwgcGVuZGluZ19vcCA9IDA7CisgICAgcGpfdGltZXN0YW1wIHRfZWxhcHNlZDsKKyAgICBwal9zdHJfdCBzOworICAgIHBqX3N0YXR1c190IHJjOworCisgICAgbGlzdGVuZXIuc29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIGxpc3RlbmVyLmtleSA9IE5VTEw7CisgICAgCisgICAgZm9yIChpPTA7IGk8TUFYX1BBSVI7ICsraSkgeworICAgIAlzZXJ2ZXJbaV0uc29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIAlzZXJ2ZXJbaV0ua2V5ID0gTlVMTDsKKyAgICB9CisgICAgCisgICAgZm9yIChpPTA7IGk8TUFYX1BBSVI7ICsraSkgeworICAgIAljbGllbnRbaV0uc29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIAljbGllbnRbaV0ua2V5ID0gTlVMTDsJCisgICAgfQorICAgIAorICAgIC8vIENyZWF0ZSBwb29sLgorICAgIHBvb2wgPSBwal9wb29sX2NyZWF0ZShtZW0sIE5VTEwsIFBPT0xfU0laRSwgNDAwMCwgTlVMTCk7CisKKworICAgIC8vIENyZWF0ZSBJL08gUXVldWUuCisgICAgcmMgPSBwal9pb3F1ZXVlX2NyZWF0ZShwb29sLCBQSl9JT1FVRVVFX01BWF9IQU5ETEVTLCAmaW9xdWUpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIGluIHBqX2lvcXVldWVfY3JlYXRlKCkiLCByYyk7CisJcmV0dXJuIC0xMDsKKyAgICB9CisKKworICAgIC8vIENvbmN1cnJlbmN5CisgICAgcmMgPSBwal9pb3F1ZXVlX3NldF9kZWZhdWx0X2NvbmN1cnJlbmN5KGlvcXVlLCBhbGxvd19jb25jdXIpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIGluIHBqX2lvcXVldWVfc2V0X2RlZmF1bHRfY29uY3VycmVuY3koKSIsIHJjKTsKKwlyZXR1cm4gLTExOworICAgIH0KKworICAgIC8vIEFsbG9jYXRlIGJ1ZmZlcnMgZm9yIHNlbmQgYW5kIHJlY2VpdmUuCisgICAgc2VuZF9idWYgPSAoY2hhciopcGpfcG9vbF9hbGxvYyhwb29sLCBidWZzaXplKTsKKyAgICByZWN2X2J1ZiA9IChjaGFyKilwal9wb29sX2FsbG9jKHBvb2wsIGJ1ZnNpemUpOworCisgICAgLy8gQ3JlYXRlIGxpc3RlbmVyIHNvY2tldAorICAgIHJjID0gcGpfc29ja19zb2NrZXQocGpfQUZfSU5FVCgpLCBwal9TT0NLX1NUUkVBTSgpLCAwLCAmbGlzdGVuZXIuc29jayk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3IgY3JlYXRpbmcgc29ja2V0IiwgcmMpOworICAgICAgICBzdGF0dXM9LTIwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8vIEJpbmQgbGlzdGVuZXIgc29ja2V0LgorICAgIHBqX3NvY2thZGRyX2luX2luaXQoJmxpc3RlbmVyLmFkZHIsIDAsIDApOworICAgIGlmICgocmM9cGpfc29ja19iaW5kKGxpc3RlbmVyLnNvY2ssICZsaXN0ZW5lci5hZGRyLCBzaXplb2YobGlzdGVuZXIuYWRkcikpKSAhPSAwICkgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5iaW5kIGVycm9yIiwgcmMpOworCXN0YXR1cz0tMzA7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gR2V0IGxpc3RlbmVyIGFkZHJlc3MuCisgICAgbGlzdGVuZXIuYWRkcl9sZW4gPSBzaXplb2YobGlzdGVuZXIuYWRkcik7CisgICAgcmMgPSBwal9zb2NrX2dldHNvY2tuYW1lKGxpc3RlbmVyLnNvY2ssICZsaXN0ZW5lci5hZGRyLCAmbGlzdGVuZXIuYWRkcl9sZW4pOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIGluIHBqX3NvY2tfZ2V0c29ja25hbWUoKSIsIHJjKTsKKwlzdGF0dXM9LTQwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKyAgICBsaXN0ZW5lci5hZGRyLnNpbl9hZGRyID0gcGpfaW5ldF9hZGRyKHBqX2NzdHIoJnMsICIxMjcuMC4wLjEiKSk7CisKKworICAgIC8vIFJlZ2lzdGVyIGxpc3RlbmVyIHNvY2tldC4KKyAgICByYyA9IHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayhwb29sLCBpb3F1ZSwgbGlzdGVuZXIuc29jaywgTlVMTCwgJnRlc3RfY2IsIAorCQkJCSAgJmxpc3RlbmVyLmtleSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5FUlJPUiIsIHJjKTsKKwlzdGF0dXM9LTUwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworCisgICAgLy8gTGlzdGVuZXIgc29ja2V0IGxpc3RlbigpLgorICAgIGlmIChwal9zb2NrX2xpc3RlbihsaXN0ZW5lci5zb2NrLCA1KSkgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal9zb2NrX2xpc3RlbigpIiwgcmMpOworCXN0YXR1cz0tNjA7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisKKyAgICBmb3IgKHRlc3RfbG9vcD0wOyB0ZXN0X2xvb3AgPCBURVNUX0xPT1A7ICsrdGVzdF9sb29wKSB7CisJLy8gQ2xpZW50IGNvbm5lY3QgYW5kIHNlcnZlciBhY2NlcHQuCisJZm9yIChpPTA7IGk8TUFYX1BBSVI7ICsraSkgeworCSAgICByYyA9IHBqX3NvY2tfc29ja2V0KHBqX0FGX0lORVQoKSwgcGpfU09DS19TVFJFQU0oKSwgMCwgJmNsaWVudFtpXS5zb2NrKTsKKwkgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwkJYXBwX3BlcnJvcigiLi4uZXJyb3IgY3JlYXRpbmcgc29ja2V0IiwgcmMpOworCQlzdGF0dXM9LTcwOyBnb3RvIG9uX2Vycm9yOworCSAgICB9CisKKwkgICAgcmMgPSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2socG9vbCwgaW9xdWUsIGNsaWVudFtpXS5zb2NrLCBOVUxMLCAKKwkJCQkJICAmdGVzdF9jYiwgJmNsaWVudFtpXS5rZXkpOworCSAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCQlhcHBfcGVycm9yKCIuLi5lcnJvciAiLCByYyk7CisJCXN0YXR1cz0tODA7IGdvdG8gb25fZXJyb3I7CisJICAgIH0KKworCSAgICAvLyBTZXJ2ZXIgc29ja2V0IGFjY2VwdCgpCisJICAgIHBqX2lvcXVldWVfb3Bfa2V5X2luaXQoJnNlcnZlcltpXS5hY2NlcHRfb3AsIAorCQkJCSAgIHNpemVvZihzZXJ2ZXJbaV0uYWNjZXB0X29wKSk7CisJICAgIHNlcnZlcltpXS5yZW1fYWRkcl9sZW4gPSBzaXplb2YocGpfc29ja2FkZHJfaW4pOworCSAgICBzdGF0dXMgPSBwal9pb3F1ZXVlX2FjY2VwdChsaXN0ZW5lci5rZXksICZzZXJ2ZXJbaV0uYWNjZXB0X29wLCAKKwkJCQkgICAgICAgJnNlcnZlcltpXS5zb2NrLCAmc2VydmVyW2ldLmxvY2FsX2FkZHIsIAorCQkJCSAgICAgICAmc2VydmVyW2ldLnJlbV9hZGRyLCAKKwkJCQkgICAgICAgJnNlcnZlcltpXS5yZW1fYWRkcl9sZW4pOworCSAgICBpZiAoc3RhdHVzIT1QSl9TVUNDRVNTICYmIHN0YXR1cyAhPSBQSl9FUEVORElORykgeworCQlhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal9pb3F1ZXVlX2FjY2VwdCgpIiwgcmMpOworCQlzdGF0dXM9LTkwOyBnb3RvIG9uX2Vycm9yOworCSAgICB9CisJICAgIGlmIChzdGF0dXM9PVBKX0VQRU5ESU5HKSB7CisJCSsrcGVuZGluZ19vcDsKKwkgICAgfQorCisKKwkgICAgLy8gQ2xpZW50IHNvY2tldCBjb25uZWN0KCkKKwkgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9jb25uZWN0KGNsaWVudFtpXS5rZXksICZsaXN0ZW5lci5hZGRyLCAKKwkJCQkJc2l6ZW9mKGxpc3RlbmVyLmFkZHIpKTsKKwkgICAgaWYgKHN0YXR1cyE9UEpfU1VDQ0VTUyAmJiBzdGF0dXMgIT0gUEpfRVBFTkRJTkcpIHsKKwkJYXBwX3BlcnJvcigiLi4uRVJST1IgaW4gcGpfaW9xdWV1ZV9jb25uZWN0KCkiLCByYyk7CisJCXN0YXR1cz0tMTAwOyBnb3RvIG9uX2Vycm9yOworCSAgICB9CisJICAgIGlmIChzdGF0dXM9PVBKX0VQRU5ESU5HKSB7CisJCSsrcGVuZGluZ19vcDsKKwkgICAgfQorCisJICAgIC8vIFBvbGwgdW50aWwgY29ubmVjdGlvbiBvZiB0aGlzIHBhaXIgZXN0YWJsaXNoZWQKKwkgICAgd2hpbGUgKHBlbmRpbmdfb3ApIHsKKwkJcGpfdGltZV92YWwgdGltZW91dCA9IHsxLCAwfTsKKworI2lmZGVmIFBKX1NZTUJJQU4KKwkJc3RhdHVzID0gcGpfc3ltYmlhbm9zX3BvbGwoLTEsIFBKX1RJTUVfVkFMX01TRUModGltZW91dCkpOworI2Vsc2UKKwkJc3RhdHVzID0gcGpfaW9xdWV1ZV9wb2xsKGlvcXVlLCAmdGltZW91dCk7CisjZW5kaWYKKwkJaWYgKHN0YXR1cyA+IDApIHsKKwkJICAgIGlmIChzdGF0dXMgPiBwZW5kaW5nX29wKSB7CisJCQlQSl9MT0coMywoVEhJU19GSUxFLAorCQkJCSAgIi4uLmVycm9yOiBwal9pb3F1ZXVlX3BvbGwoKSByZXR1cm5lZCAlZCAiCisJCQkJICAiKG9ubHkgZXhwZWN0aW5nICVkKSIsCisJCQkJICBzdGF0dXMsIHBlbmRpbmdfb3ApKTsKKwkJCXJldHVybiAtMTEwOworCQkgICAgfQorCQkgICAgcGVuZGluZ19vcCAtPSBzdGF0dXM7CisKKwkJICAgIGlmIChwZW5kaW5nX29wID09IDApIHsKKwkJCXN0YXR1cyA9IDA7CisJCSAgICB9CisJCX0KKwkgICAgfQorCX0KKworCS8vIFRoZXJlJ3Mgbm8gcGVuZGluZyBvcGVyYXRpb24uCisJLy8gV2hlbiB3ZSBwb2xsIHRoZSBpb3F1ZXVlLCB0aGVyZSBtdXN0IG5vdCBiZSBldmVudHMuCisJaWYgKHBlbmRpbmdfb3AgPT0gMCkgeworCSAgICBwal90aW1lX3ZhbCB0aW1lb3V0ID0gezEsIDB9OworI2lmZGVmIFBKX1NZTUJJQU4KKwkgICAgc3RhdHVzID0gcGpfc3ltYmlhbm9zX3BvbGwoLTEsIFBKX1RJTUVfVkFMX01TRUModGltZW91dCkpOworI2Vsc2UKKwkgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9wb2xsKGlvcXVlLCAmdGltZW91dCk7CisjZW5kaWYKKwkgICAgaWYgKHN0YXR1cyAhPSAwKSB7CisJCXN0YXR1cz0tMTIwOyBnb3RvIG9uX2Vycm9yOworCSAgICB9CisJfQorCisJZm9yIChpPTA7IGk8TUFYX1BBSVI7ICsraSkgeworCSAgICAvLyBDaGVjayBzZXJ2ZXIgc29ja2V0LgorCSAgICBpZiAoc2VydmVyW2ldLnNvY2sgPT0gUEpfSU5WQUxJRF9TT0NLRVQpIHsKKwkJc3RhdHVzID0gLTEzMDsKKwkJYXBwX3BlcnJvcigiLi4uYWNjZXB0KCkgZXJyb3IiLCBwal9nZXRfb3NfZXJyb3IoKSk7CisJCWdvdG8gb25fZXJyb3I7CisJICAgIH0KKworCSAgICAvLyBDaGVjayBhZGRyZXNzZXMKKwkgICAgaWYgKHNlcnZlcltpXS5sb2NhbF9hZGRyLnNpbl9mYW1pbHkgIT0gcGpfQUZfSU5FVCgpIHx8CisJCXNlcnZlcltpXS5sb2NhbF9hZGRyLnNpbl9hZGRyLnNfYWRkciA9PSAwIHx8CisJCXNlcnZlcltpXS5sb2NhbF9hZGRyLnNpbl9wb3J0ID09IDApCisJICAgIHsKKwkJYXBwX3BlcnJvcigiLi4uRVJST1IgYWRkcmVzcyBub3Qgc2V0IiwgcmMpOworCQlzdGF0dXMgPSAtMTQwOworCQlnb3RvIG9uX2Vycm9yOworCSAgICB9CisKKwkgICAgaWYgKHNlcnZlcltpXS5yZW1fYWRkci5zaW5fZmFtaWx5ICE9IHBqX0FGX0lORVQoKSB8fAorCQlzZXJ2ZXJbaV0ucmVtX2FkZHIuc2luX2FkZHIuc19hZGRyID09IDAgfHwKKwkJc2VydmVyW2ldLnJlbV9hZGRyLnNpbl9wb3J0ID09IDApCisJICAgIHsKKwkJYXBwX3BlcnJvcigiLi4uRVJST1IgYWRkcmVzcyBub3Qgc2V0IiwgcmMpOworCQlzdGF0dXMgPSAtMTUwOworCQlnb3RvIG9uX2Vycm9yOworCSAgICB9CisKKworCSAgICAvLyBSZWdpc3RlciBuZXdseSBhY2NlcHRlZCBzb2NrZXQuCisJICAgIHJjID0gcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrKHBvb2wsIGlvcXVlLCBzZXJ2ZXJbaV0uc29jaywgTlVMTCwKKwkJCQkJICAmdGVzdF9jYiwgJnNlcnZlcltpXS5rZXkpOworCSAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCQlhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2siLCByYyk7CisJCXN0YXR1cyA9IC0xNjA7CisJCWdvdG8gb25fZXJyb3I7CisJICAgIH0KKworCSAgICAvLyBUZXN0IHNlbmQgYW5kIHJlY2VpdmUuCisJICAgIHRfZWxhcHNlZC51MzIubG8gPSAwOworCSAgICBzdGF0dXMgPSBzZW5kX3JlY3ZfdGVzdChpb3F1ZSwgc2VydmVyW2ldLmtleSwgY2xpZW50W2ldLmtleSwgCisJCQkJICAgIHNlbmRfYnVmLCByZWN2X2J1ZiwgYnVmc2l6ZSwgJnRfZWxhcHNlZCk7CisJICAgIGlmIChzdGF0dXMgIT0gMCkgeworCQlnb3RvIG9uX2Vycm9yOworCSAgICB9CisJfQorCisJLy8gU3VjY2VzcworCXN0YXR1cyA9IDA7CisKKwlmb3IgKGk9MDsgaTxNQVhfUEFJUjsgKytpKSB7CisJICAgIGlmIChzZXJ2ZXJbaV0ua2V5ICE9IE5VTEwpIHsKKwkJcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKHNlcnZlcltpXS5rZXkpOworCQlzZXJ2ZXJbaV0ua2V5ID0gTlVMTDsKKwkJc2VydmVyW2ldLnNvY2sgPSBQSl9JTlZBTElEX1NPQ0tFVDsKKwkgICAgfSBlbHNlIGlmIChzZXJ2ZXJbaV0uc29jayAhPSBQSl9JTlZBTElEX1NPQ0tFVCkgeworCQlwal9zb2NrX2Nsb3NlKHNlcnZlcltpXS5zb2NrKTsKKwkJc2VydmVyW2ldLnNvY2sgPSBQSl9JTlZBTElEX1NPQ0tFVDsKKwkgICAgfQorCisJICAgIGlmIChjbGllbnRbaV0ua2V5ICE9IE5VTEwpIHsKKwkJcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKGNsaWVudFtpXS5rZXkpOworCQljbGllbnRbaV0ua2V5ID0gTlVMTDsKKwkJY2xpZW50W2ldLnNvY2sgPSBQSl9JTlZBTElEX1NPQ0tFVDsKKwkgICAgfSBlbHNlIGlmIChjbGllbnRbaV0uc29jayAhPSBQSl9JTlZBTElEX1NPQ0tFVCkgeworCQlwal9zb2NrX2Nsb3NlKGNsaWVudFtpXS5zb2NrKTsKKwkJY2xpZW50W2ldLnNvY2sgPSBQSl9JTlZBTElEX1NPQ0tFVDsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICBzdGF0dXMgPSAwOworCitvbl9lcnJvcjoKKyAgICBmb3IgKGk9MDsgaTxNQVhfUEFJUjsgKytpKSB7CisJaWYgKHNlcnZlcltpXS5rZXkgIT0gTlVMTCkgeworCSAgICBwal9pb3F1ZXVlX3VucmVnaXN0ZXIoc2VydmVyW2ldLmtleSk7CisJICAgIHNlcnZlcltpXS5rZXkgPSBOVUxMOworCSAgICBzZXJ2ZXJbaV0uc29jayA9IFBKX0lOVkFMSURfU09DS0VUOworCX0gZWxzZSBpZiAoc2VydmVyW2ldLnNvY2sgIT0gUEpfSU5WQUxJRF9TT0NLRVQpIHsKKwkgICAgcGpfc29ja19jbG9zZShzZXJ2ZXJbaV0uc29jayk7CisJICAgIHNlcnZlcltpXS5zb2NrID0gUEpfSU5WQUxJRF9TT0NLRVQ7CisJfQorCisJaWYgKGNsaWVudFtpXS5rZXkgIT0gTlVMTCkgeworCSAgICBwal9pb3F1ZXVlX3VucmVnaXN0ZXIoY2xpZW50W2ldLmtleSk7CisJICAgIGNsaWVudFtpXS5rZXkgPSBOVUxMOworCSAgICBzZXJ2ZXJbaV0uc29jayA9IFBKX0lOVkFMSURfU09DS0VUOworCX0gZWxzZSBpZiAoY2xpZW50W2ldLnNvY2sgIT0gUEpfSU5WQUxJRF9TT0NLRVQpIHsKKwkgICAgcGpfc29ja19jbG9zZShjbGllbnRbaV0uc29jayk7CisJICAgIGNsaWVudFtpXS5zb2NrID0gUEpfSU5WQUxJRF9TT0NLRVQ7CisJfQorICAgIH0KKworICAgIGlmIChsaXN0ZW5lci5rZXkpIHsKKwlwal9pb3F1ZXVlX3VucmVnaXN0ZXIobGlzdGVuZXIua2V5KTsKKwlsaXN0ZW5lci5rZXkgPSBOVUxMOworICAgIH0gZWxzZSBpZiAobGlzdGVuZXIuc29jayAhPSBQSl9JTlZBTElEX1NPQ0tFVCkgeworCXBqX3NvY2tfY2xvc2UobGlzdGVuZXIuc29jayk7CisJbGlzdGVuZXIuc29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIH0KKworICAgIGlmIChpb3F1ZSAhPSBOVUxMKQorCXBqX2lvcXVldWVfZGVzdHJveShpb3F1ZSk7CisgICAgcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworICAgIHJldHVybiBzdGF0dXM7CisKK30KKworCitzdGF0aWMgaW50IHRjcF9pb3F1ZXVlX3Rlc3RfaW1wbChwal9ib29sX3QgYWxsb3dfY29uY3VyKQoreworICAgIGludCBzdGF0dXM7CisKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi50ZXN0aW5nIHdpdGggY29uY3VyZW5jeT0lZCIsIGFsbG93X2NvbmN1cikpOworCisgICAgUEpfTE9HKDMsIChUSElTX0ZJTEUsICIuLiVzIGNvbXBsaWFuY2UgdGVzdCAwIChzdWNjZXNzIHNjZW5hcmlvKSIsCisJICAgICAgIHBqX2lvcXVldWVfbmFtZSgpKSk7CisgICAgaWYgKChzdGF0dXM9Y29tcGxpYW5jZV90ZXN0XzAoYWxsb3dfY29uY3VyKSkgIT0gMCkgeworCVBKX0xPRygxLCAoVEhJU19GSUxFLCAiLi4uLkZBSUxFRCAoc3RhdHVzPSVkKVxuIiwgc3RhdHVzKSk7CisJcmV0dXJuIHN0YXR1czsKKyAgICB9CisgICAgUEpfTE9HKDMsIChUSElTX0ZJTEUsICIuLiVzIGNvbXBsaWFuY2UgdGVzdCAxIChmYWlsZWQgc2NlbmFyaW8pIiwKKyAgICAgICAgICAgICAgIHBqX2lvcXVldWVfbmFtZSgpKSk7CisgICAgaWYgKChzdGF0dXM9Y29tcGxpYW5jZV90ZXN0XzEoYWxsb3dfY29uY3VyKSkgIT0gMCkgeworCVBKX0xPRygxLCAoVEhJU19GSUxFLCAiLi4uLkZBSUxFRCAoc3RhdHVzPSVkKVxuIiwgc3RhdHVzKSk7CisJcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICBQSl9MT0coMywgKFRISVNfRklMRSwgIi4uJXMgY29tcGxpYW5jZSB0ZXN0IDIgKHJlcGVhdGVkIGFjY2VwdCkiLAorICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9uYW1lKCkpKTsKKyAgICBpZiAoKHN0YXR1cz1jb21wbGlhbmNlX3Rlc3RfMihhbGxvd19jb25jdXIpKSAhPSAwKSB7CisJUEpfTE9HKDEsIChUSElTX0ZJTEUsICIuLi4uRkFJTEVEIChzdGF0dXM9JWQpXG4iLCBzdGF0dXMpKTsKKwlyZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbnQgdGNwX2lvcXVldWVfdGVzdCgpCit7CisgICAgaW50IHJjOworCisgICAgcmMgPSB0Y3BfaW9xdWV1ZV90ZXN0X2ltcGwoUEpfVFJVRSk7CisgICAgaWYgKHJjICE9IDApCisJcmV0dXJuIHJjOworCisgICAgcmMgPSB0Y3BfaW9xdWV1ZV90ZXN0X2ltcGwoUEpfRkFMU0UpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIHJldHVybiAwOworfQorCisjZW5kaWYJLyogUEpfSEFTX1RDUCAqLworCisKKyNlbHNlCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV91aXFfdGNwOworI2VuZGlmCS8qIElOQ0xVREVfVENQX0lPUVVFVUVfVEVTVCAqLworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2lvcV91ZHAuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2lvcV91ZHAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzY1NmZmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvaW9xX3VkcC5jCkBAIC0wLDAgKzEsOTUzIEBACisvKiAkSWQ6IGlvcV91ZHAuYyA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKworLyoqCisgKiBccGFnZSBwYWdlX3BqbGliX2lvcXVldWVfdWRwX3Rlc3QgVGVzdDogSS9PIFF1ZXVlIChVRFApCisgKgorICogVGhpcyBmaWxlIHByb3ZpZGVzIGltcGxlbWVudGF0aW9uIHRvIHRlc3QgdGhlCisgKiBmdW5jdGlvbmFsaXR5IG9mIHRoZSBJL08gcXVldWUgd2hlbiBVRFAgc29ja2V0IGlzIHVzZWQuCisgKgorICoKKyAqIFRoaXMgZmlsZSBpcyA8Yj5wamxpYi10ZXN0L2lvcV91ZHAuYzwvYj4KKyAqCisgKiBcaW5jbHVkZSBwamxpYi10ZXN0L2lvcV91ZHAuYworICovCisKKworI2lmIElOQ0xVREVfVURQX0lPUVVFVUVfVEVTVAorCisjaW5jbHVkZSA8cGpsaWIuaD4KKworI2luY2x1ZGUgPHBqL2NvbXBhdC9zb2NrZXQuaD4KKworI2RlZmluZSBUSElTX0ZJTEUJICAgICJ0ZXN0X3VkcCIKKyNkZWZpbmUgUE9SVAkJICAgIDUxMjMzCisjZGVmaW5lIExPT1AJCSAgICAyCisvLy8jZGVmaW5lIExPT1AJCSAgICAyCisjZGVmaW5lIEJVRl9NSU5fU0laRQkgICAgMzIKKyNkZWZpbmUgQlVGX01BWF9TSVpFCSAgICAyMDQ4CisjZGVmaW5lIFNPQ0tfSU5BQ1RJVkVfTUlOICAgKDEpCisjZGVmaW5lIFNPQ0tfSU5BQ1RJVkVfTUFYICAgKFBKX0lPUVVFVUVfTUFYX0hBTkRMRVMgLSAyKQorI2RlZmluZSBQT09MX1NJWkUJICAgICgyKkJVRl9NQVhfU0laRSArIFNPQ0tfSU5BQ1RJVkVfTUFYKjEyOCArIDIwNDgpCisKKyN1bmRlZiBUUkFDRV8KKyNkZWZpbmUgVFJBQ0VfKG1zZykJICAgIFBKX0xPRygzLChUSElTX0ZJTEUsIi4uLi4uIiBtc2cpKQorCisjaWYgMAorIyAgZGVmaW5lIFRSQUNFX18oYXJncykJICAgIFBKX0xPRygzLGFyZ3MpCisjZWxzZQorIyAgZGVmaW5lIFRSQUNFX18oYXJncykKKyNlbmRpZgorCisKK3N0YXRpYyBwal9zc2l6ZV90ICAgICAgICAgICAgY2FsbGJhY2tfcmVhZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja193cml0ZV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19hY2NlcHRfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19jb25uZWN0X3N0YXR1czsKK3N0YXRpYyBwal9pb3F1ZXVlX2tleV90ICAgICAqY2FsbGJhY2tfcmVhZF9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxiYWNrX3dyaXRlX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbGJhY2tfYWNjZXB0X2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbGJhY2tfY29ubmVjdF9rZXk7CitzdGF0aWMgcGpfaW9xdWV1ZV9vcF9rZXlfdCAgKmNhbGxiYWNrX3JlYWRfb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxiYWNrX3dyaXRlX29wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjYWxsYmFja19hY2NlcHRfb3A7CisKK3N0YXRpYyB2b2lkIG9uX2lvcXVldWVfcmVhZChwal9pb3F1ZXVlX2tleV90ICprZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zc2l6ZV90IGJ5dGVzX3JlYWQpCit7CisgICAgY2FsbGJhY2tfcmVhZF9rZXkgPSBrZXk7CisgICAgY2FsbGJhY2tfcmVhZF9vcCA9IG9wX2tleTsKKyAgICBjYWxsYmFja19yZWFkX3NpemUgPSBieXRlc19yZWFkOworICAgIFRSQUNFX18oKFRISVNfRklMRSwgIiAgICAgY2FsbGJhY2tfcmVhZF9rZXkgPSAlcCwgYnl0ZXM9JWQiLCAKKwkgICAgIGtleSwgYnl0ZXNfcmVhZCkpOworfQorCitzdGF0aWMgdm9pZCBvbl9pb3F1ZXVlX3dyaXRlKHBqX2lvcXVldWVfa2V5X3QgKmtleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCBieXRlc193cml0dGVuKQoreworICAgIGNhbGxiYWNrX3dyaXRlX2tleSA9IGtleTsKKyAgICBjYWxsYmFja193cml0ZV9vcCA9IG9wX2tleTsKKyAgICBjYWxsYmFja193cml0ZV9zaXplID0gYnl0ZXNfd3JpdHRlbjsKK30KKworc3RhdGljIHZvaWQgb25faW9xdWV1ZV9hY2NlcHQocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgKm9wX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NvY2tfdCBzb2NrLCBpbnQgc3RhdHVzKQoreworICAgIFBKX1VOVVNFRF9BUkcoc29jayk7CisgICAgY2FsbGJhY2tfYWNjZXB0X2tleSA9IGtleTsKKyAgICBjYWxsYmFja19hY2NlcHRfb3AgPSBvcF9rZXk7CisgICAgY2FsbGJhY2tfYWNjZXB0X3N0YXR1cyA9IHN0YXR1czsKK30KKworc3RhdGljIHZvaWQgb25faW9xdWV1ZV9jb25uZWN0KHBqX2lvcXVldWVfa2V5X3QgKmtleSwgaW50IHN0YXR1cykKK3sKKyAgICBjYWxsYmFja19jb25uZWN0X2tleSA9IGtleTsKKyAgICBjYWxsYmFja19jb25uZWN0X3N0YXR1cyA9IHN0YXR1czsKK30KKworc3RhdGljIHBqX2lvcXVldWVfY2FsbGJhY2sgdGVzdF9jYiA9IAoreworICAgICZvbl9pb3F1ZXVlX3JlYWQsCisgICAgJm9uX2lvcXVldWVfd3JpdGUsCisgICAgJm9uX2lvcXVldWVfYWNjZXB0LAorICAgICZvbl9pb3F1ZXVlX2Nvbm5lY3QsCit9OworCisjaWYgZGVmaW5lZChQSl9XSU4zMikgfHwgZGVmaW5lZChQSl9XSU42NCkKKyMgIGRlZmluZSBTX0FERFIgU191bi5TX2FkZHIKKyNlbHNlCisjICBkZWZpbmUgU19BRERSIHNfYWRkcgorI2VuZGlmCisKKy8qCisgKiBjb21wbGlhbmNlX3Rlc3QoKQorICogVG8gdGVzdCB0aGF0IHRoZSBiYXNpYyBJT1F1ZXVlIGZ1bmN0aW9uYWxpdHkgd29ya3MuIEl0IHdpbGwganVzdCBleGNoYW5nZQorICogZGF0YSBiZXR3ZWVuIHR3byBzb2NrZXRzLgorICovIAorc3RhdGljIGludCBjb21wbGlhbmNlX3Rlc3QocGpfYm9vbF90IGFsbG93X2NvbmN1cikKK3sKKyAgICBwal9zb2NrX3Qgc3NvY2s9LTEsIGNzb2NrPS0xOworICAgIHBqX3NvY2thZGRyX2luIGFkZHIsIGRzdF9hZGRyOworICAgIGludCBhZGRybGVuOworICAgIHBqX3Bvb2xfdCAqcG9vbCA9IE5VTEw7CisgICAgY2hhciAqc2VuZF9idWYsICpyZWN2X2J1ZjsKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVlID0gTlVMTDsKKyAgICBwal9pb3F1ZXVlX2tleV90ICpza2V5ID0gTlVMTCwgKmNrZXkgPSBOVUxMOworICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgcmVhZF9vcCwgd3JpdGVfb3A7CisgICAgaW50IGJ1ZnNpemUgPSBCVUZfTUlOX1NJWkU7CisgICAgcGpfc3NpemVfdCBieXRlczsKKyAgICBpbnQgc3RhdHVzID0gLTE7CisgICAgcGpfc3RyX3QgdGVtcDsKKyAgICBwal9ib29sX3Qgc2VuZF9wZW5kaW5nLCByZWN2X3BlbmRpbmc7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICBwal9zZXRfb3NfZXJyb3IoUEpfU1VDQ0VTUyk7CisKKyAgICAvLyBDcmVhdGUgcG9vbC4KKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCBOVUxMLCBQT09MX1NJWkUsIDQwMDAsIE5VTEwpOworCisgICAgLy8gQWxsb2NhdGUgYnVmZmVycyBmb3Igc2VuZCBhbmQgcmVjZWl2ZS4KKyAgICBzZW5kX2J1ZiA9IChjaGFyKilwal9wb29sX2FsbG9jKHBvb2wsIGJ1ZnNpemUpOworICAgIHJlY3ZfYnVmID0gKGNoYXIqKXBqX3Bvb2xfYWxsb2MocG9vbCwgYnVmc2l6ZSk7CisKKyAgICAvLyBBbGxvY2F0ZSBzb2NrZXRzIGZvciBzZW5kaW5nIGFuZCByZWNlaXZpbmcuCisgICAgVFJBQ0VfKCJjcmVhdGluZyBzb2NrZXRzLi4uIik7CisgICAgcmMgPSBwal9zb2NrX3NvY2tldChwal9BRl9JTkVUKCksIHBqX1NPQ0tfREdSQU0oKSwgMCwgJnNzb2NrKTsKKyAgICBpZiAocmM9PVBKX1NVQ0NFU1MpCisgICAgICAgIHJjID0gcGpfc29ja19zb2NrZXQocGpfQUZfSU5FVCgpLCBwal9TT0NLX0RHUkFNKCksIDAsICZjc29jayk7CisgICAgZWxzZQorICAgICAgICBjc29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIGluIHBqX3NvY2tfc29ja2V0KCkiLCByYyk7CisJc3RhdHVzPS0xOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8vIEJpbmQgc2VydmVyIHNvY2tldC4KKyAgICBUUkFDRV8oImJpbmQgc29ja2V0Li4uIik7CisgICAgcGpfYnplcm8oJmFkZHIsIHNpemVvZihhZGRyKSk7CisgICAgYWRkci5zaW5fZmFtaWx5ID0gcGpfQUZfSU5FVCgpOworICAgIGFkZHIuc2luX3BvcnQgPSBwal9odG9ucyhQT1JUKTsKKyAgICBpZiAocGpfc29ja19iaW5kKHNzb2NrLCAmYWRkciwgc2l6ZW9mKGFkZHIpKSkgeworCXN0YXR1cz0tMTA7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIEkvTyBRdWV1ZS4KKyAgICBUUkFDRV8oImNyZWF0ZSBpb3F1ZXVlLi4uIik7CisgICAgcmMgPSBwal9pb3F1ZXVlX2NyZWF0ZShwb29sLCBQSl9JT1FVRVVFX01BWF9IQU5ETEVTLCAmaW9xdWUpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJc3RhdHVzPS0yMDsgZ290byBvbl9lcnJvcjsKKyAgICB9CisKKyAgICAvLyBTZXQgY29uY3VycmVuY3kKKyAgICBUUkFDRV8oInNldCBjb25jdXJyZW5jeS4uLiIpOworICAgIHJjID0gcGpfaW9xdWV1ZV9zZXRfZGVmYXVsdF9jb25jdXJyZW5jeShpb3F1ZSwgYWxsb3dfY29uY3VyKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCXN0YXR1cz0tMjE7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gUmVnaXN0ZXIgc2VydmVyIGFuZCBjbGllbnQgc29ja2V0LgorICAgIC8vIFdlIHB1dCB0aGlzIGFmdGVyIGluYWN0aXZpdHkgc29ja2V0LCBob3BlZnVsbHkgdGhpcyBjYW4gcmVwcmVzZW50IHRoZQorICAgIC8vIHdvcnN0IHdhaXRpbmcgdGltZS4KKyAgICBUUkFDRV8oInJlZ2lzdGVyaW5nIGZpcnN0IHNvY2tldHMuLi4iKTsKKyAgICByYyA9IHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayhwb29sLCBpb3F1ZSwgc3NvY2ssIE5VTEwsIAorCQkJICAgICAgICAgICZ0ZXN0X2NiLCAmc2tleSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5lcnJvcigxMCk6IGlvcXVldWVfcmVnaXN0ZXIgZXJyb3IiLCByYyk7CisJc3RhdHVzPS0yNTsgZ290byBvbl9lcnJvcjsKKyAgICB9CisgICAgVFJBQ0VfKCJyZWdpc3RlcmluZyBzZWNvbmQgc29ja2V0cy4uLiIpOworICAgIHJjID0gcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrKCBwb29sLCBpb3F1ZSwgY3NvY2ssIE5VTEwsIAorCQkJICAgICAgICAgICAmdGVzdF9jYiwgJmNrZXkpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiLi4uZXJyb3IoMTEpOiBpb3F1ZXVlX3JlZ2lzdGVyIGVycm9yIiwgcmMpOworCXN0YXR1cz0tMjY7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gUmFuZG9taXplIHNlbmRfYnVmLgorICAgIHBqX2NyZWF0ZV9yYW5kb21fc3RyaW5nKHNlbmRfYnVmLCBidWZzaXplKTsKKworICAgIC8vIFJlZ2lzdGVyIHJlYWRpbmcgZnJvbSBpb3F1ZXVlLgorICAgIFRSQUNFXygic3RhcnQgcmVjdmZyb20uLi4iKTsKKyAgICBwal9iemVybygmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKyAgICBhZGRybGVuID0gc2l6ZW9mKGFkZHIpOworICAgIGJ5dGVzID0gYnVmc2l6ZTsKKyAgICByYyA9IHBqX2lvcXVldWVfcmVjdmZyb20oc2tleSwgJnJlYWRfb3AsIHJlY3ZfYnVmLCAmYnl0ZXMsIDAsCisJCQkgICAgICZhZGRyLCAmYWRkcmxlbik7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MgJiYgcmMgIT0gUEpfRVBFTkRJTkcpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IHBqX2lvcXVldWVfcmVjdmZyb20iLCByYyk7CisJc3RhdHVzPS0yODsgZ290byBvbl9lcnJvcjsKKyAgICB9IGVsc2UgaWYgKHJjID09IFBKX0VQRU5ESU5HKSB7CisJcmVjdl9wZW5kaW5nID0gMTsKKwlQSl9MT0coMywgKFRISVNfRklMRSwgCisJCSAgICIuLi4uLi5vazogcmVjdmZyb20gcmV0dXJuZWQgcGVuZGluZyIpKTsKKyAgICB9IGVsc2UgeworCVBKX0xPRygzLCAoVEhJU19GSUxFLCAKKwkJICAgIi4uLi4uLmVycm9yOiByZWN2ZnJvbSByZXR1cm5lZCBpbW1lZGlhdGUgb2shIikpOworCXN0YXR1cz0tMjk7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gU2V0IGRlc3RpbmF0aW9uIGFkZHJlc3MgdG8gc2VuZCB0aGUgcGFja2V0LgorICAgIFRSQUNFXygic2V0IGRlc3RpbmF0aW9uIGFkZHJlc3MuLi4iKTsKKyAgICB0ZW1wID0gcGpfc3RyKCIxMjcuMC4wLjEiKTsKKyAgICBpZiAoKHJjPXBqX3NvY2thZGRyX2luX2luaXQoJmRzdF9hZGRyLCAmdGVtcCwgUE9SVCkpICE9IDApIHsKKwlhcHBfcGVycm9yKCIuLi5lcnJvcjogdW5hYmxlIHRvIHJlc29sdmUgMTI3LjAuMC4xIiwgcmMpOworCXN0YXR1cz0tMjkwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8vIFdyaXRlIG11c3QgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMuCisgICAgVFJBQ0VfKCJzdGFydCBzZW5kdG8uLi4iKTsKKyAgICBieXRlcyA9IGJ1ZnNpemU7CisgICAgcmMgPSBwal9pb3F1ZXVlX3NlbmR0byhja2V5LCAmd3JpdGVfb3AsIHNlbmRfYnVmLCAmYnl0ZXMsIDAsICZkc3RfYWRkciwgCisJCQkgICBzaXplb2YoZHN0X2FkZHIpKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUyAmJiByYyAhPSBQSl9FUEVORElORykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfaW9xdWV1ZV9zZW5kdG8iLCByYyk7CisJc3RhdHVzPS0zMDsgZ290byBvbl9lcnJvcjsKKyAgICB9IGVsc2UgaWYgKHJjID09IFBKX0VQRU5ESU5HKSB7CisJc2VuZF9wZW5kaW5nID0gMTsKKwlQSl9MT0coMywgKFRISVNfRklMRSwgCisJCSAgICIuLi4uLi5vazogc2VuZHRvIHJldHVybmVkIHBlbmRpbmciKSk7CisgICAgfSBlbHNlIHsKKwlzZW5kX3BlbmRpbmcgPSAwOworCVBKX0xPRygzLCAoVEhJU19GSUxFLCAKKwkJICAgIi4uLi4uLm9rOiBzZW5kdG8gcmV0dXJuZWQgaW1tZWRpYXRlIHN1Y2Nlc3MiKSk7CisgICAgfQorCisgICAgLy8gcmVzZXQgY2FsbGJhY2sgdmFyaWFibGVzLgorICAgIGNhbGxiYWNrX3JlYWRfc2l6ZSA9IGNhbGxiYWNrX3dyaXRlX3NpemUgPSAwOworICAgIGNhbGxiYWNrX2FjY2VwdF9zdGF0dXMgPSBjYWxsYmFja19jb25uZWN0X3N0YXR1cyA9IC0yOworICAgIGNhbGxiYWNrX3JlYWRfa2V5ID0gY2FsbGJhY2tfd3JpdGVfa2V5ID0gCisgICAgICAgIGNhbGxiYWNrX2FjY2VwdF9rZXkgPSBjYWxsYmFja19jb25uZWN0X2tleSA9IE5VTEw7CisgICAgY2FsbGJhY2tfcmVhZF9vcCA9IGNhbGxiYWNrX3dyaXRlX29wID0gTlVMTDsKKworICAgIC8vIFBvbGwgaWYgcGVuZGluZy4KKyAgICB3aGlsZSAoc2VuZF9wZW5kaW5nIHx8IHJlY3ZfcGVuZGluZykgeworCWludCByYzsKKwlwal90aW1lX3ZhbCB0aW1lb3V0ID0geyA1LCAwIH07CisKKwlUUkFDRV8oInBvbGwuLi4iKTsKKyNpZmRlZiBQSl9TWU1CSUFOCisJcmMgPSBwal9zeW1iaWFub3NfcG9sbCgtMSwgUEpfVElNRV9WQUxfTVNFQyh0aW1lb3V0KSk7CisjZWxzZQorCXJjID0gcGpfaW9xdWV1ZV9wb2xsKGlvcXVlLCAmdGltZW91dCk7CisjZW5kaWYKKworCWlmIChyYyA9PSAwKSB7CisJICAgIFBKX0xPRygxLChUSElTX0ZJTEUsICIuLi5FUlJPUjogdGltZWQgb3V0Li4uIikpOworCSAgICBzdGF0dXM9LTQ1OyBnb3RvIG9uX2Vycm9yOworICAgICAgICB9IGVsc2UgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uRVJST1IgaW4gaW9xdWV1ZV9wb2xsKCkiLCAtcmMpOworCSAgICBzdGF0dXM9LTUwOyBnb3RvIG9uX2Vycm9yOworCX0KKworCWlmIChjYWxsYmFja19yZWFkX2tleSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2tfcmVhZF9zaXplICE9IGJ1ZnNpemUpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXM9LTYxOyBnb3RvIG9uX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNhbGxiYWNrX3JlYWRfa2V5ICE9IHNrZXkpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXM9LTY1OyBnb3RvIG9uX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNhbGxiYWNrX3JlYWRfb3AgIT0gJnJlYWRfb3ApIHsKKyAgICAgICAgICAgICAgICBzdGF0dXM9LTY2OyBnb3RvIG9uX2Vycm9yOworICAgICAgICAgICAgfQorCisJICAgIGlmIChwal9tZW1jbXAoc2VuZF9idWYsIHJlY3ZfYnVmLCBidWZzaXplKSAhPSAwKSB7CisJCXN0YXR1cz0tNjc7IGdvdG8gb25fZXJyb3I7CisJICAgIH0KKwkgICAgaWYgKGFkZHJsZW4gIT0gc2l6ZW9mKHBqX3NvY2thZGRyX2luKSkgeworCQlzdGF0dXM9LTY4OyBnb3RvIG9uX2Vycm9yOworCSAgICB9CisJICAgIGlmIChhZGRyLnNpbl9mYW1pbHkgIT0gcGpfQUZfSU5FVCgpKSB7CisJCXN0YXR1cz0tNjk7IGdvdG8gb25fZXJyb3I7CisJICAgIH0KKworCisJICAgIHJlY3ZfcGVuZGluZyA9IDA7CisJfSAKKworICAgICAgICBpZiAoY2FsbGJhY2tfd3JpdGVfa2V5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChjYWxsYmFja193cml0ZV9zaXplICE9IGJ1ZnNpemUpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXM9LTczOyBnb3RvIG9uX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNhbGxiYWNrX3dyaXRlX2tleSAhPSBja2V5KSB7CisgICAgICAgICAgICAgICAgc3RhdHVzPS03NTsgZ290byBvbl9lcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjYWxsYmFja193cml0ZV9vcCAhPSAmd3JpdGVfb3ApIHsKKyAgICAgICAgICAgICAgICBzdGF0dXM9LTc2OyBnb3RvIG9uX2Vycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZW5kX3BlbmRpbmcgPSAwOworCX0KKyAgICB9IAorICAgIAorICAgIC8vIFN1Y2Nlc3MKKyAgICBzdGF0dXMgPSAwOworCitvbl9lcnJvcjoKKyAgICBpZiAoc2tleSkKKyAgICAJcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKHNrZXkpOworICAgIGVsc2UgaWYgKHNzb2NrICE9IC0xKQorCXBqX3NvY2tfY2xvc2Uoc3NvY2spOworICAgIAorICAgIGlmIChja2V5KQorICAgIAlwal9pb3F1ZXVlX3VucmVnaXN0ZXIoY2tleSk7CisgICAgZWxzZSBpZiAoY3NvY2sgIT0gLTEpCisJcGpfc29ja19jbG9zZShjc29jayk7CisgICAgCisgICAgaWYgKGlvcXVlICE9IE5VTEwpCisJcGpfaW9xdWV1ZV9kZXN0cm95KGlvcXVlKTsKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisgICAgcmV0dXJuIHN0YXR1czsKKworfQorCisKK3N0YXRpYyB2b2lkIG9uX3JlYWRfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCBieXRlc19yZWFkKQoreworICAgIHVuc2lnbmVkICpwX3BhY2tldF9jbnQgPSAodW5zaWduZWQqKSBwal9pb3F1ZXVlX2dldF91c2VyX2RhdGEoa2V5KTsKKworICAgIFBKX1VOVVNFRF9BUkcob3Bfa2V5KTsKKyAgICBQSl9VTlVTRURfQVJHKGJ5dGVzX3JlYWQpOworCisgICAgKCpwX3BhY2tldF9jbnQpKys7Cit9CisKKy8qCisgKiB1bnJlZ2lzdGVyX3Rlc3QoKQorICogQ2hlY2sgaWYgY2FsbGJhY2sgaXMgc3RpbGwgY2FsbGVkIGFmdGVyIHNvY2tldCBoYXMgYmVlbiB1bnJlZ2lzdGVyZWQgb3IgCisgKiBjbG9zZWQuCisgKi8gCitzdGF0aWMgaW50IHVucmVnaXN0ZXJfdGVzdChwal9ib29sX3QgYWxsb3dfY29uY3VyKQoreworICAgIGVudW0geyBSUE9SVCA9IDUwMDAwLCBTUE9SVCA9IDUwMDAxIH07CisgICAgcGpfcG9vbF90ICpwb29sOworICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZTsKKyAgICBwal9zb2NrX3Qgc3NvY2s7CisgICAgcGpfc29ja190IHJzb2NrOworICAgIGludCBhZGRybGVuOworICAgIHBqX3NvY2thZGRyX2luIGFkZHI7CisgICAgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5OworICAgIHBqX2lvcXVldWVfb3Bfa2V5X3Qgb3BrZXk7CisgICAgcGpfaW9xdWV1ZV9jYWxsYmFjayBjYjsKKyAgICB1bnNpZ25lZCBwYWNrZXRfY250OworICAgIGNoYXIgc2VuZGJ1ZlsxMF0sIHJlY3ZidWZbMTBdOworICAgIHBqX3NzaXplX3QgYnl0ZXM7CisgICAgcGpfdGltZV92YWwgdGltZW91dDsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCAidGVzdCIsIDQwMDAsIDQwMDAsIE5VTEwpOworICAgIGlmICghcG9vbCkgeworCWFwcF9wZXJyb3IoIlVuYWJsZSB0byBjcmVhdGUgcG9vbCIsIFBKX0VOT01FTSk7CisJcmV0dXJuIC0xMDA7CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9jcmVhdGUocG9vbCwgMTYsICZpb3F1ZXVlKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCJFcnJvciBjcmVhdGluZyBpb3F1ZXVlIiwgc3RhdHVzKTsKKwlyZXR1cm4gLTExMDsKKyAgICB9CisKKyAgICAvLyBTZXQgY29uY3VycmVuY3kKKyAgICBUUkFDRV8oInNldCBjb25jdXJyZW5jeS4uLiIpOworICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfc2V0X2RlZmF1bHRfY29uY3VycmVuY3koaW9xdWV1ZSwgYWxsb3dfY29uY3VyKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlyZXR1cm4gLTExMjsKKyAgICB9CisKKyAgICAvKiBDcmVhdGUgc2VuZGVyIHNvY2tldCAqLworICAgIHN0YXR1cyA9IGFwcF9zb2NrZXQocGpfQUZfSU5FVCgpLCBwal9TT0NLX0RHUkFNKCksIDAsIFNQT1JULCAmc3NvY2spOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIkVycm9yIGluaXRpYWxpemluZyBzb2NrZXQiLCBzdGF0dXMpOworCXJldHVybiAtMTIwOworICAgIH0KKworICAgIC8qIENyZWF0ZSByZWNlaXZlciBzb2NrZXQuICovCisgICAgc3RhdHVzID0gYXBwX3NvY2tldChwal9BRl9JTkVUKCksIHBqX1NPQ0tfREdSQU0oKSwgMCwgUlBPUlQsICZyc29jayk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiRXJyb3IgaW5pdGlhbGl6aW5nIHNvY2tldCIsIHN0YXR1cyk7CisJcmV0dXJuIC0xMzA7CisgICAgfQorCisgICAgLyogUmVnaXN0ZXIgcnNvY2sgdG8gaW9xdWV1ZS4gKi8KKyAgICBwal9iemVybygmY2IsIHNpemVvZihjYikpOworICAgIGNiLm9uX3JlYWRfY29tcGxldGUgPSAmb25fcmVhZF9jb21wbGV0ZTsKKyAgICBwYWNrZXRfY250ID0gMDsKKyAgICBzdGF0dXMgPSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2socG9vbCwgaW9xdWV1ZSwgcnNvY2ssICZwYWNrZXRfY250LAorCQkJCSAgICAgICZjYiwgJmtleSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiRXJyb3IgcmVnaXN0ZXJpbmcgdG8gaW9xdWV1ZSIsIHN0YXR1cyk7CisJcmV0dXJuIC0xNDA7CisgICAgfQorCisgICAgLyogSW5pdCBvcGVyYXRpb24ga2V5LiAqLworICAgIHBqX2lvcXVldWVfb3Bfa2V5X2luaXQoJm9wa2V5LCBzaXplb2Yob3BrZXkpKTsKKworICAgIC8qIFN0YXJ0IHJlYWRpbmcuICovCisgICAgYnl0ZXMgPSBzaXplb2YocmVjdmJ1Zik7CisgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9yZWN2KCBrZXksICZvcGtleSwgcmVjdmJ1ZiwgJmJ5dGVzLCAwKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisJYXBwX3BlcnJvcigiRXhwZWN0aW5nIFBKX0VQRU5ESU5HLCBidXQgZ290IHRoaXMiLCBzdGF0dXMpOworCXJldHVybiAtMTUwOworICAgIH0KKworICAgIC8qIEluaXQgZGVzdGluYXRpb24gYWRkcmVzcy4gKi8KKyAgICBhZGRybGVuID0gc2l6ZW9mKGFkZHIpOworICAgIHN0YXR1cyA9IHBqX3NvY2tfZ2V0c29ja25hbWUocnNvY2ssICZhZGRyLCAmYWRkcmxlbik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiZ2V0c29ja25hbWUgZXJyb3IiLCBzdGF0dXMpOworCXJldHVybiAtMTYwOworICAgIH0KKworICAgIC8qIE92ZXJyaWRlIGFkZHJlc3Mgd2l0aCAxMjcuMC4wLjEsIHNpbmNlIGdldHNvY2tuYW1lIHdpbGwgcmV0dXJuCisgICAgICogemVybyBpbiB0aGUgYWRkcmVzcyBmaWVsZC4KKyAgICAgKi8KKyAgICBhZGRyLnNpbl9hZGRyID0gcGpfaW5ldF9hZGRyMigiMTI3LjAuMC4xIik7CisKKyAgICAvKiBJbml0IGJ1ZmZlciB0byBzZW5kICovCisgICAgcGpfYW5zaV9zdHJjcHkoc2VuZGJ1ZiwgIkhlbGxvMDEyMyIpOworCisgICAgLyogU2VuZCBvbmUgcGFja2V0LiAqLworICAgIGJ5dGVzID0gc2l6ZW9mKHNlbmRidWYpOworICAgIHN0YXR1cyA9IHBqX3NvY2tfc2VuZHRvKHNzb2NrLCBzZW5kYnVmLCAmYnl0ZXMsIDAsCisJCQkgICAgJmFkZHIsIHNpemVvZihhZGRyKSk7CisKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCJzZW5kdG8gZXJyb3IiLCBzdGF0dXMpOworCXJldHVybiAtMTcwOworICAgIH0KKworICAgIC8qIENoZWNrIGlmIHBhY2tldCBpcyByZWNlaXZlZC4gKi8KKyAgICB0aW1lb3V0LnNlYyA9IDE7IHRpbWVvdXQubXNlYyA9IDA7CisjaWZkZWYgUEpfU1lNQklBTgorICAgIHBqX3N5bWJpYW5vc19wb2xsKC0xLCAxMDAwKTsKKyNlbHNlCisgICAgcGpfaW9xdWV1ZV9wb2xsKGlvcXVldWUsICZ0aW1lb3V0KTsKKyNlbmRpZgorCisgICAgaWYgKHBhY2tldF9jbnQgIT0gMSkgeworCXJldHVybiAtMTgwOworICAgIH0KKworICAgIC8qIEp1c3QgdG8gbWFrZSBzdXJlIHRoaW5ncyBhcmUgc2V0dGxlZC4uICovCisgICAgcGpfdGhyZWFkX3NsZWVwKDEwMCk7CisKKyAgICAvKiBTdGFydCByZWFkaW5nIGFnYWluLiAqLworICAgIGJ5dGVzID0gc2l6ZW9mKHJlY3ZidWYpOworICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfcmVjdigga2V5LCAmb3BrZXksIHJlY3ZidWYsICZieXRlcywgMCk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9FUEVORElORykgeworCWFwcF9wZXJyb3IoIkV4cGVjdGluZyBQSl9FUEVORElORywgYnV0IGdvdCB0aGlzIiwgc3RhdHVzKTsKKwlyZXR1cm4gLTE5MDsKKyAgICB9CisKKyAgICAvKiBSZXNldCBwYWNrZXQgY291bnRlciAqLworICAgIHBhY2tldF9jbnQgPSAwOworCisgICAgLyogU2VuZCBvbmUgcGFja2V0LiAqLworICAgIGJ5dGVzID0gc2l6ZW9mKHNlbmRidWYpOworICAgIHN0YXR1cyA9IHBqX3NvY2tfc2VuZHRvKHNzb2NrLCBzZW5kYnVmLCAmYnl0ZXMsIDAsCisJCQkgICAgJmFkZHIsIHNpemVvZihhZGRyKSk7CisKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCJzZW5kdG8gZXJyb3IiLCBzdGF0dXMpOworCXJldHVybiAtMjAwOworICAgIH0KKworICAgIC8qIE5vdyB1bnJlZ2lzdGVyIGFuZCBjbG9zZSBzb2NrZXQuICovCisgICAgcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKGtleSk7CisKKyAgICAvKiBQb2xsIGlvcXVldWUuICovCisjaWZkZWYgUEpfU1lNQklBTgorICAgIHBqX3N5bWJpYW5vc19wb2xsKC0xLCAxMDAwKTsKKyNlbHNlCisgICAgdGltZW91dC5zZWMgPSAxOyB0aW1lb3V0Lm1zZWMgPSAwOworICAgIHBqX2lvcXVldWVfcG9sbChpb3F1ZXVlLCAmdGltZW91dCk7CisjZW5kaWYKKworICAgIC8qIE11c3QgTk9UIHJlY2VpdmUgYW55IHBhY2tldHMgYWZ0ZXIgc29ja2V0IGlzIGNsb3NlZCEgKi8KKyAgICBpZiAocGFja2V0X2NudCA+IDApIHsKKwlQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uLmVycnJvcjogbm90IGV4cGVjdGluZyB0byByZWNlaXZlIHBhY2tldCAiCisJCQkgICAgICJhZnRlciBzb2NrZXQgaGFzIGJlZW4gY2xvc2VkIikpOworCXJldHVybiAtMjEwOworICAgIH0KKworICAgIC8qIFN1Y2Nlc3MgKi8KKyAgICBwal9zb2NrX2Nsb3NlKHNzb2NrKTsKKyAgICBwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xdWV1ZSk7CisKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisKKyAgICByZXR1cm4gMDsKK30KKworCisvKgorICogVGVzdGluZyB3aXRoIG1hbnkgaGFuZGxlcy4KKyAqIFRoaXMgd2lsbCBqdXN0IHRlc3QgcmVnaXN0ZXJpbmcgUEpfSU9RVUVVRV9NQVhfSEFORExFUyBjb3VudAorICogb2Ygc29ja2V0cyB0byB0aGUgaW9xdWV1ZS4KKyAqLworc3RhdGljIGludCBtYW55X2hhbmRsZXNfdGVzdChwal9ib29sX3QgYWxsb3dfY29uY3VyKQoreworICAgIGVudW0geyBNQVggPSBQSl9JT1FVRVVFX01BWF9IQU5ETEVTIH07CisgICAgcGpfcG9vbF90ICpwb29sOworICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZTsKKyAgICBwal9zb2NrX3QgKnNvY2s7CisgICAgcGpfaW9xdWV1ZV9rZXlfdCAqKmtleTsKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICBpbnQgY291bnQsIGk7IC8qIG11c3QgYmUgc2lnbmVkICovCisKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCIuLi50ZXN0aW5nIHdpdGggc28gbWFueSBoYW5kbGVzIikpOworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgTlVMTCwgNDAwMCwgNDAwMCwgTlVMTCk7CisgICAgaWYgKCFwb29sKQorCXJldHVybiBQSl9FTk9NRU07CisKKyAgICBrZXkgPSAocGpfaW9xdWV1ZV9rZXlfdCoqKSAKKyAgICAJICBwal9wb29sX2FsbG9jKHBvb2wsIE1BWCpzaXplb2YocGpfaW9xdWV1ZV9rZXlfdCopKTsKKyAgICBzb2NrID0gKHBqX3NvY2tfdCopIHBqX3Bvb2xfYWxsb2MocG9vbCwgTUFYKnNpemVvZihwal9zb2NrX3QpKTsKKyAgICAKKyAgICAvKiBDcmVhdGUgSU9RdWV1ZSAqLworICAgIHJjID0gcGpfaW9xdWV1ZV9jcmVhdGUocG9vbCwgTUFYLCAmaW9xdWV1ZSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MgfHwgaW9xdWV1ZSA9PSBOVUxMKSB7CisJYXBwX3BlcnJvcigiLi4uZXJyb3IgaW4gcGpfaW9xdWV1ZV9jcmVhdGUiLCByYyk7CisJcmV0dXJuIC0xMDsKKyAgICB9CisKKyAgICAvLyBTZXQgY29uY3VycmVuY3kKKyAgICByYyA9IHBqX2lvcXVldWVfc2V0X2RlZmF1bHRfY29uY3VycmVuY3koaW9xdWV1ZSwgYWxsb3dfY29uY3VyKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCXJldHVybiAtMTE7CisgICAgfQorCisgICAgLyogUmVnaXN0ZXIgYXMgbWFueSBzb2NrZXRzLiAqLworICAgIGZvciAoY291bnQ9MDsgY291bnQ8TUFYOyArK2NvdW50KSB7CisJc29ja1tjb3VudF0gPSBQSl9JTlZBTElEX1NPQ0tFVDsKKwlyYyA9IHBqX3NvY2tfc29ja2V0KHBqX0FGX0lORVQoKSwgcGpfU09DS19ER1JBTSgpLCAwLCAmc29ja1tjb3VudF0pOworCWlmIChyYyAhPSBQSl9TVUNDRVNTIHx8IHNvY2tbY291bnRdID09IFBKX0lOVkFMSURfU09DS0VUKSB7CisJICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi4udW5hYmxlIHRvIGNyZWF0ZSAlZC10aCBzb2NrZXQsIHJjPSVkIiwgCisJCQkJIGNvdW50LCByYykpOworCSAgICBicmVhazsKKwl9CisJa2V5W2NvdW50XSA9IE5VTEw7CisJcmMgPSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2socG9vbCwgaW9xdWV1ZSwgc29ja1tjb3VudF0sCisJCQkJICAgICAgTlVMTCwgJnRlc3RfY2IsICZrZXlbY291bnRdKTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUyB8fCBrZXlbY291bnRdID09IE5VTEwpIHsKKwkgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLi51bmFibGUgdG8gcmVnaXN0ZXIgJWQtdGggc29ja2V0LCByYz0lZCIsIAorCQkJCSBjb3VudCwgcmMpKTsKKwkgICAgcmV0dXJuIC0zMDsKKwl9CisgICAgfQorCisgICAgLyogVGVzdCBjb21wbGV0ZS4gKi8KKworICAgIC8qIE5vdyBkZXJlZ2lzdGVyIGFuZCBjbG9zZSBhbGwgaGFuZGxlcy4gKi8gCisKKyAgICAvKiBOT1RFIGZvciBSVEVNUzoKKyAgICAgKiAgSXQgc2VlbXMgdGhhdCB0aGUgb3JkZXIgb2YgY2xvc2Uoc29jaykgaXMgcHJldHR5IGltcG9ydGFudCBoZXJlLgorICAgICAqICBJZiB3ZSBjbG9zZSB0aGUgc29ja2V0cyB3aXRoIHRoZSBzYW1lIG9yZGVyIGFzIHdoZW4gdGhleSB3ZXJlIGNyZWF0ZWQsCisgICAgICogIFJURU1TIGRvZXNuJ3Qgc2VlbSB0byByZXVzZSB0aGUgc29ja2V0cywgdGh1cyBuZXh0IHNvY2tldCBjcmVhdGVkCisgICAgICogIHdpbGwgaGF2ZSBkZXNjcmlwdG9yIGhpZ2hlciB0aGFuIHRoZSBsYXN0IHNvY2tldCBjcmVhdGVkLgorICAgICAqICBJZiB3ZSBjbG9zZSB0aGUgc29ja2V0cyBpbiB0aGUgcmV2ZXJzZSBvcmRlciwgdGhlbiB0aGUgZGVzY3JpcHRvciB3aWxsCisgICAgICogIGdldCByZXVzZWQuCisgICAgICogIFRoaXMgdXNlZCB0byBjYXVzZSBwcm9ibGVtIHdpdGggc2VsZWN0IGlvcXVldWUsIHNpbmNlIHRoZSBpb3F1ZXVlCisgICAgICogIGFsd2F5cyBnaXZlcyBGRF9TRVRTSVpFIGZvciB0aGUgZmlyc3Qgc2VsZWN0KCkgYXJndW1lbnQuIFRoaXMgaW9xdWV1ZQorICAgICAqICBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZCB3aXRoIHNldHRpbmcgUEpfU0VMRUNUX05FRURTX05GRFMgbWFjcm8uCisgICAgICovCisgICAgZm9yIChpPWNvdW50LTE7IGk+PTA7IC0taSkgeworICAgIC8vL2ZvciAoaT0wOyBpPGNvdW50OyArK2kpIHsKKwlyYyA9IHBqX2lvcXVldWVfdW5yZWdpc3RlcihrZXlbaV0pOworCWlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yIGluIHBqX2lvcXVldWVfdW5yZWdpc3RlciIsIHJjKTsKKwl9CisgICAgfQorCisgICAgcmMgPSBwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xdWV1ZSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5lcnJvciBpbiBwal9pb3F1ZXVlX2Rlc3Ryb3kiLCByYyk7CisgICAgfQorICAgIAorICAgIHBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsIi4uLi5tYW55X2hhbmRsZXNfdGVzdCgpIG9rIikpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBNdWx0aS1vcGVyYXRpb24gdGVzdC4KKyAqLworCisvKgorICogQmVuY2htYXJraW5nIElPUXVldWUKKyAqLworc3RhdGljIGludCBiZW5jaF90ZXN0KHBqX2Jvb2xfdCBhbGxvd19jb25jdXIsIGludCBidWZzaXplLCAKKwkJICAgICAgaW50IGluYWN0aXZlX3NvY2tfY291bnQpCit7CisgICAgcGpfc29ja190IHNzb2NrPS0xLCBjc29jaz0tMTsKKyAgICBwal9zb2NrYWRkcl9pbiBhZGRyOworICAgIHBqX3Bvb2xfdCAqcG9vbCA9IE5VTEw7CisgICAgcGpfc29ja190ICppbmFjdGl2ZV9zb2NrPU5VTEw7CisgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqaW5hY3RpdmVfcmVhZF9vcDsKKyAgICBjaGFyICpzZW5kX2J1ZiwgKnJlY3ZfYnVmOworICAgIHBqX2lvcXVldWVfdCAqaW9xdWUgPSBOVUxMOworICAgIHBqX2lvcXVldWVfa2V5X3QgKnNrZXksICpja2V5LCAqa2V5c1tTT0NLX0lOQUNUSVZFX01BWCsyXTsKKyAgICBwal90aW1lc3RhbXAgdDEsIHQyLCB0X2VsYXBzZWQ7CisgICAgaW50IHJjPTAsIGk7ICAgIC8qIGkgbXVzdCBiZSBzaWduZWQgKi8KKyAgICBwal9zdHJfdCB0ZW1wOworICAgIGNoYXIgZXJyYnVmW1BKX0VSUl9NU0dfU0laRV07CisKKyAgICBUUkFDRV9fKChUSElTX0ZJTEUsICIgICBiZW5jaCB0ZXN0ICVkIiwgaW5hY3RpdmVfc29ja19jb3VudCkpOworCisgICAgLy8gQ3JlYXRlIHBvb2wuCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgTlVMTCwgUE9PTF9TSVpFLCA0MDAwLCBOVUxMKTsKKworICAgIC8vIEFsbG9jYXRlIGJ1ZmZlcnMgZm9yIHNlbmQgYW5kIHJlY2VpdmUuCisgICAgc2VuZF9idWYgPSAoY2hhciopcGpfcG9vbF9hbGxvYyhwb29sLCBidWZzaXplKTsKKyAgICByZWN2X2J1ZiA9IChjaGFyKilwal9wb29sX2FsbG9jKHBvb2wsIGJ1ZnNpemUpOworCisgICAgLy8gQWxsb2NhdGUgc29ja2V0cyBmb3Igc2VuZGluZyBhbmQgcmVjZWl2aW5nLgorICAgIHJjID0gcGpfc29ja19zb2NrZXQocGpfQUZfSU5FVCgpLCBwal9TT0NLX0RHUkFNKCksIDAsICZzc29jayk7CisgICAgaWYgKHJjID09IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgcmMgPSBwal9zb2NrX3NvY2tldChwal9BRl9JTkVUKCksIHBqX1NPQ0tfREdSQU0oKSwgMCwgJmNzb2NrKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY3NvY2sgPSBQSl9JTlZBTElEX1NPQ0tFVDsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiBwal9zb2NrX3NvY2tldCgpIiwgcmMpOworCWdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gQmluZCBzZXJ2ZXIgc29ja2V0LgorICAgIHBqX2J6ZXJvKCZhZGRyLCBzaXplb2YoYWRkcikpOworICAgIGFkZHIuc2luX2ZhbWlseSA9IHBqX0FGX0lORVQoKTsKKyAgICBhZGRyLnNpbl9wb3J0ID0gcGpfaHRvbnMoUE9SVCk7CisgICAgaWYgKHBqX3NvY2tfYmluZChzc29jaywgJmFkZHIsIHNpemVvZihhZGRyKSkpCisJZ290byBvbl9lcnJvcjsKKworICAgIHBqX2Fzc2VydChpbmFjdGl2ZV9zb2NrX2NvdW50KzIgPD0gUEpfSU9RVUVVRV9NQVhfSEFORExFUyk7CisKKyAgICAvLyBDcmVhdGUgSS9PIFF1ZXVlLgorICAgIHJjID0gcGpfaW9xdWV1ZV9jcmVhdGUocG9vbCwgUEpfSU9RVUVVRV9NQVhfSEFORExFUywgJmlvcXVlKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiBwal9pb3F1ZXVlX2NyZWF0ZSgpIiwgcmMpOworCWdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gU2V0IGNvbmN1cnJlbmN5CisgICAgcmMgPSBwal9pb3F1ZXVlX3NldF9kZWZhdWx0X2NvbmN1cnJlbmN5KGlvcXVlLCBhbGxvd19jb25jdXIpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiLi4uZXJyb3I6IHBqX2lvcXVldWVfc2V0X2RlZmF1bHRfY29uY3VycmVuY3koKSIsIHJjKTsKKwlnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8vIEFsbG9jYXRlIGluYWN0aXZlIHNvY2tldHMsIGFuZCBiaW5kIHRoZW0gdG8gc29tZSBhcmJpdHJhcnkgYWRkcmVzcy4KKyAgICAvLyBUaGVuIHJlZ2lzdGVyIHRoZW0gdG8gdGhlIEkvTyBxdWV1ZSwgYW5kIHN0YXJ0IGEgcmVhZCBvcGVyYXRpb24uCisgICAgaW5hY3RpdmVfc29jayA9IChwal9zb2NrX3QqKXBqX3Bvb2xfYWxsb2MocG9vbCwgCisJCQkJICAgIGluYWN0aXZlX3NvY2tfY291bnQqc2l6ZW9mKHBqX3NvY2tfdCkpOworICAgIGluYWN0aXZlX3JlYWRfb3AgPSAocGpfaW9xdWV1ZV9vcF9rZXlfdCopcGpfcG9vbF9hbGxvYyhwb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5hY3RpdmVfc29ja19jb3VudCpzaXplb2YocGpfaW9xdWV1ZV9vcF9rZXlfdCkpOworICAgIHBqX2J6ZXJvKCZhZGRyLCBzaXplb2YoYWRkcikpOworICAgIGFkZHIuc2luX2ZhbWlseSA9IHBqX0FGX0lORVQoKTsKKyAgICBmb3IgKGk9MDsgaTxpbmFjdGl2ZV9zb2NrX2NvdW50OyArK2kpIHsKKyAgICAgICAgcGpfc3NpemVfdCBieXRlczsKKworCXJjID0gcGpfc29ja19zb2NrZXQocGpfQUZfSU5FVCgpLCBwal9TT0NLX0RHUkFNKCksIDAsICZpbmFjdGl2ZV9zb2NrW2ldKTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUyB8fCBpbmFjdGl2ZV9zb2NrW2ldIDwgMCkgeworCSAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfc29ja19zb2NrZXQoKSIsIHJjKTsKKwkgICAgZ290byBvbl9lcnJvcjsKKwl9CisJaWYgKChyYz1wal9zb2NrX2JpbmQoaW5hY3RpdmVfc29ja1tpXSwgJmFkZHIsIHNpemVvZihhZGRyKSkpICE9IDApIHsKKwkgICAgcGpfc29ja19jbG9zZShpbmFjdGl2ZV9zb2NrW2ldKTsKKwkgICAgaW5hY3RpdmVfc29ja1tpXSA9IFBKX0lOVkFMSURfU09DS0VUOworCSAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfc29ja19iaW5kKCkiLCByYyk7CisJICAgIGdvdG8gb25fZXJyb3I7CisJfQorCXJjID0gcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrKHBvb2wsIGlvcXVlLCBpbmFjdGl2ZV9zb2NrW2ldLCAKKwkJCSAgICAgICAgICAgICAgTlVMTCwgJnRlc3RfY2IsICZrZXlzW2ldKTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBwal9zb2NrX2Nsb3NlKGluYWN0aXZlX3NvY2tbaV0pOworCSAgICBpbmFjdGl2ZV9zb2NrW2ldID0gUEpfSU5WQUxJRF9TT0NLRVQ7CisJICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yKDEpOiBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2soKSIsIHJjKTsKKwkgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLi5pPSVkIiwgaSkpOworCSAgICBnb3RvIG9uX2Vycm9yOworCX0KKyAgICAgICAgYnl0ZXMgPSBidWZzaXplOworCXJjID0gcGpfaW9xdWV1ZV9yZWN2KGtleXNbaV0sICZpbmFjdGl2ZV9yZWFkX29wW2ldLCByZWN2X2J1ZiwgJmJ5dGVzLCAwKTsKKwlpZiAocmMgIT0gUEpfRVBFTkRJTkcpIHsKKwkgICAgcGpfc29ja19jbG9zZShpbmFjdGl2ZV9zb2NrW2ldKTsKKwkgICAgaW5hY3RpdmVfc29ja1tpXSA9IFBKX0lOVkFMSURfU09DS0VUOworCSAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfaW9xdWV1ZV9yZWFkKCkiLCByYyk7CisJICAgIGdvdG8gb25fZXJyb3I7CisJfQorICAgIH0KKworICAgIC8vIFJlZ2lzdGVyIHNlcnZlciBhbmQgY2xpZW50IHNvY2tldC4KKyAgICAvLyBXZSBwdXQgdGhpcyBhZnRlciBpbmFjdGl2aXR5IHNvY2tldCwgaG9wZWZ1bGx5IHRoaXMgY2FuIHJlcHJlc2VudCB0aGUKKyAgICAvLyB3b3JzdCB3YWl0aW5nIHRpbWUuCisgICAgcmMgPSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2socG9vbCwgaW9xdWUsIHNzb2NrLCBOVUxMLCAKKwkJCSAgICAgICAgICAmdGVzdF9jYiwgJnNrZXkpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiLi4uZXJyb3IoMik6IHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jaygpIiwgcmMpOworCWdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgcmMgPSBwal9pb3F1ZXVlX3JlZ2lzdGVyX3NvY2socG9vbCwgaW9xdWUsIGNzb2NrLCBOVUxMLCAKKwkJCSAgICAgICAgICAmdGVzdF9jYiwgJmNrZXkpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiLi4uZXJyb3IoMyk6IHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jaygpIiwgcmMpOworCWdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLy8gU2V0IGRlc3RpbmF0aW9uIGFkZHJlc3MgdG8gc2VuZCB0aGUgcGFja2V0LgorICAgIHBqX3NvY2thZGRyX2luX2luaXQoJmFkZHIsIHBqX2NzdHIoJnRlbXAsICIxMjcuMC4wLjEiKSwgUE9SVCk7CisKKyAgICAvLyBUZXN0IGxvb3AuCisgICAgdF9lbGFwc2VkLnU2NCA9IDA7CisgICAgZm9yIChpPTA7IGk8TE9PUDsgKytpKSB7CisJcGpfc3NpemVfdCBieXRlczsKKyAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCByZWFkX29wLCB3cml0ZV9vcDsKKworCS8vIFJhbmRvbWl6ZSBzZW5kIGJ1ZmZlci4KKwlwal9jcmVhdGVfcmFuZG9tX3N0cmluZyhzZW5kX2J1ZiwgYnVmc2l6ZSk7CisKKwkvLyBTdGFydCByZWFkaW5nIG9uIHRoZSBzZXJ2ZXIgc2lkZS4KKyAgICAgICAgYnl0ZXMgPSBidWZzaXplOworCXJjID0gcGpfaW9xdWV1ZV9yZWN2KHNrZXksICZyZWFkX29wLCByZWN2X2J1ZiwgJmJ5dGVzLCAwKTsKKwlpZiAocmMgIT0gUEpfRVBFTkRJTkcpIHsKKwkgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IHBqX2lvcXVldWVfcmVhZCgpIiwgcmMpOworCSAgICBicmVhazsKKwl9CisKKwkvLyBTdGFydHMgc2VuZCBvbiB0aGUgY2xpZW50IHNpZGUuCisgICAgICAgIGJ5dGVzID0gYnVmc2l6ZTsKKwlyYyA9IHBqX2lvcXVldWVfc2VuZHRvKGNrZXksICZ3cml0ZV9vcCwgc2VuZF9idWYsICZieXRlcywgMCwKKwkJCSAgICAgICAmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUyAmJiByYyAhPSBQSl9FUEVORElORykgeworCSAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfaW9xdWV1ZV93cml0ZSgpIiwgcmMpOworCSAgICBicmVhazsKKwl9CisJaWYgKHJjID09IFBKX1NVQ0NFU1MpIHsKKwkgICAgaWYgKGJ5dGVzIDwgMCkgeworCQlhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfaW9xdWV1ZV9zZW5kdG8oKSIsKHBqX3N0YXR1c190KS1ieXRlcyk7CisJCWJyZWFrOworCSAgICB9CisJfQorCisJLy8gQmVnaW4gdGltZS4KKwlwal9nZXRfdGltZXN0YW1wKCZ0MSk7CisKKwkvLyBQb2xsIHRoZSBxdWV1ZSB1bnRpbCB3ZSd2ZSBnb3QgY29tcGxldGlvbiBldmVudCBpbiB0aGUgc2VydmVyIHNpZGUuCisgICAgICAgIGNhbGxiYWNrX3JlYWRfa2V5ID0gTlVMTDsKKyAgICAgICAgY2FsbGJhY2tfcmVhZF9zaXplID0gMDsKKwlUUkFDRV9fKChUSElTX0ZJTEUsICIgICAgIHdhaXRpbmcgZm9yIGtleSA9ICVwIiwgc2tleSkpOworCWRvIHsKKwkgICAgcGpfdGltZV92YWwgdGltZW91dCA9IHsgMSwgMCB9OworI2lmZGVmIFBKX1NZTUJJQU4KKwkgICAgcmMgPSBwal9zeW1iaWFub3NfcG9sbCgtMSwgUEpfVElNRV9WQUxfTVNFQyh0aW1lb3V0KSk7CisjZWxzZQorCSAgICByYyA9IHBqX2lvcXVldWVfcG9sbChpb3F1ZSwgJnRpbWVvdXQpOworI2VuZGlmCisJICAgIFRSQUNFX18oKFRISVNfRklMRSwgIiAgICAgcG9sbCByYz0lZCIsIHJjKSk7CisJfSB3aGlsZSAocmMgPj0gMCAmJiBjYWxsYmFja19yZWFkX2tleSAhPSBza2V5KTsKKworCS8vIEVuZCB0aW1lLgorCXBqX2dldF90aW1lc3RhbXAoJnQyKTsKKwl0X2VsYXBzZWQudTY0ICs9ICh0Mi51NjQgLSB0MS51NjQpOworCisJaWYgKHJjIDwgMCkgeworCSAgICBhcHBfcGVycm9yKCIgICBlcnJvcjogcGpfaW9xdWV1ZV9wb2xsIiwgLXJjKTsKKwkgICAgYnJlYWs7CisJfQorCisJLy8gQ29tcGFyZSByZWN2IGJ1ZmZlciB3aXRoIHNlbmQgYnVmZmVyLgorCWlmIChjYWxsYmFja19yZWFkX3NpemUgIT0gYnVmc2l6ZSB8fCAKKwkgICAgcGpfbWVtY21wKHNlbmRfYnVmLCByZWN2X2J1ZiwgYnVmc2l6ZSkpIAorCXsKKwkgICAgcmMgPSAtMTA7CisJICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIgICBlcnJvcjogc2l6ZS9idWZmZXIgbWlzbWF0Y2giKSk7CisJICAgIGJyZWFrOworCX0KKworCS8vIFBvbGwgdW50aWwgYWxsIGV2ZW50cyBhcmUgZXhoYXVzdGVkLCBiZWZvcmUgd2Ugc3RhcnQgdGhlIG5leHQgbG9vcC4KKwlkbyB7CisJICAgIHBqX3RpbWVfdmFsIHRpbWVvdXQgPSB7IDAsIDEwIH07CisjaWZkZWYgUEpfU1lNQklBTgorCSAgICBQSl9VTlVTRURfQVJHKHRpbWVvdXQpOworCSAgICByYyA9IHBqX3N5bWJpYW5vc19wb2xsKC0xLCAxMDApOworI2Vsc2UJICAgIAorCSAgICByYyA9IHBqX2lvcXVldWVfcG9sbChpb3F1ZSwgJnRpbWVvdXQpOworI2VuZGlmCisJfSB3aGlsZSAocmM+MCk7CisKKwlyYyA9IDA7CisgICAgfQorCisgICAgLy8gUHJpbnQgcmVzdWx0cworICAgIGlmIChyYyA9PSAwKSB7CisJcGpfdGltZXN0YW1wIHR6ZXJvOworCXBqX3VpbnQzMl90IHVzZWNfZGVsYXk7CisKKwl0emVyby51MzIuaGkgPSB0emVyby51MzIubG8gPSAwOworCXVzZWNfZGVsYXkgPSBwal9lbGFwc2VkX3VzZWMoICZ0emVybywgJnRfZWxhcHNlZCk7CisKKwlQSl9MT0coMywgKFRISVNfRklMRSwgIi4uLiUxMGQgJTE1ZCAgJSA5ZCIsIAorCSAgICAgICAgICAgYnVmc2l6ZSwgaW5hY3RpdmVfc29ja19jb3VudCwgdXNlY19kZWxheSkpOworCisgICAgfSBlbHNlIHsKKwlQSl9MT0coMiwgKFRISVNfRklMRSwgIi4uLkVSUk9SIHJjPSVkIChidWY6JWQsIGZkczolZCkiLCAKKwkJCSAgICAgIHJjLCBidWZzaXplLCBpbmFjdGl2ZV9zb2NrX2NvdW50KzIpKTsKKyAgICB9CisKKyAgICAvLyBDbGVhbmluZyB1cC4KKyAgICBmb3IgKGk9aW5hY3RpdmVfc29ja19jb3VudC0xOyBpPj0wOyAtLWkpIHsKKwlwal9pb3F1ZXVlX3VucmVnaXN0ZXIoa2V5c1tpXSk7CisgICAgfQorCisgICAgcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKHNrZXkpOworICAgIHBqX2lvcXVldWVfdW5yZWdpc3Rlcihja2V5KTsKKworCisgICAgcGpfaW9xdWV1ZV9kZXN0cm95KGlvcXVlKTsKKyAgICBwal9wb29sX3JlbGVhc2UoIHBvb2wpOworICAgIHJldHVybiByYzsKKworb25fZXJyb3I6CisgICAgUEpfTE9HKDEsKFRISVNfRklMRSwgIi4uLkVSUk9SOiAlcyIsIAorCSAgICAgIHBqX3N0cmVycm9yKHBqX2dldF9uZXRvc19lcnJvcigpLCBlcnJidWYsIHNpemVvZihlcnJidWYpKSkpOworICAgIGlmIChzc29jaykKKwlwal9zb2NrX2Nsb3NlKHNzb2NrKTsKKyAgICBpZiAoY3NvY2spCisJcGpfc29ja19jbG9zZShjc29jayk7CisgICAgZm9yIChpPTA7IGk8aW5hY3RpdmVfc29ja19jb3VudCAmJiBpbmFjdGl2ZV9zb2NrICYmIAorCSAgICAgIGluYWN0aXZlX3NvY2tbaV0hPVBKX0lOVkFMSURfU09DS0VUOyArK2kpIAorICAgIHsKKwlwal9zb2NrX2Nsb3NlKGluYWN0aXZlX3NvY2tbaV0pOworICAgIH0KKyAgICBpZiAoaW9xdWUgIT0gTlVMTCkKKwlwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xdWUpOworICAgIHBqX3Bvb2xfcmVsZWFzZSggcG9vbCk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50IHVkcF9pb3F1ZXVlX3Rlc3RfaW1wKHBqX2Jvb2xfdCBhbGxvd19jb25jdXIpCit7CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgYnVmc2l6ZSwgc29ja19jb3VudDsKKworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLnRlc3Rpbmcgd2l0aCBjb25jdXJlbmN5PSVkIiwgYWxsb3dfY29uY3VyKSk7CisKKyAgICAvL2dvdG8gcGFzczE7CisKKyAgICBQSl9MT0coMywgKFRISVNfRklMRSwgIi4uLmNvbXBsaWFuY2UgdGVzdCAoJXMpIiwgcGpfaW9xdWV1ZV9uYW1lKCkpKTsKKyAgICBpZiAoKHN0YXR1cz1jb21wbGlhbmNlX3Rlc3QoYWxsb3dfY29uY3VyKSkgIT0gMCkgeworCXJldHVybiBzdGF0dXM7CisgICAgfQorICAgIFBKX0xPRygzLCAoVEhJU19GSUxFLCAiLi4uLmNvbXBsaWFuY2UgdGVzdCBvayIpKTsKKworCisgICAgUEpfTE9HKDMsIChUSElTX0ZJTEUsICIuLi51bnJlZ2lzdGVyIHRlc3QgKCVzKSIsIHBqX2lvcXVldWVfbmFtZSgpKSk7CisgICAgaWYgKChzdGF0dXM9dW5yZWdpc3Rlcl90ZXN0KGFsbG93X2NvbmN1cikpICE9IDApIHsKKwlyZXR1cm4gc3RhdHVzOworICAgIH0KKyAgICBQSl9MT0coMywgKFRISVNfRklMRSwgIi4uLi51bnJlZ2lzdGVyIHRlc3Qgb2siKSk7CisKKyAgICBpZiAoKHN0YXR1cz1tYW55X2hhbmRsZXNfdGVzdChhbGxvd19jb25jdXIpKSAhPSAwKSB7CisJcmV0dXJuIHN0YXR1czsKKyAgICB9CisgICAgCisgICAgLy9yZXR1cm4gMDsKKworICAgIFBKX0xPRyg0LCAoVEhJU19GSUxFLCAiLi4uYmVuY2htYXJraW5nIGRpZmZlcmVudCBidWZmZXIgc2l6ZToiKSk7CisgICAgUEpfTE9HKDQsIChUSElTX0ZJTEUsICIuLi4gbm90ZTogYnVmPWJ5dGVzIHNlbnQsIGZkcz0jIG9mIGZkcywgIgorCQkJICAiZWxhcHNlZD1pbiB0aW1lciB0aWNrcyIpKTsKKworLy9wYXNzMToKKyAgICBQSl9MT0coMywgKFRISVNfRklMRSwgIi4uLkJlbmNobWFya2luZyBwb2xsIHRpbWVzIGZvciAlczoiLCBwal9pb3F1ZXVlX25hbWUoKSkpOworICAgIFBKX0xPRygzLCAoVEhJU19GSUxFLCAiLi4uPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpKTsKKyAgICBQSl9MT0coMywgKFRISVNfRklMRSwgIi4uLkJ1Zi5zaXplICAgI2luYWN0aXZlLXNvY2tzICBUaW1lL3BvbGwiKSk7CisgICAgUEpfTE9HKDMsIChUSElTX0ZJTEUsICIuLi4gKGJ5dGVzKSAgICAgICAgICAgICAgICAgICAgKG5hbm9zZWMpIikpOworICAgIFBKX0xPRygzLCAoVEhJU19GSUxFLCAiLi4uPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpKTsKKworICAgIC8vZ290byBwYXNzMjsKKworICAgIGZvciAoYnVmc2l6ZT1CVUZfTUlOX1NJWkU7IGJ1ZnNpemUgPD0gQlVGX01BWF9TSVpFOyBidWZzaXplICo9IDIpIHsKKwlpZiAoKHN0YXR1cz1iZW5jaF90ZXN0KGFsbG93X2NvbmN1ciwgYnVmc2l6ZSwgU09DS19JTkFDVElWRV9NSU4pKSAhPSAwKQorCSAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKy8vcGFzczI6CisgICAgYnVmc2l6ZSA9IDUxMjsKKyAgICBmb3IgKHNvY2tfY291bnQ9U09DS19JTkFDVElWRV9NSU4rMjsgCisJIHNvY2tfY291bnQ8PVNPQ0tfSU5BQ1RJVkVfTUFYKzI7IAorCSBzb2NrX2NvdW50ICo9IDIpIAorICAgIHsKKwkvL1BKX0xPRygzLChUSElTX0ZJTEUsICIuLi50ZXN0aW5nIHdpdGggJWQgZmRzIiwgc29ja19jb3VudCkpOworCWlmICgoc3RhdHVzPWJlbmNoX3Rlc3QoYWxsb3dfY29uY3VyLCBidWZzaXplLCBzb2NrX2NvdW50LTIpKSAhPSAwKQorCSAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50IHVkcF9pb3F1ZXVlX3Rlc3QoKQoreworICAgIGludCByYzsKKworICAgIHJjID0gdWRwX2lvcXVldWVfdGVzdF9pbXAoUEpfVFJVRSk7CisgICAgaWYgKHJjICE9IDApCisJcmV0dXJuIHJjOworCisgICAgcmMgPSB1ZHBfaW9xdWV1ZV90ZXN0X2ltcChQSl9GQUxTRSk7CisgICAgaWYgKHJjICE9IDApCisJcmV0dXJuIHJjOworCisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV91aXFfdWRwOworI2VuZGlmCS8qIElOQ0xVREVfVURQX0lPUVVFVUVfVEVTVCAqLworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2lvcV91bnJlZy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvaW9xX3VucmVnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE0MmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2lvcV91bnJlZy5jCkBAIC0wLDAgKzEsMzg3IEBACisvKiAkSWQ6IGlvcV91bnJlZy5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgInRlc3QuaCIKKworI2lmIElOQ0xVREVfSU9RVUVVRV9VTlJFR19URVNUCisvKgorICogVGhpcyB0ZXN0cyB0aGUgdGhyZWFkIHNhZmV0eSBvZiBpb3F1ZXVlIHVucmVnaXN0cmF0aW9uIG9wZXJhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8cGovZXJybm8uaD4KKyNpbmNsdWRlIDxwai9pb3F1ZXVlLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9wb29sLmg+CisjaW5jbHVkZSA8cGovc29jay5oPgorI2luY2x1ZGUgPHBqL2NvbXBhdC9zb2NrZXQuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKworCisjZGVmaW5lIFRISVNfRklMRSAgICJpb3FfdW5yZWcuYyIKKworCitlbnVtIHRlc3RfbWV0aG9kCit7CisgICAgVU5SRUdJU1RFUl9JTl9BUFAsCisgICAgVU5SRUdJU1RFUl9JTl9DQUxMQkFDSywKK307CisKK3N0YXRpYyBpbnQgdGhyZWFkX3F1aXR0aW5nOworc3RhdGljIGVudW0gdGVzdF9tZXRob2QgdGVzdF9tZXRob2Q7CitzdGF0aWMgcGpfdGltZV92YWwgdGltZV90b191bnJlZ2lzdGVyOworCitzdHJ1Y3Qgc29ja19kYXRhCit7CisgICAgcGpfc29ja190CQkgc29jazsKKyAgICBwal9zb2NrX3QJCSBjc29jazsKKyAgICBwal9wb29sX3QJCSpwb29sOworICAgIHBqX2lvcXVldWVfa2V5X3QJKmtleTsKKyAgICBwal9tdXRleF90CQkqbXV0ZXg7CisgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdAkqb3Bfa2V5OworICAgIGNoYXIJCSpidWZmZXI7CisgICAgcGpfc2l6ZV90CQkgYnVmc2l6ZTsKKyAgICBwal9ib29sX3QJCSB1bnJlZ2lzdGVyZWQ7CisgICAgcGpfc3NpemVfdAkJIHJlY2VpdmVkOworfSBzb2NrX2RhdGE7CisKK3N0YXRpYyB2b2lkIG9uX3JlYWRfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCBieXRlc19yZWFkKQoreworICAgIHBqX3NzaXplX3Qgc2l6ZTsKKyAgICBjaGFyICpzZW5kYnVmID0gIkhlbGxvIHdvcmxkIjsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBpZiAoc29ja19kYXRhLnVucmVnaXN0ZXJlZCkKKwlyZXR1cm47CisKKyAgICBwal9tdXRleF9sb2NrKHNvY2tfZGF0YS5tdXRleCk7CisKKyAgICBpZiAoc29ja19kYXRhLnVucmVnaXN0ZXJlZCkgeworCXBqX211dGV4X3VubG9jayhzb2NrX2RhdGEubXV0ZXgpOworCXJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYnl0ZXNfcmVhZCA8IDApIHsKKwlpZiAoLWJ5dGVzX3JlYWQgIT0gUEpfU1RBVFVTX0ZST01fT1MoUEpfQkxPQ0tJTkdfRVJST1JfVkFMKSkKKwkgICAgYXBwX3BlcnJvcigiaW9xdWV1ZSByZXBvcnRlZCByZWN2IGVycm9yIiwgKHBqX3N0YXR1c190KS1ieXRlc19yZWFkKTsKKyAgICB9IGVsc2UgeworCXNvY2tfZGF0YS5yZWNlaXZlZCArPSBieXRlc19yZWFkOworICAgIH0KKworICAgIGlmICh0ZXN0X21ldGhvZCA9PSBVTlJFR0lTVEVSX0lOX0NBTExCQUNLKSB7CisJcGpfdGltZV92YWwgbm93OworCisJcGpfZ2V0dGltZW9mZGF5KCZub3cpOworCWlmIChQSl9USU1FX1ZBTF9HVEUobm93LCB0aW1lX3RvX3VucmVnaXN0ZXIpKSB7IAorCSAgICBzb2NrX2RhdGEudW5yZWdpc3RlcmVkID0gMTsKKwkgICAgcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKGtleSk7CisJICAgIHBqX211dGV4X3VubG9jayhzb2NrX2RhdGEubXV0ZXgpOworCSAgICByZXR1cm47CisJfQorICAgIH0KKyAKKyAgICBkbyB7IAorCXNpemUgPSBzb2NrX2RhdGEuYnVmc2l6ZTsKKwlzdGF0dXMgPSBwal9pb3F1ZXVlX3JlY3Yoa2V5LCBvcF9rZXksIHNvY2tfZGF0YS5idWZmZXIsICZzaXplLCAwKTsKKwlpZiAoc3RhdHVzICE9IFBKX0VQRU5ESU5HICYmIHN0YXR1cyAhPSBQSl9TVUNDRVNTKQorCSAgICBhcHBfcGVycm9yKCJyZWN2KCkgZXJyb3IiLCBzdGF0dXMpOworCisgICAgfSB3aGlsZSAoc3RhdHVzID09IFBKX1NVQ0NFU1MpOworCisgICAgcGpfbXV0ZXhfdW5sb2NrKHNvY2tfZGF0YS5tdXRleCk7CisKKyAgICBzaXplID0gcGpfYW5zaV9zdHJsZW4oc2VuZGJ1Zik7CisgICAgc3RhdHVzID0gcGpfc29ja19zZW5kKHNvY2tfZGF0YS5jc29jaywgc2VuZGJ1ZiwgJnNpemUsIDApOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlhcHBfcGVycm9yKCJzZW5kKCkgZXJyb3IiLCBzdGF0dXMpOworCisgICAgc2l6ZSA9IHBqX2Fuc2lfc3RybGVuKHNlbmRidWYpOworICAgIHN0YXR1cyA9IHBqX3NvY2tfc2VuZChzb2NrX2RhdGEuY3NvY2ssIHNlbmRidWYsICZzaXplLCAwKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpCisJYXBwX3BlcnJvcigic2VuZCgpIGVycm9yIiwgc3RhdHVzKTsKKworfSAKKworc3RhdGljIGludCB3b3JrZXJfdGhyZWFkKHZvaWQgKmFyZykKK3sKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWUgPSAocGpfaW9xdWV1ZV90KikgYXJnOworCisgICAgd2hpbGUgKCF0aHJlYWRfcXVpdHRpbmcpIHsKKwlwal90aW1lX3ZhbCB0aW1lb3V0ID0geyAwLCAyMCB9OworCXBqX2lvcXVldWVfcG9sbChpb3F1ZXVlLCAmdGltZW91dCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBQZXJmb3JtIHVucmVnaXN0cmF0aW9uIHRlc3QuCisgKgorICogVGhpcyB3aWxsIGNyZWF0ZSBpb3F1ZXVlIGFuZCByZWdpc3RlciBhIHNlcnZlciBzb2NrZXQuIERlcGVuZGluZworICogb24gdGhlIHRlc3QgbWV0aG9kLCBlaXRoZXIgdGhlIGNhbGxiYWNrIG9yIHRoZSBtYWluIHRocmVhZCB3aWxsCisgKiB1bnJlZ2lzdGVyIGFuZCBkZXN0cm95IHRoZSBzZXJ2ZXIgc29ja2V0IGFmdGVyIHNvbWUgcGVyaW9kIG9mIHRpbWUuCisgKi8KK3N0YXRpYyBpbnQgcGVyZm9ybV91bnJlZ190ZXN0KHBqX2lvcXVldWVfdCAqaW9xdWV1ZSwKKwkJCSAgICAgIHBqX3Bvb2xfdCAqdGVzdF9wb29sLAorCQkJICAgICAgY29uc3QgY2hhciAqdGl0bGUsIAorCQkJICAgICAgcGpfYm9vbF90IG90aGVyX3NvY2tldCkKK3sKKyAgICBlbnVtIHsgV09SS0VSX0NOVCA9IDEsIE1TRUMgPSA1MDAsIFFVSVRfTVNFQyA9IDUwMCB9OworICAgIGludCBpOworICAgIHBqX3RocmVhZF90ICp0aHJlYWRbV09SS0VSX0NOVF07CisgICAgc3RydWN0IHNvY2tfZGF0YSBvc2Q7CisgICAgcGpfaW9xdWV1ZV9jYWxsYmFjayBjYWxsYmFjazsKKyAgICBwal90aW1lX3ZhbCBlbmRfdGltZTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKworICAgIC8qIFNvbWV0aW1lcyBpdHMgaW1wb3J0YW50IHRvIGhhdmUgb3RoZXIgc29ja2V0cyByZWdpc3RlcmVkIHRvCisgICAgICogdGhlIGlvcXVldWUsIGJlY2F1c2Ugd2hlbiBubyBzb2NrZXRzIGFyZSByZWdpc3RlcmVkLCB0aGUgaW9xdWV1ZQorICAgICAqIHdpbGwgcmV0dXJuIGZyb20gdGhlIHBvbGwgZWFybHkuCisgICAgICovCisgICAgaWYgKG90aGVyX3NvY2tldCkgeworCXN0YXR1cyA9IGFwcF9zb2NrZXQocGpfQUZfSU5FVCgpLCBwal9TT0NLX0RHUkFNKCksIDAsIDU2MTI3LCAmb3NkLnNvY2spOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBhcHBfcGVycm9yKCJFcnJvciBjcmVhdGluZyBvdGhlciBzb2NrZXQiLCBzdGF0dXMpOworCSAgICByZXR1cm4gLTEyOworCX0KKworCXBqX2J6ZXJvKCZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CisJc3RhdHVzID0gcGpfaW9xdWV1ZV9yZWdpc3Rlcl9zb2NrKHRlc3RfcG9vbCwgaW9xdWV1ZSwgb3NkLnNvY2ssCisJCQkJCSAgTlVMTCwgJmNhbGxiYWNrLCAmb3NkLmtleSk7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIGFwcF9wZXJyb3IoIkVycm9yIHJlZ2lzdGVyaW5nIG90aGVyIHNvY2tldCIsIHN0YXR1cyk7CisJICAgIHJldHVybiAtMTM7CisJfQorCisgICAgfSBlbHNlIHsKKwlvc2Qua2V5ID0gTlVMTDsKKwlvc2Quc29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIH0KKworICAgIC8qIEluaXQgYm90aCB0aW1lIGR1cmF0aW9uIG9mIHRlc3RpbmcgKi8KKyAgICB0aHJlYWRfcXVpdHRpbmcgPSAwOworICAgIHBqX2dldHRpbWVvZmRheSgmdGltZV90b191bnJlZ2lzdGVyKTsKKyAgICB0aW1lX3RvX3VucmVnaXN0ZXIubXNlYyArPSBNU0VDOworICAgIHBqX3RpbWVfdmFsX25vcm1hbGl6ZSgmdGltZV90b191bnJlZ2lzdGVyKTsKKworICAgIGVuZF90aW1lID0gdGltZV90b191bnJlZ2lzdGVyOworICAgIGVuZF90aW1lLm1zZWMgKz0gUVVJVF9NU0VDOworICAgIHBqX3RpbWVfdmFsX25vcm1hbGl6ZSgmZW5kX3RpbWUpOworCisgICAgCisgICAgLyogQ3JlYXRlIHBvbGxpbmcgdGhyZWFkICovCisgICAgZm9yIChpPTA7IGk8V09SS0VSX0NOVDsgKytpKSB7CisJc3RhdHVzID0gcGpfdGhyZWFkX2NyZWF0ZSh0ZXN0X3Bvb2wsICJ1bnJlZ3Rlc3QiLCAmd29ya2VyX3RocmVhZCwKKwkJCQkgICBpb3F1ZXVlLCAwLCAwLCAmdGhyZWFkW2ldKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgYXBwX3BlcnJvcigiRXJyb3IgY3JlYXRpbmcgdGhyZWFkIiwgc3RhdHVzKTsKKwkgICAgcmV0dXJuIC0yMDsKKwl9CisgICAgfQorCisgICAgLyogQ3JlYXRlIHBhaXIgb2YgY2xpZW50L3NlcnZlciBzb2NrZXRzICovCisgICAgc3RhdHVzID0gYXBwX3NvY2tldHBhaXIocGpfQUZfSU5FVCgpLCBwal9TT0NLX0RHUkFNKCksIDAsIAorCQkJICAgICZzb2NrX2RhdGEuc29jaywgJnNvY2tfZGF0YS5jc29jayk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiYXBwX3NvY2tldHBhaXIgZXJyb3IiLCBzdGF0dXMpOworCXJldHVybiAtMzA7CisgICAgfQorCisKKyAgICAvKiBJbml0aWFsaXplIHRlc3QgZGF0YSAqLworICAgIHNvY2tfZGF0YS5wb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCAic2QiLCAxMDAwLCAxMDAwLCBOVUxMKTsKKyAgICBzb2NrX2RhdGEuYnVmZmVyID0gKGNoYXIqKSBwal9wb29sX2FsbG9jKHNvY2tfZGF0YS5wb29sLCAxMjgpOworICAgIHNvY2tfZGF0YS5idWZzaXplID0gMTI4OworICAgIHNvY2tfZGF0YS5vcF9rZXkgPSAocGpfaW9xdWV1ZV9vcF9rZXlfdCopIAorICAgIAkJICAgICAgIHBqX3Bvb2xfYWxsb2Moc29ja19kYXRhLnBvb2wsIAorCQkJCSAgICAgc2l6ZW9mKCpzb2NrX2RhdGEub3Bfa2V5KSk7CisgICAgc29ja19kYXRhLnJlY2VpdmVkID0gMDsKKyAgICBzb2NrX2RhdGEudW5yZWdpc3RlcmVkID0gMDsKKworICAgIHBqX2lvcXVldWVfb3Bfa2V5X2luaXQoc29ja19kYXRhLm9wX2tleSwgc2l6ZW9mKCpzb2NrX2RhdGEub3Bfa2V5KSk7CisKKyAgICBzdGF0dXMgPSBwal9tdXRleF9jcmVhdGVfc2ltcGxlKHNvY2tfZGF0YS5wb29sLCAic2QiLCAmc29ja19kYXRhLm11dGV4KTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCJjcmVhdGVfbXV0ZXgoKSBlcnJvciIsIHN0YXR1cyk7CisJcmV0dXJuIC0zNTsKKyAgICB9CisKKyAgICAvKiBSZWdpc3RlciBzb2NrZXQgdG8gaW9xdWV1ZSAqLworICAgIHBqX2J6ZXJvKCZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CisgICAgY2FsbGJhY2sub25fcmVhZF9jb21wbGV0ZSA9ICZvbl9yZWFkX2NvbXBsZXRlOworICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayhzb2NrX2RhdGEucG9vbCwgaW9xdWV1ZSwgc29ja19kYXRhLnNvY2ssCisJCQkJICAgICAgTlVMTCwgJmNhbGxiYWNrLCAmc29ja19kYXRhLmtleSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigicGpfaW9xdWV1ZV9yZWdpc3RlciBlcnJvciIsIHN0YXR1cyk7CisJcmV0dXJuIC00MDsKKyAgICB9CisKKyAgICAvKiBCb290c3RyYXAgdGhlIGZpcnN0IHNlbmQvcmVjZWl2ZSAqLworICAgIG9uX3JlYWRfY29tcGxldGUoc29ja19kYXRhLmtleSwgc29ja19kYXRhLm9wX2tleSwgMCk7CisKKyAgICAvKiBMb29wIHVudGlsIHRlc3QgdGltZSBlbmRzICovCisgICAgZm9yICg7OykgeworCXBqX3RpbWVfdmFsIG5vdywgdGltZW91dDsKKwlpbnQgbjsKKworCXBqX2dldHRpbWVvZmRheSgmbm93KTsKKworCWlmICh0ZXN0X21ldGhvZCA9PSBVTlJFR0lTVEVSX0lOX0FQUCAmJiAKKwkgICAgUEpfVElNRV9WQUxfR1RFKG5vdywgdGltZV90b191bnJlZ2lzdGVyKSAmJgorCSAgICAhc29ja19kYXRhLnVucmVnaXN0ZXJlZCkgCisJeworCSAgICBzb2NrX2RhdGEudW5yZWdpc3RlcmVkID0gMTsKKwkgICAgLyogV2FpdCAoYXMgbXVjaCBhcyBwb3NzaWJsZSkgZm9yIGNhbGxiYWNrIHRvIGNvbXBsZXRlICovCisJICAgIHBqX211dGV4X2xvY2soc29ja19kYXRhLm11dGV4KTsKKwkgICAgcGpfbXV0ZXhfdW5sb2NrKHNvY2tfZGF0YS5tdXRleCk7CisJICAgIHBqX2lvcXVldWVfdW5yZWdpc3Rlcihzb2NrX2RhdGEua2V5KTsKKwl9CisKKwlpZiAoUEpfVElNRV9WQUxfR1Qobm93LCBlbmRfdGltZSkgJiYgc29ja19kYXRhLnVucmVnaXN0ZXJlZCkKKwkgICAgYnJlYWs7CisKKwl0aW1lb3V0LnNlYyA9IDA7IHRpbWVvdXQubXNlYyA9IDEwOworCW4gPSBwal9pb3F1ZXVlX3BvbGwoaW9xdWV1ZSwgJnRpbWVvdXQpOworCWlmIChuIDwgMCkgeworCSAgICBhcHBfcGVycm9yKCJwal9pb3F1ZXVlX3BvbGwgZXJyb3IiLCAtbik7CisJICAgIHBqX3RocmVhZF9zbGVlcCgxKTsKKwl9CisgICAgfQorCisgICAgdGhyZWFkX3F1aXR0aW5nID0gMTsKKworICAgIGZvciAoaT0wOyBpPFdPUktFUl9DTlQ7ICsraSkgeworCXBqX3RocmVhZF9qb2luKHRocmVhZFtpXSk7CisJcGpfdGhyZWFkX2Rlc3Ryb3kodGhyZWFkW2ldKTsKKyAgICB9CisKKyAgICAvKiBEZXN0cm95IGRhdGEgKi8KKyAgICBwal9tdXRleF9kZXN0cm95KHNvY2tfZGF0YS5tdXRleCk7CisgICAgcGpfcG9vbF9yZWxlYXNlKHNvY2tfZGF0YS5wb29sKTsKKyAgICBzb2NrX2RhdGEucG9vbCA9IE5VTEw7CisKKyAgICBpZiAob3RoZXJfc29ja2V0KSB7CisJcGpfaW9xdWV1ZV91bnJlZ2lzdGVyKG9zZC5rZXkpOworICAgIH0KKworICAgIHBqX3NvY2tfY2xvc2Uoc29ja19kYXRhLmNzb2NrKTsKKworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi4uJXM6IGRvbmUgKCVkIEtCL3MpIiwKKwkgICAgICB0aXRsZSwgc29ja19kYXRhLnJlY2VpdmVkICogMTAwMCAvIE1TRUMgLyAxMDAwKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdWRwX2lvcXVldWVfdW5yZWdfdGVzdF9pbXAocGpfYm9vbF90IGFsbG93X2NvbmN1cikKK3sKKyAgICBlbnVtIHsgTE9PUCA9IDEwIH07CisgICAgaW50IGksIHJjOworICAgIGNoYXIgdGl0bGVbMzBdOworICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZTsKKyAgICBwal9wb29sX3QgKnRlc3RfcG9vbDsKKwkKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi50ZXN0aW5nIHdpdGggY29uY3VyZW5jeT0lZCIsIGFsbG93X2NvbmN1cikpOworCisgICAgdGVzdF9tZXRob2QgPSBVTlJFR0lTVEVSX0lOX0FQUDsKKworICAgIHRlc3RfcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgInVucmVndGVzdCIsIDQwMDAsIDQwMDAsIE5VTEwpOworCisgICAgcmMgPSBwal9pb3F1ZXVlX2NyZWF0ZSh0ZXN0X3Bvb2wsIDE2LCAmaW9xdWV1ZSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCJFcnJvciBjcmVhdGluZyBpb3F1ZXVlIiwgcmMpOworCXJldHVybiAtMTA7CisgICAgfQorCisgICAgcmMgPSBwal9pb3F1ZXVlX3NldF9kZWZhdWx0X2NvbmN1cnJlbmN5KGlvcXVldWUsIGFsbG93X2NvbmN1cik7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCJFcnJvciBpbiBwal9pb3F1ZXVlX3NldF9kZWZhdWx0X2NvbmN1cnJlbmN5KCkiLCByYyk7CisJcmV0dXJuIC0xMjsKKyAgICB9CisKKyAgICBQSl9MT0coMywgKFRISVNfRklMRSwgIi4uLmlvcXVldWUgdW5yZWdpc3RlciBzdHJlc3MgdGVzdCAwLzMsIHVucmVnaXN0ZXIgaW4gYXBwICglcykiLCAKKwkgICAgICAgcGpfaW9xdWV1ZV9uYW1lKCkpKTsKKyAgICBmb3IgKGk9MDsgaTxMT09QOyArK2kpIHsKKwlwal9hbnNpX3NwcmludGYodGl0bGUsICJyZXBlYXQgJWQvJWQiLCBpLCBMT09QKTsKKwlyYyA9IHBlcmZvcm1fdW5yZWdfdGVzdChpb3F1ZXVlLCB0ZXN0X3Bvb2wsIHRpdGxlLCAwKTsKKwlpZiAocmMgIT0gMCkKKwkgICAgcmV0dXJuIHJjOworICAgIH0KKworCisgICAgUEpfTE9HKDMsIChUSElTX0ZJTEUsICIuLi5pb3F1ZXVlIHVucmVnaXN0ZXIgc3RyZXNzIHRlc3QgMS8zLCB1bnJlZ2lzdGVyIGluIGFwcCAoJXMpIiwKKwkgICAgICAgcGpfaW9xdWV1ZV9uYW1lKCkpKTsKKyAgICBmb3IgKGk9MDsgaTxMT09QOyArK2kpIHsKKwlwal9hbnNpX3NwcmludGYodGl0bGUsICJyZXBlYXQgJWQvJWQiLCBpLCBMT09QKTsKKwlyYyA9IHBlcmZvcm1fdW5yZWdfdGVzdChpb3F1ZXVlLCB0ZXN0X3Bvb2wsIHRpdGxlLCAxKTsKKwlpZiAocmMgIT0gMCkKKwkgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIHRlc3RfbWV0aG9kID0gVU5SRUdJU1RFUl9JTl9DQUxMQkFDSzsKKworICAgIFBKX0xPRygzLCAoVEhJU19GSUxFLCAiLi4uaW9xdWV1ZSB1bnJlZ2lzdGVyIHN0cmVzcyB0ZXN0IDIvMywgdW5yZWdpc3RlciBpbiBjYiAoJXMpIiwgCisJICAgICAgIHBqX2lvcXVldWVfbmFtZSgpKSk7CisgICAgZm9yIChpPTA7IGk8TE9PUDsgKytpKSB7CisJcGpfYW5zaV9zcHJpbnRmKHRpdGxlLCAicmVwZWF0ICVkLyVkIiwgaSwgTE9PUCk7CisJcmMgPSBwZXJmb3JtX3VucmVnX3Rlc3QoaW9xdWV1ZSwgdGVzdF9wb29sLCB0aXRsZSwgMCk7CisJaWYgKHJjICE9IDApCisJICAgIHJldHVybiByYzsKKyAgICB9CisKKworICAgIFBKX0xPRygzLCAoVEhJU19GSUxFLCAiLi4uaW9xdWV1ZSB1bnJlZ2lzdGVyIHN0cmVzcyB0ZXN0IDMvMywgdW5yZWdpc3RlciBpbiBjYiAoJXMpIiwgCisJICAgICAgIHBqX2lvcXVldWVfbmFtZSgpKSk7CisgICAgZm9yIChpPTA7IGk8TE9PUDsgKytpKSB7CisJcGpfYW5zaV9zcHJpbnRmKHRpdGxlLCAicmVwZWF0ICVkLyVkIiwgaSwgTE9PUCk7CisJcmMgPSBwZXJmb3JtX3VucmVnX3Rlc3QoaW9xdWV1ZSwgdGVzdF9wb29sLCB0aXRsZSwgMSk7CisJaWYgKHJjICE9IDApCisJICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICBwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xdWV1ZSk7CisgICAgcGpfcG9vbF9yZWxlYXNlKHRlc3RfcG9vbCk7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IHVkcF9pb3F1ZXVlX3VucmVnX3Rlc3Qodm9pZCkKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IHVkcF9pb3F1ZXVlX3VucmVnX3Rlc3RfaW1wKFBKX1RSVUUpOworICAgIGlmIChyYyAhPSAwKQorICAgIAlyZXR1cm4gcmM7CisKKyAgICByYyA9IHVkcF9pb3F1ZXVlX3VucmVnX3Rlc3RfaW1wKFBKX0ZBTFNFKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gcmM7CisKKyAgICByZXR1cm4gMDsKK30KKworI2Vsc2UKKy8qIFRvIHByZXZlbnQgd2FybmluZyBhYm91dCAidHJhbnNsYXRpb24gdW5pdCBpcyBlbXB0eSIKKyAqIHdoZW4gdGhpcyB0ZXN0IGlzIGRpc2FibGVkLiAKKyAqLworaW50IGR1bW15X3VpcV91bnJlZzsKKyNlbmRpZgkvKiBJTkNMVURFX0lPUVVFVUVfVU5SRUdfVEVTVCAqLworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2xpc3QuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L2xpc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzU0ZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvbGlzdC5jCkBAIC0wLDAgKzEsMjI3IEBACisvKiAkSWQ6IGxpc3QuYyA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKy8qKgorICogXHBhZ2UgcGFnZV9wamxpYl9saXN0X3Rlc3QgVGVzdDogTGlua2VkIExpc3QKKyAqCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgaW1wbGVtZW50YXRpb24gb2YgXGIgbGlzdF90ZXN0KCkuIEl0IHRlc3RzIHRoZQorICogZnVuY3Rpb25hbGl0eSBvZiB0aGUgbGlua2VkLWxpc3QgQVBJLgorICoKKyAqIFxzZWN0aW9uIGxpc3RfdGVzdF9zZWMgU2NvcGUgb2YgdGhlIFRlc3QKKyAqCisgKiBBUEkgdGVzdGVkOgorICogIC0gcGpfbGlzdF9pbml0KCkKKyAqICAtIHBqX2xpc3RfaW5zZXJ0X2JlZm9yZSgpCisgKiAgLSBwal9saXN0X2luc2VydF9hZnRlcigpCisgKiAgLSBwal9saXN0X21lcmdlX2xhc3QoKQorICogIC0gcGpfbGlzdF9lbXB0eSgpCisgKiAgLSBwal9saXN0X2luc2VydF9ub2Rlc19iZWZvcmUoKQorICogIC0gcGpfbGlzdF9lcmFzZSgpCisgKiAgLSBwal9saXN0X2ZpbmRfbm9kZSgpCisgKiAgLSBwal9saXN0X3NlYXJjaCgpCisgKgorICoKKyAqIFRoaXMgZmlsZSBpcyA8Yj5wamxpYi10ZXN0L2xpc3QuYzwvYj4KKyAqCisgKiBcaW5jbHVkZSBwamxpYi10ZXN0L2xpc3QuYworICovCisKKyNpZiBJTkNMVURFX0xJU1RfVEVTVAorCisjaW5jbHVkZSA8cGpsaWIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgbGlzdF9ub2RlCit7CisgICAgUEpfREVDTF9MSVNUX01FTUJFUihzdHJ1Y3QgbGlzdF9ub2RlKTsKKyAgICBpbnQgdmFsdWU7Cit9IGxpc3Rfbm9kZTsKKworc3RhdGljIGludCBjb21wYXJlX25vZGUodm9pZCAqdmFsdWUsIGNvbnN0IHBqX2xpc3RfdHlwZSAqbmQpCit7CisgICAgbGlzdF9ub2RlICpub2RlID0gKGxpc3Rfbm9kZSopbmQ7CisgICAgcmV0dXJuICgobG9uZykocGpfc3NpemVfdCl2YWx1ZSA9PSBub2RlLT52YWx1ZSkgPyAwIDogLTE7Cit9CisKKyNkZWZpbmUgUEpfU0lHTkVEX0FSUkFZX1NJWkUoYSkJKChpbnQpUEpfQVJSQVlfU0laRShhKSkKKworaW50IGxpc3RfdGVzdCgpCit7CisgICAgbGlzdF9ub2RlIG5vZGVzWzRdOyAgICAvLyBtdXN0IGJlIGV2ZW4gbnVtYmVyIG9mIG5vZGVzCisgICAgbGlzdF9ub2RlIGxpc3Q7CisgICAgbGlzdF9ub2RlIGxpc3QyOworICAgIGxpc3Rfbm9kZSAqcDsKKyAgICBpbnQgaTsgLy8gZG9uJ3QgY2hhbmdlIHRvIHVuc2lnbmVkIQorCisgICAgLy8KKyAgICAvLyBUZXN0IGluc2VydF9iZWZvcmUoKS4KKyAgICAvLworICAgIGxpc3QudmFsdWUgPSAodW5zaWduZWQpLTE7CisgICAgcGpfbGlzdF9pbml0KCZsaXN0KTsKKyAgICBmb3IgKGk9MDsgaTxQSl9TSUdORURfQVJSQVlfU0laRShub2Rlcyk7ICsraSkgeworCW5vZGVzW2ldLnZhbHVlID0gaTsKKwlwal9saXN0X2luc2VydF9iZWZvcmUoJmxpc3QsICZub2Rlc1tpXSk7CisgICAgfQorICAgIC8vIGNoZWNrLgorICAgIGZvciAoaT0wLCBwPWxpc3QubmV4dDsgaTxQSl9TSUdORURfQVJSQVlfU0laRShub2Rlcyk7ICsraSwgcD1wLT5uZXh0KSB7CisJcGpfYXNzZXJ0KHAtPnZhbHVlID09IGkpOworCWlmIChwLT52YWx1ZSAhPSBpKSB7CisJICAgIHJldHVybiAtMTsKKwl9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBUZXN0IGluc2VydF9hZnRlcigpCisgICAgLy8KKyAgICBwal9saXN0X2luaXQoJmxpc3QpOworICAgIGZvciAoaT1QSl9TSUdORURfQVJSQVlfU0laRShub2RlcyktMTsgaT49MDsgLS1pKSB7CisJcGpfbGlzdF9pbnNlcnRfYWZ0ZXIoJmxpc3QsICZub2Rlc1tpXSk7CisgICAgfQorICAgIC8vIGNoZWNrLgorICAgIGZvciAoaT0wLCBwPWxpc3QubmV4dDsgaTxQSl9TSUdORURfQVJSQVlfU0laRShub2Rlcyk7ICsraSwgcD1wLT5uZXh0KSB7CisJcGpfYXNzZXJ0KHAtPnZhbHVlID09IGkpOworCWlmIChwLT52YWx1ZSAhPSBpKSB7CisJICAgIHJldHVybiAtMTsKKwl9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBUZXN0IG1lcmdlX2xhc3QoKQorICAgIC8vCisgICAgLy8gSW5pdCBsaXN0cworICAgIHBqX2xpc3RfaW5pdCgmbGlzdCk7CisgICAgcGpfbGlzdF9pbml0KCZsaXN0Mik7CisgICAgZm9yIChpPTA7IGk8UEpfU0lHTkVEX0FSUkFZX1NJWkUobm9kZXMpLzI7ICsraSkgeworCXBqX2xpc3RfaW5zZXJ0X2JlZm9yZSgmbGlzdCwgJm5vZGVzW2ldKTsKKyAgICB9CisgICAgZm9yIChpPVBKX1NJR05FRF9BUlJBWV9TSVpFKG5vZGVzKS8yOyBpPFBKX1NJR05FRF9BUlJBWV9TSVpFKG5vZGVzKTsgKytpKSB7CisJcGpfbGlzdF9pbnNlcnRfYmVmb3JlKCZsaXN0MiwgJm5vZGVzW2ldKTsKKyAgICB9CisgICAgLy8gbWVyZ2UKKyAgICBwal9saXN0X21lcmdlX2xhc3QoJmxpc3QsICZsaXN0Mik7CisgICAgLy8gY2hlY2suCisgICAgZm9yIChpPTAsIHA9bGlzdC5uZXh0OyBpPFBKX1NJR05FRF9BUlJBWV9TSVpFKG5vZGVzKTsgKytpLCBwPXAtPm5leHQpIHsKKwlwal9hc3NlcnQocC0+dmFsdWUgPT0gaSk7CisJaWYgKHAtPnZhbHVlICE9IGkpIHsKKwkgICAgcmV0dXJuIC0xOworCX0KKyAgICB9CisgICAgLy8gY2hlY2sgbGlzdCBpcyBlbXB0eQorICAgIHBqX2Fzc2VydCggcGpfbGlzdF9lbXB0eSgmbGlzdDIpICk7CisgICAgaWYgKCFwal9saXN0X2VtcHR5KCZsaXN0MikpIHsKKwlyZXR1cm4gLTE7CisgICAgfQorCisgICAgLy8gCisgICAgLy8gQ2hlY2sgbWVyZ2VfZmlyc3QoKQorICAgIC8vCisgICAgcGpfbGlzdF9pbml0KCZsaXN0KTsKKyAgICBwal9saXN0X2luaXQoJmxpc3QyKTsKKyAgICBmb3IgKGk9MDsgaTxQSl9TSUdORURfQVJSQVlfU0laRShub2RlcykvMjsgKytpKSB7CisJcGpfbGlzdF9pbnNlcnRfYmVmb3JlKCZsaXN0LCAmbm9kZXNbaV0pOworICAgIH0KKyAgICBmb3IgKGk9UEpfU0lHTkVEX0FSUkFZX1NJWkUobm9kZXMpLzI7IGk8UEpfU0lHTkVEX0FSUkFZX1NJWkUobm9kZXMpOyArK2kpIHsKKwlwal9saXN0X2luc2VydF9iZWZvcmUoJmxpc3QyLCAmbm9kZXNbaV0pOworICAgIH0KKyAgICAvLyBtZXJnZQorICAgIHBqX2xpc3RfbWVyZ2VfZmlyc3QoJmxpc3QyLCAmbGlzdCk7CisgICAgLy8gY2hlY2sgKGxpc3QyKS4KKyAgICBmb3IgKGk9MCwgcD1saXN0Mi5uZXh0OyBpPFBKX1NJR05FRF9BUlJBWV9TSVpFKG5vZGVzKTsgKytpLCBwPXAtPm5leHQpIHsKKwlwal9hc3NlcnQocC0+dmFsdWUgPT0gaSk7CisJaWYgKHAtPnZhbHVlICE9IGkpIHsKKwkgICAgcmV0dXJuIC0xOworCX0KKyAgICB9CisgICAgLy8gY2hlY2sgbGlzdCBpcyBlbXB0eQorICAgIHBqX2Fzc2VydCggcGpfbGlzdF9lbXB0eSgmbGlzdCkgKTsKKyAgICBpZiAoIXBqX2xpc3RfZW1wdHkoJmxpc3QpKSB7CisJcmV0dXJuIC0xOworICAgIH0KKworICAgIC8vCisgICAgLy8gVGVzdCBpbnNlcnRfbm9kZXNfYmVmb3JlKCkKKyAgICAvLworICAgIC8vIGluaXQgbGlzdAorICAgIHBqX2xpc3RfaW5pdCgmbGlzdCk7CisgICAgZm9yIChpPTA7IGk8UEpfU0lHTkVEX0FSUkFZX1NJWkUobm9kZXMpLzI7ICsraSkgeworCXBqX2xpc3RfaW5zZXJ0X2JlZm9yZSgmbGlzdCwgJm5vZGVzW2ldKTsKKyAgICB9CisgICAgLy8gY2hhaW4gcmVtYWluaW5nIG5vZGVzCisgICAgcGpfbGlzdF9pbml0KCZub2Rlc1tQSl9TSUdORURfQVJSQVlfU0laRShub2RlcykvMl0pOworICAgIGZvciAoaT1QSl9TSUdORURfQVJSQVlfU0laRShub2RlcykvMisxOyBpPFBKX1NJR05FRF9BUlJBWV9TSVpFKG5vZGVzKTsgKytpKSB7CisJcGpfbGlzdF9pbnNlcnRfYmVmb3JlKCZub2Rlc1tQSl9TSUdORURfQVJSQVlfU0laRShub2RlcykvMl0sICZub2Rlc1tpXSk7CisgICAgfQorICAgIC8vIGluc2VydCBub2RlcworICAgIHBqX2xpc3RfaW5zZXJ0X25vZGVzX2JlZm9yZSgmbGlzdCwgJm5vZGVzW1BKX1NJR05FRF9BUlJBWV9TSVpFKG5vZGVzKS8yXSk7CisgICAgLy8gY2hlY2sKKyAgICBmb3IgKGk9MCwgcD1saXN0Lm5leHQ7IGk8UEpfU0lHTkVEX0FSUkFZX1NJWkUobm9kZXMpOyArK2ksIHA9cC0+bmV4dCkgeworCXBqX2Fzc2VydChwLT52YWx1ZSA9PSBpKTsKKwlpZiAocC0+dmFsdWUgIT0gaSkgeworCSAgICByZXR1cm4gLTE7CisJfQorICAgIH0KKworICAgIC8vIGVyYXNlIHRlc3QuCisgICAgcGpfbGlzdF9pbml0KCZsaXN0KTsKKyAgICBmb3IgKGk9MDsgaTxQSl9TSUdORURfQVJSQVlfU0laRShub2Rlcyk7ICsraSkgeworCW5vZGVzW2ldLnZhbHVlID0gaTsKKwlwal9saXN0X2luc2VydF9iZWZvcmUoJmxpc3QsICZub2Rlc1tpXSk7CisgICAgfQorICAgIGZvciAoaT1QSl9TSUdORURfQVJSQVlfU0laRShub2RlcyktMTsgaT49MDsgLS1pKSB7CisJaW50IGo7CisJcGpfbGlzdF9lcmFzZSgmbm9kZXNbaV0pOworCWZvciAoaj0wLCBwPWxpc3QubmV4dDsgajxpOyArK2osIHA9cC0+bmV4dCkgeworCSAgICBwal9hc3NlcnQocC0+dmFsdWUgPT0gaik7CisJICAgIGlmIChwLT52YWx1ZSAhPSBqKSB7CisJCXJldHVybiAtMTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvLyBmaW5kIGFuZCBzZWFyY2gKKyAgICBwal9saXN0X2luaXQoJmxpc3QpOworICAgIGZvciAoaT0wOyBpPFBKX1NJR05FRF9BUlJBWV9TSVpFKG5vZGVzKTsgKytpKSB7CisJbm9kZXNbaV0udmFsdWUgPSBpOworCXBqX2xpc3RfaW5zZXJ0X2JlZm9yZSgmbGlzdCwgJm5vZGVzW2ldKTsKKyAgICB9CisgICAgZm9yIChpPTA7IGk8UEpfU0lHTkVEX0FSUkFZX1NJWkUobm9kZXMpOyArK2kpIHsKKwlwID0gKGxpc3Rfbm9kZSopIHBqX2xpc3RfZmluZF9ub2RlKCZsaXN0LCAmbm9kZXNbaV0pOworCXBqX2Fzc2VydCggcCA9PSAmbm9kZXNbaV0gKTsKKwlpZiAocCAhPSAmbm9kZXNbaV0pIHsKKwkgICAgcmV0dXJuIC0xOworCX0KKwlwID0gKGxpc3Rfbm9kZSopIHBqX2xpc3Rfc2VhcmNoKCZsaXN0LCAodm9pZCopKHBqX3NzaXplX3QpaSwgCisJCQkJCSZjb21wYXJlX25vZGUpOworCXBqX2Fzc2VydCggcCA9PSAmbm9kZXNbaV0gKTsKKwlpZiAocCAhPSAmbm9kZXNbaV0pIHsKKwkgICAgcmV0dXJuIC0xOworCX0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV9saXN0X3Rlc3Q7CisjZW5kaWYJLyogSU5DTFVERV9MSVNUX1RFU1QgKi8KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9tYWluLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAyNDFiNgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L21haW4uYwpAQCAtMCwwICsxLDEwNyBAQAorLyogJElkOiBtYWluLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworZXh0ZXJuIGludCBwYXJhbV9lY2hvX3NvY2tfdHlwZTsKK2V4dGVybiBjb25zdCBjaGFyICpwYXJhbV9lY2hvX3NlcnZlcjsKK2V4dGVybiBpbnQgcGFyYW1fZWNob19wb3J0OworCisKKy8vI2lmIGRlZmluZWQoUEpfV0lOMzIpICYmIFBKX1dJTjMyIT0wCisjaWYgMAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KK3N0YXRpYyB2b2lkIGJvb3N0KHZvaWQpCit7CisgICAgU2V0UHJpb3JpdHlDbGFzcyhHZXRDdXJyZW50UHJvY2VzcygpLCBSRUFMVElNRV9QUklPUklUWV9DTEFTUyk7Cit9CisjZWxzZQorI2RlZmluZSBib29zdCgpCisjZW5kaWYKKworI2lmIGRlZmluZWQoUEpfU1VOT1MpICYmIFBKX1NVTk9TIT0wCisjaW5jbHVkZSA8c2lnbmFsLmg+CitzdGF0aWMgdm9pZCBpbml0X3NpZ25hbHMoKQoreworICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0OworCisgICAgbWVtc2V0KCZhY3QsIDAsIHNpemVvZihhY3QpKTsKKyAgICBhY3Quc2FfaGFuZGxlciA9IFNJR19JR047CisKKyAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFjdCwgTlVMTCk7Cit9CisKKyNlbHNlCisjZGVmaW5lIGluaXRfc2lnbmFscygpCisjZW5kaWYKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgcmM7CisgICAgaW50IGludGVycmFjdGl2ZSA9IDA7CisKKyAgICBib29zdCgpOworICAgIGluaXRfc2lnbmFscygpOworCisgICAgd2hpbGUgKGFyZ2MgPiAxKSB7CisgICAgICAgIGNoYXIgKmFyZyA9IGFyZ3ZbLS1hcmdjXTsKKworCWlmICgqYXJnPT0nLScgJiYgKihhcmcrMSk9PSdpJykgeworCSAgICBpbnRlcnJhY3RpdmUgPSAxOworCisJfSBlbHNlIGlmICgqYXJnPT0nLScgJiYgKihhcmcrMSk9PSdwJykgeworICAgICAgICAgICAgcGpfc3RyX3QgcG9ydCA9IHBqX3N0cihhcmd2Wy0tYXJnY10pOworCisgICAgICAgICAgICBwYXJhbV9lY2hvX3BvcnQgPSBwal9zdHJ0b3VsKCZwb3J0KTsKKworICAgICAgICB9IGVsc2UgaWYgKCphcmc9PSctJyAmJiAqKGFyZysxKT09J3MnKSB7CisgICAgICAgICAgICBwYXJhbV9lY2hvX3NlcnZlciA9IGFyZ3ZbLS1hcmdjXTsKKworICAgICAgICB9IGVsc2UgaWYgKCphcmc9PSctJyAmJiAqKGFyZysxKT09J3QnKSB7CisgICAgICAgICAgICBwal9zdHJfdCB0eXBlID0gcGpfc3RyKGFyZ3ZbLS1hcmdjXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwal9zdHJpY21wMigmdHlwZSwgInRjcCIpPT0wKQorICAgICAgICAgICAgICAgIHBhcmFtX2VjaG9fc29ja190eXBlID0gcGpfU09DS19TVFJFQU0oKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBqX3N0cmljbXAyKCZ0eXBlLCAidWRwIik9PTApCisgICAgICAgICAgICAgICAgcGFyYW1fZWNob19zb2NrX3R5cGUgPSBwal9TT0NLX0RHUkFNKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQSl9MT0coMywoIiIsICJlcnJvcjogdW5rbm93biBzb2NrZXQgdHlwZSAlcyIsIHR5cGUucHRyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByYyA9IHRlc3RfbWFpbigpOworCisgICAgaWYgKGludGVycmFjdGl2ZSkgeworCWNoYXIgc1sxMF07CisJcHV0cygiIik7CisJcHV0cygiUHJlc3MgPEVOVEVSPiB0byBleGl0Iik7CisJaWYgKCFmZ2V0cyhzLCBzaXplb2YocyksIHN0ZGluKSkKKwkgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvbWFpbl9tb2QuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L21haW5fbW9kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI1MmE2ZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L21haW5fbW9kLmMKQEAgLTAsMCArMSw0MCBAQAorLyogJElkOiBtYWluX21vZC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSAidGVzdC5oIgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorCitpbnQgaW5pdF9tb2R1bGUodm9pZCkKK3sKKyAgICBwcmludGsoS0VSTl9JTkZPICJQSkxJQiB0ZXN0IG1vZHVsZSBsb2FkZWQuIFN0YXJ0aW5nIHRlc3RzLi4uXG4iKTsKKyAgICAKKyAgICB0ZXN0X21haW4oKTsKKworICAgIC8qIFByZXZlbnQgbW9kdWxlIGZyb20gbG9hZGluZy4gV2UndmUgZmluaXNoZWQgdGVzdCBhbnl3YXkuLiAqLworICAgIHJldHVybiAxOworfQorCit2b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpCit7CisgICAgcHJpbnRrKEtFUk5fSU5GTyAiUEpMSUIgdGVzdCBtb2R1bGUgdW5sb2FkaW5nLi4uXG4iKTsKK30KKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9tYWluX3J0ZW1zLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9tYWluX3J0ZW1zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJjOGQ5YgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L21haW5fcnRlbXMuYwpAQCAtMCwwICsxLDMyNiBAQAorLyogJElkOiBtYWluX3J0ZW1zLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKworLyoKKyAqIC0gTWFueSB0aGFua3MgZm9yIFpldHJvbiwgSW5jLiBhbmQgUGhpbCBUb3JyZSA8cHRvcnJlQHpldHJvbi5jb20+IGZvciAKKyAqICAgZG9uYXRpbmcgdGhpcyBmaWxlIGFuZCB0aGUgUlRFTVMgcG9ydCBpbiBnZW5lcmFsIQorICovCisKKyNpbmNsdWRlICJ0ZXN0LmgiCisKKyNpbmNsdWRlIDxwai9lcnJuby5oPgorI2luY2x1ZGUgPHBqL3N0cmluZy5oPgorI2luY2x1ZGUgPHBqL3NvY2suaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKworZXh0ZXJuIGludCBwYXJhbV9lY2hvX3NvY2tfdHlwZTsKK2V4dGVybiBjb25zdCBjaGFyICpwYXJhbV9lY2hvX3NlcnZlcjsKK2V4dGVybiBpbnQgcGFyYW1fZWNob19wb3J0OworCisjaW5jbHVkZSA8YnNwLmg+CisKKyNkZWZpbmUgQ09ORklHVVJFX1VTRV9JTUZTX0FTX0JBU0VfRklMRVNZU1RFTQorI2RlZmluZSBDT05GSUdVUkVfTElCSU9fTUFYSU1VTV9GSUxFX0RFU0NSSVBUT1JTICAgIDMwMAorI2RlZmluZSBDT05GSUdVUkVfTUFYSU1VTV9UQVNLUyAgICAgICAgICAgICAgICAgICAgIDUwCisjZGVmaW5lIENPTkZJR1VSRV9NQVhJTVVNX01FU1NBR0VfUVVFVUVTICAgICAgICAgICAgcnRlbXNfcmVzb3VyY2VfdW5saW1pdGVkKDEwKQorI2RlZmluZSBDT05GSUdVUkVfTUFYSU1VTV9TRU1BUEhPUkVTICAgICAgICAgICAgICAgIHJ0ZW1zX3Jlc291cmNlX3VubGltaXRlZCgxMCkKKyNkZWZpbmUgQ09ORklHVVJFX01BWElNVU1fVElNRVJTICAgICAgICAgICAgICAgICAgICA1MAorI2RlZmluZSBDT05GSUdVUkVfTUFYSU1VTV9SRUdJT05TICAgICAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgQ09ORklHVVJFX0FQUExJQ0FUSU9OX05FRURTX0NPTlNPTEVfRFJJVkVSCisjZGVmaW5lIENPTkZJR1VSRV9BUFBMSUNBVElPTl9ORUVEU19DTE9DS19EUklWRVIKKyNkZWZpbmUgQ09ORklHVVJFX0FQUExJQ0FUSU9OX05FRURTX1RJTUVSX0RSSVZFUgorI2RlZmluZSBDT05GSUdVUkVfVElDS1NfUEVSX1RJTUVTTElDRSAgICAgICAgICAgICAgIDIKKy8vI2RlZmluZSBDT05GSUdVUkVfUlRFTVNfSU5JVF9UQVNLU19UQUJMRQorI2RlZmluZSBDT05GSUdVUkVfUE9TSVhfSU5JVF9USFJFQURfVEFCTEUKKworCisjZGVmaW5lIENPTkZJR1VSRV9NQVhJTVVNX1BPU0lYX01VVEVYRVMJICAgIHJ0ZW1zX3Jlc291cmNlX3VubGltaXRlZCgxNikKKyNkZWZpbmUgQ09ORklHVVJFX01BWElNVU1fUE9TSVhfQ09ORElUSU9OX1ZBUklBQkxFUyBydGVtc19yZXNvdXJjZV91bmxpbWl0ZWQoNSkKKyNkZWZpbmUgQ09ORklHVVJFX01BWElNVU1fUE9TSVhfU0VNQVBIT1JFUyAgcnRlbXNfcmVzb3VyY2VfdW5saW1pdGVkKDE2KQorI2RlZmluZSBDT05GSUdVUkVfTUFYSU1VTV9QT1NJWF9USU1FUlMJICAgIHJ0ZW1zX3Jlc291cmNlX3VubGltaXRlZCg1KQorI2RlZmluZSBDT05GSUdVUkVfTUFYSU1VTV9QT1NJWF9USFJFQURTCSAgICBydGVtc19yZXNvdXJjZV91bmxpbWl0ZWQoMTYpCisjZGVmaW5lIENPTkZJR1VSRV9NQVhJTVVNX1BPU0lYX0tFWVMJICAgIHJ0ZW1zX3Jlc291cmNlX3VubGltaXRlZCgxNikKKworI2RlZmluZSBDT05GSUdVUkVfUE9TSVhfSU5JVF9USFJFQURfU1RBQ0tfU0laRQk0MDk2CisKKy8qIE1ha2Ugc3VyZSB0aGF0IHN0YWNrIHNpemUgaXMgYXQgbGVhc3QgNDA5NiAqLworI2RlZmluZSBTWgkJCQkJKDQwOTYtUlRFTVNfTUlOSU1VTV9TVEFDS19TSVpFKQorI2RlZmluZSBDT05GSUdVUkVfRVhUUkFfVEFTS19TVEFDS1MJCSgoU1opPDAgPyAwIDogKFNaKSkKKworI2RlZmluZSBDT05GSUdVUkVfSU5JVAorI2RlZmluZSBTVEFDS19DSEVDS0VSX09OCisKK3J0ZW1zX3Rhc2sgSW5pdChydGVtc190YXNrX2FyZ3VtZW50IEFyZ3VtZW50KSA7Cit2b2lkICpQT1NJWF9Jbml0KHZvaWQgKmFyZ3VtZW50KTsKKworI2luY2x1ZGUgPGNvbmZkZWZzLmg+CisjaW5jbHVkZSA8cnRlbXMuaD4KKworLyogQW55IHRlc3RzIHRoYXQgd2FudCB0byBidWlsZCBhIGxpbmtlZCBleGVjdXRhYmxlIGZvciBSVEVNUyBtdXN0IGluY2x1ZGUKKyAgIHRoZXNlIGhlYWRlcnMgdG8gZ2V0IGEgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBuZXR3b3JrIHN0YWNrLiAqLworI2luY2x1ZGUgPHJ0ZW1zL3J0ZW1zX2JzZG5ldC5oPgorI2luY2x1ZGUgInJ0ZW1zX25ldHdvcmtfY29uZmlnLmgiCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyNkZWZpbmUgVEhJU19GSUxFICAgIm1haW5fcnRlbXMuYyIKKworc3RhdGljIHZvaWQqIHBqbGliX3Rlc3RfbWFpbih2b2lkKiB1bnVzZWQpOworc3RhdGljIHZvaWQgIGluaXRpYWxpemVfbmV0d29yaygpOworc3RhdGljIHZvaWQgdGVzdF9zb2NrKHZvaWQpOworCitzdGF0aWMgdm9pZCBteV9wZXJyb3IocGpfc3RhdHVzX3Qgc3RhdHVzLCBjb25zdCBjaGFyICp0aXRsZSkKK3sKKyAgICBjaGFyIGVycltQSl9FUlJfTVNHX1NJWkVdOworCisgICAgcGpfc3RyZXJyb3Ioc3RhdHVzLCBlcnIsIHNpemVvZihlcnIpKTsKKyAgICBwcmludGYoIiVzOiAlcyBbJWRdXG4iLCB0aXRsZSwgZXJyLCBzdGF0dXMpOworfQorCisjZGVmaW5lIFRFU1QoZXhwcikgICAgeyBpbnQgcmM7XAorCQkgICAgICAgIC8qUEpfTE9HKDMsKFRISVNfRklMRSwiJXMiLCAjZXhwcikpOyovIFwKKwkJCS8qc2xlZXAoMSk7Ki8gXAorCQkgICAgICAgIHJjPWV4cHI7IFwKKwkJICAgICAgICBpZiAocmMpIG15X3BlcnJvcihQSl9TVEFUVVNfRlJPTV9PUyhyYyksI2V4cHIpOyB9CisKKworCisvL3J0ZW1zX3Rhc2sgSW5pdChydGVtc190YXNrX2FyZ3VtZW50IEFyZ3VtZW50KQordm9pZCAqUE9TSVhfSW5pdCh2b2lkICphcmd1bWVudCkKK3sKKyAgICBwdGhyZWFkX2F0dHJfdAl0aHJlYWRBdHRyOworICAgIHB0aHJlYWRfdCAgICAgCXRoZVRocmVhZDsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0Jc2NoZWRfcGFyYW07CisgICAgc2l6ZV90CQlzdGFja19zaXplOworICAgIGludCAgICAgICAgICAgCXJlc3VsdDsKKyAgICBjaGFyCQlkYXRhWzEwMDBdOworICAgIAorCisgICAgbWVtc2V0KGRhdGEsIDEsIHNpemVvZihkYXRhKSk7CisKKyAgICAvKiBTZXQgdGhlIFRPRCBjbG9jaywgc28gdGhhdCBnZXR0aW1lb2ZkYXkoKSB3aWxsIHdvcmsgKi8KKyAgICBydGVtc190aW1lX29mX2RheSBmYWtlVGltZSA9IHsgMjAwNiwgMywgMTUsIDE3LCAzMCwgMCwgMCB9OworCisgICAgaWYgKFJURU1TX1NVQ0NFU1NGVUwgIT0gcnRlbXNfY2xvY2tfc2V0KCZmYWtlVGltZSkpCisgICAgeworCWFzc2VydCgwKTsKKyAgICB9CQorCisgICAgLyogQnJpbmcgdXAgdGhlIG5ldHdvcmsgc3RhY2sgc28gd2UgY2FuIHJ1biB0aGUgc29ja2V0IHRlc3RzLiAqLworICAgIGluaXRpYWxpemVfbmV0d29yaygpOworCisgICAgLyogU3RhcnQgYSBQT1NJWCB0aHJlYWQgZm9yIHBqbGliX3Rlc3RfbWFpbigpLCBzaW5jZSB0aGF0J3Mgd2hhdCBpdAorICAgICAqIHRoaW5rcyBpdCBpcyBydW5uaW5nIGluLiAKKyAgICAgKi8KKworICAgIC8qIEluaXRpYWxpemUgYXR0cmlidXRlICovCisgICAgVEVTVCggcHRocmVhZF9hdHRyX2luaXQoJnRocmVhZEF0dHIpICk7CisKKyAgICAvKiBMb29rcyBsaWtlIHRoZSByZXN0IG9mIHRoZSBhdHRyaWJ1dGVzIG11c3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQgdG9vLAorICAgICAqIG9yIG90aGVyd2lzZSBwdGhyZWFkX2NyZWF0ZSB3aWxsIHJldHVybiBFSU5WQUwuCisgICAgICovCisKKyAgICAvKiBTcGVjaWZ5IGV4cGxpY2l0IHNjaGVkdWxpbmcgcmVxdWVzdCAqLworICAgIFRFU1QoIHB0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQoJnRocmVhZEF0dHIsIFBUSFJFQURfRVhQTElDSVRfU0NIRUQpKTsKKworICAgIC8qIFRpbWVzbGljaW5nIGlzIG5lZWRlZCBieSB0aHJlYWQgdGVzdCwgYW5kIHRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5CisgICAgICogU0NIRURfUlIuCisgICAgICovCisgICAgVEVTVCggcHRocmVhZF9hdHRyX3NldHNjaGVkcG9saWN5KCZ0aHJlYWRBdHRyLCBTQ0hFRF9SUikpOworCisgICAgLyogU2V0IHByaW9yaXR5ICovCisgICAgVEVTVCggcHRocmVhZF9hdHRyX2dldHNjaGVkcGFyYW0oJnRocmVhZEF0dHIsICZzY2hlZF9wYXJhbSkpOworICAgIHNjaGVkX3BhcmFtLnNjaGVkX3ByaW9yaXR5ID0gTkVUV09SS19TVEFDS19QUklPUklUWSAtIDEwOworICAgIFRFU1QoIHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBhcmFtKCZ0aHJlYWRBdHRyLCAmc2NoZWRfcGFyYW0pKTsKKworICAgIC8qIE11c3QgaGF2ZSBzdWZmaWNpZW50IHN0YWNrIHNpemUgKGxhcmdlIHNpemUgaXMgbmVlZGVkIGJ5CisgICAgICogbG9nZ2VyLCBiZWNhdXNlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGxvZ2dlciBpcyB0byB1c2UgbWVzc2FnZSBidWZmZXIKKyAgICAgKiBmcm9tIHRoZSBzdGFjaykuCisgICAgICovCisgICAgVEVTVCggcHRocmVhZF9hdHRyX2dldHN0YWNrc2l6ZSgmdGhyZWFkQXR0ciwgJnN0YWNrX3NpemUpKTsKKyAgICBpZiAoc3RhY2tfc2l6ZSA8IDgxOTIpCisJVEVTVCggcHRocmVhZF9hdHRyX3NldHN0YWNrc2l6ZSgmdGhyZWFkQXR0ciwgODE5MikpOworCisKKyAgICAvKiBDcmVhdGUgdGhlIHRocmVhZCBmb3IgYXBwbGljYXRpb24gKi8KKyAgICByZXN1bHQgPSBwdGhyZWFkX2NyZWF0ZSgmdGhlVGhyZWFkLCAmdGhyZWFkQXR0ciwgJnBqbGliX3Rlc3RfbWFpbiwgTlVMTCk7CisgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisJbXlfcGVycm9yKFBKX1NUQVRVU19GUk9NX09TKHJlc3VsdCksIAorCQkgICJFcnJvciBjcmVhdGluZyBwamxpYl90ZXN0X21haW4gdGhyZWFkIik7CisJYXNzZXJ0KCEiRXJyb3IgY3JlYXRpbmcgbWFpbiB0aHJlYWQiKTsKKyAgICB9IAorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworCisjZGVmaW5lIGJvb3N0KCkKKyNkZWZpbmUgaW5pdF9zaWduYWxzKCkKKworc3RhdGljIHZvaWQqCitwamxpYl90ZXN0X21haW4odm9pZCogdW51c2VkKQoreworICAgIGludCByYzsKKworICAgIC8qIERyb3Agb3VyIHByaW9yaXR5IHRvIGJlbG93IHRoYXQgb2YgdGhlIG5ldHdvcmsgc3RhY2ssIG90aGVyd2lzZQorICAgICAqIHNlbGVjdCgpIHRlc3RzIHdpbGwgZmFpbC4gKi8KKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gc2NoZWRQYXJhbTsKKyAgICBpbnQgc2NoZWRQb2xpY3k7CisgIAorICAgIHByaW50ZigicGpsaWJfdGVzdF9tYWluIHRocmVhZCBzdGFydGVkLi5cbiIpOworCisgICAgVEVTVCggcHRocmVhZF9nZXRzY2hlZHBhcmFtKHB0aHJlYWRfc2VsZigpLCAmc2NoZWRQb2xpY3ksICZzY2hlZFBhcmFtKSApOworCisgICAgc2NoZWRQYXJhbS5zY2hlZF9wcmlvcml0eSA9IE5FVFdPUktfU1RBQ0tfUFJJT1JJVFkgLSAxMDsKKworICAgIFRFU1QoIHB0aHJlYWRfc2V0c2NoZWRwYXJhbShwdGhyZWFkX3NlbGYoKSwgc2NoZWRQb2xpY3ksICZzY2hlZFBhcmFtKSApOworCisgICAgYm9vc3QoKTsKKyAgICBpbml0X3NpZ25hbHMoKTsKKworICAgIC8vbXlfdGVzdF90aHJlYWQoImZyb20gcGpsaWJfdGVzdF9tYWluIik7CisgICAgLy90ZXN0X3NvY2soKTsKKworICAgIHJjID0gdGVzdF9tYWluKCk7CisKKyAgICByZXR1cm4gKHZvaWQqKXJjOworfQorCisjICBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMgIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyMgIGluY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyMgIGluY2x1ZGUgPGFycGEvaW5ldC5oPgorIyAgaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qIAorICogU2VuZCBVRFAgcGFja2V0IHRvIHNvbWUgaG9zdC4gV2UgY2FuIHRoZW4gdXNlIEV0aGVyZWFsIHRvIHNuaWZmIHRoZSBwYWNrZXQKKyAqIHRvIHNlZSBpZiB0aGlzIHRhcmdldCByZWFsbHkgdHJhbnNtaXRzIFVEUCBwYWNrZXQuCisgKi8KK3N0YXRpYyB2b2lkCitzZW5kX3VkcChjb25zdCBjaGFyICp0YXJnZXQpCit7CisgICAgaW50IHNvY2ssIHJjOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworCisgICAgUEpfTE9HKDMsKCJtYWluX3J0ZW1zLmMiLCAiSVAgYWRkcj0lcy8lcywgZ3c9JXMiLAorCQlERUZBVUxUX0lQX0FERFJFU1NfU1RSSU5HLAorCQlERUZBVUxUX05FVE1BU0tfU1RSSU5HLAorCQlERUZBVUxUX0dBVEVXQVlfU1RSSU5HKSk7CisKKyAgICBzb2NrID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOworICAgIGFzc2VydChzb2NrID4gMCk7CisKKyAgICBtZW1zZXQoJmFkZHIsIDAsIHNpemVvZihhZGRyKSk7CisgICAgYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKworICAgIHJjID0gYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRyKikmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKyAgICBhc3NlcnQoImJpbmQgZXJyb3IiICYmIHJjPT0wKTsKKworICAgIGFkZHIuc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKHRhcmdldCk7CisgICAgYWRkci5zaW5fcG9ydCA9IGh0b25zKDQ0NDQpOworCisgICAgd2hpbGUoMSkgeworCWNvbnN0IGNoYXIgKmRhdGEgPSAiaGVsbG8iOworCisJcmMgPSBzZW5kdG8oc29jaywgZGF0YSwgNSwgMCwgKHN0cnVjdCBzb2NrYWRkciopJmFkZHIsIHNpemVvZihhZGRyKSk7CisJUEpfTE9HKDMsKCJtYWluX3J0ZW1zLmMiLCAicGluZ2luZyAlcy4uKHJjPSVkKSIsIHRhcmdldCwgcmMpKTsKKyAgICAJc2xlZXAoMSk7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIHRlc3Rfc29jayh2b2lkKQoreworICAgIGludCBzb2NrOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworICAgIGludCByYzsKKworICAgIHNvY2sgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgaWYgKHNvY2sgPCAwKSB7CisJcHJpbnRmKCJzb2NrZXQoKSBlcnJvclxuIik7CisJZ290byBlbmQ7CisgICAgfQorCisgICAgbWVtc2V0KCZhZGRyLCAwLCBzaXplb2YoYWRkcikpOworICAgIGFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgYWRkci5zaW5fYWRkci5zX2FkZHIgPSBpbmV0X2FkZHIoIjEyNy4wLjAuMSIpOworICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyg1MDAwKTsKKworICAgIHJjID0gYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRyKikmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKyAgICBpZiAocmMgIT0gMCkgeworCXByaW50ZigiYmluZCgpIGVycm9yICVkXG4iLCByYyk7CisJY2xvc2Uoc29jayk7CisJZ290byBlbmQ7CisgICAgfQorCisgICAgcHV0cygiQmluZCBzb2NrZXQgc3VjY2VzcyIpOworCisgICAgY2xvc2Uoc29jayk7CisKK2VuZDoKKyAgICB3aGlsZSgxKSBzbGVlcCgxKTsKK30KKworLyogCisgKiBJbml0aWFsaXplIHRoZSBuZXR3b3JrIHN0YWNrIGFuZCBFdGhlcm5ldCBkcml2ZXIsIHVzaW5nIHRoZSBjb25maWd1cmF0aW9uCisgKiBpbiBydGVtcy1uZXR3b3JrLWNvbmZpZy5oCisgKi8KK3N0YXRpYyB2b2lkCitpbml0aWFsaXplX25ldHdvcmsoKQoreworICAgIHVuc2lnbmVkMzIgZmQsIHJlc3VsdDsKKyAgICBjaGFyIGlwX2FkZHJlc3Nfc3RyaW5nW10gPSBERUZBVUxUX0lQX0FERFJFU1NfU1RSSU5HOworICAgIGNoYXIgbmV0bWFza19zdHJpbmdbXSA9IERFRkFVTFRfTkVUTUFTS19TVFJJTkc7CisgICAgY2hhciBnYXRld2F5X3N0cmluZ1tdID0gREVGQVVMVF9HQVRFV0FZX1NUUklORzsKKworICAgIC8vIFdyaXRlIHRoZSBuZXR3b3JrIGNvbmZpZyBmaWxlcyB0byAvZXRjL2hvc3RzIGFuZCAvZXRjL2hvc3QuY29uZgorICAgIHJlc3VsdCA9IG1rZGlyKCIvZXRjIiwgU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKTsKKyAgICBmZCA9IG9wZW4oIi9ldGMvaG9zdC5jb25mIiwgT19SRFdSIHwgT19DUkVBVCwgMDc0NCk7CisgICAgcmVzdWx0ID0gd3JpdGUoZmQsICJob3N0cyxiaW5kXG4iLCAxMSk7CisgICAgcmVzdWx0ID0gY2xvc2UoZmQpOworICAgIGZkID0gb3BlbigiL2V0Yy9ob3N0cyIsIE9fUkRXUiB8IE9fQ1JFQVQsIDA3NDQpOworICAgIHJlc3VsdCA9IHdyaXRlKGZkLCAiMTI3LjAuMC4xCWxvY2FsaG9zdFxuIiwgNDEpOworICAgIHJlc3VsdCA9IHdyaXRlKGZkLCBpcF9hZGRyZXNzX3N0cmluZywgc3RybGVuKGlwX2FkZHJlc3Nfc3RyaW5nKSk7CisgICAgcmVzdWx0ID0gd3JpdGUoZmQsICIJcGpzaXAtdGVzdFxuIiwgMzIpOyAKKyAgICByZXN1bHQgPSBjbG9zZShmZCk7CisKKyAgICBuZXRkcml2ZXJfY29uZmlnLmlwX2FkZHJlc3MgPSBpcF9hZGRyZXNzX3N0cmluZzsKKyAgICBuZXRkcml2ZXJfY29uZmlnLmlwX25ldG1hc2sgPSBuZXRtYXNrX3N0cmluZzsKKyAgICBydGVtc19ic2RuZXRfY29uZmlnLmdhdGV3YXkgPSBnYXRld2F5X3N0cmluZzsKKworICAgIGlmICgwICE9IHJ0ZW1zX2JzZG5ldF9pbml0aWFsaXplX25ldHdvcmsoKSkKKwlQSl9MT0coMywoVEhJU19GSUxFLCAiRXJyb3I6IFVuYWJsZSB0byBpbml0aWFsaXplIG5ldHdvcmsgc3RhY2shIikpOworICAgIGVsc2UKKwlQSl9MT0coMywoVEhJU19GSUxFLCAiSVAgYWRkcj0lcy8lcywgZ3c9JXMiLCAKKwkJCSAgICAgIGlwX2FkZHJlc3Nfc3RyaW5nLAorCQkJICAgICAgbmV0bWFza19zdHJpbmcsCisJCQkgICAgICBnYXRld2F5X3N0cmluZykpOworCisgICAgLy9ydGVtc19yZGJnX2luaXRpYWxpemUoKTsKKyAgICAvL2VudGVyUmRiZygpOworICAgIC8vc2VuZF91ZHAoIjE5Mi4xNjguMC4xIik7CisgICAgLy90ZXN0X3NvY2soKTsKK30KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9tYWluX3N5bWJpYW4uY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvbWFpbl9zeW1iaWFuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTFiNjcxCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvbWFpbl9zeW1iaWFuLmNwcApAQCAtMCwwICsxLDEzMyBAQAorLy9BdXRvLWdlbmVyYXRlZCBmaWxlLiBQbGVhc2UgZG8gbm90IG1vZGlmeS4KKy8vI2luY2x1ZGUgPGUzMmNtbi5oPgorCisvLyNwcmFnbWEgZGF0YV9zZWcoIi5TWU1CSUFOIikKKy8vX19FTVVMQVRPUl9JTUFHRV9IRUFERVIyICgweDEwMDAwMDdhLDB4MDAwMDAwMDAsMHgwMDAwMDAwMCxFUHJpb3JpdHlGb3JlZ3JvdW5kLDB4MDAwMDAwMDB1LDB4MDAwMDAwMDB1LDB4MDAwMDAwMDAsMHgwMDAwMDAwMCwweDAwMDAwMDAwLDApCisvLyNwcmFnbWEgZGF0YV9zZWcoKQorCisjaW5jbHVkZSAidGVzdC5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisjaW5jbHVkZSA8cGovb3MuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai91bmljb2RlLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgPGUzMnN0ZC5oPgorCisjaWYgMAoraW50IG1haW4oKQoreworICAgIGludCBlcnIgPSAwOworICAgIGludCBleHAgPSAwOworCisgICAgZXJyID0gdGVzdF9tYWluKCk7CisgICAgLy9lcnIgPSB0ZXN0X21haW4oKTsKKworICAgIGlmIChlcnIpCisJcmV0dXJuIGVycjsKKyAgICByZXR1cm4gZXhwOworICAgIC8vcmV0dXJuIDA7Cit9CisKKyNlbHNlCisjaW5jbHVkZSA8cGovb3MuaD4KKworI2luY2x1ZGUgPGUzMmJhc2UuaD4KKyNpbmNsdWRlIDxlMzJzdGQuaD4KKyNpbmNsdWRlIDxlMzJjb25zLmg+ICAgICAgICAgICAgLy8gQ29uc29sZQorCisKKworLy8gIEdsb2JhbCBWYXJpYWJsZXMKKworTE9DQUxfRCBDQ29uc29sZUJhc2UqIGNvbnNvbGU7ICAvLyB3cml0ZSBhbGwgbWVzc2FnZXMgdG8gdGhpcworCisKK2NsYXNzIE15U2NoZWR1bGVyIDogcHVibGljIENBY3RpdmVTY2hlZHVsZXIKK3sKK3B1YmxpYzoKKyAgICBNeVNjaGVkdWxlcigpCisgICAge30KKworICAgIHZvaWQgRXJyb3IoVEludCBhRXJyb3IpIGNvbnN0OworfTsKKwordm9pZCBNeVNjaGVkdWxlcjo6RXJyb3IoVEludCBhRXJyb3IpIGNvbnN0Cit7CisgICAgUEpfVU5VU0VEX0FSRyhhRXJyb3IpOworfQorCitMT0NBTF9DIHZvaWQgRG9TdGFydEwoKQorICAgIHsKKyAgICAvLyBDcmVhdGUgYWN0aXZlIHNjaGVkdWxlciAodG8gcnVuIGFjdGl2ZSBvYmplY3RzKQorICAgIENBY3RpdmVTY2hlZHVsZXIqIHNjaGVkdWxlciA9IG5ldyAoRUxlYXZlKSBNeVNjaGVkdWxlcjsKKyAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKHNjaGVkdWxlcik7CisgICAgQ0FjdGl2ZVNjaGVkdWxlcjo6SW5zdGFsbChzY2hlZHVsZXIpOworCisgICAgdGVzdF9tYWluKCk7CisKKyAgICBDQWN0aXZlU2NoZWR1bGVyOjpJbnN0YWxsKE5VTEwpOworICAgIENsZWFudXBTdGFjazo6UG9wKHNjaGVkdWxlcik7CisgICAgZGVsZXRlIHNjaGVkdWxlcjsKKyAgICB9CisKKyNkZWZpbmUgV1JJVEVfVE9fREVCVUdfQ09OU09MRQorCisjaWZkZWYgV1JJVEVfVE9fREVCVUdfQ09OU09MRQorI2luY2x1ZGU8ZTMyZGVidWcuaD4KKyNlbmRpZgorCisvLyAgR2xvYmFsIEZ1bmN0aW9ucworc3RhdGljIHZvaWQgbG9nX3dyaXRlcihpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKyAgICBzdGF0aWMgd2NoYXJfdCBidWYxNltQSl9MT0dfTUFYX1NJWkVdOworCisgICAgUEpfVU5VU0VEX0FSRyhsZXZlbCk7CisgICAgCisgICAgcGpfYW5zaV90b191bmljb2RlKGJ1ZiwgbGVuLCBidWYxNiwgUEpfQVJSQVlfU0laRShidWYxNikpOworICAgIGJ1ZjE2W2xlbl0gPSAwOworICAgIGJ1ZjE2W2xlbisxXSA9IDA7CisgICAgCisgICAgVFB0ckMxNiBhQnVmKChjb25zdCBUVWludDE2KilidWYxNiwgKFRJbnQpbGVuKTsKKyAgICBjb25zb2xlLT5Xcml0ZShhQnVmKTsKKyAgICAKKyNpZmRlZiBXUklURV9UT19ERUJVR19DT05TT0xFCisgICAgUkRlYnVnOjpQcmludChhQnVmKTsKKyNlbmRpZgorfQorCisKK0dMREVGX0MgVEludCBFMzJNYWluKCkKKyAgICB7CisgICAgLy8gQ3JlYXRlIGNsZWFudXAgc3RhY2sKKyAgICBfX1VIRUFQX01BUks7CisgICAgQ1RyYXBDbGVhbnVwKiBjbGVhbnVwID0gQ1RyYXBDbGVhbnVwOjpOZXcoKTsKKworICAgIC8vIENyZWF0ZSBvdXRwdXQgY29uc29sZQorICAgIFRSQVBEKGNyZWF0ZUVycm9yLCBjb25zb2xlID0gQ29uc29sZTo6TmV3TChfTCgiQ29uc29sZSIpLCBUU2l6ZShLQ29uc0Z1bGxTY3JlZW4sS0NvbnNGdWxsU2NyZWVuKSkpOworICAgIGlmIChjcmVhdGVFcnJvcikKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yOworCisgICAgcGpfbG9nX3NldF9sb2dfZnVuYygmbG9nX3dyaXRlcik7CisKKyAgICAvLyBSdW4gYXBwbGljYXRpb24gY29kZSBpbnNpZGUgVFJBUCBoYXJuZXNzLCB3YWl0IGtleXByZXNzIHdoZW4gdGVybWluYXRlZAorICAgIFRSQVBEKG1haW5FcnJvciwgRG9TdGFydEwoKSk7CisgICAgaWYgKG1haW5FcnJvcikKKyAgICAgICAgY29uc29sZS0+UHJpbnRmKF9MKCIgZmFpbGVkLCBsZWF2ZSBjb2RlID0gJWQiKSwgbWFpbkVycm9yKTsKKyAgICAKKyAgICBjb25zb2xlLT5QcmludGYoX0woIiBbcHJlc3MgYW55IGtleV1cbiIpKTsKKyAgICBjb25zb2xlLT5HZXRjaCgpOworICAgIAorICAgIGRlbGV0ZSBjb25zb2xlOworICAgIGRlbGV0ZSBjbGVhbnVwOworICAgIAorICAgIENsb3NlU1RETElCKCk7IAorICAgIAorICAgIF9fVUhFQVBfTUFSS0VORDsKKyAgICAKKyAgICByZXR1cm4gS0Vyck5vbmU7CisgICAgfQorCisjZW5kaWYJLyogaWYgMCAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9tYWluX3dpbjMyLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9tYWluX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQxMDdjMwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L21haW5fd2luMzIuYwpAQCAtMCwwICsxLDIxMSBAQAorLyogJElkOiBtYWluX3dpbjMyLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai91bmljb2RlLmg+CisjaW5jbHVkZSA8cGovc29jay5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNkZWZpbmUgTk9OQU1FTEVTU1VOSU9OCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPGNvbW1jdHJsLmg+CisjaW5jbHVkZSA8dGNoYXIuaD4KKworI2RlZmluZSBNQVhfTE9BRFNUUklORwkgICAgMTAwCisjZGVmaW5lIFRISVNfRklMRQkgICAgIm1haW5fd2luMzIuYyIKKworI2RlZmluZSBJRENfSEVMTE9fV0lOQ0UJICAgIDMKKyNkZWZpbmUgSURfTE9HV0lORE9XCSAgICAxMDQKKworCitBVE9NCQkJICAgIE15UmVnaXN0ZXJDbGFzcwkoSElOU1RBTkNFLCBMUFRTVFIpOworQk9PTAkJCSAgICBJbml0SW5zdGFuY2UJKEhJTlNUQU5DRSwgaW50KTsKK0xSRVNVTFQgQ0FMTEJBQ0sJICAgIFduZFByb2MJCShIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7CisKKworZXh0ZXJuIGludAkJICAgIHBhcmFtX2xvZ19kZWNvcjsJLy8gaW4gdGVzdC5jCisKK3N0YXRpYyBISU5TVEFOQ0UJICAgIGhJbnN0Oworc3RhdGljIEhXTkQJCSAgICBod25kTG9nOworc3RhdGljIEhGT05UCQkgICAgaEZpeGVkRm9udDsKKworCitzdGF0aWMgdm9pZCB3cml0ZV9sb2coaW50IGxldmVsLCBjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuKQoreworICAgIFBKX0RFQ0xfVU5JQ09ERV9URU1QX0JVRih3ZGF0YSwyNTYpOworCisgICAgUEpfVU5VU0VEX0FSRyhsZXZlbCk7CisgICAgUEpfVU5VU0VEX0FSRyhsZW4pOworICAgIFNlbmRNZXNzYWdlKGh3bmRMb2csIEVNX1JFUExBQ0VTRUwsIEZBTFNFLCAKKwkJKExQQVJBTSlQSl9TVFJJTkdfVE9fTkFUSVZFKGRhdGEsd2RhdGEsMjU2KSk7Cit9CisKKworaW50IFdJTkFQSSBXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuY2UsIEhJTlNUQU5DRSBoUHJldkluc3RhbmNlLCAKKwkJICAgTFBUU1RSIGxwQ21kTGluZSwgaW50IG5DbWRTaG93KQoreworICAgIE1TRyBtc2c7CisgICAgCisgICAgUEpfVU5VU0VEX0FSRyhscENtZExpbmUpOworICAgIFBKX1VOVVNFRF9BUkcoaFByZXZJbnN0YW5jZSk7CisKKyAgICAKKyAgICBpZiAoIUluaXRJbnN0YW5jZSAoaEluc3RhbmNlLCBuQ21kU2hvdykpCisJcmV0dXJuIEZBTFNFOworICAgIAorICAgIHBqX2xvZ19zZXRfbG9nX2Z1bmMoICZ3cml0ZV9sb2cgKTsKKyAgICBwYXJhbV9sb2dfZGVjb3IgPSBQSl9MT0dfSEFTX05FV0xJTkUgfCBQSl9MT0dfSEFTX0NSOworCisgICAgLy8gUnVuIHRoZSB0ZXN0IQorICAgIHRlc3RfbWFpbigpOworCisgICAgUEpfTE9HKDMsKFRISVNfRklMRSwiIikpOworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsIlByZXNzIEVTQyB0byBxdWl0IikpOworCisgICAgLy8gTWVzc2FnZSBsb29wLCB3YWl0aW5nIHRvIHF1aXQuCisgICAgd2hpbGUgKEdldE1lc3NhZ2UoJm1zZywgTlVMTCwgMCwgMCkpIHsKKwlUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOworCURpc3BhdGNoTWVzc2FnZSgmbXNnKTsKKyAgICB9CisgICAgCisgICAgRGVsZXRlT2JqZWN0KGhGaXhlZEZvbnQpOworICAgIHJldHVybiBtc2cud1BhcmFtOworfQorCisKKyNpZmRlZiBfQ09OU09MRQoraW50IG1haW4oKQoreworICAgIHJldHVybiBXaW5NYWluKEdldE1vZHVsZUhhbmRsZShOVUxMKSwgTlVMTCwgTlVMTCwgU1dfU0hPVyk7Cit9CisjZW5kaWYKKworCitBVE9NIE15UmVnaXN0ZXJDbGFzcyhISU5TVEFOQ0UgaEluc3RhbmNlLCBMUFRTVFIgc3pXaW5kb3dDbGFzcykKK3sKKyAgICBXTkRDTEFTUwl3YzsKKyAgICAKKyAgICB3Yy5zdHlsZQkJPSBDU19IUkVEUkFXIHwgQ1NfVlJFRFJBVzsKKyAgICB3Yy5scGZuV25kUHJvYwk9IChXTkRQUk9DKSBXbmRQcm9jOworICAgIHdjLmNiQ2xzRXh0cmEJPSAwOworICAgIHdjLmNiV25kRXh0cmEJPSAwOworICAgIHdjLmhJbnN0YW5jZQk9IGhJbnN0YW5jZTsKKyAgICAvLy93Yy5oSWNvbgkJPSBMb2FkSWNvbihoSW5zdGFuY2UsIE1BS0VJTlRSRVNPVVJDRShJRElfSEVMTE9fV0lOQ0UpKTsKKyAgICB3Yy5oSWNvbgkJPSBOVUxMOworICAgIHdjLmhDdXJzb3IJCT0gMDsKKyAgICB3Yy5oYnJCYWNrZ3JvdW5kCT0gKEhCUlVTSCkgR2V0U3RvY2tPYmplY3QoV0hJVEVfQlJVU0gpOworICAgIHdjLmxwc3pNZW51TmFtZQk9IDA7CisgICAgd2MubHBzekNsYXNzTmFtZQk9IHN6V2luZG93Q2xhc3M7CisgICAgCisgICAgcmV0dXJuIFJlZ2lzdGVyQ2xhc3MoJndjKTsKK30KKworCitCT09MIEluaXRJbnN0YW5jZShISU5TVEFOQ0UgaEluc3RhbmNlLCBpbnQgbkNtZFNob3cpCit7CisgICAgSFdORAloV25kOworICAgIFRDSEFSCSpzelRpdGxlID0gX1QoIlBKU0lQIFRlc3QiKTsKKyAgICBUQ0hBUgkqc3pXaW5kb3dDbGFzcyA9IF9UKCJQSlNJUF9URVNUIik7CisgICAgTE9HRk9OVAlsZjsKKworCisgICAgbWVtc2V0KCZsZiwgMCwgc2l6ZW9mKGxmKSk7CisgICAgbGYubGZIZWlnaHQgPSAxMzsKKyNpZiBQSl9OQVRJVkVfU1RSSU5HX0lTX1VOSUNPREUKKyAgICB3Y3NjcHkobGYubGZGYWNlTmFtZSwgX1QoIkNvdXJpZXIgTmV3IikpOworI2Vsc2UKKyAgICBzdHJjcHkobGYubGZGYWNlTmFtZSwgIkx1Y2lkYSBDb25zb2xlIik7CisjZW5kaWYKKworICAgIGhGaXhlZEZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3QoJmxmKTsKKyAgICBpZiAoIWhGaXhlZEZvbnQpCisJcmV0dXJuIEZBTFNFOworCisgICAgaEluc3QgPSBoSW5zdGFuY2U7CisgICAgCisgICAgTXlSZWdpc3RlckNsYXNzKGhJbnN0YW5jZSwgc3pXaW5kb3dDbGFzcyk7CisgICAgCisgICAgaFduZCA9IENyZWF0ZVdpbmRvdyhzeldpbmRvd0NsYXNzLCBzelRpdGxlLCBXU19WSVNJQkxFLAorCQkgICAgICAgIENXX1VTRURFRkFVTFQsIENXX1VTRURFRkFVTFQsIENXX1VTRURFRkFVTFQsIAorCQkJQ1dfVVNFREVGQVVMVCwgTlVMTCwgTlVMTCwgaEluc3RhbmNlLCBOVUxMKTsKKyAgICAKKyAgICBpZiAoIWhXbmQpCisJcmV0dXJuIEZBTFNFOworICAgIAorICAgIFNob3dXaW5kb3coaFduZCwgbkNtZFNob3cpOworICAgIFVwZGF0ZVdpbmRvdyhoV25kKTsKKworICAgIGlmIChod25kTG9nKSB7CisJU2VuZE1lc3NhZ2UoaHduZExvZywgV01fU0VURk9OVCwgKFdQQVJBTSkgaEZpeGVkRm9udCwgKExQQVJBTSkgMCk7ICAKKwlTaG93V2luZG93KGh3bmRMb2csIFRSVUUpOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisKK0xSRVNVTFQgQ0FMTEJBQ0sgV25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBSRUNUIHJ0OworICAgIERXT1JEIGR3U3R5bGU7CisgICAgCisgICAgc3dpdGNoIChtZXNzYWdlKSAKKyAgICB7CisgICAgY2FzZSBXTV9DUkVBVEU6CisJLy8gQ3JlYXRlIHRleHQgY29udHJvbC4KKwlHZXRDbGllbnRSZWN0KGhXbmQsICZydCk7CisJZHdTdHlsZSA9IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0hTQ1JPTEwgfCBXU19WU0NST0xMIHwgCisJCSAgV1NfQk9SREVSIHwgRVNfTEVGVCB8IEVTX01VTFRJTElORSB8IEVTX05PSElERVNFTCB8CisJCSAgRVNfQVVUT0hTQ1JPTEwgfCBFU19BVVRPVlNDUk9MTCB8IEVTX1JFQURPTkxZOyAKKwlod25kTG9nID0gQ3JlYXRlV2luZG93KCBURVhUKCJlZGl0IiksCSAgICAvLyBjbGFzcworCQkJCU5VTEwsCQkgICAgLy8gd2luZG93IHRleHQKKwkJCQlkd1N0eWxlLAkgICAgLy8gc3R5bGUKKwkJCQkwLAkJICAgIC8vIHgtbGVmdAorCQkJCTAsCQkgICAgLy8geS10b3AKKwkJCQlydC5yaWdodC1ydC5sZWZ0LCAgIC8vIHcKKwkJCQlydC5ib3R0b20tcnQudG9wLCAgIC8vIGgKKwkJCQloV25kLAkJICAgIC8vIHBhcmVudAorCQkJCShITUVOVSlJRF9MT0dXSU5ET1csLy8gaWQKKwkJCQloSW5zdCwJCSAgICAvLyBpbnN0YW5jZQorCQkJCU5VTEwpOwkJICAgIC8vIE5VTEwgZm9yIGNvbnRyb2wuCisJYnJlYWs7CisgICAgY2FzZSBXTV9BQ1RJVkFURToKKwlpZiAoTE9XT1JEKHdQYXJhbSkgPT0gV0FfSU5BQ1RJVkUpCisJICAgIERlc3Ryb3lXaW5kb3coaFduZCk7CisJYnJlYWs7CisgICAgY2FzZSBXTV9DSEFSOgorCWlmICh3UGFyYW0gPT0gMjcpIHsKKwkgICAgRGVzdHJveVdpbmRvdyhoV25kKTsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBXTV9DTE9TRToKKwlEZXN0cm95V2luZG93KGhXbmQpOworCWJyZWFrOworICAgIGNhc2UgV01fREVTVFJPWToKKwlQb3N0UXVpdE1lc3NhZ2UoMCk7CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwlyZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9tdXRleC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvbXV0ZXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzVmYTA3Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvbXV0ZXguYwpAQCAtMCwwICsxLDIzNCBAQAorLyogJElkOiBtdXRleC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSAidGVzdC5oIgorI2luY2x1ZGUgPHBqbGliLmg+CisKKyNpZiBJTkNMVURFX01VVEVYX1RFU1QKKworI3VuZGVmIFRSQUNFXworLy8jZGVmaW5lIFRSQUNFXyh4KSAgIFBKX0xPRygzLHgpCisjZGVmaW5lIFRSQUNFXyh4KQorCisvKiBUZXN0IHdpdG4gbm9uLXJlY3Vyc2l2ZSBtdXRleC4gKi8KK3N0YXRpYyBpbnQgc2ltcGxlX211dGV4X3Rlc3QocGpfcG9vbF90ICpwb29sKQoreworICAgIHBqX3N0YXR1c190IHJjOworICAgIHBqX211dGV4X3QgKm11dGV4OworCisgICAgUEpfTE9HKDMsKCIiLCAiLi4udGVzdGluZyBzaW1wbGUgbXV0ZXgiKSk7CisgICAgCisgICAgLyogQ3JlYXRlIG11dGV4LiAqLworICAgIFRSQUNFXygoIiIsICIuLi4uY3JlYXRlIG11dGV4IikpOworICAgIHJjID0gcGpfbXV0ZXhfY3JlYXRlKCBwb29sLCAiIiwgUEpfTVVURVhfU0lNUExFLCAmbXV0ZXgpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiLi4uZXJyb3I6IHBqX211dGV4X2NyZWF0ZSIsIHJjKTsKKwlyZXR1cm4gLTEwOworICAgIH0KKworICAgIC8qIE5vcm1hbCBsb2NrL3VubG9jayBjeWNsZS4gKi8KKyAgICBUUkFDRV8oKCIiLCAiLi4uLmxvY2sgbXV0ZXgiKSk7CisgICAgcmMgPSBwal9tdXRleF9sb2NrKG11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiBwal9tdXRleF9sb2NrIiwgcmMpOworCXJldHVybiAtMjA7CisgICAgfQorICAgIFRSQUNFXygoIiIsICIuLi4udW5sb2NrIG11dGV4IikpOworICAgIHJjID0gcGpfbXV0ZXhfdW5sb2NrKG11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiBwal9tdXRleF91bmxvY2siLCByYyk7CisJcmV0dXJuIC0zMDsKKyAgICB9CisgICAgCisgICAgLyogTG9jayBhZ2Fpbi4gKi8KKyAgICBUUkFDRV8oKCIiLCAiLi4uLmxvY2sgbXV0ZXgiKSk7CisgICAgcmMgPSBwal9tdXRleF9sb2NrKG11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgcmV0dXJuIC00MDsKKworICAgIC8qIFRyeS1sb2NrIHNob3VsZCBmYWlsLiBJdCBzaG91bGQgbm90IGRlYWRsb2NrZWQuICovCisgICAgVFJBQ0VfKCgiIiwgIi4uLi50cnlsb2NrIG11dGV4IikpOworICAgIHJjID0gcGpfbXV0ZXhfdHJ5bG9jayhtdXRleCk7CisgICAgaWYgKHJjID09IFBKX1NVQ0NFU1MpCisJUEpfTE9HKDMsKCIiLCAiLi4uaW5mbzogbG9va3MgbGlrZSBzaW1wbGUgbXV0ZXggaXMgcmVjdXJzaXZlIikpOworCisgICAgLyogVW5sb2NrIGFuZCBkb25lLiAqLworICAgIFRSQUNFXygoIiIsICIuLi4udW5sb2NrIG11dGV4IikpOworICAgIHJjID0gcGpfbXV0ZXhfdW5sb2NrKG11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgcmV0dXJuIC01MDsKKworICAgIFRSQUNFXygoIiIsICIuLi4uZGVzdHJveSBtdXRleCIpKTsKKyAgICByYyA9IHBqX211dGV4X2Rlc3Ryb3kobXV0ZXgpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSByZXR1cm4gLTYwOworCisgICAgVFJBQ0VfKCgiIiwgIi4uLi5kb25lIikpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisKKy8qIFRlc3Qgd2l0aCByZWN1cnNpdmUgbXV0ZXguICovCitzdGF0aWMgaW50IHJlY3Vyc2l2ZV9tdXRleF90ZXN0KHBqX3Bvb2xfdCAqcG9vbCkKK3sKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICBwal9tdXRleF90ICptdXRleDsKKworICAgIFBKX0xPRygzLCgiIiwgIi4uLnRlc3RpbmcgcmVjdXJzaXZlIG11dGV4IikpOworCisgICAgLyogQ3JlYXRlIG11dGV4LiAqLworICAgIFRSQUNFXygoIiIsICIuLi4uY3JlYXRlIG11dGV4IikpOworICAgIHJjID0gcGpfbXV0ZXhfY3JlYXRlKCBwb29sLCAiIiwgUEpfTVVURVhfUkVDVVJTRSwgJm11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiBwal9tdXRleF9jcmVhdGUiLCByYyk7CisJcmV0dXJuIC0xMDsKKyAgICB9CisKKyAgICAvKiBOb3JtYWwgbG9jay91bmxvY2sgY3ljbGUuICovCisgICAgVFJBQ0VfKCgiIiwgIi4uLi5sb2NrIG11dGV4IikpOworICAgIHJjID0gcGpfbXV0ZXhfbG9jayhtdXRleCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfbXV0ZXhfbG9jayIsIHJjKTsKKwlyZXR1cm4gLTIwOworICAgIH0KKyAgICBUUkFDRV8oKCIiLCAiLi4uLnVubG9jayBtdXRleCIpKTsKKyAgICByYyA9IHBqX211dGV4X3VubG9jayhtdXRleCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfbXV0ZXhfdW5sb2NrIiwgcmMpOworCXJldHVybiAtMzA7CisgICAgfQorICAgIAorICAgIC8qIExvY2sgYWdhaW4uICovCisgICAgVFJBQ0VfKCgiIiwgIi4uLi5sb2NrIG11dGV4IikpOworICAgIHJjID0gcGpfbXV0ZXhfbG9jayhtdXRleCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHJldHVybiAtNDA7CisKKyAgICAvKiBUcnktbG9jayBzaG91bGQgTk9UIGZhaWwuIC4gKi8KKyAgICBUUkFDRV8oKCIiLCAiLi4uLnRyeWxvY2sgbXV0ZXgiKSk7CisgICAgcmMgPSBwal9tdXRleF90cnlsb2NrKG11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiByZWN1cnNpdmUgbXV0ZXggaXMgbm90IHJlY3Vyc2l2ZSEiLCByYyk7CisJcmV0dXJuIC00MDsKKyAgICB9CisKKyAgICAvKiBMb2NraW5nIGFnYWluIHNob3VsZCBub3QgZmFpbC4gKi8KKyAgICBUUkFDRV8oKCIiLCAiLi4uLmxvY2sgbXV0ZXgiKSk7CisgICAgcmMgPSBwal9tdXRleF9sb2NrKG11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiByZWN1cnNpdmUgbXV0ZXggaXMgbm90IHJlY3Vyc2l2ZSEiLCByYyk7CisJcmV0dXJuIC00NTsKKyAgICB9CisKKyAgICAvKiBVbmxvY2sgc2V2ZXJhbCB0aW1lcyBhbmQgZG9uZS4gKi8KKyAgICBUUkFDRV8oKCIiLCAiLi4uLnVubG9jayBtdXRleCAzeCIpKTsKKyAgICByYyA9IHBqX211dGV4X3VubG9jayhtdXRleCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHJldHVybiAtNTA7CisgICAgcmMgPSBwal9tdXRleF91bmxvY2sobXV0ZXgpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSByZXR1cm4gLTUxOworICAgIHJjID0gcGpfbXV0ZXhfdW5sb2NrKG11dGV4KTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgcmV0dXJuIC01MjsKKworICAgIFRSQUNFXygoIiIsICIuLi4uZGVzdHJveSBtdXRleCIpKTsKKyAgICByYyA9IHBqX211dGV4X2Rlc3Ryb3kobXV0ZXgpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSByZXR1cm4gLTYwOworCisgICAgVFJBQ0VfKCgiIiwgIi4uLi5kb25lIikpOworICAgIHJldHVybiBQSl9TVUNDRVNTOworfQorCisjaWYgUEpfSEFTX1NFTUFQSE9SRQorc3RhdGljIGludCBzZW1hcGhvcmVfdGVzdChwal9wb29sX3QgKnBvb2wpCit7CisgICAgcGpfc2VtX3QgKnNlbTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBQSl9MT0coMywoIiIsICIuLi50ZXN0aW5nIHNlbWFwaG9yZSIpKTsKKworICAgIHN0YXR1cyA9IHBqX3NlbV9jcmVhdGUocG9vbCwgTlVMTCwgMCwgMSwgJnNlbSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiLi4uZXJyb3I6IHBqX3NlbV9jcmVhdGUoKSIsIHN0YXR1cyk7CisJcmV0dXJuIC0xNTE7CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfc2VtX3Bvc3Qoc2VtKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfc2VtX3Bvc3QoKSIsIHN0YXR1cyk7CisJcGpfc2VtX2Rlc3Ryb3koc2VtKTsKKwlyZXR1cm4gLTE1MzsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBwal9zZW1fdHJ5d2FpdChzZW0pOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiBwal9zZW1fdHJ5d2FpdCgpIiwgc3RhdHVzKTsKKwlwal9zZW1fZGVzdHJveShzZW0pOworCXJldHVybiAtMTU2OworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX3NlbV9wb3N0KHNlbSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiLi4uZXJyb3I6IHBqX3NlbV9wb3N0KCkiLCBzdGF0dXMpOworCXBqX3NlbV9kZXN0cm95KHNlbSk7CisJcmV0dXJuIC0xNTk7CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfc2VtX3dhaXQoc2VtKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfc2VtX3dhaXQoKSIsIHN0YXR1cyk7CisJcGpfc2VtX2Rlc3Ryb3koc2VtKTsKKwlyZXR1cm4gLTE2MTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBwal9zZW1fZGVzdHJveShzZW0pOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiBwal9zZW1fZGVzdHJveSgpIiwgc3RhdHVzKTsKKwlyZXR1cm4gLTE2MzsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgkvKiBQSl9IQVNfU0VNQVBIT1JFICovCisKKworaW50IG11dGV4X3Rlc3Qodm9pZCkKK3sKKyAgICBwal9wb29sX3QgKnBvb2w7CisgICAgaW50IHJjOworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgIiIsIDQwMDAsIDQwMDAsIE5VTEwpOworCisgICAgcmMgPSBzaW1wbGVfbXV0ZXhfdGVzdChwb29sKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gcmM7CisKKyAgICByYyA9IHJlY3Vyc2l2ZV9tdXRleF90ZXN0KHBvb2wpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworI2lmIFBKX0hBU19TRU1BUEhPUkUKKyAgICByYyA9IHNlbWFwaG9yZV90ZXN0KHBvb2wpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKyNlbmRpZgorCisgICAgcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworCisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCitpbnQgZHVtbXlfbXV0ZXhfdGVzdDsKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9vcy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3Qvb3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzI3MGZmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3Qvb3MuYwpAQCAtMCwwICsxLDExNiBAQAorLyogJElkOiBvcy5jIDM4NDEgMjAxMS0xMC0yNCAwOToyODoxM1ogbWluZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgInRlc3QuaCIKKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorCisjaWYgSU5DTFVERV9PU19URVNUCitzdGF0aWMgaW50IGVuZGlhbm5lc3NfdGVzdDMyKHZvaWQpCit7CisgICAgdW5pb24gdAorICAgIHsKKwlwal91aW50MzJfdCB1MzI7CisJcGpfdWludDE2X3QgdTE2WzJdOworCXBqX3VpbnQ4X3QgdThbNF07CisgICAgfSB0OworCisgICAgUEpfTE9HKDMsKCIiLCAiIFRlc3RpbmcgZW5kaWFubmVzcy4uIikpOworCisgICAgdC51MzIgPSAweDExMjIzMzQ0OworCisjaWYgZGVmaW5lZChQSl9JU19MSVRUTEVfRU5ESUFOKSAmJiBQSl9JU19MSVRUTEVfRU5ESUFOCisgICAgUEpfTE9HKDMsKCIiLCAiICAgTGlicmFyeSBpcyBzZXQgdG8gbGl0dGxlIGVuZGlhbiIpKTsKKworIyAgaWYgZGVmaW5lZChQSl9JU19CSUdfRU5ESUFOKSAmJiBQSl9JU19CSUdfRU5ESUFOCisjICAgIGVycm9yIEVycm9yOiBCb3RoIFBKX0lTX0xJVFRMRV9FTkRJQU4gYW5kIFBKX0lTX0JJR19FTkRJQU4gYXJlIHNldCEKKyMgIGVuZGlmCisKKyAgICBpZiAoKHQudTE2WzBdICYgMHhGRkZGKSAhPSAweDMzNDQgfHwKKwkodC51MTZbMV0gJiAweEZGRkYpICE9IDB4MTEyMikKKyAgICB7CisJUEpfTE9HKDMsKCIiLCAiICAgRXJyb3I6IHdyb25nIDE2Yml0IHZhbHVlcyAweCV4IGFuZCAweCV4IiwKKwkJICAgICAgKHQudTE2WzBdICYgMHhGRkZGKSwgKHQudTE2WzFdICYgMHhGRkZGKSkpOworCXJldHVybiAxMDsKKyAgICB9CisKKyAgICBpZiAoKHQudThbMF0gJiAweEZGKSAhPSAweDQ0IHx8CisJKHQudThbMV0gJiAweEZGKSAhPSAweDMzIHx8CisJKHQudThbMl0gJiAweEZGKSAhPSAweDIyIHx8CisJKHQudThbM10gJiAweEZGKSAhPSAweDExKQorICAgIHsKKwlQSl9MT0coMywoIiIsICIgICBFcnJvcjogd3JvbmcgOGJpdCB2YWx1ZXMiKSk7CisJcmV0dXJuIDEyOworICAgIH0KKworI2VsaWYgZGVmaW5lZChQSl9JU19CSUdfRU5ESUFOKSAmJiBQSl9JU19CSUdfRU5ESUFOCisgICAgUEpfTE9HKDMsKCIiLCAiICAgTGlicmFyeSBpcyBzZXQgdG8gYmlnIGVuZGlhbiIpKTsKKworICAgIGlmICgodC51MTZbMF0gJiAweEZGRkYpICE9IDB4MTEyMiB8fAorCSh0LnUxNlsxXSAmIDB4RkZGRikgIT0gMHgzMzQ0KQorICAgIHsKKwlQSl9MT0coMywoIiIsICIgICBFcnJvcjogd3JvbmcgMTZiaXQgdmFsdWVzIDB4JXggYW5kIDB4JXgiLAorCQkgICAgICAodC51MTZbMF0gJiAweEZGRkYpLCAodC51MTZbMV0gJiAweEZGRkYpKSk7CisJcmV0dXJuIDIwOworICAgIH0KKworICAgIGlmICgodC51OFswXSAmIDB4RkYpICE9IDB4MTEgfHwKKwkodC51OFsxXSAmIDB4RkYpICE9IDB4MjIgfHwKKwkodC51OFsyXSAmIDB4RkYpICE9IDB4MzMgfHwKKwkodC51OFszXSAmIDB4RkYpICE9IDB4NDQpCisgICAgeworCVBKX0xPRygzLCgiIiwgIiAgIEVycm9yOiB3cm9uZyA4Yml0IHZhbHVlcyIpKTsKKwlyZXR1cm4gMjI7CisgICAgfQorCisjICBpZiBkZWZpbmVkKFBKX0lTX0xJVFRMRV9FTkRJQU4pICYmIFBKX0lTX0xJVFRMRV9FTkRJQU4KKyMgICAgZXJyb3IgRXJyb3I6IEJvdGggUEpfSVNfTElUVExFX0VORElBTiBhbmQgUEpfSVNfQklHX0VORElBTiBhcmUgc2V0IQorIyAgZW5kaWYKKworCisjZWxzZQorIyAgICBlcnJvciBFcnJvcjogRW5kaWFubmVzcyBpcyBub3Qgc2V0IHByb3Blcmx5IQorI2VuZGlmCisKKyAgICByZXR1cm4gMDsKK30KKworaW50IG9zX3Rlc3Qodm9pZCkKK3sKKyAgICBjb25zdCBwal9zeXNfaW5mbyAqc2k7CisgICAgaW50IHJjID0gMDsKKworICAgIFBKX0xPRygzLCgiIiwgIiBTeXMgaW5mbzoiKSk7CisgICAgc2kgPSBwal9nZXRfc3lzX2luZm8oKTsKKyAgICBQSl9MT0coMywoIiIsICIgICBtYWNoaW5lOiAgJXMiLCBzaS0+bWFjaGluZS5wdHIpKTsKKyAgICBQSl9MT0coMywoIiIsICIgICBvc19uYW1lOiAgJXMiLCBzaS0+b3NfbmFtZS5wdHIpKTsKKyAgICBQSl9MT0coMywoIiIsICIgICBvc192ZXI6ICAgMHgleCIsIHNpLT5vc192ZXIpKTsKKyAgICBQSl9MT0coMywoIiIsICIgICBzZGtfbmFtZTogJXMiLCBzaS0+c2RrX25hbWUucHRyKSk7CisgICAgUEpfTE9HKDMsKCIiLCAiICAgc2RrX3ZlcjogIDB4JXgiLCBzaS0+c2RrX3ZlcikpOworICAgIFBKX0xPRygzLCgiIiwgIiAgIGluZm86ICAgICAlcyIsIHNpLT5pbmZvLnB0cikpOworCisgICAgcmMgPSBlbmRpYW5uZXNzX3Rlc3QzMigpOworCisgICAgcmV0dXJuIHJjOworfQorCisjZWxzZQoraW50IGR1bW15X29zX3ZhcjsKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9wamxpYl90ZXN0X3JlZy5yc3MgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9wamxpYl90ZXN0X3JlZy5yc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ4OTJlNAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3BqbGliX3Rlc3RfcmVnLnJzcwpAQCAtMCwwICsxLDEyIEBACisvLyBTeW1iaWFuIGFwcGxpY2F0aW9uIHJlZ2lzdHJhdGlvbiBpbmZvIGZvciBwamxpYi10ZXN0DQorDQorI2luY2x1ZGUgPGFwcGluZm8ucmg+DQorDQorVUlEMiBLVWlkQXBwUmVnaXN0cmF0aW9uUmVzb3VyY2VGaWxlDQorVUlEMyAweEEwMDAwMDAyDQorDQorUkVTT1VSQ0UgQVBQX1JFR0lTVFJBVElPTl9JTkZPDQorew0KKyAgICBhcHBfZmlsZT0icGpsaWJfdGVzdCI7DQorfQ0KKw0KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3Bvb2wuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3Bvb2wuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2ZiZTBhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvcG9vbC5jCkBAIC0wLDAgKzEsMzIyIEBACisvKiAkSWQ6IHBvb2wuYyA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlIDxwai9wb29sLmg+CisjaW5jbHVkZSA8cGovcG9vbF9idWYuaD4KKyNpbmNsdWRlIDxwai9yYW5kLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovZXhjZXB0Lmg+CisjaW5jbHVkZSAidGVzdC5oIgorCisvKioKKyAqIFxwYWdlIHBhZ2VfcGpsaWJfcG9vbF90ZXN0IFRlc3Q6IFBvb2wKKyAqCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgaW1wbGVtZW50YXRpb24gb2YgXGIgcG9vbF90ZXN0KCkuIEl0IHRlc3RzIHRoZQorICogZnVuY3Rpb25hbGl0eSBvZiB0aGUgbWVtb3J5IHBvb2wuCisgKgorICoKKyAqIFRoaXMgZmlsZSBpcyA8Yj5wamxpYi10ZXN0L3Bvb2wuYzwvYj4KKyAqCisgKiBcaW5jbHVkZSBwamxpYi10ZXN0L3Bvb2wuYworICovCisKKworI2lmIElOQ0xVREVfUE9PTF9URVNUCisKKyNkZWZpbmUgU0laRQk0MDk2CisKKy8qIE5vcm1hbGx5IHdlIHNob3VsZCB0aHJvdyBleGNlcHRpb24gd2hlbiBtZW1vcnkgYWxsb2MgZmFpbHMuCisgKiBIZXJlIHdlIGRvIG5vdGhpbmcgc28gdGhhdCB0aGUgZmxvdyB3aWxsIGdvIGJhY2sgdG8gb3JpZ2luYWwgY2FsbGVyLAorICogd2hpY2ggd2lsbCB0ZXN0IHRoZSByZXN1bHQgdXNpbmcgTlVMTCBjb21wYXJpc29uLiBOb3JtYWxseSBjYWxsZXIgd2lsbAorICogY2F0Y2ggdGhlIGV4Y2VwdGlvbiBpbnN0ZWFkIG9mIGNoZWNraW5nIGZvciBOVUxMcy4KKyAqLworc3RhdGljIHZvaWQgbnVsbF9jYWxsYmFjayhwal9wb29sX3QgKnBvb2wsIHBqX3NpemVfdCBzaXplKQoreworICAgIFBKX1VOVVNFRF9BUkcocG9vbCk7CisgICAgUEpfVU5VU0VEX0FSRyhzaXplKTsKK30KKworI2RlZmluZSBHRVRfRlJFRShwKQkocGpfcG9vbF9nZXRfY2FwYWNpdHkocCktcGpfcG9vbF9nZXRfdXNlZF9zaXplKHApKQorCisvKiBUZXN0IHRoYXQgdGhlIGNhcGFjaXR5IGFuZCB1c2VkIHNpemUgcmVwb3J0ZWQgYnkgdGhlIHBvb2wgaXMgY29ycmVjdC4gCisgKi8KK3N0YXRpYyBpbnQgY2FwYWNpdHlfdGVzdCh2b2lkKQoreworICAgIHBqX3Bvb2xfdCAqcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgTlVMTCwgU0laRSwgMCwgJm51bGxfY2FsbGJhY2spOworICAgIHBqX3NpemVfdCBmcmVlc2l6ZTsKKworICAgIFBKX0xPRygzLCgidGVzdCIsICIuLi5jYXBhY2l0eV90ZXN0KCkiKSk7CisKKyAgICBpZiAoIXBvb2wpCisJcmV0dXJuIC0yMDA7CisKKyAgICBmcmVlc2l6ZSA9IEdFVF9GUkVFKHBvb2wpOworCisgICAgaWYgKHBqX3Bvb2xfYWxsb2MocG9vbCwgZnJlZXNpemUpID09IE5VTEwpIHsKKwlQSl9MT0coMywoInRlc3QiLCAiLi4uZXJyb3I6IHdyb25nIGZyZWVzaXplICV1IHJlcG9ydGVkIiwKKwkJCSAgZnJlZXNpemUpKTsKKwlwal9wb29sX3JlbGVhc2UocG9vbCk7CisJcmV0dXJuIC0yMTA7CisgICAgfQorCisgICAgcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworICAgIHJldHVybiAwOworfQorCisvKiBUZXN0IHRoYXQgdGhlIGFsaWdubWVudCB3b3Jrcy4gKi8KK3N0YXRpYyBpbnQgcG9vbF9hbGlnbm1lbnRfdGVzdCh2b2lkKQoreworICAgIHBqX3Bvb2xfdCAqcG9vbDsKKyAgICB2b2lkICpwdHI7CisgICAgZW51bSB7IE1FTVNJWkUgPSA2NCwgTE9PUCA9IDEwMCB9OworICAgIHVuc2lnbmVkIGk7CisKKyAgICBQSl9MT0coMywoInRlc3QiLCAiLi4uYWxpZ25tZW50IHRlc3QiKSk7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCBOVUxMLCBQSl9QT09MX1NJWkUrTUVNU0laRSwgTUVNU0laRSwgTlVMTCk7CisgICAgaWYgKCFwb29sKQorCXJldHVybiAtMzAwOworCisjZGVmaW5lIElTX0FMSUdORUQocCkJKCgoKHVuc2lnbmVkIGxvbmcpKHBqX3NzaXplX3QpcCkgJiBcCisJCQkgICAoUEpfUE9PTF9BTElHTk1FTlQtMSkpID09IDApCisKKyAgICBmb3IgKGk9MDsgaTxMT09QOyArK2kpIHsKKwkvKiBUZXN0IGZpcnN0IGFsbG9jYXRpb24gKi8KKwlwdHIgPSBwal9wb29sX2FsbG9jKHBvb2wsIDEpOworCWlmICghSVNfQUxJR05FRChwdHIpKSB7CisJICAgIHBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKwkgICAgcmV0dXJuIC0zMTA7CisJfQorCisJLyogVGVzdCBzdWJzZXF1ZW50IGFsbG9jYXRpb24gKi8KKwlwdHIgPSBwal9wb29sX2FsbG9jKHBvb2wsIDEpOworCWlmICghSVNfQUxJR05FRChwdHIpKSB7CisJICAgIHBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKwkgICAgcmV0dXJuIC0zMjA7CisJfQorCisJLyogVGVzdCBhbGxvY2F0aW9uIGFmdGVyIG5ldyBibG9jayBpcyBjcmVhdGVkICovCisJcHRyID0gcGpfcG9vbF9hbGxvYyhwb29sLCBNRU1TSVpFKjIrMSk7CisJaWYgKCFJU19BTElHTkVEKHB0cikpIHsKKwkgICAgcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworCSAgICByZXR1cm4gLTMzMDsKKwl9CisKKwkvKiBSZXNldCB0aGUgcG9vbCAqLworCXBqX3Bvb2xfcmVzZXQocG9vbCk7CisgICAgfQorCisgICAgLyogRG9uZSAqLworICAgIHBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKworICAgIHJldHVybiAwOworfQorCisvKiBUZXN0IHRoYXQgdGhlIGFsaWdubWVudCB3b3JrcyBmb3IgcG9vbCBvbiBidWYuICovCitzdGF0aWMgaW50IHBvb2xfYnVmX2FsaWdubWVudF90ZXN0KHZvaWQpCit7CisgICAgcGpfcG9vbF90ICpwb29sOworICAgIGNoYXIgYnVmWzUxMl07CisgICAgdm9pZCAqcHRyOworICAgIGVudW0geyBMT09QID0gMTAwIH07CisgICAgdW5zaWduZWQgaTsKKworICAgIFBKX0xPRygzLCgidGVzdCIsICIuLi5wb29sX2J1ZiBhbGlnbm1lbnQgdGVzdCIpKTsKKworICAgIHBvb2wgPSBwal9wb29sX2NyZWF0ZV9vbl9idWYoTlVMTCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgaWYgKCFwb29sKQorCXJldHVybiAtNDAwOworCisgICAgZm9yIChpPTA7IGk8TE9PUDsgKytpKSB7CisJLyogVGVzdCBmaXJzdCBhbGxvY2F0aW9uICovCisJcHRyID0gcGpfcG9vbF9hbGxvYyhwb29sLCAxKTsKKwlpZiAoIUlTX0FMSUdORUQocHRyKSkgeworCSAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisJICAgIHJldHVybiAtNDEwOworCX0KKworCS8qIFRlc3Qgc3Vic2VxdWVudCBhbGxvY2F0aW9uICovCisJcHRyID0gcGpfcG9vbF9hbGxvYyhwb29sLCAxKTsKKwlpZiAoIUlTX0FMSUdORUQocHRyKSkgeworCSAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisJICAgIHJldHVybiAtNDIwOworCX0KKworCS8qIFJlc2V0IHRoZSBwb29sICovCisJcGpfcG9vbF9yZXNldChwb29sKTsKKyAgICB9CisKKyAgICAvKiBEb25lICovCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFRlc3QgZnVuY3Rpb24gdG8gZHJhaW4gdGhlIHBvb2wncyBzcGFjZS4gCisgKi8KK3N0YXRpYyBpbnQgZHJhaW5fdGVzdChwal9zaXplX3Qgc2l6ZSwgcGpfc2l6ZV90IGluY3JlbWVudCkKK3sKKyAgICBwal9wb29sX3QgKnBvb2wgPSBwal9wb29sX2NyZWF0ZShtZW0sIE5VTEwsIHNpemUsIGluY3JlbWVudCwgCisJCQkJICAgICAmbnVsbF9jYWxsYmFjayk7CisgICAgcGpfc2l6ZV90IGZyZWVzaXplOworICAgIHZvaWQgKnA7CisgICAgaW50IHN0YXR1cyA9IDA7CisgICAgCisgICAgUEpfTE9HKDMsKCJ0ZXN0IiwgIi4uLmRyYWluX3Rlc3QoJWQsJWQpIiwgc2l6ZSwgaW5jcmVtZW50KSk7CisKKyAgICBpZiAoIXBvb2wpCisJcmV0dXJuIC0xMDsKKworICAgIC8qIEdldCBmcmVlIHNpemUgKi8KKyAgICBmcmVlc2l6ZSA9IEdFVF9GUkVFKHBvb2wpOworICAgIGlmIChmcmVlc2l6ZSA8IDEpIHsKKyAgICAJc3RhdHVzPS0xNTsgCisJZ290byBvbl9lcnJvcjsKKyAgICB9CisKKyAgICAvKiBEcmFpbiB0aGUgcG9vbCB1bnRpbCB0aGVyZSdzIG5vdGhpbmcgbGVmdC4gKi8KKyAgICB3aGlsZSAoZnJlZXNpemUgPiAwKSB7CisJaW50IHNpemU7CisKKwlpZiAoZnJlZXNpemUgPiAyNTUpCisJICAgIHNpemUgPSAoKHBqX3JhbmQoKSAmIDB4MDAwMDAwRkYpICsgUEpfUE9PTF9BTElHTk1FTlQpICYgCisJCSAgIH4oUEpfUE9PTF9BTElHTk1FTlQgLSAxKTsKKwllbHNlCisJICAgIHNpemUgPSAoaW50KWZyZWVzaXplOworCisJcCA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgc2l6ZSk7CisJaWYgKCFwKSB7CisJICAgIHN0YXR1cz0tMjA7IGdvdG8gb25fZXJyb3I7CisJfQorCisJZnJlZXNpemUgLT0gc2l6ZTsKKyAgICB9CisKKyAgICAvKiBDaGVjayB0aGF0IGNhcGFjaXR5IGlzIHplcm8uICovCisgICAgaWYgKEdFVF9GUkVFKHBvb2wpICE9IDApIHsKKwlQSl9MT0coMywoInRlc3QiLCAiLi4uLmVycm9yOiByZXR1cm5lZCBmcmVlPSV1IChleHBlY3RpbmcgMCkiLAorCQkgIEdFVF9GUkVFKHBvb2wpKSk7CisJc3RhdHVzPS0zMDsgZ290byBvbl9lcnJvcjsKKyAgICB9CisKKyAgICAvKiBUcnkgdG8gYWxsb2NhdGUgb25jZSBtb3JlICovCisgICAgcCA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgMjU3KTsKKyAgICBpZiAoIXApIHsKKwlzdGF0dXM9LTQwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8qIENoZWNrIHRoYXQgY2FwYWNpdHkgaXMgTk9UIHplcm8uICovCisgICAgaWYgKEdFVF9GUkVFKHBvb2wpID09IDApIHsKKwlzdGF0dXM9LTUwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworCitvbl9lcnJvcjoKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLyogVGVzdCB0aGUgYnVmZmVyIGJhc2VkIHBvb2wgKi8KK3N0YXRpYyBpbnQgcG9vbF9idWZfdGVzdCh2b2lkKQoreworICAgIGVudW0geyBTVEFUSUNfQlVGX1NJWkUgPSA0MCB9OworICAgIC8qIDE2IGlzIHRoZSBpbnRlcm5hbCBzdHJ1Y3QgaW4gcG9vbF9idWYgKi8KKyAgICBzdGF0aWMgY2hhciBidWZbIFNUQVRJQ19CVUZfU0laRSArIHNpemVvZihwal9wb29sX3QpICsgCisJCSAgICAgc2l6ZW9mKHBqX3Bvb2xfYmxvY2spICsgMiAqIFBKX1BPT0xfQUxJR05NRU5UXTsKKyAgICBwal9wb29sX3QgKnBvb2w7CisgICAgdm9pZCAqcDsKKyAgICBQSl9VU0VfRVhDRVBUSU9OOworCisgICAgUEpfTE9HKDMsKCJ0ZXN0IiwgIi4uLnBvb2xfYnVmIHRlc3QiKSk7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGVfb25fYnVmKCJubyBuYW1lIiwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgaWYgKCFwb29sKQorCXJldHVybiAtNzA7CisKKyAgICAvKiBEcmFpbiB0aGUgcG9vbCAqLworICAgIFBKX1RSWSB7CisJaWYgKChwPXBqX3Bvb2xfYWxsb2MocG9vbCwgU1RBVElDX0JVRl9TSVpFLzIpKSA9PSBOVUxMKQorCSAgICByZXR1cm4gLTc1OworCisJaWYgKChwPXBqX3Bvb2xfYWxsb2MocG9vbCwgU1RBVElDX0JVRl9TSVpFLzIpKSA9PSBOVUxMKQorCSAgICByZXR1cm4gLTc2OworICAgIH0KKyAgICBQSl9DQVRDSF9BTlkgeworCXJldHVybiAtNzc7CisgICAgfQorICAgIFBKX0VORDsKKworICAgIC8qIE9uIHRoZSBuZXh0IGFsbG9jLCBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93biAqLworICAgIFBKX1RSWSB7CisJcCA9IHBqX3Bvb2xfYWxsb2MocG9vbCwgU1RBVElDX0JVRl9TSVpFKTsKKwlpZiAocCAhPSBOVUxMKSB7CisJICAgIC8qIFRoaXMgaXMgdW5leHBlY3RlZCwgdGhlIGFsbG9jIHNob3VsZCBmYWlsICovCisJICAgIHJldHVybiAtNzg7CisJfQorICAgIH0KKyAgICBQSl9DQVRDSF9BTlkgeworCS8qIFRoaXMgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCAqLworICAgIH0KKyAgICBQSl9FTkQ7CisKKyAgICAvKiBEb25lICovCisgICAgcmV0dXJuIDA7Cit9CisKKworaW50IHBvb2xfdGVzdCh2b2lkKQoreworICAgIGVudW0geyBMT09QID0gMiB9OworICAgIGludCBsb29wOworICAgIGludCByYzsKKworICAgIHJjID0gY2FwYWNpdHlfdGVzdCgpOworICAgIGlmIChyYykgcmV0dXJuIHJjOworCisgICAgcmMgPSBwb29sX2FsaWdubWVudF90ZXN0KCk7CisgICAgaWYgKHJjKSByZXR1cm4gcmM7CisKKyAgICByYyA9IHBvb2xfYnVmX2FsaWdubWVudF90ZXN0KCk7CisgICAgaWYgKHJjKSByZXR1cm4gcmM7CisKKyAgICBmb3IgKGxvb3A9MDsgbG9vcDxMT09QOyArK2xvb3ApIHsKKwkvKiBUZXN0IHRoYXQgdGhlIHBvb2wgc2hvdWxkIGdyb3cgYXV0b21hdGljbHkuICovCisJcmMgPSBkcmFpbl90ZXN0KFNJWkUsIFNJWkUpOworCWlmIChyYyAhPSAwKSByZXR1cm4gcmM7CisKKwkvKiBUZXN0IHNpdHVhdGlvbiB3aGVyZSBwb29sIGlzIG5vdCBhbGxvd2VkIHRvIGdyb3cuIAorIAkgKiBXZSBleHBlY3QgdGhlIHRlc3QgdG8gcmV0dXJuIGNvcnJlY3QgZXJyb3IuCisJICovCisJcmMgPSBkcmFpbl90ZXN0KFNJWkUsIDApOworCWlmIChyYyAhPSAtNDApIHJldHVybiByYzsKKyAgICB9CisKKyAgICByYyA9IHBvb2xfYnVmX3Rlc3QoKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gcmM7CisKKworICAgIHJldHVybiAwOworfQorCisjZWxzZQorLyogVG8gcHJldmVudCB3YXJuaW5nIGFib3V0ICJ0cmFuc2xhdGlvbiB1bml0IGlzIGVtcHR5IgorICogd2hlbiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQuIAorICovCitpbnQgZHVtbXlfcG9vbF90ZXN0OworI2VuZGlmCS8qIElOQ0xVREVfUE9PTF9URVNUICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3Bvb2xfcGVyZi5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvcG9vbF9wZXJmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU5ODVjYgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3Bvb2xfcGVyZi5jCkBAIC0wLDAgKzEsMTk0IEBACisvKiAkSWQ6IHBvb2xfcGVyZi5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSAidGVzdC5oIgorCisjaWYgSU5DTFVERV9QT09MX1BFUkZfVEVTVAorCisjaW5jbHVkZSA8cGpsaWIuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvbWFsbG9jLmg+CisKKyNpZiAhUEpfSEFTX0hJR0hfUkVTX1RJTUVSCisjIGVycm9yIE5lZWQgaGlnaCByZXNvbHV0aW9uIHRpbWVyIGZvciB0aGlzIHRlc3QuCisjZW5kaWYKKworI2RlZmluZSBUSElTX0ZJTEUgICAidGVzdCIKKworI2RlZmluZSBMT09QCSAgICAxMAorI2RlZmluZSBDT1VOVAkgICAgMTAyNAorc3RhdGljIHVuc2lnbmVkCSAgICBzaXplc1tDT1VOVF07CitzdGF0aWMgY2hhcgkgICAqcFtDT1VOVF07CisjZGVmaW5lIE1JTl9TSVpFICAgIDQKKyNkZWZpbmUgTUFYX1NJWkUgICAgNTEyCitzdGF0aWMgdW5zaWduZWQgdG90YWxfc2l6ZTsKKworCitzdGF0aWMgaW50IHBvb2xfdGVzdF9wb29sKCkKK3sKKyAgICBpbnQgaTsKKyAgICBwal9wb29sX3QgKnBvb2wgPSBwal9wb29sX2NyZWF0ZShtZW0sIE5VTEwsIHRvdGFsX3NpemUgKyA0KkNPVU5ULCAwLCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpCisJcmV0dXJuIC0xOworCisgICAgZm9yIChpPTA7IGk8Q09VTlQ7ICsraSkgeworCWNoYXIgKnA7CisJaWYgKCAocD0oY2hhciopcGpfcG9vbF9hbGxvYyhwb29sLCBzaXplc1tpXSkpID09IE5VTEwpIHsKKwkgICAgUEpfTE9HKDMsKFRISVNfRklMRSwiICAgZXJyb3I6IHBvb2wgZmFpbGVkIHRvIGFsbG9jYXRlICVkIGJ5dGVzIiwKKwkJICAgICAgc2l6ZXNbaV0pKTsKKwkgICAgcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworCSAgICByZXR1cm4gLTE7CisJfQorCSpwID0gJ1wwJzsKKyAgICB9CisKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFN5bWJpYW4gZG9lc24ndCBoYXZlIG1hbGxvYygpL2ZyZWUoKSwgc28gd2UgdXNlIG5ldy9kZWxldGUgaW5zdGVhZCAqLworLy8jaWYgZGVmaW5lZChQSl9TWU1CSUFOKSAmJiBQSl9TWU1CSUFOICE9IDAKKyNpZiAwCitzdGF0aWMgaW50IHBvb2xfdGVzdF9tYWxsb2NfZnJlZSgpCit7CisgICAgaW50IGk7IC8qIG11c3QgYmUgc2lnbmVkICovCisKKyAgICBmb3IgKGk9MDsgaTxDT1VOVDsgKytpKSB7CisJCXBbaV0gPSBuZXcgY2hhcltzaXplc1tpXV07CisJCWlmICghcFtpXSkgeworCQkJUEpfTE9HKDMsKFRISVNfRklMRSwiICAgZXJyb3I6IG1hbGxvYyBmYWlsZWQgdG8gYWxsb2NhdGUgJWQgYnl0ZXMiLAorCQkJCQkgIHNpemVzW2ldKSk7CisJCQktLWk7CisJCQl3aGlsZSAoaSA+PSAwKSB7CisJCQkJZGVsZXRlIFtdIHBbaV07CisJCQkJLS1pOworCQkJfQorCQkJcmV0dXJuIC0xOworCQl9CisJCSpwW2ldID0gJ1wwJzsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaTxDT1VOVDsgKytpKSB7CisgICAgCWRlbGV0ZSBbXSBwW2ldOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjZWxzZQkvKiBQSl9TWU1CSUFOICovCisKK3N0YXRpYyBpbnQgcG9vbF90ZXN0X21hbGxvY19mcmVlKCkKK3sKKyAgICBpbnQgaTsgLyogbXVzdCBiZSBzaWduZWQgKi8KKworICAgIGZvciAoaT0wOyBpPENPVU5UOyArK2kpIHsKKwlwW2ldID0gKGNoYXIqKW1hbGxvYyhzaXplc1tpXSk7CisJaWYgKCFwW2ldKSB7CisJICAgIFBKX0xPRygzLChUSElTX0ZJTEUsIiAgIGVycm9yOiBtYWxsb2MgZmFpbGVkIHRvIGFsbG9jYXRlICVkIGJ5dGVzIiwKKwkJICAgICAgc2l6ZXNbaV0pKTsKKwkgICAgLS1pOworCSAgICB3aGlsZSAoaSA+PSAwKQorCQlmcmVlKHBbaV0pLCAtLWk7CisJICAgIHJldHVybiAtMTsKKwl9CisJKnBbaV0gPSAnXDAnOworICAgIH0KKworICAgIGZvciAoaT0wOyBpPENPVU5UOyArK2kpIHsKKwlmcmVlKHBbaV0pOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjZW5kaWYgLyogUEpfU1lNQklBTiAqLworCitpbnQgcG9vbF9wZXJmX3Rlc3QoKQoreworICAgIHVuc2lnbmVkIGk7CisgICAgcGpfdWludDMyX3QgcG9vbF90aW1lPTAsIG1hbGxvY190aW1lPTAsIHBvb2xfdGltZTI9MDsKKyAgICBwal90aW1lc3RhbXAgc3RhcnQsIGVuZDsKKyAgICBwal91aW50MzJfdCBiZXN0LCB3b3JzdDsKKworICAgIC8qIEluaXRpYWxpemUgc2l6ZSBvZiBjaHVua3MgdG8gYWxsb2NhdGUgaW4gZm9yIHRoZSB0ZXN0LiAqLworICAgIGZvciAoaT0wOyBpPENPVU5UOyArK2kpIHsKKwl1bnNpZ25lZCBhbGlnbmVkX3NpemU7CisJc2l6ZXNbaV0gPSBNSU5fU0laRSArIChwal9yYW5kKCkgJSBNQVhfU0laRSk7CisJYWxpZ25lZF9zaXplID0gc2l6ZXNbaV07CisJaWYgKGFsaWduZWRfc2l6ZSAmIChQSl9QT09MX0FMSUdOTUVOVC0xKSkKKwkgICAgYWxpZ25lZF9zaXplID0gKChhbGlnbmVkX3NpemUgKyBQSl9QT09MX0FMSUdOTUVOVCAtIDEpKSAmIH4oUEpfUE9PTF9BTElHTk1FTlQgLSAxKTsKKwl0b3RhbF9zaXplICs9IGFsaWduZWRfc2l6ZTsKKyAgICB9CisKKyAgICAvKiBBZGQgc29tZSBtb3JlIGZvciBwb29sIGFkbWluIGFyZWEgKi8KKyAgICB0b3RhbF9zaXplICs9IDUxMjsKKworICAgIFBKX0xPRygzLCAoVEhJU19GSUxFLCAiQmVuY2htYXJraW5nIHBvb2wuLiIpKTsKKworICAgIC8qIFdhcm11cCAqLworICAgIHBvb2xfdGVzdF9wb29sKCk7CisgICAgcG9vbF90ZXN0X21hbGxvY19mcmVlKCk7CisKKyAgICBmb3IgKGk9MDsgaTxMT09QOyArK2kpIHsKKwlwal9nZXRfdGltZXN0YW1wKCZzdGFydCk7CisJaWYgKHBvb2xfdGVzdF9wb29sKCkpIHsKKwkgICAgcmV0dXJuIDE7CisJfQorCXBqX2dldF90aW1lc3RhbXAoJmVuZCk7CisJcG9vbF90aW1lICs9IChlbmQudTMyLmxvIC0gc3RhcnQudTMyLmxvKTsKKworCXBqX2dldF90aW1lc3RhbXAoJnN0YXJ0KTsKKwlpZiAocG9vbF90ZXN0X21hbGxvY19mcmVlKCkpIHsKKwkgICAgcmV0dXJuIDI7CisJfQorCXBqX2dldF90aW1lc3RhbXAoJmVuZCk7CisJbWFsbG9jX3RpbWUgKz0gKGVuZC51MzIubG8gLSBzdGFydC51MzIubG8pOworCisJcGpfZ2V0X3RpbWVzdGFtcCgmc3RhcnQpOworCWlmIChwb29sX3Rlc3RfcG9vbCgpKSB7CisJICAgIHJldHVybiA0OworCX0KKwlwal9nZXRfdGltZXN0YW1wKCZlbmQpOworCXBvb2xfdGltZTIgKz0gKGVuZC51MzIubG8gLSBzdGFydC51MzIubG8pOworICAgIH0KKworICAgIFBKX0xPRyg0LChUSElTX0ZJTEUsIi4uTE9PUCBjb3VudDogICAgICAgICAgICAgICAgICAgICAgICAldSIsTE9PUCkpOworICAgIFBKX0xPRyg0LChUSElTX0ZJTEUsIi4ubnVtYmVyIG9mIGFsbG9jL2RlYWxsb2MgcGVyIGxvb3A6ICAldSIsQ09VTlQpKTsKKyAgICBQSl9MT0coNCwoVEhJU19GSUxFLCIuLnBvb2wgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24gdGltZTogJXUiLHBvb2xfdGltZSkpOworICAgIFBKX0xPRyg0LChUSElTX0ZJTEUsIi4ubWFsbG9jL2ZyZWUgdGltZTogICAgICAgICAgICAgICAgICAldSIsbWFsbG9jX3RpbWUpKTsKKyAgICBQSl9MT0coNCwoVEhJU19GSUxFLCIuLnBvb2wgYWdhaW4sIHNlY29uZCBpbnZvY2F0aW9uOiAgICAgJXUiLHBvb2xfdGltZTIpKTsKKworICAgIGlmIChwb29sX3RpbWUyPT0wKSBwb29sX3RpbWUyPTE7CisgICAgaWYgKHBvb2xfdGltZSA8IHBvb2xfdGltZTIpCisJYmVzdCA9IHBvb2xfdGltZSwgd29yc3QgPSBwb29sX3RpbWUyOworICAgIGVsc2UKKwliZXN0ID0gcG9vbF90aW1lMiwgd29yc3QgPSBwb29sX3RpbWU7CisgICAgCisgICAgLyogYXZvaWQgZGl2aXNpb24gYnkgemVybyAqLworICAgIGlmIChiZXN0PT0wKSBiZXN0PTE7CisgICAgaWYgKHdvcnN0PT0wKSB3b3JzdD0xOworCisgICAgUEpfTE9HKDMsIChUSElTX0ZJTEUsICIuLnBvb2wgc3BlZWR1cCBvdmVyIG1hbGxvYyBiZXN0PSVkeCwgd29yc3Q9JWR4IiwgCisJCQkgIChpbnQpKG1hbGxvY190aW1lL2Jlc3QpLAorCQkJICAoaW50KShtYWxsb2NfdGltZS93b3JzdCkpKTsKKyAgICByZXR1cm4gMDsKK30KKworCisjZW5kaWYJLyogSU5DTFVERV9QT09MX1BFUkZfVEVTVCAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9wb29sX3dyYXAuY3BwIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvcG9vbF93cmFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDM1YWU4Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvcG9vbF93cmFwLmNwcApAQCAtMCwwICsxLDI0IEBACisvKiAkSWQ6IHBvb2xfd3JhcC5jcHAgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisKKy8qCisgKiBUaGlzIGZpbGUgaXMgYSBDKysgd3JhcHBlciwgc2VlIHRpY2tldCAjODg2IGZvciBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlICJwb29sLmMiCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9yYW5kLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9yYW5kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M0NDJkMgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3JhbmQuYwpAQCAtMCwwICsxLDU0IEBACisvKiAkSWQ6IHJhbmQuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqL3JhbmQuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKyNpZiBJTkNMVURFX1JBTkRfVEVTVAorCisjZGVmaW5lIENPVU5UICAxMDI0CitzdGF0aWMgaW50IHZhbHVlc1tDT1VOVF07CisKKy8qCisgKiByYW5kX3Rlc3QoKSwgc2ltcGx5IGdlbmVyYXRlcyBDT1VOVCBudW1iZXIgb2YgcmFuZG9tIG51bWJlciBhbmQKKyAqIGNoZWNrIHRoYXQgdGhlcmUncyBubyBkdXBsaWNhdGUgbnVtYmVycy4KKyAqLworaW50IHJhbmRfdGVzdCh2b2lkKQoreworICAgIGludCBpOworCisgICAgZm9yIChpPTA7IGk8Q09VTlQ7ICsraSkgeworCWludCBqOworCisJdmFsdWVzW2ldID0gcGpfcmFuZCgpOworCWZvciAoaj0wOyBqPGk7ICsraikgeworCSAgICBpZiAodmFsdWVzW2ldID09IHZhbHVlc1tqXSkgeworCQlQSl9MT0coMywoInRlc3QiLCAiZXJyb3I6IGR1cGxpY2F0ZSB2YWx1ZSAlZCBhdCAlZC10aCBpbmRleCIsCisJCQkgdmFsdWVzW2ldLCBpKSk7CisJCXJldHVybiAtMTA7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgkvKiBJTkNMVURFX1JBTkRfVEVTVCAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9yYnRyZWUuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3JidHJlZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMWExNjMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9yYnRyZWUuYwpAQCAtMCwwICsxLDE2OCBAQAorLyogJElkOiByYnRyZWUuYyAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgInRlc3QuaCIKKworI2lmIElOQ0xVREVfUkJUUkVFX1RFU1QKKworI2luY2x1ZGUgPHBqbGliLmg+CisKKyNkZWZpbmUgTE9PUAkgICAgMzIKKyNkZWZpbmUgTUlOX0NPVU5UICAgNjQKKyNkZWZpbmUgTUFYX0NPVU5UICAgKExPT1AgKiBNSU5fQ09VTlQpCisjZGVmaW5lIFNUUlNJWkUJICAgIDE2CisjZGVmaW5lIFRISVNfRklMRSAgICJyYnRyZWVfdGVzdCIKKwordHlwZWRlZiBzdHJ1Y3Qgbm9kZV9rZXkKK3sKKyAgICBwal91aW50MzJfdCBoYXNoOworICAgIGNoYXIgc3RyW1NUUlNJWkVdOworfSBub2RlX2tleTsKKworc3RhdGljIGludCBjb21wYXJlX25vZGUoY29uc3Qgbm9kZV9rZXkgKmsxLCBjb25zdCBub2RlX2tleSAqazIpCit7CisgICAgaWYgKGsxLT5oYXNoID09IGsyLT5oYXNoKSB7CisJcmV0dXJuIHN0cmNtcChrMS0+c3RyLCBrMi0+c3RyKTsKKyAgICB9IGVsc2UgeworCXJldHVybiBrMS0+aGFzaAk8IGsyLT5oYXNoID8gLTEgOiAxOworICAgIH0KK30KKwordm9pZCByYW5kb21pemVfc3RyaW5nKGNoYXIgKnN0ciwgaW50IGxlbikKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGk9MDsgaTxsZW4tMTsgKytpKQorCXN0cltpXSA9IChjaGFyKSgnYScgKyBwal9yYW5kKCkgJSAyNik7CisgICAgc3RyW2xlbi0xXSA9ICdcMCc7Cit9CisKK3N0YXRpYyBpbnQgdGVzdCh2b2lkKQoreworICAgIHBqX3JidHJlZSByYjsKKyAgICBub2RlX2tleSAqa2V5OworICAgIHBqX3JidHJlZV9ub2RlICpub2RlOworICAgIHBqX3Bvb2xfdCAqcG9vbDsKKyAgICBpbnQgZXJyPTA7CisgICAgaW50IGNvdW50ID0gTUlOX0NPVU5UOworICAgIGludCBpOworICAgIHVuc2lnbmVkIHNpemU7CisKKyAgICBwal9yYnRyZWVfaW5pdCgmcmIsIChwal9yYnRyZWVfY29tcCopJmNvbXBhcmVfbm9kZSk7CisgICAgc2l6ZSA9IE1BWF9DT1VOVCooc2l6ZW9mKCprZXkpK1BKX1JCVFJFRV9OT0RFX1NJWkUpICsgCisJCQkgICBQSl9SQlRSRUVfU0laRSArIFBKX1BPT0xfU0laRTsKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUoIG1lbSwgInBvb2wiLCBzaXplLCAwLCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpIHsKKwlQSl9MT0coMywoInRlc3QiLCAiLi4uZXJyb3I6IGNyZWF0aW5nIHBvb2wgb2YgJXUgYnl0ZXMiLCBzaXplKSk7CisJcmV0dXJuIC0xMDsKKyAgICB9CisKKyAgICBrZXkgPSAobm9kZV9rZXkgKilwal9wb29sX2FsbG9jKHBvb2wsIE1BWF9DT1VOVCpzaXplb2YoKmtleSkpOworICAgIGlmICgha2V5KQorCXJldHVybiAtMjA7CisKKyAgICBub2RlID0gKHBqX3JidHJlZV9ub2RlKilwal9wb29sX2FsbG9jKHBvb2wsIE1BWF9DT1VOVCpzaXplb2YoKm5vZGUpKTsKKyAgICBpZiAoIW5vZGUpCisJcmV0dXJuIC0zMDsKKworICAgIGZvciAoaT0wOyBpPExPT1A7ICsraSkgeworCWludCBqOworCXBqX3JidHJlZV9ub2RlICpwcmV2LCAqaXQ7CisJcGpfdGltZXN0YW1wIHQxLCB0MiwgdF9zZXR1cCwgdF9pbnNlcnQsIHRfc2VhcmNoLCB0X2VyYXNlOworCisJcGpfYXNzZXJ0KHJiLnNpemUgPT0gMCk7CisKKwl0X3NldHVwLnUzMi5sbyA9IHRfaW5zZXJ0LnUzMi5sbyA9IHRfc2VhcmNoLnUzMi5sbyA9IHRfZXJhc2UudTMyLmxvID0gMDsKKworCWZvciAoaj0wOyBqPGNvdW50OyBqKyspIHsKKwkgICAgcmFuZG9taXplX3N0cmluZyhrZXlbal0uc3RyLCBTVFJTSVpFKTsKKworCSAgICBwal9nZXRfdGltZXN0YW1wKCZ0MSk7CisJICAgIG5vZGVbal0ua2V5ID0gJmtleVtqXTsKKwkgICAgbm9kZVtqXS51c2VyX2RhdGEgPSBrZXlbal0uc3RyOworCSAgICBrZXlbal0uaGFzaCA9IHBqX2hhc2hfY2FsYygwLCBrZXlbal0uc3RyLCBQSl9IQVNIX0tFWV9TVFJJTkcpOworCSAgICBwal9nZXRfdGltZXN0YW1wKCZ0Mik7CisJICAgIHRfc2V0dXAudTMyLmxvICs9ICh0Mi51MzIubG8gLSB0MS51MzIubG8pOworCisJICAgIHBqX2dldF90aW1lc3RhbXAoJnQxKTsKKwkgICAgcGpfcmJ0cmVlX2luc2VydCgmcmIsICZub2RlW2pdKTsKKwkgICAgcGpfZ2V0X3RpbWVzdGFtcCgmdDIpOworCSAgICB0X2luc2VydC51MzIubG8gKz0gKHQyLnUzMi5sbyAtIHQxLnUzMi5sbyk7CisJfQorCisJcGpfYXNzZXJ0KHJiLnNpemUgPT0gKHVuc2lnbmVkKWNvdW50KTsKKworCS8vIEl0ZXJhdGUga2V5LCBtYWtlIHN1cmUgdGhleSdyZSBzb3J0ZWQuCisJcHJldiA9IE5VTEw7CisJaXQgPSBwal9yYnRyZWVfZmlyc3QoJnJiKTsKKwl3aGlsZSAoaXQpIHsKKwkgICAgaWYgKHByZXYpIHsKKwkJaWYgKGNvbXBhcmVfbm9kZSgobm9kZV9rZXkqKXByZXYtPmtleSwobm9kZV9rZXkqKWl0LT5rZXkpPj0wKSB7CisJCSAgICArK2VycjsKKwkJICAgIFBKX0xPRygzLCAoVEhJU19GSUxFLCAiRXJyb3I6ICVzID49ICVzIiwgCisJCQkgICAgICAgKGNoYXIqKXByZXYtPnVzZXJfZGF0YSwgKGNoYXIqKWl0LT51c2VyX2RhdGEpKTsKKwkJfQorCSAgICB9CisJICAgIHByZXYgPSBpdDsKKwkgICAgaXQgPSBwal9yYnRyZWVfbmV4dCgmcmIsIGl0KTsKKwl9CisKKwkvLyBTZWFyY2guCisJZm9yIChqPTA7IGo8Y291bnQ7IGorKykgeworCSAgICBwal9nZXRfdGltZXN0YW1wKCZ0MSk7CisJICAgIGl0ID0gcGpfcmJ0cmVlX2ZpbmQoJnJiLCAma2V5W2pdKTsKKwkgICAgcGpfZ2V0X3RpbWVzdGFtcCgmdDIpOworCSAgICB0X3NlYXJjaC51MzIubG8gKz0gKHQyLnUzMi5sbyAtIHQxLnUzMi5sbyk7CisKKwkgICAgcGpfYXNzZXJ0KGl0ICE9IE5VTEwpOworCSAgICBpZiAoaXQgPT0gTlVMTCkKKwkJKytlcnI7CisJfQorCisJLy8gRXJhc2Ugbm9kZS4KKwlmb3IgKGo9MDsgajxjb3VudDsgaisrKSB7CisJICAgIHBqX2dldF90aW1lc3RhbXAoJnQxKTsKKwkgICAgaXQgPSBwal9yYnRyZWVfZXJhc2UoJnJiLCAmbm9kZVtqXSk7CisJICAgIHBqX2dldF90aW1lc3RhbXAoJnQyKTsKKwkgICAgdF9lcmFzZS51MzIubG8gKz0gKHQyLnUzMi5sbyAtIHQxLnUzMi5sbyk7CisJfQorCisJUEpfTE9HKDQsIChUSElTX0ZJTEUsIAorCQkiLi4uY291bnQ6JWQsIHNldHVwOiVkLCBpbnNlcnQ6JWQsIHNlYXJjaDolZCwgZXJhc2U6JWQiLAorCQljb3VudCwKKwkJdF9zZXR1cC51MzIubG8gLyBjb3VudCwgdF9pbnNlcnQudTMyLmxvIC8gY291bnQsCisJCXRfc2VhcmNoLnUzMi5sbyAvIGNvdW50LCB0X2VyYXNlLnUzMi5sbyAvIGNvdW50KSk7CisKKwljb3VudCA9IDIgKiBjb3VudDsKKwlpZiAoY291bnQgPiBNQVhfQ09VTlQpCisJICAgIGJyZWFrOworICAgIH0KKworICAgIHBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKyAgICByZXR1cm4gZXJyOworfQorCisKK2ludCByYnRyZWVfdGVzdCgpCit7CisgICAgcmV0dXJuIHRlc3QoKTsKK30KKworI2VuZGlmCS8qIElOQ0xVREVfUkJUUkVFX1RFU1QgKi8KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9ydGVtc19uZXR3b3JrX2NvbmZpZy5oIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvcnRlbXNfbmV0d29ya19jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmQ1NjUyCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvcnRlbXNfbmV0d29ya19jb25maWcuaApAQCAtMCwwICsxLDE0OSBAQAorLyogJElkOiBydGVtc19uZXR3b3JrX2NvbmZpZy5oIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisKKy8qCisgKiBUaGFua3MgWmV0cm9uLCBJbmMgYW5kIFBoaWwgVG9ycmUgPHB0b3JyZUB6ZXRyb24uY29tPiBmb3IgZG9uYXRpbmcgUEpMSUIKKyAqIHBvcnQgdG8gUlRFTVMuCisgKi8KKworLyoKKyAqIE5ldHdvcmsgY29uZmlndXJhdGlvbgorICogCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBFRElUIFRISVMgRklMRSBUTyBSRUZMRUNUIFlPVVIgTkVUV09SSyBDT05GSUdVUkFUSU9OICAgICAqCisgKiBCRUZPUkUgUlVOTklORyBBTlkgUlRFTVMgUFJPR1JBTVMgV0hJQ0ggVVNFIFRIRSBORVRXT1JLISAqIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqLworCisjaWZuZGVmIF9SVEVNU19ORVRXT1JLQ09ORklHX0hfCisjZGVmaW5lIF9SVEVNU19ORVRXT1JLQ09ORklHX0hfCisKKworI2RlZmluZSBERUZBVUxUX0lQX0FERFJFU1NfU1RSSU5HICIxOTIuMTY4LjAuMiIKKyNkZWZpbmUgREVGQVVMVF9ORVRNQVNLX1NUUklORyAgICAiMjU1LjI1NS4yNTUuMCIKKyNkZWZpbmUgREVGQVVMVF9HQVRFV0FZX1NUUklORyAgICAiMTkyLjE2OC4wLjEiCisKKworCisKKyNpZm5kZWYgUlRFTVNfQlNQX05FVFdPUktfRFJJVkVSX05BTUUKKyN3YXJuaW5nICJSVEVNU19CU1BfTkVUV09SS19EUklWRVJfTkFNRSBpcyBub3QgZGVmaW5lZCIKKyNkZWZpbmUgUlRFTVNfQlNQX05FVFdPUktfRFJJVkVSX05BTUUgIm5vX25ldHdvcmsxIgorI2VuZGlmCisKKyNpZm5kZWYgUlRFTVNfQlNQX05FVFdPUktfRFJJVkVSX0FUVEFDSAorI3dhcm5pbmcgIlJURU1TX0JTUF9ORVRXT1JLX0RSSVZFUl9BVFRBQ0ggaXMgbm90IGRlZmluZWQiCisjZGVmaW5lIFJURU1TX0JTUF9ORVRXT1JLX0RSSVZFUl9BVFRBQ0ggMAorI2VuZGlmCisKKyNkZWZpbmUgTkVUV09SS19TVEFDS19QUklPUklUWSAxMjgKKy8qICNkZWZpbmUgUlRFTVNfVVNFX0JPT1RQICovCisKKy8qICNkZWZpbmUgUlRFTVNfVVNFX0xPT1BCQUNLICovCisKKyNpbmNsdWRlIDxic3AuaD4KKworLyoKKyAqIERlZmluZSBSVEVNU19TRVRfRVRIRVJORVRfQUREUkVTUyBpZiB5b3Ugd2FudCB0byBzcGVjaWZ5IHRoZQorICogRXRoZXJuZXQgYWRkcmVzcyBoZXJlLiAgSWYgUlRFTVNfU0VUX0VUSEVSTkVUX0FERFJFU1MgaXMgbm90CisgKiBkZWZpbmVkIHRoZSBkcml2ZXIgd2lsbCBjaG9vc2UgYW4gYWRkcmVzcy4KKyAqLworLy8gTk9URTogIFRoZSBhZGRyZXNzIGJlbG93IGlzIGEgZHVtbXkgYWRkcmVzcyB0aGF0IHNob3VsZCBvbmx5IGV2ZXIKKy8vIGJlIHVzZWQgZm9yIHRlc3Rpbmcgb24gYSBwcml2YXRlIG5ldHdvcmsuICBETyBOT1QgTEVUIEEgUFJPRFVDVAorLy8gQ09OVEFJTklORyBUSElTIEVUSEVSTkVUIEFERFJFU1MgT1VUIElOVE8gVEhFIEZJRUxEIQorLy8jZGVmaW5lIFJURU1TX1NFVF9FVEhFUk5FVF9BRERSRVNTCisjaWYgKGRlZmluZWQgKFJURU1TX1NFVF9FVEhFUk5FVF9BRERSRVNTKSkKK3N0YXRpYyBjaGFyIGV0aGVybmV0X2FkZHJlc3NbNl0gPSB7IDB4MDAsIDB4ODAsIDB4N0YsIDB4MjIsIDB4NjEsIDB4NzcgfTsKKyNlbmRpZgorCisjZGVmaW5lIFJURU1TX1VTRV9MT09QQkFDSyAKKyNpZmRlZiBSVEVNU19VU0VfTE9PUEJBQ0sgCisvKgorICogTG9vcGJhY2sgaW50ZXJmYWNlCisgKi8KK2V4dGVybiBpbnQgcnRlbXNfYnNkbmV0X2xvb3BhdHRhY2goc3RydWN0IHJ0ZW1zX2JzZG5ldF9pZmNvbmZpZyogZHVtbXksIGludCB1bnVzZWQpOworc3RhdGljIHN0cnVjdCBydGVtc19ic2RuZXRfaWZjb25maWcgbG9vcGJhY2tfY29uZmlnID0geworCSJsbzAiLAkJCQkvKiBuYW1lICovCisJcnRlbXNfYnNkbmV0X2xvb3BhdHRhY2gsCS8qIGF0dGFjaCBmdW5jdGlvbiAqLworCU5VTEwsCQkJCS8qIGxpbmsgdG8gbmV4dCBpbnRlcmZhY2UgKi8KKwkiMTI3LjAuMC4xIiwJCQkvKiBJUCBhZGRyZXNzICovCisJIjI1NS4wLjAuMCIsCQkJLyogSVAgbmV0IG1hc2sgKi8KK307CisjZW5kaWYKKworLyoKKyAqIERlZmF1bHQgbmV0d29yayBpbnRlcmZhY2UKKyAqLworc3RhdGljIHN0cnVjdCBydGVtc19ic2RuZXRfaWZjb25maWcgbmV0ZHJpdmVyX2NvbmZpZyA9IHsKKwlSVEVNU19CU1BfTkVUV09SS19EUklWRVJfTkFNRSwJCS8qIG5hbWUgKi8KKwlSVEVNU19CU1BfTkVUV09SS19EUklWRVJfQVRUQUNILAkvKiBhdHRhY2ggZnVuY3Rpb24gKi8KKworI2lmZGVmIFJURU1TX1VTRV9MT09QQkFDSyAKKwkmbG9vcGJhY2tfY29uZmlnLAkJLyogbGluayB0byBuZXh0IGludGVyZmFjZSAqLworI2Vsc2UKKwlOVUxMLAkJCQkvKiBObyBtb3JlIGludGVyZmFjZXMgKi8KKyNlbmRpZgorCisjaWYgKGRlZmluZWQgKFJURU1TX1VTRV9CT09UUCkpCisJTlVMTCwJCQkJLyogQk9PVFAgc3VwcGxpZXMgSVAgYWRkcmVzcyAqLworCU5VTEwsCQkJCS8qIEJPT1RQIHN1cHBsaWVzIElQIG5ldCBtYXNrICovCisjZWxzZQorCSIxOTIuMTY4LjAuMzMiLAkJCS8qIElQIGFkZHJlc3MgKi8KKwkiMjU1LjI1NS4yNTUuMCIsCQkvKiBJUCBuZXQgbWFzayAqLworI2VuZGlmIC8qICFSVEVNU19VU0VfQk9PVFAgKi8KKworI2lmIChkZWZpbmVkIChSVEVNU19TRVRfRVRIRVJORVRfQUREUkVTUykpCisJZXRoZXJuZXRfYWRkcmVzcywgICAgICAgICAgICAgICAvKiBFdGhlcm5ldCBoYXJkd2FyZSBhZGRyZXNzICovCisjZWxzZQorCU5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRHJpdmVyIHN1cHBsaWVzIGhhcmR3YXJlIGFkZHJlc3MgKi8KKyNlbmRpZgorCTAJCQkJLyogVXNlIGRlZmF1bHQgZHJpdmVyIHBhcmFtZXRlcnMgKi8KK307CisKKy8qCisgKiBOZXR3b3JrIGNvbmZpZ3VyYXRpb24KKyAqLworc3RydWN0IHJ0ZW1zX2JzZG5ldF9jb25maWcgcnRlbXNfYnNkbmV0X2NvbmZpZyA9IHsKKwkmbmV0ZHJpdmVyX2NvbmZpZywKKworI2lmIChkZWZpbmVkIChSVEVNU19VU0VfQk9PVFApKQorCXJ0ZW1zX2JzZG5ldF9kb19ib290cCwKKyNlbHNlCisJTlVMTCwKKyNlbmRpZgorCisJTkVUV09SS19TVEFDS19QUklPUklUWSwJCS8qIERlZmF1bHQgbmV0d29yayB0YXNrIHByaW9yaXR5ICovCisJMTA0ODU3NiwJCQkvKiBEZWZhdWx0IG1idWYgY2FwYWNpdHkgKi8KKwkxMDQ4NTc2LAkJCS8qIERlZmF1bHQgbWJ1ZiBjbHVzdGVyIGNhcGFjaXR5ICovCisKKyNpZiAoIWRlZmluZWQgKFJURU1TX1VTRV9CT09UUCkpCisJInRlc3Rub2RlIiwJCS8qIEhvc3QgbmFtZSAqLworCSJleGFtcGxlLm9yZyIsCQkvKiBEb21haW4gbmFtZSAqLworCSIxOTIuMTY4LjYuOSIsCQkvKiBHYXRld2F5ICovCisJIjE5Mi4xNjguNy40MSIsCQkvKiBMb2cgaG9zdCAqLworCXsiMTk4LjEzNy4yMzEuMSIgfSwJLyogTmFtZSBzZXJ2ZXIocykgKi8KKwl7IjIwNy4yMDIuMTkwLjE2MiIgfSwJLyogTlRQIHNlcnZlcihzKSAqLworI2VuZGlmIC8qICFSVEVNU19VU0VfQk9PVFAgKi8KKworfTsKKworI2VuZGlmCS8qIF9SVEVNU19ORVRXT1JLQ09ORklHX0hfICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3NlbGVjdC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3Qvc2VsZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdkODkxYQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3NlbGVjdC5jCkBAIC0wLDAgKzEsMjIxIEBACisvKiAkSWQ6IHNlbGVjdC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSAidGVzdC5oIgorCisvKioKKyAqIFxwYWdlIHBhZ2VfcGpsaWJfc2VsZWN0X3Rlc3QgVGVzdDogU29ja2V0IFNlbGVjdCgpCisgKgorICogVGhpcyBmaWxlIHByb3ZpZGVzIGltcGxlbWVudGF0aW9uIG9mIFxiIHNlbGVjdF90ZXN0KCkuIEl0IHRlc3RzIHRoZQorICogZnVuY3Rpb25hbGl0eSBvZiB0aGUgcGpfc29ja19zZWxlY3QoKSBBUEkuCisgKgorICoKKyAqIFRoaXMgZmlsZSBpcyA8Yj5wamxpYi10ZXN0L3NlbGVjdC5jPC9iPgorICoKKyAqIFxpbmNsdWRlIHBqbGliLXRlc3Qvc2VsZWN0LmMKKyAqLworCisKKyNpZiBJTkNMVURFX1NFTEVDVF9URVNUCisKKyNpbmNsdWRlIDxwai9zb2NrLmg+CisjaW5jbHVkZSA8cGovc29ja19zZWxlY3QuaD4KKyNpbmNsdWRlIDxwai9sb2cuaD4KKyNpbmNsdWRlIDxwai9zdHJpbmcuaD4KKyNpbmNsdWRlIDxwai9hc3NlcnQuaD4KKyNpbmNsdWRlIDxwai9vcy5oPgorI2luY2x1ZGUgPHBqL2Vycm5vLmg+CisKK2VudW0KK3sKKyAgICBSRUFEX0ZEUywKKyAgICBXUklURV9GRFMsCisgICAgRVhDRVBUX0ZEUworfTsKKworI2RlZmluZSBVRFBfUE9SVCAgICA1MTIzMgorI2RlZmluZSBUSElTX0ZJTEUgICAic2VsZWN0X3Rlc3QiCisKKy8qCisgKiBkb19zZWxlY3QoKQorICoKKyAqIFBlcmZvcm0gcGpfc29ja19zZWxlY3QoKSBhbmQgZmluZCBvdXQgd2hpY2ggc29ja2V0cworICogYXJlIHNpZ25hbGxlZC4KKyAqLyAgICAKK3N0YXRpYyBpbnQgZG9fc2VsZWN0KCBwal9zb2NrX3Qgc29jazEsIHBqX3NvY2tfdCBzb2NrMiwKKwkJICAgICAgaW50IHNldGNvdW50W10pCit7CisgICAgcGpfZmRfc2V0X3QgZmRzWzNdOworICAgIHBqX3RpbWVfdmFsIHRpbWVvdXQ7CisgICAgaW50IGksIG47CisgICAgCisgICAgZm9yIChpPTA7IGk8MzsgKytpKSB7CisgICAgICAgIFBKX0ZEX1pFUk8oJmZkc1tpXSk7CisgICAgICAgIFBKX0ZEX1NFVChzb2NrMSwgJmZkc1tpXSk7CisgICAgICAgIFBKX0ZEX1NFVChzb2NrMiwgJmZkc1tpXSk7CisgICAgICAgIHNldGNvdW50W2ldID0gMDsKKyAgICB9CisKKyAgICB0aW1lb3V0LnNlYyA9IDE7CisgICAgdGltZW91dC5tc2VjID0gMDsKKworICAgIG4gPSBwal9zb2NrX3NlbGVjdChQSl9JT1FVRVVFX01BWF9IQU5ETEVTLCAmZmRzWzBdLCAmZmRzWzFdLCAmZmRzWzJdLAorCQkgICAgICAgJnRpbWVvdXQpOworICAgIGlmIChuIDwgMCkKKyAgICAgICAgcmV0dXJuIG47CisgICAgaWYgKG4gPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKGk9MDsgaTwzOyArK2kpIHsKKyAgICAgICAgaWYgKFBKX0ZEX0lTU0VUKHNvY2sxLCAmZmRzW2ldKSkKKyAgICAgICAgICAgIHNldGNvdW50W2ldKys7CisgICAgICAgIGlmIChQSl9GRF9JU1NFVChzb2NrMiwgJmZkc1tpXSkpCisJICAgIHNldGNvdW50W2ldKys7CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKKy8qCisgKiBzZWxlY3RfdGVzdCgpCisgKgorICogVGVzdCBtYWluIGVudHJ5LgorICovCitpbnQgc2VsZWN0X3Rlc3QoKQoreworICAgIHBqX3NvY2tfdCB1ZHAxPVBKX0lOVkFMSURfU09DS0VULCB1ZHAyPVBKX0lOVkFMSURfU09DS0VUOworICAgIHBqX3NvY2thZGRyX2luIHVkcF9hZGRyOworICAgIGludCBzdGF0dXM7CisgICAgaW50IHNldGNvdW50WzNdOworICAgIHBqX3N0cl90IHM7CisgICAgY29uc3QgY2hhciBkYXRhW10gPSAiaGVsbG8iOworICAgIGNvbnN0IGludCBkYXRhbGVuID0gNTsKKyAgICBwal9zc2l6ZV90IHNlbnQsIHJlY2VpdmVkOworICAgIGNoYXIgYnVmWzEwXTsKKyAgICBwal9zdGF0dXNfdCByYzsKKworICAgIFBKX0xPRygzLCAoVEhJU19GSUxFLCAiLi4uVGVzdGluZyBzaW1wbGUgVURQIHNlbGVjdCgpIikpOworICAgIAorICAgIC8vIENyZWF0ZSB0d28gVURQIHNvY2tldHMuCisgICAgcmMgPSBwal9zb2NrX3NvY2tldCggcGpfQUZfSU5FVCgpLCBwal9TT0NLX0RHUkFNKCksIDAsICZ1ZHAxKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogdW5hYmxlIHRvIGNyZWF0ZSBzb2NrZXQiLCByYyk7CisJc3RhdHVzPS0xMDsgZ290byBvbl9yZXR1cm47CisgICAgfQorICAgIHJjID0gcGpfc29ja19zb2NrZXQoIHBqX0FGX0lORVQoKSwgcGpfU09DS19ER1JBTSgpLCAwLCAmdWRwMik7CisgICAgaWYgKHVkcDIgPT0gUEpfSU5WQUxJRF9TT0NLRVQpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IHVuYWJsZSB0byBjcmVhdGUgc29ja2V0IiwgcmMpOworCXN0YXR1cz0tMjA7IGdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8vIEJpbmQgb25lIG9mIHRoZSBVRFAgc29ja2V0LgorICAgIHBqX2J6ZXJvKCZ1ZHBfYWRkciwgc2l6ZW9mKHVkcF9hZGRyKSk7CisgICAgdWRwX2FkZHIuc2luX2ZhbWlseSA9IHBqX0FGX0lORVQoKTsKKyAgICB1ZHBfYWRkci5zaW5fcG9ydCA9IFVEUF9QT1JUOworICAgIHVkcF9hZGRyLnNpbl9hZGRyID0gcGpfaW5ldF9hZGRyKHBqX2NzdHIoJnMsICIxMjcuMC4wLjEiKSk7CisKKyAgICBpZiAocGpfc29ja19iaW5kKHVkcDIsICZ1ZHBfYWRkciwgc2l6ZW9mKHVkcF9hZGRyKSkpIHsKKwlzdGF0dXM9LTMwOyBnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICAvLyBTZW5kIGRhdGEuCisgICAgc2VudCA9IGRhdGFsZW47CisgICAgcmMgPSBwal9zb2NrX3NlbmR0byh1ZHAxLCBkYXRhLCAmc2VudCwgMCwgJnVkcF9hZGRyLCBzaXplb2YodWRwX2FkZHIpKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUyB8fCBzZW50ICE9IGRhdGFsZW4pIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IHNlbmR0bygpIGVycm9yIiwgcmMpOworCXN0YXR1cz0tNDA7IGdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8vIFNsZWVwIGEgYml0LiBTZWUgaHR0cDovL3RyYWMucGpzaXAub3JnL3JlcG9zL3RpY2tldC84OTAKKyAgICBwal90aHJlYWRfc2xlZXAoMTApOworCisgICAgLy8gQ2hlY2sgdGhhdCBzb2NrZXQgaXMgbWFya2VkIGFzIHJlYWJsZS4KKyAgICAvLyBOb3RlIHRoYXQgc2VsZWN0KCkgbWF5IGFsc28gcmVwb3J0IHRoYXQgc29ja2V0cyBhcmUgd3JpdGFibGUuCisgICAgc3RhdHVzID0gZG9fc2VsZWN0KHVkcDEsIHVkcDIsIHNldGNvdW50KTsKKyAgICBpZiAoc3RhdHVzIDwgMCkgeworCWNoYXIgZXJyYnVmWzEyOF07CisgICAgICAgIHBqX3N0cmVycm9yKHBqX2dldF9uZXRvc19lcnJvcigpLCBlcnJidWYsIHNpemVvZihlcnJidWYpKTsKKwlQSl9MT0coMSwoVEhJU19GSUxFLCAiLi4uZXJyb3I6ICVzIiwgZXJyYnVmKSk7CisJc3RhdHVzPS01MDsgZ290byBvbl9yZXR1cm47CisgICAgfQorICAgIGlmIChzdGF0dXMgPT0gMCkgeworCXN0YXR1cz0tNjA7IGdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIGlmIChzZXRjb3VudFtSRUFEX0ZEU10gIT0gMSkgeworCXN0YXR1cz0tNzA7IGdvdG8gb25fcmV0dXJuOworICAgIH0KKyAgICBpZiAoc2V0Y291bnRbV1JJVEVfRkRTXSAhPSAwKSB7CisJaWYgKHNldGNvdW50W1dSSVRFX0ZEU10gPT0gMikgeworCSAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uaW5mbzogc3lzdGVtIHJlcG9ydHMgd3JpdGFibGUgc29ja2V0cyIpKTsKKwl9IGVsc2UgeworCSAgICBzdGF0dXM9LTgwOyBnb3RvIG9uX3JldHVybjsKKwl9CisgICAgfSBlbHNlIHsKKwlQSl9MT0coMywoVEhJU19GSUxFLCAKKwkJICAiLi4uaW5mbzogc3lzdGVtIGRvZXNuJ3QgcmVwb3J0IHdyaXRhYmxlIHNvY2tldHMiKSk7CisgICAgfQorICAgIGlmIChzZXRjb3VudFtFWENFUFRfRkRTXSAhPSAwKSB7CisJc3RhdHVzPS05MDsgZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLy8gUmVhZCB0aGUgc29ja2V0IHRvIGNsZWFyIHJlYWRhYmxlIHNvY2tldHMuCisgICAgcmVjZWl2ZWQgPSBzaXplb2YoYnVmKTsKKyAgICByYyA9IHBqX3NvY2tfcmVjdih1ZHAyLCBidWYsICZyZWNlaXZlZCwgMCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MgfHwgcmVjZWl2ZWQgIT0gNSkgeworCXN0YXR1cz0tMTAwOyBnb3RvIG9uX3JldHVybjsKKyAgICB9CisgICAgCisgICAgc3RhdHVzID0gMDsKKworICAgIC8vIFRlc3QgdGltZW91dCBvbiB0aGUgcmVhZCBwYXJ0LgorICAgIC8vIFRoaXMgd29uJ3QgbmVjZXNzYXJpbHkgcmV0dXJuIHplcm8sIGFzIHNlbGVjdCgpIG1heSByZXBvcnQgdGhhdAorICAgIC8vIHNvY2tldHMgYXJlIHdyaXRhYmxlLgorICAgIHNldGNvdW50WzBdID0gc2V0Y291bnRbMV0gPSBzZXRjb3VudFsyXSA9IDA7CisgICAgc3RhdHVzID0gZG9fc2VsZWN0KHVkcDEsIHVkcDIsIHNldGNvdW50KTsKKyAgICBpZiAoc3RhdHVzICE9IDAgJiYgc3RhdHVzICE9IHNldGNvdW50W1dSSVRFX0ZEU10pIHsKKwlQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uZXJyb3I6IGV4cGVjdGluZyB0aW1lb3V0IGJ1dCBnb3QgJWQgc2tzIHNldCIsCisJCQkgICAgIHN0YXR1cykpOworCVBKX0xPRygzLChUSElTX0ZJTEUsICIgICAgICAgICAgcmRzZXQ6ICVkLCB3cnNldDogJWQsIGV4c2V0OiAlZCIsCisJCQkgICAgIHNldGNvdW50WzBdLCBzZXRjb3VudFsxXSwgc2V0Y291bnRbMl0pKTsKKwlzdGF0dXMgPSAtMTEwOyBnb3RvIG9uX3JldHVybjsKKyAgICB9CisgICAgaWYgKHNldGNvdW50W1JFQURfRkRTXSAhPSAwKSB7CisJUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLmVycm9yOiByZWFkYWJsZSBzb2NrZXQgbm90IGV4cGVjdGVkIikpOworCXN0YXR1cyA9IC0xMjA7IGdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIHN0YXR1cyA9IDA7CisKK29uX3JldHVybjoKKyAgICBpZiAodWRwMSAhPSBQSl9JTlZBTElEX1NPQ0tFVCkKKwlwal9zb2NrX2Nsb3NlKHVkcDEpOworICAgIGlmICh1ZHAyICE9IFBKX0lOVkFMSURfU09DS0VUKQorCXBqX3NvY2tfY2xvc2UodWRwMik7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworI2Vsc2UKKy8qIFRvIHByZXZlbnQgd2FybmluZyBhYm91dCAidHJhbnNsYXRpb24gdW5pdCBpcyBlbXB0eSIKKyAqIHdoZW4gdGhpcyB0ZXN0IGlzIGRpc2FibGVkLiAKKyAqLworaW50IGR1bW15X3NlbGVjdF90ZXN0OworI2VuZGlmCS8qIElOQ0xVREVfU0VMRUNUX1RFU1QgKi8KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9zbGVlcC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3Qvc2xlZXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2JlZjdkCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3Qvc2xlZXAuYwpAQCAtMCwwICsxLDIyNCBAQAorLyogJElkOiBzbGVlcC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSAidGVzdC5oIgorCisvKioKKyAqIFxwYWdlIHBhZ2VfcGpsaWJfc2xlZXBfdGVzdCBUZXN0OiBTbGVlcCwgVGltZSwgYW5kIFRpbWVzdGFtcAorICoKKyAqIFRoaXMgZmlsZSBwcm92aWRlcyBpbXBsZW1lbnRhdGlvbiBvZiBcYiBzbGVlcF90ZXN0KCkuCisgKgorICogXHNlY3Rpb24gc2xlZXBfdGVzdF9zZWMgU2NvcGUgb2YgdGhlIFRlc3QKKyAqCisgKiBUaGlzIHRlc3RzOgorICogIC0gd2hldGhlciBwal90aHJlYWRfc2xlZXAoKSB3b3Jrcy4KKyAqICAtIHdoZXRoZXIgcGpfZ2V0dGltZW9mZGF5KCkgd29ya3MuCisgKiAgLSB3aGV0aGVyIHBqX2dldF90aW1lc3RhbXAoKSBhbmQgZnJpZW5kcyB3b3Jrcy4KKyAqCisgKiBBUEkgdGVzdGVkOgorICogIC0gcGpfdGhyZWFkX3NsZWVwKCkKKyAqICAtIHBqX2dldHRpbWVvZmRheSgpCisgKiAgLSBQSl9USU1FX1ZBTF9TVUIoKQorICogIC0gUEpfVElNRV9WQUxfTFRFKCkKKyAqICAtIHBqX2dldF90aW1lc3RhbXAoKQorICogIC0gcGpfZ2V0X3RpbWVzdGFtcF9mcmVxKCkgKGltcGxpY2l0bHkpCisgKiAgLSBwal9lbGFwc2VkX3RpbWUoKQorICogIC0gcGpfZWxhcHNlZF91c2VjKCkKKyAqCisgKgorICogVGhpcyBmaWxlIGlzIDxiPnBqbGliLXRlc3Qvc2xlZXAuYzwvYj4KKyAqCisgKiBcaW5jbHVkZSBwamxpYi10ZXN0L3NsZWVwLmMKKyAqLworCisjaWYgSU5DTFVERV9TTEVFUF9URVNUCisKKyNpbmNsdWRlIDxwamxpYi5oPgorCisjZGVmaW5lIFRISVNfRklMRSAgICJzbGVlcF90ZXN0IgorCitzdGF0aWMgaW50IHNpbXBsZV9zbGVlcF90ZXN0KHZvaWQpCit7CisgICAgZW51bSB7IENPVU5UID0gMTAgfTsKKyAgICBpbnQgaTsKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICAKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi53aWxsIHdyaXRlIG1lc3NhZ2VzIGV2ZXJ5IDEgc2Vjb25kOiIpKTsKKyAgICAKKyAgICBmb3IgKGk9MDsgaTxDT1VOVDsgKytpKSB7CisJcGpfdGltZV92YWwgdHY7CisJcGpfcGFyc2VkX3RpbWUgcHQ7CisKKwlyYyA9IHBqX3RocmVhZF9zbGVlcCgxMDAwKTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfdGhyZWFkX3NsZWVwKCkiLCByYyk7CisJICAgIHJldHVybiAtMTA7CisJfQorCisJcmMgPSBwal9nZXR0aW1lb2ZkYXkoJnR2KTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfZ2V0dGltZW9mZGF5KCkiLCByYyk7CisJICAgIHJldHVybiAtMTE7CisJfQorCisJcGpfdGltZV9kZWNvZGUoJnR2LCAmcHQpOworCisJUEpfTE9HKDMsKFRISVNfRklMRSwgCisJCSAgIi4uLiUwNGQtJTAyZC0lMDJkICUwMmQ6JTAyZDolMDJkLiUwM2QiLAorCQkgIHB0LnllYXIsIHB0Lm1vbiwgcHQuZGF5LAorCQkgIHB0LmhvdXIsIHB0Lm1pbiwgcHQuc2VjLCBwdC5tc2VjKSk7CisKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzbGVlcF9kdXJhdGlvbl90ZXN0KHZvaWQpCit7CisgICAgZW51bSB7IE1JUyA9IDIwfTsKKyAgICB1bnNpZ25lZCBkdXJhdGlvbltdID0geyAyMDAwLCAxMDAwLCA1MDAsIDIwMCwgMTAwIH07CisgICAgdW5zaWduZWQgaTsKKyAgICBwal9zdGF0dXNfdCByYzsKKworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLnJ1bm5pbmcgc2xlZXAgZHVyYXRpb24gdGVzdCIpKTsKKworICAgIC8qIFRlc3QgcGpfdGhyZWFkX3NsZWVwKCkgYW5kIHBqX2dldHRpbWVvZmRheSgpICovCisgICAgZm9yIChpPTA7IGk8UEpfQVJSQVlfU0laRShkdXJhdGlvbik7ICsraSkgeworICAgICAgICBwal90aW1lX3ZhbCBzdGFydCwgc3RvcDsKKwlwal91aW50MzJfdCBtc2VjOworCisgICAgICAgIC8qIE1hcmsgc3RhcnQgb2YgdGVzdC4gKi8KKyAgICAgICAgcmMgPSBwal9nZXR0aW1lb2ZkYXkoJnN0YXJ0KTsKKyAgICAgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yOiBwal9nZXR0aW1lb2ZkYXkoKSIsIHJjKTsKKyAgICAgICAgICAgIHJldHVybiAtMTA7CisgICAgICAgIH0KKworICAgICAgICAvKiBTbGVlcCAqLworICAgICAgICByYyA9IHBqX3RocmVhZF9zbGVlcChkdXJhdGlvbltpXSk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcGpfdGhyZWFkX3NsZWVwKCkiLCByYyk7CisgICAgICAgICAgICByZXR1cm4gLTIwOworICAgICAgICB9CisKKyAgICAgICAgLyogTWFyayBlbmQgb2YgdGVzdC4gKi8KKyAgICAgICAgcmMgPSBwal9nZXR0aW1lb2ZkYXkoJnN0b3ApOworCisgICAgICAgIC8qIENhbGN1bGF0ZSBkdXJhdGlvbiAoc3RvcmUgaW4gc3RvcCkuICovCisgICAgICAgIFBKX1RJTUVfVkFMX1NVQihzdG9wLCBzdGFydCk7CisKKwkvKiBDb252ZXJ0IHRvIG1zZWMuICovCisJbXNlYyA9IFBKX1RJTUVfVkFMX01TRUMoc3RvcCk7CisKKwkvKiBDaGVjayBpZiBpdCdzIHdpdGhpbiByYW5nZS4gKi8KKwlpZiAobXNlYyA8IGR1cmF0aW9uW2ldICogKDEwMC1NSVMpLzEwMCB8fAorCSAgICBtc2VjID4gZHVyYXRpb25baV0gKiAoMTAwK01JUykvMTAwKQorCXsKKwkgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgCisJCSAgICAgICIuLi5lcnJvcjogc2xlcHQgZm9yICVkIG1zIGluc3RlYWQgb2YgJWQgbXMgIgorCQkgICAgICAiKG91dHNpZGUgJWQlJSBlcnIgd2luZG93KSIsCisJCSAgICAgIG1zZWMsIGR1cmF0aW9uW2ldLCBNSVMpKTsKKwkgICAgcmV0dXJuIC0zMDsKKwl9CisgICAgfQorCisKKyAgICAvKiBUZXN0IHBqX3RocmVhZF9zbGVlcCgpIGFuZCBwal9nZXRfdGltZXN0YW1wKCkgYW5kIGZyaWVuZHMgKi8KKyAgICBmb3IgKGk9MDsgaTxQSl9BUlJBWV9TSVpFKGR1cmF0aW9uKTsgKytpKSB7CisJcGpfdGltZV92YWwgdDEsIHQyOworICAgICAgICBwal90aW1lc3RhbXAgc3RhcnQsIHN0b3A7CisJcGpfdWludDMyX3QgbXNlYzsKKworCXBqX3RocmVhZF9zbGVlcCgwKTsKKworICAgICAgICAvKiBNYXJrIHN0YXJ0IG9mIHRlc3QuICovCisgICAgICAgIHJjID0gcGpfZ2V0X3RpbWVzdGFtcCgmc3RhcnQpOworICAgICAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IHBqX2dldF90aW1lc3RhbXAoKSIsIHJjKTsKKyAgICAgICAgICAgIHJldHVybiAtNjA7CisgICAgICAgIH0KKworCS8qIC4uYWxzbyB3aXRoIGdldHRpbWVvZmRheSgpICovCisJcGpfZ2V0dGltZW9mZGF5KCZ0MSk7CisKKyAgICAgICAgLyogU2xlZXAgKi8KKyAgICAgICAgcmMgPSBwal90aHJlYWRfc2xlZXAoZHVyYXRpb25baV0pOworICAgICAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IHBqX3RocmVhZF9zbGVlcCgpIiwgcmMpOworICAgICAgICAgICAgcmV0dXJuIC03MDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIE1hcmsgZW5kIG9mIHRlc3QuICovCisgICAgICAgIHBqX2dldF90aW1lc3RhbXAoJnN0b3ApOworCisJLyogLi5hbHNvIHdpdGggZ2V0dGltZW9mZGF5KCkgKi8KKwlwal9nZXR0aW1lb2ZkYXkoJnQyKTsKKworCS8qIENvbXBhcmUgdDEgYW5kIHQyLiAqLworCWlmIChQSl9USU1FX1ZBTF9MVCh0MiwgdDEpKSB7CisJICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi5lcnJvcjogdDIgaXMgbGVzcyB0aGFuIHQxISEiKSk7CisJICAgIHJldHVybiAtNzU7CisJfQorCisgICAgICAgIC8qIEdldCBlbGFwc2VkIHRpbWUgaW4gbXNlYyAqLworICAgICAgICBtc2VjID0gcGpfZWxhcHNlZF9tc2VjKCZzdGFydCwgJnN0b3ApOworCisJLyogQ2hlY2sgaWYgaXQncyB3aXRoaW4gcmFuZ2UuICovCisJaWYgKG1zZWMgPCBkdXJhdGlvbltpXSAqICgxMDAtTUlTKS8xMDAgfHwKKwkgICAgbXNlYyA+IGR1cmF0aW9uW2ldICogKDEwMCtNSVMpLzEwMCkKKwl7CisJICAgIFBKX0xPRygzLChUSElTX0ZJTEUsIAorCQkgICAgICAiLi4uZXJyb3I6IHNsZXB0IGZvciAlZCBtcyBpbnN0ZWFkIG9mICVkIG1zICIKKwkJICAgICAgIihvdXRzaWRlICVkJSUgZXJyIHdpbmRvdykiLAorCQkgICAgICBtc2VjLCBkdXJhdGlvbltpXSwgTUlTKSk7CisJICAgIFBKX1RJTUVfVkFMX1NVQih0MiwgdDEpOworCSAgICBQSl9MT0coMywoVEhJU19GSUxFLCAKKwkJICAgICAgIi4uLmluZm86IGdldHRpbWVvZmRheSgpIHJlcG9ydGVkIGR1cmF0aW9uIGlzICIKKwkJICAgICAgIiVkIG1zZWMiLAorCQkgICAgICBQSl9USU1FX1ZBTF9NU0VDKHQyKSkpOworCisJICAgIHJldHVybiAtNzY7CisJfQorICAgIH0KKworICAgIC8qIEFsbCBkb25lLiAqLworICAgIHJldHVybiAwOworfQorCitpbnQgc2xlZXBfdGVzdCgpCit7CisgICAgaW50IHJjOworCisgICAgcmMgPSBzaW1wbGVfc2xlZXBfdGVzdCgpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiByYzsKKworICAgIHJjID0gc2xlZXBfZHVyYXRpb25fdGVzdCgpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorCXJldHVybiByYzsKKworICAgIHJldHVybiAwOworfQorCisjZWxzZQorLyogVG8gcHJldmVudCB3YXJuaW5nIGFib3V0ICJ0cmFuc2xhdGlvbiB1bml0IGlzIGVtcHR5IgorICogd2hlbiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQuIAorICovCitpbnQgZHVtbXlfc2xlZXBfdGVzdDsKKyNlbmRpZiAgLyogSU5DTFVERV9TTEVFUF9URVNUICovCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9zb2NrLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9zb2NrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMwZmI5NwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3NvY2suYwpAQCAtMCwwICsxLDg3NyBAQAorLyogJElkOiBzb2NrLmMgMzg0MSAyMDExLTEwLTI0IDA5OjI4OjEzWiBtaW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGpsaWIuaD4KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKworLyoqCisgKiBccGFnZSBwYWdlX3BqbGliX3NvY2tfdGVzdCBUZXN0OiBTb2NrZXQKKyAqCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgaW1wbGVtZW50YXRpb24gb2YgXGIgc29ja190ZXN0KCkuIEl0IHRlc3RzIHRoZQorICogdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBzb2NrZXQgQVBJLgorICoKKyAqIFxzZWN0aW9uIHNvY2tfdGVzdF9zY29wZV9zZWMgU2NvcGUgb2YgdGhlIFRlc3QKKyAqCisgKiBUaGUgc2NvcGUgb2YgdGhlIHRlc3Q6CisgKiAgLSB2ZXJpZnkgdGhlIHZhbGlkaXR5IG9mIHRoZSBhZGRyZXNzIHN0cnVjdHMuCisgKiAgLSB2ZXJpZnkgdGhhdCBhZGRyZXNzIG1hbmlwdWxhdGlvbiBBUEkgd29ya3MuCisgKiAgLSBzaW1wbGUgc29ja2V0IGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbi4KKyAqICAtIHNpbXBsZSBzb2NrZXQgc2VuZC9yZWN2IGFuZCBzZW5kdG8vcmVjdmZyb20uCisgKiAgLSBVRFAgY29ubmVjdCgpCisgKiAgLSBzZW5kL3JlY3YgYmlnIGRhdGEuCisgKiAgLSBhbGwgZm9yIGJvdGggVURQIGFuZCBUQ1AuCisgKgorICogVGhlIEFQSXMgdGVzdGVkIGluIHRoaXMgdGVzdDoKKyAqICAtIHBqX2luZXRfYXRvbigpCisgKiAgLSBwal9pbmV0X250b2EoKQorICogIC0gcGpfaW5ldF9wdG9uKCkgIChvbmx5IGlmIElQdjYgaXMgZW5hYmxlZCkKKyAqICAtIHBqX2luZXRfbnRvcCgpICAob25seSBpZiBJUHY2IGlzIGVuYWJsZWQpCisgKiAgLSBwal9nZXRob3N0bmFtZSgpCisgKiAgLSBwal9zb2NrX3NvY2tldCgpCisgKiAgLSBwal9zb2NrX2Nsb3NlKCkKKyAqICAtIHBqX3NvY2tfc2VuZCgpCisgKiAgLSBwal9zb2NrX3NlbmR0bygpCisgKiAgLSBwal9zb2NrX3JlY3YoKQorICogIC0gcGpfc29ja19yZWN2ZnJvbSgpCisgKiAgLSBwal9zb2NrX2JpbmQoKQorICogIC0gcGpfc29ja19jb25uZWN0KCkKKyAqICAtIHBqX3NvY2tfbGlzdGVuKCkKKyAqICAtIHBqX3NvY2tfYWNjZXB0KCkKKyAqICAtIHBqX2dldGhvc3RieW5hbWUoKQorICoKKyAqCisgKiBUaGlzIGZpbGUgaXMgPGI+cGpsaWItdGVzdC9zb2NrLmM8L2I+CisgKgorICogXGluY2x1ZGUgcGpsaWItdGVzdC9zb2NrLmMKKyAqLworCisjaWYgSU5DTFVERV9TT0NLX1RFU1QKKworI2RlZmluZSBVRFBfUE9SVAk1MTIzNAorI2RlZmluZSBUQ1BfUE9SVCAgICAgICAgKFVEUF9QT1JUKzEwKQorI2RlZmluZSBCSUdfREFUQV9MRU4JODE5MgorI2RlZmluZSBBRERSRVNTCQkiMTI3LjAuMC4xIgorCitzdGF0aWMgY2hhciBiaWdkYXRhW0JJR19EQVRBX0xFTl07CitzdGF0aWMgY2hhciBiaWdidWZmZXJbQklHX0RBVEFfTEVOXTsKKworLyogTWFjcm8gZm9yIGNoZWNraW5nIHRoZSB2YWx1ZSBvZiAic2luX2xlbiIgbWVtYmVyIG9mIHNvY2thZGRyCisgKiAoaXQgbXVzdCBhbHdheXMgYmUgemVybykuCisgKi8KKyNpZiBkZWZpbmVkKFBKX1NPQ0tBRERSX0hBU19MRU4pICYmIFBKX1NPQ0tBRERSX0hBU19MRU4hPTAKKyMgICBkZWZpbmUgQ0hFQ0tfU0FfWkVST19MRU4oYWRkciwgcmV0KSBcCisJaWYgKCgocGpfYWRkcl9oZHIqKShhZGRyKSktPnNhX3plcm9fbGVuICE9IDApIFwKKwkgICAgcmV0dXJuIHJldAorI2Vsc2UKKyMgICBkZWZpbmUgQ0hFQ0tfU0FfWkVST19MRU4oYWRkciwgcmV0KQorI2VuZGlmCisKKworc3RhdGljIGludCBmb3JtYXRfdGVzdCh2b2lkKQoreworICAgIHBqX3N0cl90IHMgPSBwal9zdHIoQUREUkVTUyk7CisgICAgdW5zaWduZWQgY2hhciAqcDsKKyAgICBwal9pbl9hZGRyIGFkZHI7CisgICAgY2hhciB6ZXJvWzY0XTsKKyAgICBwal9zb2NrYWRkcl9pbiBhZGRyMjsKKyAgICBjb25zdCBwal9zdHJfdCAqaG9zdG5hbWU7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciBBW10gPSB7MTI3LCAwLCAwLCAxfTsKKworICAgIFBKX0xPRygzLCgidGVzdCIsICIuLi5mb3JtYXRfdGVzdCgpIikpOworICAgIAorICAgIC8qIHBqX2luZXRfYXRvbigpICovCisgICAgaWYgKHBqX2luZXRfYXRvbigmcywgJmFkZHIpICE9IDEpCisJcmV0dXJuIC0xMDsKKyAgICAKKyAgICAvKiBDaGVjayB0aGUgcmVzdWx0LiAqLworICAgIHAgPSAodW5zaWduZWQgY2hhciopJmFkZHI7CisgICAgaWYgKHBbMF0hPUFbMF0gfHwgcFsxXSE9QVsxXSB8fCBwWzJdIT1BWzJdIHx8IHBbM10hPUFbM10pIHsKKwlQSl9MT0coMywoInRlc3QiLCAiICBlcnJvcjogbWlzbWF0Y2hlZCBhZGRyZXNzLiBwMD0lZCwgcDE9JWQsICIKKwkJCSAgInAyPSVkLCBwMz0lZCIsIHBbMF0gJiAweEZGLCBwWzFdICYgMHhGRiwgCisJCQkgICBwWzJdICYgMHhGRiwgcFszXSAmIDB4RkYpKTsKKwlyZXR1cm4gLTE1OworICAgIH0KKworICAgIC8qIHBqX2luZXRfbnRvYSgpICovCisgICAgcCA9ICh1bnNpZ25lZCBjaGFyKikgcGpfaW5ldF9udG9hKGFkZHIpOworICAgIGlmICghcCkKKwlyZXR1cm4gLTIwOworCisgICAgaWYgKHBqX3N0cmNtcDIoJnMsIChjaGFyKilwKSAhPSAwKQorCXJldHVybiAtMjI7CisKKyNpZiBkZWZpbmVkKFBKX0hBU19JUFY2KSAmJiBQSl9IQVNfSVBWNiE9MAorICAgIC8qIHBqX2luZXRfcHRvbigpICovCisgICAgLyogcGpfaW5ldF9udG9wKCkgKi8KKyAgICB7CisJY29uc3QgcGpfc3RyX3Qgc19pcHY0ID0gcGpfc3RyKCIxMjcuMC4wLjEiKTsKKwljb25zdCBwal9zdHJfdCBzX2lwdjYgPSBwal9zdHIoImZlODA6OjJmZjo4M2ZmOmZlN2M6OGI0MiIpOworCWNoYXIgYnVmX2lwdjRbUEpfSU5FVF9BRERSU1RSTEVOXTsKKwljaGFyIGJ1Zl9pcHY2W1BKX0lORVQ2X0FERFJTVFJMRU5dOworCXBqX2luX2FkZHIgaXB2NDsKKwlwal9pbjZfYWRkciBpcHY2OworCisJaWYgKHBqX2luZXRfcHRvbihwal9BRl9JTkVUKCksICZzX2lwdjQsICZpcHY0KSAhPSBQSl9TVUNDRVNTKQorCSAgICByZXR1cm4gLTI0OworCisJcCA9ICh1bnNpZ25lZCBjaGFyKikmaXB2NDsKKwlpZiAocFswXSE9QVswXSB8fCBwWzFdIT1BWzFdIHx8IHBbMl0hPUFbMl0gfHwgcFszXSE9QVszXSkgeworCSAgICByZXR1cm4gLTI1OworCX0KKworCWlmIChwal9pbmV0X3B0b24ocGpfQUZfSU5FVDYoKSwgJnNfaXB2NiwgJmlwdjYpICE9IFBKX1NVQ0NFU1MpCisJICAgIHJldHVybiAtMjY7CisKKwlwID0gKHVuc2lnbmVkIGNoYXIqKSZpcHY2OworCWlmIChwWzBdICE9IDB4ZmUgfHwgcFsxXSAhPSAweDgwIHx8IHBbMl0gIT0gMCB8fCBwWzNdICE9IDAgfHwKKwkgICAgcFs0XSAhPSAwIHx8IHBbNV0gIT0gMCB8fCBwWzZdICE9IDAgfHwgcFs3XSAhPSAwIHx8CisJICAgIHBbOF0gIT0gMHgwMiB8fCBwWzldICE9IDB4ZmYgfHwgcFsxMF0gIT0gMHg4MyB8fCBwWzExXSAhPSAweGZmIHx8CisJICAgIHBbMTJdIT0weGZlIHx8IHBbMTNdIT0weDdjIHx8IHBbMTRdICE9IDB4OGIgfHwgcFsxNV0hPTB4NDIpCisJeworCSAgICByZXR1cm4gLTI3OworCX0KKworCWlmIChwal9pbmV0X250b3AocGpfQUZfSU5FVCgpLCAmaXB2NCwgYnVmX2lwdjQsIHNpemVvZihidWZfaXB2NCkpICE9IFBKX1NVQ0NFU1MpCisJICAgIHJldHVybiAtMjg7CisJaWYgKHBqX3N0cmljbXAyKCZzX2lwdjQsIGJ1Zl9pcHY0KSAhPSAwKQorCSAgICByZXR1cm4gLTI5OworCisJaWYgKHBqX2luZXRfbnRvcChwal9BRl9JTkVUNigpLCAmaXB2NiwgYnVmX2lwdjYsIHNpemVvZihidWZfaXB2NikpICE9IFBKX1NVQ0NFU1MpCisJICAgIHJldHVybiAtMzA7CisJaWYgKHBqX3N0cmljbXAyKCZzX2lwdjYsIGJ1Zl9pcHY2KSAhPSAwKQorCSAgICByZXR1cm4gLTMxOworICAgIH0KKworI2VuZGlmCS8qIFBKX0hBU19JUFY2ICovCisKKyAgICAvKiBUZXN0IHRoYXQgcGpfc29ja2FkZHJfaW5faW5pdCgpIGluaXRpYWxpemUgdGhlIHdob2xlIHN0cnVjdHVyZSwgCisgICAgICogaW5jbHVkaW5nIHNpbl96ZXJvLgorICAgICAqLworICAgIHBqX3NvY2thZGRyX2luX2luaXQoJmFkZHIyLCAwLCAxMDAwKTsKKyAgICBwal9iemVybyh6ZXJvLCBzaXplb2YoemVybykpOworICAgIGlmIChwal9tZW1jbXAoYWRkcjIuc2luX3plcm8sIHplcm8sIHNpemVvZihhZGRyMi5zaW5femVybykpICE9IDApCisJcmV0dXJuIC0zNTsKKworICAgIC8qIHBqX2dldGhvc3RuYW1lKCkgKi8KKyAgICBob3N0bmFtZSA9IHBqX2dldGhvc3RuYW1lKCk7CisgICAgaWYgKCFob3N0bmFtZSB8fCAhaG9zdG5hbWUtPnB0ciB8fCAhaG9zdG5hbWUtPnNsZW4pCisJcmV0dXJuIC00MDsKKworICAgIFBKX0xPRygzLCgidGVzdCIsICIuLi4uaG9zdG5hbWUgaXMgJS4qcyIsIAorCSAgICAgIChpbnQpaG9zdG5hbWUtPnNsZW4sIGhvc3RuYW1lLT5wdHIpKTsKKworICAgIC8qIHBqX2dldGhvc3RhZGRyKCkgKi8KKworICAgIC8qIFZhcmlvdXMgY29uc3RhbnRzICovCisjaWYgIWRlZmluZWQoUEpfU1lNQklBTikgfHwgUEpfU1lNQklBTj09MAorICAgIGlmIChQSl9BRl9JTkVUPT0weEZGRkYpIHJldHVybiAtNTUwMDsKKyAgICBpZiAoUEpfQUZfSU5FVDY9PTB4RkZGRikgcmV0dXJuIC01NTAxOworICAgIAorICAgIC8qIDB4RkZGRiBjb3VsZCBiZSBhIHZhbGlkIFNPTF9TT0NLRVQgKGUuZzogb24gc29tZSBXaW4gb3IgTWFjKSAqLworICAgIC8vaWYgKFBKX1NPTF9TT0NLRVQ9PTB4RkZGRikgcmV0dXJuIC01NTAzOworICAgIAorICAgIGlmIChQSl9TT0xfSVA9PTB4RkZGRikgcmV0dXJuIC01NTAyOworICAgIGlmIChQSl9TT0xfVENQPT0weEZGRkYpIHJldHVybiAtNTUxMDsKKyAgICBpZiAoUEpfU09MX1VEUD09MHhGRkZGKSByZXR1cm4gLTU1MjA7CisgICAgaWYgKFBKX1NPTF9JUFY2PT0weEZGRkYpIHJldHVybiAtNTUzMDsKKworICAgIGlmIChQSl9TT19UWVBFPT0weEZGRkYpIHJldHVybiAtNTU0MDsKKyAgICBpZiAoUEpfU09fUkNWQlVGPT0weEZGRkYpIHJldHVybiAtNTU1MDsKKyAgICBpZiAoUEpfU09fU05EQlVGPT0weEZGRkYpIHJldHVybiAtNTU2MDsKKyAgICBpZiAoUEpfVENQX05PREVMQVk9PTB4RkZGRikgcmV0dXJuIC01NTcwOworICAgIGlmIChQSl9TT19SRVVTRUFERFI9PTB4RkZGRikgcmV0dXJuIC01NTgwOworCisgICAgaWYgKFBKX01TR19PT0I9PTB4RkZGRikgcmV0dXJuIC01NTkwOworICAgIGlmIChQSl9NU0dfUEVFSz09MHhGRkZGKSByZXR1cm4gLTU2MDA7CisjZW5kaWYKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHBhcnNlX3Rlc3Qodm9pZCkKK3sKKyNkZWZpbmUgSVB2NAkxCisjZGVmaW5lIElQdjYJMgorCisgICAgc3RydWN0IHRlc3RfdCB7CisJY29uc3QgY2hhciAgKmlucHV0OworCWludAkgICAgIHJlc3VsdF9hZjsKKwljb25zdCBjaGFyICAqcmVzdWx0X2lwOworCXBqX3VpbnQxNl90ICByZXN1bHRfcG9ydDsKKyAgICB9OworICAgIHN0cnVjdCB0ZXN0X3QgdmFsaWRfdGVzdHNbXSA9IAorICAgIHsKKwkvKiBJUHY0ICovCisJeyAiMTAuMC4wLjE6ODAiLCBJUHY0LCAiMTAuMC4wLjEiLCA4MH0sCisJeyAiMTAuMC4wLjEiLCBJUHY0LCAiMTAuMC4wLjEiLCAwfSwKKwl7ICIxMC4wLjAuMToiLCBJUHY0LCAiMTAuMC4wLjEiLCAwfSwKKwl7ICIxMC4wLjAuMTowIiwgSVB2NCwgIjEwLjAuMC4xIiwgMH0sCisJeyAiOjgwIiwgSVB2NCwgIjAuMC4wLjAiLCA4MH0sCisJeyAiOiIsIElQdjQsICIwLjAuMC4wIiwgMH0sCisjaWYgIVBKX1NZTUJJQU4KKwl7ICJsb2NhbGhvc3QiLCBJUHY0LCAiMTI3LjAuMC4xIiwgMH0sCisJeyAibG9jYWxob3N0OiIsIElQdjQsICIxMjcuMC4wLjEiLCAwfSwKKwl7ICJsb2NhbGhvc3Q6ODAiLCBJUHY0LCAiMTI3LjAuMC4xIiwgODB9LAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBKX0hBU19JUFY2KSAmJiBQSl9IQVNfSVBWNgorCXsgImZlOjowMTo4MCIsIElQdjYsICJmZTo6MDE6ODAiLCAwfSwKKwl7ICJbZmU6OjAxXTo4MCIsIElQdjYsICJmZTo6MDEiLCA4MH0sCisJeyAiZmU6OjAxIiwgSVB2NiwgImZlOjowMSIsIDB9LAorCXsgIltmZTo6MDFdIiwgSVB2NiwgImZlOjowMSIsIDB9LAorCXsgImZlOjowMToiLCBJUHY2LCAiZmU6OjAxIiwgMH0sCisJeyAiW2ZlOjowMV06IiwgSVB2NiwgImZlOjowMSIsIDB9LAorCXsgIjo6IiwgSVB2NiwgIjo6MCIsIDB9LAorCXsgIls6Ol0iLCBJUHY2LCAiOjoiLCAwfSwKKwl7ICI6OjoiLCBJUHY2LCAiOjoiLCAwfSwKKwl7ICJbOjpdOiIsIElQdjYsICI6OiIsIDB9LAorCXsgIjo6OjgwIiwgSVB2NiwgIjo6IiwgODB9LAorCXsgIls6Ol06ODAiLCBJUHY2LCAiOjoiLCA4MH0sCisjZW5kaWYKKyAgICB9OworICAgIHN0cnVjdCB0ZXN0X3QgaW52YWxpZF90ZXN0c1tdID0gCisgICAgeworCS8qIElQdjQgKi8KKwl7ICIxMC4wLjAuMTphYmNkIiwgSVB2NH0sICAgLyogcG9ydCBub3QgbnVtZXJpYyAqLworCXsgIjEwLjAuMC4xOi0xIiwgSVB2NH0sCSAgICAvKiBwb3J0IGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVyICovCisJeyAiMTAuMC4wLjE6MTIzNDU2IiwgSVB2NH0sIC8qIHBvcnQgdG9vIGJpZwkqLworCXsgIjEuMi4zLjQuNTo4MCIsIElQdjR9LCAgICAvKiBpbnZhbGlkIElQICovCisJeyAiMTA6MDo4MCIsIElQdjR9LAkgICAgLyogaG9zdG5hbWUgaGFzIGNvbG9uICovCisKKyNpZiBkZWZpbmVkKFBKX0hBU19JUFY2KSAmJiBQSl9IQVNfSVBWNgorCXsgIltmZTo6MDFdOmFiY2QiLCBJUHY2fSwgICAvKiBwb3J0IG5vdCBudW1lcmljICovCisJeyAiW2ZlOjowMV06LTEiLCBJUHY2fSwJICAgIC8qIHBvcnQgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXIgKi8KKwl7ICJbZmU6OjAxXToxMjM0NTYiLCBJUHY2fSwgLyogcG9ydCB0b28gYmlnCSovCisJeyAiZmU6OjAxOjAyOjowMzowNDo4MCIsIElQdjZ9LAkgICAgLyogaW52YWxpZCBJUCAqLworCXsgIltmZTo6MDE6MDI6OjAzOjA0XTo4MCIsIElQdjZ9LCAgIC8qIGludmFsaWQgSVAgKi8KKwl7ICJbZmU6MDEiLCBJUHY2fSwJICAgIC8qIFVudGVybWluYXRlZCBicmFja2V0ICovCisjZW5kaWYKKyAgICB9OworCisgICAgdW5zaWduZWQgaTsKKworICAgIFBKX0xPRygzLCgidGVzdCIsICIuLi5JUCBhZGRyZXNzIHBhcnNpbmciKSk7CisKKyAgICBmb3IgKGk9MDsgaTxQSl9BUlJBWV9TSVpFKHZhbGlkX3Rlc3RzKTsgKytpKSB7CisJcGpfc3RhdHVzX3Qgc3RhdHVzOworCXBqX3N0cl90IGlucHV0OworCXBqX3NvY2thZGRyIGFkZHIsIHJlc3VsdDsKKworCXN3aXRjaCAodmFsaWRfdGVzdHNbaV0ucmVzdWx0X2FmKSB7CisJY2FzZSBJUHY0OgorCSAgICB2YWxpZF90ZXN0c1tpXS5yZXN1bHRfYWYgPSBQSl9BRl9JTkVUOworCSAgICBicmVhazsKKwljYXNlIElQdjY6CisJICAgIHZhbGlkX3Rlc3RzW2ldLnJlc3VsdF9hZiA9IFBKX0FGX0lORVQ2OworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICBwal9hc3NlcnQoISJJbnZhbGlkIEFGISIpOworCSAgICBjb250aW51ZTsKKwl9CisKKwkvKiBUcnkgcGFyc2luZyB3aXRoIFBKX0FGX1VOU1BFQyAqLworCXN0YXR1cyA9IHBqX3NvY2thZGRyX3BhcnNlKFBKX0FGX1VOU1BFQywgMCwgCisJCQkJICAgcGpfY3N0cigmaW5wdXQsIHZhbGlkX3Rlc3RzW2ldLmlucHV0KSwgCisJCQkJICAgJmFkZHIpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBQSl9MT0coMSwoInRlc3QiLCAiLi4uLiBmYWlsZWQgd2hlbiBwYXJzaW5nICVzIChpPSVkKSIsIAorCQkgICAgICB2YWxpZF90ZXN0c1tpXS5pbnB1dCwgaSkpOworCSAgICByZXR1cm4gLTEwOworCX0KKworCS8qIENoZWNrICJzaW5fbGVuIiBtZW1iZXIgb2YgcGFyc2UgcmVzdWx0ICovCisJQ0hFQ0tfU0FfWkVST19MRU4oJmFkZHIsIC0yMCk7CisKKwkvKiBCdWlsZCB0aGUgY29ycmVjdCByZXN1bHQgKi8KKwlzdGF0dXMgPSBwal9zb2NrYWRkcl9pbml0KHZhbGlkX3Rlc3RzW2ldLnJlc3VsdF9hZiwKKwkJCQkgICZyZXN1bHQsCisJCQkJICBwal9jc3RyKCZpbnB1dCwgdmFsaWRfdGVzdHNbaV0ucmVzdWx0X2lwKSwgCisJCQkJICB2YWxpZF90ZXN0c1tpXS5yZXN1bHRfcG9ydCk7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIFBKX0xPRygxLCgidGVzdCIsICIuLi4uIGVycm9yIGJ1aWxkaW5nIElQIGFkZHJlc3MgJXMiLCAKKwkJICAgICAgdmFsaWRfdGVzdHNbaV0uaW5wdXQpKTsKKwkgICAgcmV0dXJuIC0zMDsKKwl9CisKKwkvKiBDb21wYXJlIHRoZSByZXN1bHQgKi8KKwlpZiAocGpfc29ja2FkZHJfY21wKCZhZGRyLCAmcmVzdWx0KSAhPSAwKSB7CisJICAgIFBKX0xPRygxLCgidGVzdCIsICIuLi4uIHBhcnNlZCByZXN1bHQgbWlzbWF0Y2hlZCBmb3IgJXMiLCAKKwkJICAgICAgdmFsaWRfdGVzdHNbaV0uaW5wdXQpKTsKKwkgICAgcmV0dXJuIC00MDsKKwl9CisKKwkvKiBQYXJzZSBhZ2FpbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWYgKi8KKwlzdGF0dXMgPSBwal9zb2NrYWRkcl9wYXJzZSh2YWxpZF90ZXN0c1tpXS5yZXN1bHRfYWYsIDAsIAorCQkJCSAgIHBqX2NzdHIoJmlucHV0LCB2YWxpZF90ZXN0c1tpXS5pbnB1dCksIAorCQkJCSAgICZhZGRyKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgUEpfTE9HKDEsKCJ0ZXN0IiwgIi4uLi4gZmFpbGVkIHdoZW4gcGFyc2luZyAlcyIsIAorCQkgICAgICB2YWxpZF90ZXN0c1tpXS5pbnB1dCkpOworCSAgICByZXR1cm4gLTUwOworCX0KKworCS8qIENoZWNrICJzaW5fbGVuIiBtZW1iZXIgb2YgcGFyc2UgcmVzdWx0ICovCisJQ0hFQ0tfU0FfWkVST19MRU4oJmFkZHIsIC01NSk7CisKKwkvKiBDb21wYXJlIHRoZSByZXN1bHQgYWdhaW4gKi8KKwlpZiAocGpfc29ja2FkZHJfY21wKCZhZGRyLCAmcmVzdWx0KSAhPSAwKSB7CisJICAgIFBKX0xPRygxLCgidGVzdCIsICIuLi4uIHBhcnNlZCByZXN1bHQgbWlzbWF0Y2hlZCBmb3IgJXMiLCAKKwkJICAgICAgdmFsaWRfdGVzdHNbaV0uaW5wdXQpKTsKKwkgICAgcmV0dXJuIC02MDsKKwl9CisgICAgfQorCisgICAgZm9yIChpPTA7IGk8UEpfQVJSQVlfU0laRShpbnZhbGlkX3Rlc3RzKTsgKytpKSB7CisJcGpfc3RhdHVzX3Qgc3RhdHVzOworCXBqX3N0cl90IGlucHV0OworCXBqX3NvY2thZGRyIGFkZHI7CisKKwlzd2l0Y2ggKGludmFsaWRfdGVzdHNbaV0ucmVzdWx0X2FmKSB7CisJY2FzZSBJUHY0OgorCSAgICBpbnZhbGlkX3Rlc3RzW2ldLnJlc3VsdF9hZiA9IFBKX0FGX0lORVQ7CisJICAgIGJyZWFrOworCWNhc2UgSVB2NjoKKwkgICAgaW52YWxpZF90ZXN0c1tpXS5yZXN1bHRfYWYgPSBQSl9BRl9JTkVUNjsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgcGpfYXNzZXJ0KCEiSW52YWxpZCBBRiEiKTsKKwkgICAgY29udGludWU7CisJfQorCisJLyogVHJ5IHBhcnNpbmcgd2l0aCBQSl9BRl9VTlNQRUMgKi8KKwlzdGF0dXMgPSBwal9zb2NrYWRkcl9wYXJzZShQSl9BRl9VTlNQRUMsIDAsIAorCQkJCSAgIHBqX2NzdHIoJmlucHV0LCBpbnZhbGlkX3Rlc3RzW2ldLmlucHV0KSwgCisJCQkJICAgJmFkZHIpOworCWlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCSAgICBQSl9MT0coMSwoInRlc3QiLCAiLi4uLiBleHBlY3RpbmcgZmFpbHVyZSB3aGVuIHBhcnNpbmcgJXMiLCAKKwkJICAgICAgaW52YWxpZF90ZXN0c1tpXS5pbnB1dCkpOworCSAgICByZXR1cm4gLTEwMDsKKwl9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHVyaXR5X3Rlc3Qodm9pZCkKK3sKKyAgICBQSl9MT0coMywoInRlc3QiLCAiLi4ucHVyaXR5X3Rlc3QoKSIpKTsKKworI2lmIGRlZmluZWQoUEpfU09DS0FERFJfSEFTX0xFTikgJiYgUEpfU09DS0FERFJfSEFTX0xFTiE9MAorICAgIC8qIENoZWNrIG9uICJzaW5fbGVuIiBtZW1iZXIgb2Ygc29ja2FkZHIgKi8KKyAgICB7CisJY29uc3QgcGpfc3RyX3Qgc3RyX2lwID0geyIxLjEuMS4xIiwgN307CisJcGpfc29ja2FkZHIgYWRkclsxNl07CisJcGpfYWRkcmluZm8gYWlbMTZdOworCXVuc2lnbmVkIGNudDsKKwlwal9zdGF0dXNfdCByYzsKKworCS8qIHBqX2VudW1faXBfaW50ZXJmYWNlKCkgKi8KKwljbnQgPSBQSl9BUlJBWV9TSVpFKGFkZHIpOworCXJjID0gcGpfZW51bV9pcF9pbnRlcmZhY2UocGpfQUZfVU5TUEVDKCksICZjbnQsIGFkZHIpOworCWlmIChyYyA9PSBQSl9TVUNDRVNTKSB7CisJICAgIHdoaWxlIChjbnQtLSkKKwkJQ0hFQ0tfU0FfWkVST19MRU4oJmFkZHJbY250XSwgLTEwKTsKKwl9CisKKwkvKiBwal9nZXRob3N0aXAoKSBvbiBJUHY0ICovCisJcmMgPSBwal9nZXRob3N0aXAocGpfQUZfSU5FVCgpLCAmYWRkclswXSk7CisJaWYgKHJjID09IFBKX1NVQ0NFU1MpCisJICAgIENIRUNLX1NBX1pFUk9fTEVOKCZhZGRyWzBdLCAtMjApOworCisJLyogcGpfZ2V0aG9zdGlwKCkgb24gSVB2NiAqLworCXJjID0gcGpfZ2V0aG9zdGlwKHBqX0FGX0lORVQ2KCksICZhZGRyWzBdKTsKKwlpZiAocmMgPT0gUEpfU1VDQ0VTUykKKwkgICAgQ0hFQ0tfU0FfWkVST19MRU4oJmFkZHJbMF0sIC0zMCk7CisKKwkvKiBwal9nZXRkZWZhdWx0aXBpbnRlcmZhY2UoKSBvbiBJUHY0ICovCisJcmMgPSBwal9nZXRkZWZhdWx0aXBpbnRlcmZhY2UocGpfQUZfSU5FVCgpLCAmYWRkclswXSk7CisJaWYgKHJjID09IFBKX1NVQ0NFU1MpCisJICAgIENIRUNLX1NBX1pFUk9fTEVOKCZhZGRyWzBdLCAtNDApOworCisJLyogcGpfZ2V0ZGVmYXVsdGlwaW50ZXJmYWNlKCkgb24gSVB2NiAqLworCXJjID0gcGpfZ2V0ZGVmYXVsdGlwaW50ZXJmYWNlKHBqX0FGX0lORVQ2KCksICZhZGRyWzBdKTsKKwlpZiAocmMgPT0gUEpfU1VDQ0VTUykKKwkgICAgQ0hFQ0tfU0FfWkVST19MRU4oJmFkZHJbMF0sIC01MCk7CisKKwkvKiBwal9nZXRhZGRyaW5mbygpIG9uIGEgaG9zdCBuYW1lICovCisJY250ID0gUEpfQVJSQVlfU0laRShhaSk7CisJcmMgPSBwal9nZXRhZGRyaW5mbyhwal9BRl9VTlNQRUMoKSwgcGpfZ2V0aG9zdG5hbWUoKSwgJmNudCwgYWkpOworCWlmIChyYyA9PSBQSl9TVUNDRVNTKSB7CisJICAgIHdoaWxlIChjbnQtLSkKKwkJQ0hFQ0tfU0FfWkVST19MRU4oJmFpW2NudF0uYWlfYWRkciwgLTYwKTsKKwl9CisKKwkvKiBwal9nZXRhZGRyaW5mbygpIG9uIGFuIElQIGFkZHJlc3MgKi8KKwljbnQgPSBQSl9BUlJBWV9TSVpFKGFpKTsKKwlyYyA9IHBqX2dldGFkZHJpbmZvKHBqX0FGX1VOU1BFQygpLCAmc3RyX2lwLCAmY250LCBhaSk7CisJaWYgKHJjID09IFBKX1NVQ0NFU1MpIHsKKwkgICAgcGpfYXNzZXJ0KGNudCA9PSAxKTsKKwkgICAgQ0hFQ0tfU0FfWkVST19MRU4oJmFpWzBdLmFpX2FkZHIsIC03MCk7CisJfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2ltcGxlX3NvY2tfdGVzdCh2b2lkKQoreworICAgIGludCB0eXBlc1syXTsKKyAgICBwal9zb2NrX3Qgc29jazsKKyAgICBpbnQgaTsKKyAgICBwal9zdGF0dXNfdCByYyA9IFBKX1NVQ0NFU1M7CisKKyAgICB0eXBlc1swXSA9IHBqX1NPQ0tfU1RSRUFNKCk7CisgICAgdHlwZXNbMV0gPSBwal9TT0NLX0RHUkFNKCk7CisKKyAgICBQSl9MT0coMywoInRlc3QiLCAiLi4uc2ltcGxlX3NvY2tfdGVzdCgpIikpOworCisgICAgZm9yIChpPTA7IGk8KGludCkoc2l6ZW9mKHR5cGVzKS9zaXplb2YodHlwZXNbMF0pKTsgKytpKSB7CisJCisJcmMgPSBwal9zb2NrX3NvY2tldChwal9BRl9JTkVUKCksIHR5cGVzW2ldLCAwLCAmc29jayk7CisJaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IHVuYWJsZSB0byBjcmVhdGUgc29ja2V0IiwgcmMpOworCSAgICBicmVhazsKKwl9IGVsc2UgeworCSAgICByYyA9IHBqX3NvY2tfY2xvc2Uoc29jayk7CisJICAgIGlmIChyYyAhPSAwKSB7CisJCWFwcF9wZXJyb3IoIi4uLmVycm9yOiBjbG9zZSBzb2NrZXQiLCByYyk7CisJCWJyZWFrOworCSAgICB9CisJfQorICAgIH0KKyAgICByZXR1cm4gcmM7Cit9CisKKworc3RhdGljIGludCBzZW5kX3JlY3ZfdGVzdChpbnQgc29ja190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zb2NrX3Qgc3MsIHBqX3NvY2tfdCBjcywKKwkJCSAgcGpfc29ja2FkZHJfaW4gKmRzdGFkZHIsIHBqX3NvY2thZGRyX2luICpzcmNhZGRyLCAKKwkJCSAgaW50IGFkZHJsZW4pCit7CisgICAgZW51bSB7IERBVEFfTEVOID0gMTYgfTsKKyAgICBjaGFyIHNlbmRkYXRhW0RBVEFfTEVOKzRdLCByZWN2ZGF0YVtEQVRBX0xFTis0XTsKKyAgICBwal9zc2l6ZV90IHNlbnQsIHJlY2VpdmVkLCB0b3RhbF9yZWNlaXZlZDsKKyAgICBwal9zdGF0dXNfdCByYzsKKworICAgIFRSQUNFXygoInRlc3QiLCAiLi4uLmNyZWF0ZV9yYW5kb21fc3RyaW5nKCkiKSk7CisgICAgcGpfY3JlYXRlX3JhbmRvbV9zdHJpbmcoc2VuZGRhdGEsIERBVEFfTEVOKTsKKyAgICBzZW5kZGF0YVtEQVRBX0xFTi0xXSA9ICdcMCc7CisKKyAgICAvKgorICAgICAqIFRlc3Qgc2VuZC9yZWN2IHNtYWxsIGRhdGEuCisgICAgICovCisgICAgVFJBQ0VfKCgidGVzdCIsICIuLi4uc2VuZHRvKCkiKSk7CisgICAgaWYgKGRzdGFkZHIpIHsKKyAgICAgICAgc2VudCA9IERBVEFfTEVOOworCXJjID0gcGpfc29ja19zZW5kdG8oY3MsIHNlbmRkYXRhLCAmc2VudCwgMCwgZHN0YWRkciwgYWRkcmxlbik7CisJaWYgKHJjICE9IFBKX1NVQ0NFU1MgfHwgc2VudCAhPSBEQVRBX0xFTikgeworCSAgICBhcHBfcGVycm9yKCIuLi5zZW5kdG8gZXJyb3IiLCByYyk7CisJICAgIHJjID0gLTE0MDsgZ290byBvbl9lcnJvcjsKKwl9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VudCA9IERBVEFfTEVOOworCXJjID0gcGpfc29ja19zZW5kKGNzLCBzZW5kZGF0YSwgJnNlbnQsIDApOworCWlmIChyYyAhPSBQSl9TVUNDRVNTIHx8IHNlbnQgIT0gREFUQV9MRU4pIHsKKwkgICAgYXBwX3BlcnJvcigiLi4uc2VuZCBlcnJvciIsIHJjKTsKKwkgICAgcmMgPSAtMTQ1OyBnb3RvIG9uX2Vycm9yOworCX0KKyAgICB9CisKKyAgICBUUkFDRV8oKCJ0ZXN0IiwgIi4uLi5yZWN2KCkiKSk7CisgICAgaWYgKHNyY2FkZHIpIHsKKwlwal9zb2NrYWRkcl9pbiBhZGRyOworCWludCBzcmNsZW4gPSBzaXplb2YoYWRkcik7CisJCisJcGpfYnplcm8oJmFkZHIsIHNpemVvZihhZGRyKSk7CisKKyAgICAgICAgcmVjZWl2ZWQgPSBEQVRBX0xFTjsKKwlyYyA9IHBqX3NvY2tfcmVjdmZyb20oc3MsIHJlY3ZkYXRhLCAmcmVjZWl2ZWQsIDAsICZhZGRyLCAmc3JjbGVuKTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUyB8fCByZWNlaXZlZCAhPSBEQVRBX0xFTikgeworCSAgICBhcHBfcGVycm9yKCIuLi5yZWN2ZnJvbSBlcnJvciIsIHJjKTsKKwkgICAgcmMgPSAtMTUwOyBnb3RvIG9uX2Vycm9yOworCX0KKwlpZiAoc3JjbGVuICE9IGFkZHJsZW4pCisJICAgIHJldHVybiAtMTUxOworCWlmIChwal9zb2NrYWRkcl9jbXAoJmFkZHIsIHNyY2FkZHIpICE9IDApIHsKKwkgICAgY2hhciBzcmNhZGRyX3N0clszMl0sIGFkZHJfc3RyWzMyXTsKKwkgICAgc3RyY3B5KHNyY2FkZHJfc3RyLCBwal9pbmV0X250b2Eoc3JjYWRkci0+c2luX2FkZHIpKTsKKwkgICAgc3RyY3B5KGFkZHJfc3RyLCBwal9pbmV0X250b2EoYWRkci5zaW5fYWRkcikpOworCSAgICBQSl9MT0coMywoInRlc3QiLCAiLi4uZXJyb3I6IHNyYyBhZGRyZXNzIG1pc21hdGNoIChvcmlnaW5hbD0lcywgIgorCQkJICAgICAgInJlY3Zmcm9tIGFkZHI9JXMpIiwgCisJCQkgICAgICBzcmNhZGRyX3N0ciwgYWRkcl9zdHIpKTsKKwkgICAgcmV0dXJuIC0xNTI7CisJfQorCQorICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFJlcGVhdCByZWN2KCkgdW50aWwgYWxsIGRhdGEgaXMgcmVjZWl2ZWQuCisgICAgICAgICAqIFRoaXMgYXBwbGllcyBvbmx5IGZvciBub24tVURQIG9mIGNvdXJzZSwgc2luY2UgZm9yIFVEUAorICAgICAgICAgKiB3ZSB3b3VsZCBleHBlY3QgYWxsIGRhdGEgdG8gYmUgcmVjZWl2ZWQgaW4gb25lIHBhY2tldC4KKyAgICAgICAgICovCisgICAgICAgIHRvdGFsX3JlY2VpdmVkID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgcmVjZWl2ZWQgPSBEQVRBX0xFTi10b3RhbF9yZWNlaXZlZDsKKwkgICAgcmMgPSBwal9zb2NrX3JlY3Yoc3MsIHJlY3ZkYXRhK3RvdGFsX3JlY2VpdmVkLCAmcmVjZWl2ZWQsIDApOworCSAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCSAgICAgICAgYXBwX3BlcnJvcigiLi4ucmVjdiBlcnJvciIsIHJjKTsKKwkgICAgICAgIHJjID0gLTE1NTsgZ290byBvbl9lcnJvcjsKKwkgICAgfQorICAgICAgICAgICAgaWYgKHJlY2VpdmVkIDw9IDApIHsKKyAgICAgICAgICAgICAgICBQSl9MT0coMywoIiIsICIuLi5lcnJvcjogc29ja2V0IGhhcyBjbG9zZWQhIChyZWNlaXZlZD0lZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZCkpOworICAgICAgICAgICAgICAgIHJjID0gLTE1NjsgZ290byBvbl9lcnJvcjsKKyAgICAgICAgICAgIH0KKwkgICAgaWYgKHJlY2VpdmVkICE9IERBVEFfTEVOLXRvdGFsX3JlY2VpdmVkKSB7CisgICAgICAgICAgICAgICAgaWYgKHNvY2tfdHlwZSAhPSBwal9TT0NLX1NUUkVBTSgpKSB7CisJICAgICAgICAgICAgUEpfTE9HKDMsKCIiLCAiLi4uZXJyb3I6IGV4cGVjdGluZyAldSBieXRlcywgZ290ICV1IGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfTEVOLXRvdGFsX3JlY2VpdmVkLCByZWNlaXZlZCkpOworCSAgICAgICAgICAgIHJjID0gLTE1NzsgZ290byBvbl9lcnJvcjsKKyAgICAgICAgICAgICAgICB9CisJICAgIH0KKyAgICAgICAgICAgIHRvdGFsX3JlY2VpdmVkICs9IHJlY2VpdmVkOworICAgICAgICB9IHdoaWxlICh0b3RhbF9yZWNlaXZlZCA8IERBVEFfTEVOKTsKKyAgICB9CisKKyAgICBUUkFDRV8oKCJ0ZXN0IiwgIi4uLi5tZW1jbXAoKSIpKTsKKyAgICBpZiAocGpfbWVtY21wKHNlbmRkYXRhLCByZWN2ZGF0YSwgREFUQV9MRU4pICE9IDApIHsKKwlQSl9MT0coMywoIiIsIi4uLmVycm9yOiByZWNlaXZlZCBkYXRhIG1pc21hdGNoICIKKwkJICAgICAiKGdvdDonJXMnIGV4cGVjdGluZzonJXMnIiwKKwkJICAgICByZWN2ZGF0YSwgc2VuZGRhdGEpKTsKKwlyYyA9IC0xNjA7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUZXN0IHNlbmQvcmVjdiBiaWcgZGF0YS4KKyAgICAgKi8KKyAgICBUUkFDRV8oKCJ0ZXN0IiwgIi4uLi5zZW5kdG8oKSIpKTsKKyAgICBpZiAoZHN0YWRkcikgeworICAgICAgICBzZW50ID0gQklHX0RBVEFfTEVOOworCXJjID0gcGpfc29ja19zZW5kdG8oY3MsIGJpZ2RhdGEsICZzZW50LCAwLCBkc3RhZGRyLCBhZGRybGVuKTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUyB8fCBzZW50ICE9IEJJR19EQVRBX0xFTikgeworCSAgICBhcHBfcGVycm9yKCIuLi5zZW5kdG8gZXJyb3IiLCByYyk7CisJICAgIHJjID0gLTE2MTsgZ290byBvbl9lcnJvcjsKKwl9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VudCA9IEJJR19EQVRBX0xFTjsKKwlyYyA9IHBqX3NvY2tfc2VuZChjcywgYmlnZGF0YSwgJnNlbnQsIDApOworCWlmIChyYyAhPSBQSl9TVUNDRVNTIHx8IHNlbnQgIT0gQklHX0RBVEFfTEVOKSB7CisJICAgIGFwcF9wZXJyb3IoIi4uLnNlbmQgZXJyb3IiLCByYyk7CisJICAgIHJjID0gLTE2NTsgZ290byBvbl9lcnJvcjsKKwl9CisgICAgfQorCisgICAgVFJBQ0VfKCgidGVzdCIsICIuLi4ucmVjdigpIikpOworCisgICAgLyogUmVwZWF0IHJlY3YoKSB1bnRpbCBhbGwgZGF0YSBpcyByZWNlaXZlZC4KKyAgICAgKiBUaGlzIGFwcGxpZXMgb25seSBmb3Igbm9uLVVEUCBvZiBjb3Vyc2UsIHNpbmNlIGZvciBVRFAKKyAgICAgKiB3ZSB3b3VsZCBleHBlY3QgYWxsIGRhdGEgdG8gYmUgcmVjZWl2ZWQgaW4gb25lIHBhY2tldC4KKyAgICAgKi8KKyAgICB0b3RhbF9yZWNlaXZlZCA9IDA7CisgICAgZG8geworICAgICAgICByZWNlaXZlZCA9IEJJR19EQVRBX0xFTi10b3RhbF9yZWNlaXZlZDsKKwlyYyA9IHBqX3NvY2tfcmVjdihzcywgYmlnYnVmZmVyK3RvdGFsX3JlY2VpdmVkLCAmcmVjZWl2ZWQsIDApOworCWlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIGFwcF9wZXJyb3IoIi4uLnJlY3YgZXJyb3IiLCByYyk7CisJICAgIHJjID0gLTE3MDsgZ290byBvbl9lcnJvcjsKKwl9CisgICAgICAgIGlmIChyZWNlaXZlZCA8PSAwKSB7CisgICAgICAgICAgICBQSl9MT0coMywoIiIsICIuLi5lcnJvcjogc29ja2V0IGhhcyBjbG9zZWQhIChyZWNlaXZlZD0lZCkiLAorICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkKSk7CisgICAgICAgICAgICByYyA9IC0xNzM7IGdvdG8gb25fZXJyb3I7CisgICAgICAgIH0KKwlpZiAocmVjZWl2ZWQgIT0gQklHX0RBVEFfTEVOLXRvdGFsX3JlY2VpdmVkKSB7CisgICAgICAgICAgICBpZiAoc29ja190eXBlICE9IHBqX1NPQ0tfU1RSRUFNKCkpIHsKKwkgICAgICAgIFBKX0xPRygzLCgiIiwgIi4uLmVycm9yOiBleHBlY3RpbmcgJXUgYnl0ZXMsIGdvdCAldSBieXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJJR19EQVRBX0xFTi10b3RhbF9yZWNlaXZlZCwgcmVjZWl2ZWQpKTsKKwkgICAgICAgIHJjID0gLTE3NjsgZ290byBvbl9lcnJvcjsKKyAgICAgICAgICAgIH0KKwl9CisgICAgICAgIHRvdGFsX3JlY2VpdmVkICs9IHJlY2VpdmVkOworICAgIH0gd2hpbGUgKHRvdGFsX3JlY2VpdmVkIDwgQklHX0RBVEFfTEVOKTsKKworICAgIFRSQUNFXygoInRlc3QiLCAiLi4uLm1lbWNtcCgpIikpOworICAgIGlmIChwal9tZW1jbXAoYmlnZGF0YSwgYmlnYnVmZmVyLCBCSUdfREFUQV9MRU4pICE9IDApIHsKKyAgICAgICAgUEpfTE9HKDMsKCIiLCAiLi4uZXJyb3I6IHJlY2VpdmVkIGRhdGEgaGFzIGJlZW4gYWx0ZXJlZCEiKSk7CisJcmMgPSAtMTgwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKyAgICAKKyAgICByYyA9IDA7CisKK29uX2Vycm9yOgorICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCB1ZHBfdGVzdCh2b2lkKQoreworICAgIHBqX3NvY2tfdCBjcyA9IFBKX0lOVkFMSURfU09DS0VULCBzcyA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIHBqX3NvY2thZGRyX2luIGRzdGFkZHIsIHNyY2FkZHI7CisgICAgcGpfc3RyX3QgczsKKyAgICBwal9zdGF0dXNfdCByYyA9IDAsIHJldHZhbDsKKworICAgIFBKX0xPRygzLCgidGVzdCIsICIuLi51ZHBfdGVzdCgpIikpOworCisgICAgcmMgPSBwal9zb2NrX3NvY2tldChwal9BRl9JTkVUKCksIHBqX1NPQ0tfREdSQU0oKSwgMCwgJnNzKTsKKyAgICBpZiAocmMgIT0gMCkgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiB1bmFibGUgdG8gY3JlYXRlIHNvY2tldCIsIHJjKTsKKwlyZXR1cm4gLTEwMDsKKyAgICB9CisKKyAgICByYyA9IHBqX3NvY2tfc29ja2V0KHBqX0FGX0lORVQoKSwgcGpfU09DS19ER1JBTSgpLCAwLCAmY3MpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiAtMTEwOworCisgICAgLyogQmluZCBzZXJ2ZXIgc29ja2V0LiAqLworICAgIHBqX2J6ZXJvKCZkc3RhZGRyLCBzaXplb2YoZHN0YWRkcikpOworICAgIGRzdGFkZHIuc2luX2ZhbWlseSA9IHBqX0FGX0lORVQoKTsKKyAgICBkc3RhZGRyLnNpbl9wb3J0ID0gcGpfaHRvbnMoVURQX1BPUlQpOworICAgIGRzdGFkZHIuc2luX2FkZHIgPSBwal9pbmV0X2FkZHIocGpfY3N0cigmcywgQUREUkVTUykpOworICAgIAorICAgIGlmICgocmM9cGpfc29ja19iaW5kKHNzLCAmZHN0YWRkciwgc2l6ZW9mKGRzdGFkZHIpKSkgIT0gMCkgeworCWFwcF9wZXJyb3IoIi4uLmJpbmQgZXJyb3IgdWRwOiJBRERSRVNTLCByYyk7CisJcmMgPSAtMTIwOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8qIEJpbmQgY2xpZW50IHNvY2tldC4gKi8KKyAgICBwal9iemVybygmc3JjYWRkciwgc2l6ZW9mKHNyY2FkZHIpKTsKKyAgICBzcmNhZGRyLnNpbl9mYW1pbHkgPSBwal9BRl9JTkVUKCk7CisgICAgc3JjYWRkci5zaW5fcG9ydCA9IHBqX2h0b25zKFVEUF9QT1JULTEpOworICAgIHNyY2FkZHIuc2luX2FkZHIgPSBwal9pbmV0X2FkZHIocGpfY3N0cigmcywgQUREUkVTUykpOworCisgICAgaWYgKChyYz1wal9zb2NrX2JpbmQoY3MsICZzcmNhZGRyLCBzaXplb2Yoc3JjYWRkcikpKSAhPSAwKSB7CisJYXBwX3BlcnJvcigiLi4uYmluZCBlcnJvciIsIHJjKTsKKwlyYyA9IC0xMjE7IGdvdG8gb25fZXJyb3I7CisgICAgfQorCSAgICAKKyAgICAvKiBUZXN0IHNlbmQvcmVjdiwgd2l0aCBzZW5kdG8gKi8KKyAgICByYyA9IHNlbmRfcmVjdl90ZXN0KHBqX1NPQ0tfREdSQU0oKSwgc3MsIGNzLCAmZHN0YWRkciwgTlVMTCwgCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZHN0YWRkcikpOworICAgIGlmIChyYyAhPSAwKQorCWdvdG8gb25fZXJyb3I7CisKKyAgICAvKiBUZXN0IHNlbmQvcmVjdiwgd2l0aCBzZW5kdG8gYW5kIHJlY3Zmcm9tICovCisgICAgcmMgPSBzZW5kX3JlY3ZfdGVzdChwal9TT0NLX0RHUkFNKCksIHNzLCBjcywgJmRzdGFkZHIsIAorICAgICAgICAgICAgICAgICAgICAgICAgJnNyY2FkZHIsIHNpemVvZihkc3RhZGRyKSk7CisgICAgaWYgKHJjICE9IDApCisJZ290byBvbl9lcnJvcjsKKworICAgIC8qIERpc2FibGUgdGhpcyB0ZXN0IG9uIFN5bWJpYW4gc2luY2UgVURQIGNvbm5lY3QoKS9zZW5kKCkgZmFpbGVkCisgICAgICogd2l0aCBTNjAgM3JkIGVkaXRpb24gKGluY2x1ZGluZyBNUjIpLgorICAgICAqIFNlZSBodHRwOi8vd3d3LnBqc2lwLm9yZy90cmFjL3RpY2tldC8yNjQKKyAgICAgKi8gICAgCisjaWYgIWRlZmluZWQoUEpfU1lNQklBTikgfHwgUEpfU1lNQklBTj09MAorICAgIC8qIGNvbm5lY3QoKSB0aGUgc29ja2V0cy4gKi8KKyAgICByYyA9IHBqX3NvY2tfY29ubmVjdChjcywgJmRzdGFkZHIsIHNpemVvZihkc3RhZGRyKSk7CisgICAgaWYgKHJjICE9IDApIHsKKwlhcHBfcGVycm9yKCIuLi5jb25uZWN0KCkgZXJyb3IiLCByYyk7CisJcmMgPSAtMTIyOyBnb3RvIG9uX2Vycm9yOworICAgIH0KKworICAgIC8qIFRlc3Qgc2VuZC9yZWN2IHdpdGggc2VuZCgpICovCisgICAgcmMgPSBzZW5kX3JlY3ZfdGVzdChwal9TT0NLX0RHUkFNKCksIHNzLCBjcywgTlVMTCwgTlVMTCwgMCk7CisgICAgaWYgKHJjICE9IDApCisJZ290byBvbl9lcnJvcjsKKworICAgIC8qIFRlc3Qgc2VuZC9yZWN2IHdpdGggc2VuZCgpIGFuZCByZWN2ZnJvbSAqLworICAgIHJjID0gc2VuZF9yZWN2X3Rlc3QocGpfU09DS19ER1JBTSgpLCBzcywgY3MsIE5VTEwsICZzcmNhZGRyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzcmNhZGRyKSk7CisgICAgaWYgKHJjICE9IDApCisJZ290byBvbl9lcnJvcjsKKyNlbmRpZgorCitvbl9lcnJvcjoKKyAgICByZXR2YWwgPSByYzsKKyAgICBpZiAoY3MgIT0gUEpfSU5WQUxJRF9TT0NLRVQpIHsKKyAgICAgICAgcmMgPSBwal9zb2NrX2Nsb3NlKGNzKTsKKyAgICAgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yIGluIGNsb3Npbmcgc29ja2V0IiwgcmMpOworICAgICAgICAgICAgcmV0dXJuIC0xMDAwOworICAgICAgICB9CisgICAgfQorICAgIGlmIChzcyAhPSBQSl9JTlZBTElEX1NPQ0tFVCkgeworICAgICAgICByYyA9IHBqX3NvY2tfY2xvc2Uoc3MpOworICAgICAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3IgaW4gY2xvc2luZyBzb2NrZXQiLCByYyk7CisgICAgICAgICAgICByZXR1cm4gLTEwMTA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgaW50IHRjcF90ZXN0KHZvaWQpCit7CisgICAgcGpfc29ja190IGNzLCBzczsKKyAgICBwal9zdGF0dXNfdCByYyA9IDAsIHJldHZhbDsKKworICAgIFBKX0xPRygzLCgidGVzdCIsICIuLi50Y3BfdGVzdCgpIikpOworCisgICAgcmMgPSBhcHBfc29ja2V0cGFpcihwal9BRl9JTkVUKCksIHBqX1NPQ0tfU1RSRUFNKCksIDAsICZzcywgJmNzKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogYXBwX3NvY2tldHBhaXIoKToiLCByYyk7CisgICAgICAgIHJldHVybiAtMjAwMDsKKyAgICB9CisKKyAgICAvKiBUZXN0IHNlbmQvcmVjdiB3aXRoIHNlbmQoKSBhbmQgcmVjdigpICovCisgICAgcmV0dmFsID0gc2VuZF9yZWN2X3Rlc3QocGpfU09DS19TVFJFQU0oKSwgc3MsIGNzLCBOVUxMLCBOVUxMLCAwKTsKKworICAgIHJjID0gcGpfc29ja19jbG9zZShjcyk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3IgaW4gY2xvc2luZyBzb2NrZXQiLCByYyk7CisgICAgICAgIHJldHVybiAtMjAwMDsKKyAgICB9CisKKyAgICByYyA9IHBqX3NvY2tfY2xvc2Uoc3MpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yIGluIGNsb3Npbmcgc29ja2V0IiwgcmMpOworICAgICAgICByZXR1cm4gLTIwMTA7CisgICAgfQorCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGludCBpb2N0bF90ZXN0KHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ2V0aG9zdGJ5bmFtZV90ZXN0KHZvaWQpCit7CisgICAgcGpfc3RyX3QgaG9zdDsKKyAgICBwal9ob3N0ZW50IGhlOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworICAgIC8qIFRlc3RpbmcgcGpfZ2V0aG9zdGJ5bmFtZSgpIHdpdGggaW52YWxpZCBob3N0ICovCisgICAgaG9zdCA9IHBqX3N0cigiYW4taW52YWxpZC1ob3N0LW5hbWUiKTsKKyAgICBzdGF0dXMgPSBwal9nZXRob3N0YnluYW1lKCZob3N0LCAmaGUpOworCisgICAgLyogTXVzdCByZXR1cm4gZmFpbHVyZSEgKi8KKyAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpCisJcmV0dXJuIC0yMDEwMDsKKyAgICBlbHNlCisJcmV0dXJuIDA7Cit9CisKKyNpZiAwCisjaW5jbHVkZSAiLi4vcGovb3Nfc3ltYmlhbi5oIgorc3RhdGljIGludCBjb25uZWN0X3Rlc3QoKQoreworCVJTb2NrZXRTZXJ2IHJTb2NrU2VydjsKKwlSU29ja2V0IHJTb2NrOworCVRJbmV0QWRkciBpbmV0QWRkcjsKKwlUUmVxdWVzdFN0YXR1cyByZXFTdGF0dXM7CisJY2hhciBidWZmZXJbMTZdOworCVRQdHJDOCBkYXRhKChjb25zdCBUVWludDgqKWJ1ZmZlciwgKFRJbnQpc2l6ZW9mKGJ1ZmZlcikpOworIAlpbnQgcmM7CisJCisJcmMgPSByU29ja1NlcnYuQ29ubmVjdCgpOworCWlmIChyYyAhPSBLRXJyTm9uZSkKKwkJcmV0dXJuIHJjOworCQorCXJjID0gclNvY2suT3BlbihyU29ja1NlcnYsIEtBZkluZXQsIEtTb2NrRGF0YWdyYW0sIEtQcm90b2NvbEluZXRVZHApOworICAgIAlpZiAocmMgIT0gS0Vyck5vbmUpIAorICAgIAl7ICAgIAkJCisgICAgCQlyU29ja1NlcnYuQ2xvc2UoKTsKKyAgICAJCXJldHVybiByYzsKKyAgICAJfQorICAgCQorICAgIAlpbmV0QWRkci5Jbml0KEtBZkluZXQpOworICAgIAlpbmV0QWRkci5JbnB1dChfTCgiMTI3LjAuMC4xIikpOworICAgIAlpbmV0QWRkci5TZXRQb3J0KDgwKTsKKyAgICAJCisgICAgCXJTb2NrLkNvbm5lY3QoaW5ldEFkZHIsIHJlcVN0YXR1cyk7CisgICAgCVVzZXI6OldhaXRGb3JSZXF1ZXN0KHJlcVN0YXR1cyk7CisKKyAgICAJaWYgKHJlcVN0YXR1cyAhPSBLRXJyTm9uZSkgeworCQlyU29jay5DbG9zZSgpOworICAgIAkJclNvY2tTZXJ2LkNsb3NlKCk7CisJCXJldHVybiByYzsKKyAgICAJfQorICAgIAorICAgIAlyU29jay5TZW5kKGRhdGEsIDAsIHJlcVN0YXR1cyk7CisgICAgCVVzZXI6OldhaXRGb3JSZXF1ZXN0KHJlcVN0YXR1cyk7CisgICAgCQorICAgIAlpZiAocmVxU3RhdHVzIT1LRXJyTm9uZSkgeworICAgIAkJclNvY2suQ2xvc2UoKTsKKyAgICAJCXJTb2NrU2Vydi5DbG9zZSgpOworICAgIAkJcmV0dXJuIHJjOworICAgIAl9CisgICAgCQorICAgIAlyU29jay5DbG9zZSgpOworICAgIAlyU29ja1NlcnYuQ2xvc2UoKTsKKwlyZXR1cm4gS0Vyck5vbmU7Cit9CisjZW5kaWYKKworaW50IHNvY2tfdGVzdCgpCit7CisgICAgaW50IHJjOworICAgIAorICAgIHBqX2NyZWF0ZV9yYW5kb21fc3RyaW5nKGJpZ2RhdGEsIEJJR19EQVRBX0xFTik7CisKKy8vIEVuYWJsZSB0aGlzIHRvIGRlbW9uc3RyYXRlIHRoZSBlcnJvciB3aXRuIFM2MCAzcmQgRWRpdGlvbiBNUjIKKyNpZiAwCisgICAgcmMgPSBjb25uZWN0X3Rlc3QoKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAJcmV0dXJuIHJjOworI2VuZGlmCisgICAgCisgICAgcmMgPSBmb3JtYXRfdGVzdCgpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIHJjID0gcGFyc2VfdGVzdCgpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIHJjID0gcHVyaXR5X3Rlc3QoKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gcmM7CisKKyAgICByYyA9IGdldGhvc3RieW5hbWVfdGVzdCgpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIHJjID0gc2ltcGxlX3NvY2tfdGVzdCgpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIHJjID0gaW9jdGxfdGVzdCgpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIHJjID0gdWRwX3Rlc3QoKTsKKyAgICBpZiAocmMgIT0gMCkKKwlyZXR1cm4gcmM7CisKKyAgICByYyA9IHRjcF90ZXN0KCk7CisgICAgaWYgKHJjICE9IDApCisJcmV0dXJuIHJjOworCisgICAgcmV0dXJuIDA7Cit9CisKKworI2Vsc2UKKy8qIFRvIHByZXZlbnQgd2FybmluZyBhYm91dCAidHJhbnNsYXRpb24gdW5pdCBpcyBlbXB0eSIKKyAqIHdoZW4gdGhpcyB0ZXN0IGlzIGRpc2FibGVkLiAKKyAqLworaW50IGR1bW15X3NvY2tfdGVzdDsKKyNlbmRpZgkvKiBJTkNMVURFX1NPQ0tfVEVTVCAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9zb2NrX3BlcmYuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3NvY2tfcGVyZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NmQ5ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9zb2NrX3BlcmYuYwpAQCAtMCwwICsxLDE5MCBAQAorLyogJElkOiBzb2NrX3BlcmYuYyA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisjaW5jbHVkZSA8cGpsaWIuaD4KKyNpbmNsdWRlIDxwai9jb21wYXQvaGlnaF9wcmVjaXNpb24uaD4KKworCisvKioKKyAqIFxwYWdlIHBhZ2VfcGpsaWJfc29ja19wZXJmX3Rlc3QgVGVzdDogU29ja2V0IFBlcmZvcm1hbmNlCisgKgorICogVGVzdCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHNvY2tldCBjb21tdW5pY2F0aW9uLiBUaGlzIHdpbGwgcGVyZm9ybQorICogc2ltcGxlIHByb2R1Y2VyLWNvbnN1bWVyIHR5cGUgb2YgdGVzdCwgd2hlcmUgd2UgY2FsY3VsYXRlIGhvdyBsb25nCisgKiBkb2VzIGl0IHRha2UgdG8gc2VuZCBjZXJ0YWluIG51bWJlciBvZiBwYWNrZXRzIGZyb20gcHJvZHVjZXIgdG8KKyAqIGNvbnN1bWVyLgorICoKKyAqIFRoaXMgZmlsZSBpcyA8Yj5wamxpYi10ZXN0L3NvY2tfcGVyZi5jPC9iPgorICoKKyAqIFxpbmNsdWRlIHBqbGliLXRlc3Qvc29ja19wZXJmLmMKKyAqLworCisjaWYgSU5DTFVERV9TT0NLX1BFUkZfVEVTVAorCisvKgorICogc29ja19wcm9kdWNlcl9jb25zdW1lcigpCisgKgorICogU2ltcGxlIHByb2R1Y2VyLWNvbnN1bWVyIGJlbmNobWFya2luZy4gU2VuZCBsb29wIG51bWJlciBvZgorICogYnVmX3NpemUgc2l6ZSBwYWNrZXRzIGFzIGZhc3QgYXMgcG9zc2libGUuCisgKi8KK3N0YXRpYyBpbnQgc29ja19wcm9kdWNlcl9jb25zdW1lcihpbnQgc29ja190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NpemVfdCBidWZfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb29wLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqcF9iYW5kd2lkdGgpCit7CisgICAgcGpfc29ja190IGNvbnN1bWVyLCBwcm9kdWNlcjsKKyAgICBwal9wb29sX3QgKnBvb2w7CisgICAgY2hhciAqb3V0Z29pbmdfYnVmZmVyLCAqaW5jb21pbmdfYnVmZmVyOworICAgIHBqX3RpbWVzdGFtcCBzdGFydCwgc3RvcDsKKyAgICB1bnNpZ25lZCBpOworICAgIHBqX2hpZ2hwcmVjX3QgZWxhcHNlZCwgYmFuZHdpZHRoOworICAgIHBqX2hpZ2hwcmVjX3QgdG90YWxfcmVjZWl2ZWQ7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICAvKiBDcmVhdGUgcG9vbC4gKi8KKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCBOVUxMLCA0MDk2LCA0MDk2LCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpCisgICAgICAgIHJldHVybiAtMTA7CisKKyAgICAvKiBDcmVhdGUgcHJvZHVjZXItY29uc3VtZXIgcGFpci4gKi8KKyAgICByYyA9IGFwcF9zb2NrZXRwYWlyKHBqX0FGX0lORVQoKSwgc29ja190eXBlLCAwLCAmY29uc3VtZXIsICZwcm9kdWNlcik7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IGNyZWF0ZSBzb2NrZXQgcGFpciIsIHJjKTsKKyAgICAgICAgcmV0dXJuIC0yMDsKKyAgICB9CisKKyAgICAvKiBDcmVhdGUgYnVmZmVycy4gKi8KKyAgICBvdXRnb2luZ19idWZmZXIgPSAoY2hhciopIHBqX3Bvb2xfYWxsb2MocG9vbCwgYnVmX3NpemUpOworICAgIGluY29taW5nX2J1ZmZlciA9IChjaGFyKikgcGpfcG9vbF9hbGxvYyhwb29sLCBidWZfc2l6ZSk7CisKKyAgICAvKiBTdGFydCBsb29wLiAqLworICAgIHBqX2dldF90aW1lc3RhbXAoJnN0YXJ0KTsKKyAgICB0b3RhbF9yZWNlaXZlZCA9IDA7CisgICAgZm9yIChpPTA7IGk8bG9vcDsgKytpKSB7CisgICAgICAgIHBqX3NzaXplX3Qgc2VudCwgcGFydF9yZWNlaXZlZCwgcmVjZWl2ZWQ7CisJcGpfdGltZV92YWwgZGVsYXk7CisKKyAgICAgICAgc2VudCA9IGJ1Zl9zaXplOworICAgICAgICByYyA9IHBqX3NvY2tfc2VuZChwcm9kdWNlciwgb3V0Z29pbmdfYnVmZmVyLCAmc2VudCwgMCk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTIHx8IHNlbnQgIT0gKHBqX3NzaXplX3QpYnVmX3NpemUpIHsKKyAgICAgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yOiBzZW5kKCkiLCByYyk7CisgICAgICAgICAgICByZXR1cm4gLTYxOworICAgICAgICB9CisKKyAgICAgICAgLyogUmVwZWF0IHJlY3YoKSB1bnRpbCBhbGwgZGF0YSBpcyBwYXJ0X3JlY2VpdmVkLgorICAgICAgICAgKiBUaGlzIGFwcGxpZXMgb25seSBmb3Igbm9uLVVEUCBvZiBjb3Vyc2UsIHNpbmNlIGZvciBVRFAKKyAgICAgICAgICogd2Ugd291bGQgZXhwZWN0IGFsbCBkYXRhIHRvIGJlIHBhcnRfcmVjZWl2ZWQgaW4gb25lIHBhY2tldC4KKyAgICAgICAgICovCisgICAgICAgIHJlY2VpdmVkID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgcGFydF9yZWNlaXZlZCA9IGJ1Zl9zaXplLXJlY2VpdmVkOworCSAgICByYyA9IHBqX3NvY2tfcmVjdihjb25zdW1lciwgaW5jb21pbmdfYnVmZmVyK3JlY2VpdmVkLCAKKwkJCSAgICAgICZwYXJ0X3JlY2VpdmVkLCAwKTsKKwkgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgICAgIGFwcF9wZXJyb3IoIi4uLnJlY3YgZXJyb3IiLCByYyk7CisJICAgICAgICByZXR1cm4gLTcwOworCSAgICB9CisgICAgICAgICAgICBpZiAocGFydF9yZWNlaXZlZCA8PSAwKSB7CisgICAgICAgICAgICAgICAgUEpfTE9HKDMsKCIiLCAiLi4uZXJyb3I6IHNvY2tldCBoYXMgY2xvc2VkIChwYXJ0X3JlY2VpdmVkPSVkKSEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0X3JlY2VpdmVkKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC03MzsKKyAgICAgICAgICAgIH0KKwkgICAgaWYgKChwal9zaXplX3QpcGFydF9yZWNlaXZlZCAhPSBidWZfc2l6ZS1yZWNlaXZlZCkgeworICAgICAgICAgICAgICAgIGlmIChzb2NrX3R5cGUgIT0gcGpfU09DS19TVFJFQU0oKSkgeworCSAgICAgICAgICAgIFBKX0xPRygzLCgiIiwgIi4uLmVycm9yOiBleHBlY3RpbmcgJXUgYnl0ZXMsIGdvdCAldSBieXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZS1yZWNlaXZlZCwgcGFydF9yZWNlaXZlZCkpOworCSAgICAgICAgICAgIHJldHVybiAtNzY7CisgICAgICAgICAgICAgICAgfQorCSAgICB9CisgICAgICAgICAgICByZWNlaXZlZCArPSBwYXJ0X3JlY2VpdmVkOworICAgICAgICB9IHdoaWxlICgocGpfc2l6ZV90KXJlY2VpdmVkIDwgYnVmX3NpemUpOworCisJdG90YWxfcmVjZWl2ZWQgKz0gcmVjZWl2ZWQ7CisKKwkvKiBTdG9wIHRlc3QgaWYgaXQncyBiZWVuIHJ1bm5pZ24gZm9yIG1vcmUgdGhhbiAxMCBzZWNzLiAqLworCXBqX2dldF90aW1lc3RhbXAoJnN0b3ApOworCWRlbGF5ID0gcGpfZWxhcHNlZF90aW1lKCZzdGFydCwgJnN0b3ApOworCWlmIChkZWxheS5zZWMgPiAxMCkKKwkgICAgYnJlYWs7CisgICAgfQorCisgICAgLyogU3RvcCB0aW1lci4gKi8KKyAgICBwal9nZXRfdGltZXN0YW1wKCZzdG9wKTsKKworICAgIGVsYXBzZWQgPSBwal9lbGFwc2VkX3VzZWMoJnN0YXJ0LCAmc3RvcCk7CisKKyAgICAvKiBiYW5kd2lkdGggPSB0b3RhbF9yZWNlaXZlZCAqIDEwMDAgLyBlbGFwc2VkICovCisgICAgYmFuZHdpZHRoID0gdG90YWxfcmVjZWl2ZWQ7CisgICAgcGpfaGlnaHByZWNfbXVsKGJhbmR3aWR0aCwgMTAwMCk7CisgICAgcGpfaGlnaHByZWNfZGl2KGJhbmR3aWR0aCwgZWxhcHNlZCk7CisgICAgCisgICAgKnBfYmFuZHdpZHRoID0gKHBqX3VpbnQzMl90KWJhbmR3aWR0aDsKKworICAgIC8qIENsb3NlIHNvY2tldHMuICovCisgICAgcGpfc29ja19jbG9zZShjb25zdW1lcik7CisgICAgcGpfc29ja19jbG9zZShwcm9kdWNlcik7CisKKyAgICAvKiBEb25lICovCisgICAgcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBzb2NrX3BlcmZfdGVzdCgpCisgKgorICogTWFpbiB0ZXN0IGVudHJ5LgorICovCitpbnQgc29ja19wZXJmX3Rlc3Qodm9pZCkKK3sKKyAgICBlbnVtIHsgTE9PUCA9IDY0ICogMTAyNCB9OworICAgIGludCByYzsKKyAgICB1bnNpZ25lZCBiYW5kd2lkdGg7CisKKyAgICBQSl9MT0coMywoIiIsICIuLi5iZW5jaG1hcmtpbmcgc29ja2V0ICIKKyAgICAgICAgICAgICAgICAgICIoMiBzb2NrZXRzLCBwYWNrZXQ9NTEyLCBzaW5nbGUgdGhyZWFkZWQpOiIpKTsKKworICAgIC8qIERpc2FibGUgdGhpcyB0ZXN0IG9uIFN5bWJpYW4gc2luY2UgVURQIGNvbm5lY3QoKS9zZW5kKCkgZmFpbGVkCisgICAgICogd2l0aCBTNjAgM3JkIGVkaXRpb24gKGluY2x1ZGluZyBNUjIpLgorICAgICAqIFNlZSBodHRwOi8vd3d3LnBqc2lwLm9yZy90cmFjL3RpY2tldC8yNjQKKyAgICAgKi8gICAgCisjaWYgIWRlZmluZWQoUEpfU1lNQklBTikgfHwgUEpfU1lNQklBTj09MAorICAgIC8qIEJlbmNobWFya2luZyBVRFAgKi8KKyAgICByYyA9IHNvY2tfcHJvZHVjZXJfY29uc3VtZXIocGpfU09DS19ER1JBTSgpLCA1MTIsIExPT1AsICZiYW5kd2lkdGgpOworICAgIGlmIChyYyAhPSAwKSByZXR1cm4gcmM7CisgICAgUEpfTE9HKDMsKCIiLCAiLi4uLmJhbmR3aWR0aCBVRFAgPSAlZCBLQi9zIiwgYmFuZHdpZHRoKSk7CisjZW5kaWYKKworICAgIC8qIEJlbmNobWFya2luZyBUQ1AgKi8KKyAgICByYyA9IHNvY2tfcHJvZHVjZXJfY29uc3VtZXIocGpfU09DS19TVFJFQU0oKSwgNTEyLCBMT09QLCAmYmFuZHdpZHRoKTsKKyAgICBpZiAocmMgIT0gMCkgcmV0dXJuIHJjOworICAgIFBKX0xPRygzLCgiIiwgIi4uLi5iYW5kd2lkdGggVENQID0gJWQgS0IvcyIsIGJhbmR3aWR0aCkpOworCisgICAgcmV0dXJuIHJjOworfQorCisKKyNlbHNlCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV9zb2NrX3BlcmZfdGVzdDsKKyNlbmRpZiAgLyogSU5DTFVERV9TT0NLX1BFUkZfVEVTVCAqLworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3NzbF9zb2NrLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9zc2xfc29jay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZjg5YjcKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC9zc2xfc29jay5jCkBAIC0wLDAgKzEsMTQ0OCBAQAorLyogJElkOiBzc2xfc29jay5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgInRlc3QuaCIKKyNpbmNsdWRlIDxwamxpYi5oPgorCisKKyNkZWZpbmUgQ0VSVF9ESVIJCSAgICAiLi4vYnVpbGQvIgorI2RlZmluZSBDRVJUX0NBX0ZJTEUJCSAgICBDRVJUX0RJUiAiY2FjZXJ0LnBlbSIKKyNkZWZpbmUgQ0VSVF9GSUxFCQkgICAgQ0VSVF9ESVIgImNhY2VydC5wZW0iCisjZGVmaW5lIENFUlRfUFJJVktFWV9GSUxFCSAgICBDRVJUX0RJUiAicHJpdmtleS5wZW0iCisjZGVmaW5lIENFUlRfUFJJVktFWV9QQVNTCSAgICAiIgorCisKKyNpZiBJTkNMVURFX1NTTFNPQ0tfVEVTVAorCisvKiBHbG9iYWwgdmFycyAqLworc3RhdGljIGludCBjbGllbnRzX251bTsKKworc3RydWN0IHNlbmRfa2V5IHsKKyAgICBwal9pb3F1ZXVlX29wX2tleV90CW9wX2tleTsKK307CisKKworc3RhdGljIGludCBnZXRfY2lwaGVyX2xpc3Qodm9pZCkgeworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICBwal9zc2xfY2lwaGVyIGNpcGhlcnNbMTAwXTsKKyAgICB1bnNpZ25lZCBjaXBoZXJfbnVtOworICAgIHVuc2lnbmVkIGk7CisKKyAgICBjaXBoZXJfbnVtID0gUEpfQVJSQVlfU0laRShjaXBoZXJzKTsKKyAgICBzdGF0dXMgPSBwal9zc2xfY2lwaGVyX2dldF9hdmFpbGFibGVzKGNpcGhlcnMsICZjaXBoZXJfbnVtKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5GQUlMRUQgdG8gZ2V0IGF2YWlsYWJsZSBjaXBoZXJzIiwgc3RhdHVzKTsKKwlyZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIFBKX0xPRygzLCAoIiIsICIuLi5Gb3VuZCAldSBjaXBoZXJzOiIsIGNpcGhlcl9udW0pKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY2lwaGVyX251bTsgKytpKSB7CisJY29uc3QgY2hhciogc3Q7CisJc3QgPSBwal9zc2xfY2lwaGVyX25hbWUoY2lwaGVyc1tpXSk7CisJaWYgKHN0ID09IE5VTEwpCisJICAgIHN0ID0gIltVbmtub3duXSI7CisKKwlQSl9MT0coMywgKCIiLCAiLi4uJTN1OiAweCUwOHg9JXMiLCBpKzEsIGNpcGhlcnNbaV0sIHN0KSk7CisgICAgfQorCisgICAgcmV0dXJuIFBKX1NVQ0NFU1M7Cit9CisKKworc3RydWN0IHRlc3Rfc3RhdGUKK3sKKyAgICBwal9wb29sX3QJICAgKnBvb2w7CSAgICAvKiBwb29sCQkJCSAgICAqLworICAgIHBqX2lvcXVldWVfdCAgICppb3F1ZXVlOwkgICAgLyogaW9xdWV1ZQkJCQkgICAgKi8KKyAgICBwal9ib29sX3QJICAgIGlzX3NlcnZlcjsJICAgIC8qIHNlcnZlciByb2xlIGZsYWcJCQkgICAgKi8KKyAgICBwal9ib29sX3QJICAgIGlzX3ZlcmJvc2U7CSAgICAvKiB2ZXJib3NlIGZsYWcsIGUuZzogY2VydCBpbmZvCSAgICAqLworICAgIHBqX2Jvb2xfdAkgICAgZWNobzsJICAgIC8qIGVjaG8gcmVjZWl2ZWQgZGF0YQkJICAgICovCisgICAgcGpfc3RhdHVzX3QJICAgIGVycjsJICAgIC8qIGVycm9yIGZsYWcJCQkgICAgKi8KKyAgICBwal9zaXplX3QJICAgIHNlbnQ7CSAgICAvKiBieXRlcyBzZW50CQkJICAgICovCisgICAgcGpfc2l6ZV90CSAgICByZWN2OwkgICAgLyogYnl0ZXMgcmVjZWl2ZWQJCQkgICAgKi8KKyAgICBwal91aW50OF90CSAgICByZWFkX2J1ZlsyNTZdOyAgLyogcmVhZCBidWZmZXIJCQkgICAgKi8KKyAgICBwal9ib29sX3QJICAgIGRvbmU7CSAgICAvKiB0ZXN0IGRvbmUgZmxhZwkJCSAgICAqLworICAgIGNoYXIJICAgKnNlbmRfc3RyOwkgICAgLyogZGF0YSB0byBzZW5kIG9uY2UgY29ubmVjdGVkCSAgICAqLworICAgIHBqX3NpemVfdAkgICAgc2VuZF9zdHJfbGVuOyAgIC8qIHNlbmQgZGF0YSBsZW5ndGgJCQkgICAgKi8KKyAgICBwal9ib29sX3QJICAgIGNoZWNrX2VjaG87CSAgICAvKiBmbGFnIHRvIGNvbXBhcmUgc2VudCAmIGVjaG9lZCBkYXRhICAgKi8KKyAgICBjb25zdCBjaGFyCSAgICpjaGVja19lY2hvX3B0cjsgLyogcG9pbnRlci9jdXJzb3IgZm9yIGNvbXBhcmluZyBkYXRhICAgICovCisgICAgc3RydWN0IHNlbmRfa2V5IHNlbmRfa2V5OwkgICAgLyogc2VuZCBvcCBrZXkJCQkgICAgKi8KK307CisKK3N0YXRpYyB2b2lkIGR1bXBfc3NsX2luZm8oY29uc3QgcGpfc3NsX3NvY2tfaW5mbyAqc2kpCit7CisgICAgY29uc3QgY2hhciAqdG1wX3N0OworCisgICAgLyogUHJpbnQgY2lwaGVyIG5hbWUgKi8KKyAgICB0bXBfc3QgPSBwal9zc2xfY2lwaGVyX25hbWUoc2ktPmNpcGhlcik7CisgICAgaWYgKHRtcF9zdCA9PSBOVUxMKQorCXRtcF9zdCA9ICJbVW5rbm93bl0iOworICAgIFBKX0xPRygzLCAoIiIsICIuLi4uLkNpcGhlcjogJXMiLCB0bXBfc3QpKTsKKworICAgIC8qIFByaW50IHJlbW90ZSBjZXJ0aWZpY2F0ZSBpbmZvIGFuZCB2ZXJpZmljYXRpb24gcmVzdWx0ICovCisgICAgaWYgKHNpLT5yZW1vdGVfY2VydF9pbmZvICYmIHNpLT5yZW1vdGVfY2VydF9pbmZvLT5zdWJqZWN0LmluZm8uc2xlbikgCisgICAgeworCWNoYXIgYnVmWzIwNDhdOworCWNvbnN0IGNoYXIgKnZlcmlmX21zZ3NbMzJdOworCXVuc2lnbmVkIHZlcmlmX21zZ19jbnQ7CisKKwkvKiBEdW1wIHJlbW90ZSBUTFMgY2VydGlmaWNhdGUgaW5mbyAqLworCVBKX0xPRygzLCAoIiIsICIuLi4uLlJlbW90ZSBjZXJ0aWZpY2F0ZSBpbmZvOiIpKTsKKwlwal9zc2xfY2VydF9pbmZvX2R1bXAoc2ktPnJlbW90ZV9jZXJ0X2luZm8sICIgICIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCVBKX0xPRygzLCgiIiwgIlxuJXMiLCBidWYpKTsKKworCS8qIER1bXAgcmVtb3RlIFRMUyBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gcmVzdWx0ICovCisJdmVyaWZfbXNnX2NudCA9IFBKX0FSUkFZX1NJWkUodmVyaWZfbXNncyk7CisJcGpfc3NsX2NlcnRfZ2V0X3ZlcmlmeV9zdGF0dXNfc3RyaW5ncyhzaS0+dmVyaWZ5X3N0YXR1cywKKwkJCQkJICAgICAgdmVyaWZfbXNncywgJnZlcmlmX21zZ19jbnQpOworCVBKX0xPRygzLCgiIiwgIi4uLi4uUmVtb3RlIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiByZXN1bHQ6ICVzIiwKKwkJICAodmVyaWZfbXNnX2NudCA9PSAxPyB2ZXJpZl9tc2dzWzBdOiIiKSkpOworCWlmICh2ZXJpZl9tc2dfY250ID4gMSkgeworCSAgICB1bnNpZ25lZCBpOworCSAgICBmb3IgKGkgPSAwOyBpIDwgdmVyaWZfbXNnX2NudDsgKytpKQorCQlQSl9MT0coMywoIiIsICIuLi4uLiAtICVzIiwgdmVyaWZfbXNnc1tpXSkpOworCX0KKyAgICB9Cit9CisKKworc3RhdGljIHBqX2Jvb2xfdCBzc2xfb25fY29ubmVjdF9jb21wbGV0ZShwal9zc2xfc29ja190ICpzc29jaywKKwkJCQkJIHBqX3N0YXR1c190IHN0YXR1cykKK3sKKyAgICBzdHJ1Y3QgdGVzdF9zdGF0ZSAqc3QgPSAoc3RydWN0IHRlc3Rfc3RhdGUqKSAKKwkJICAgIAkgICAgcGpfc3NsX3NvY2tfZ2V0X3VzZXJfZGF0YShzc29jayk7CisgICAgdm9pZCAqcmVhZF9idWZbMV07CisgICAgcGpfc3NsX3NvY2tfaW5mbyBpbmZvOworICAgIGNoYXIgYnVmMVs2NF0sIGJ1ZjJbNjRdOworCisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJYXBwX3BlcnJvcigiLi4uRVJST1Igc3NsX29uX2Nvbm5lY3RfY29tcGxldGUoKSIsIHN0YXR1cyk7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfc3NsX3NvY2tfZ2V0X2luZm8oc3NvY2ssICZpbmZvKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5FUlJPUiBwal9zc2xfc29ja19nZXRfaW5mbygpIiwgc3RhdHVzKTsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBwal9zb2NrYWRkcl9wcmludCgocGpfc29ja2FkZHJfdCopJmluZm8ubG9jYWxfYWRkciwgYnVmMSwgc2l6ZW9mKGJ1ZjEpLCAxKTsKKyAgICBwal9zb2NrYWRkcl9wcmludCgocGpfc29ja2FkZHJfdCopJmluZm8ucmVtb3RlX2FkZHIsIGJ1ZjIsIHNpemVvZihidWYyKSwgMSk7CisgICAgUEpfTE9HKDMsICgiIiwgIi4uLkNvbm5lY3RlZCAlcyAtPiAlcyEiLCBidWYxLCBidWYyKSk7CisKKyAgICBpZiAoc3QtPmlzX3ZlcmJvc2UpCisJZHVtcF9zc2xfaW5mbygmaW5mbyk7CisKKyAgICAvKiBTdGFydCByZWFkaW5nIGRhdGEgKi8KKyAgICByZWFkX2J1ZlswXSA9IHN0LT5yZWFkX2J1ZjsKKyAgICBzdGF0dXMgPSBwal9zc2xfc29ja19zdGFydF9yZWFkMihzc29jaywgc3QtPnBvb2wsIHNpemVvZihzdC0+cmVhZF9idWYpLCAodm9pZCoqKXJlYWRfYnVmLCAwKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5FUlJPUiBwal9zc2xfc29ja19zdGFydF9yZWFkMigpIiwgc3RhdHVzKTsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICAvKiBTdGFydCBzZW5kaW5nIGRhdGEgKi8KKyAgICB3aGlsZSAoc3QtPnNlbnQgPCBzdC0+c2VuZF9zdHJfbGVuKSB7CisJcGpfc3NpemVfdCBzaXplOworCisJc2l6ZSA9IHN0LT5zZW5kX3N0cl9sZW4gLSBzdC0+c2VudDsKKwlzdGF0dXMgPSBwal9zc2xfc29ja19zZW5kKHNzb2NrLCAocGpfaW9xdWV1ZV9vcF9rZXlfdCopJnN0LT5zZW5kX2tleSwgCisJCQkJICBzdC0+c2VuZF9zdHIgKyBzdC0+c2VudCwgJnNpemUsIDApOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUyAmJiBzdGF0dXMgIT0gUEpfRVBFTkRJTkcpIHsKKwkgICAgYXBwX3BlcnJvcigiLi4uRVJST1IgcGpfc3NsX3NvY2tfc2VuZCgpIiwgc3RhdHVzKTsKKwkgICAgZ290byBvbl9yZXR1cm47CisJfQorCisJaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKQorCSAgICBzdC0+c2VudCArPSBzaXplOworCWVsc2UKKwkgICAgYnJlYWs7CisgICAgfQorCitvbl9yZXR1cm46CisgICAgc3QtPmVyciA9IHN0YXR1czsKKworICAgIGlmIChzdC0+ZXJyICE9IFBKX1NVQ0NFU1MpIHsKKwlwal9zc2xfc29ja19jbG9zZShzc29jayk7CisJY2xpZW50c19udW0tLTsKKwlyZXR1cm4gUEpfRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIFBKX1RSVUU7Cit9CisKKworc3RhdGljIHBqX2Jvb2xfdCBzc2xfb25fYWNjZXB0X2NvbXBsZXRlKHBqX3NzbF9zb2NrX3QgKnNzb2NrLAorCQkJCQlwal9zc2xfc29ja190ICpuZXdzb2NrLAorCQkJCQljb25zdCBwal9zb2NrYWRkcl90ICpzcmNfYWRkciwKKwkJCQkJaW50IHNyY19hZGRyX2xlbikKK3sKKyAgICBzdHJ1Y3QgdGVzdF9zdGF0ZSAqcGFyZW50X3N0ID0gKHN0cnVjdCB0ZXN0X3N0YXRlKikgCisJCQkJICAgcGpfc3NsX3NvY2tfZ2V0X3VzZXJfZGF0YShzc29jayk7CisgICAgc3RydWN0IHRlc3Rfc3RhdGUgKnN0OworICAgIHZvaWQgKnJlYWRfYnVmWzFdOworICAgIHBqX3NzbF9zb2NrX2luZm8gaW5mbzsKKyAgICBjaGFyIGJ1Zls2NF07CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfVU5VU0VEX0FSRyhzcmNfYWRkcl9sZW4pOworCisgICAgLyogRHVwbGljYXRlIHBhcmVudCB0ZXN0IHN0YXRlIHRvIG5ld2x5IGFjY2VwdGVkIHRlc3Qgc3RhdGUgKi8KKyAgICBzdCA9IChzdHJ1Y3QgdGVzdF9zdGF0ZSopcGpfcG9vbF96YWxsb2MocGFyZW50X3N0LT5wb29sLCBzaXplb2Yoc3RydWN0IHRlc3Rfc3RhdGUpKTsKKyAgICAqc3QgPSAqcGFyZW50X3N0OworICAgIHBqX3NzbF9zb2NrX3NldF91c2VyX2RhdGEobmV3c29jaywgc3QpOworCisgICAgc3RhdHVzID0gcGpfc3NsX3NvY2tfZ2V0X2luZm8obmV3c29jaywgJmluZm8pOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLkVSUk9SIHBqX3NzbF9zb2NrX2dldF9pbmZvKCkiLCBzdGF0dXMpOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIHBqX3NvY2thZGRyX3ByaW50KHNyY19hZGRyLCBidWYsIHNpemVvZihidWYpLCAxKTsKKyAgICBQSl9MT0coMywgKCIiLCAiLi4uQWNjZXB0ZWQgY29ubmVjdGlvbiBmcm9tICVzIiwgYnVmKSk7CisKKyAgICBpZiAoc3QtPmlzX3ZlcmJvc2UpCisJZHVtcF9zc2xfaW5mbygmaW5mbyk7CisKKyAgICAvKiBTdGFydCByZWFkaW5nIGRhdGEgKi8KKyAgICByZWFkX2J1ZlswXSA9IHN0LT5yZWFkX2J1ZjsKKyAgICBzdGF0dXMgPSBwal9zc2xfc29ja19zdGFydF9yZWFkMihuZXdzb2NrLCBzdC0+cG9vbCwgc2l6ZW9mKHN0LT5yZWFkX2J1ZiksICh2b2lkKiopcmVhZF9idWYsIDApOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLkVSUk9SIHBqX3NzbF9zb2NrX3N0YXJ0X3JlYWQyKCkiLCBzdGF0dXMpOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIFN0YXJ0IHNlbmRpbmcgZGF0YSAqLworICAgIHdoaWxlIChzdC0+c2VudCA8IHN0LT5zZW5kX3N0cl9sZW4pIHsKKwlwal9zc2l6ZV90IHNpemU7CisKKwlzaXplID0gc3QtPnNlbmRfc3RyX2xlbiAtIHN0LT5zZW50OworCXN0YXR1cyA9IHBqX3NzbF9zb2NrX3NlbmQobmV3c29jaywgKHBqX2lvcXVldWVfb3Bfa2V5X3QqKSZzdC0+c2VuZF9rZXksIAorCQkJCSAgc3QtPnNlbmRfc3RyICsgc3QtPnNlbnQsICZzaXplLCAwKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgJiYgc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisJICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIHBqX3NzbF9zb2NrX3NlbmQoKSIsIHN0YXR1cyk7CisJICAgIGdvdG8gb25fcmV0dXJuOworCX0KKworCWlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykKKwkgICAgc3QtPnNlbnQgKz0gc2l6ZTsKKwllbHNlCisJICAgIGJyZWFrOworICAgIH0KKworb25fcmV0dXJuOgorICAgIHN0LT5lcnIgPSBzdGF0dXM7CisKKyAgICBpZiAoc3QtPmVyciAhPSBQSl9TVUNDRVNTKSB7CisJcGpfc3NsX3NvY2tfY2xvc2UobmV3c29jayk7CisJcmV0dXJuIFBKX0ZBTFNFOworICAgIH0KKworICAgIHJldHVybiBQSl9UUlVFOworfQorCitzdGF0aWMgcGpfYm9vbF90IHNzbF9vbl9kYXRhX3JlYWQocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJICB2b2lkICpkYXRhLAorCQkJCSAgcGpfc2l6ZV90IHNpemUsCisJCQkJICBwal9zdGF0dXNfdCBzdGF0dXMsCisJCQkJICBwal9zaXplX3QgKnJlbWFpbmRlcikKK3sKKyAgICBzdHJ1Y3QgdGVzdF9zdGF0ZSAqc3QgPSAoc3RydWN0IHRlc3Rfc3RhdGUqKSAKKwkJCSAgICAgcGpfc3NsX3NvY2tfZ2V0X3VzZXJfZGF0YShzc29jayk7CisKKyAgICBQSl9VTlVTRURfQVJHKHJlbWFpbmRlcik7CisgICAgUEpfVU5VU0VEX0FSRyhkYXRhKTsKKworICAgIGlmIChzaXplID4gMCkgeworCXBqX3NpemVfdCBjb25zdW1lZDsKKworCS8qIFNldCByYW5kb20gcmVtYWluZGVyICovCisJKnJlbWFpbmRlciA9IHBqX3JhbmQoKSAlIDEwMDsKKworCS8qIEFwcGx5IHplcm8gcmVtYWluZGVyIGlmOgorCSAqIC0gcmVtYWluZGVyIGlzIGxlc3MgdGhhbiBzaXplLCBvcgorCSAqIC0gY29ubmVjdGlvbiBjbG9zZWQvZXJyb3IKKwkgKiAtIGVjaG8vY2hlY2tfZWNvIHNldAorCSAqLworCWlmICgqcmVtYWluZGVyID4gc2l6ZSB8fCBzdGF0dXMgIT0gUEpfU1VDQ0VTUyB8fCBzdC0+ZWNobyB8fCBzdC0+Y2hlY2tfZWNobykKKwkgICAgKnJlbWFpbmRlciA9IDA7CisKKwljb25zdW1lZCA9IHNpemUgLSAqcmVtYWluZGVyOworCXN0LT5yZWN2ICs9IGNvbnN1bWVkOworCisJLy9wcmludGYoIiUuKnMiLCBjb25zdW1lZCwgKGNoYXIqKWRhdGEpOworCisJcGpfbWVtbW92ZShkYXRhLCAoY2hhciopZGF0YSArIGNvbnN1bWVkLCAqcmVtYWluZGVyKTsKKworCS8qIEVjaG8gZGF0YSB3aGVuIHNwZWNpZmllZCB0byAqLworCWlmIChzdC0+ZWNobykgeworCSAgICBwal9zc2l6ZV90IHNpemVfID0gY29uc3VtZWQ7CisJICAgIHN0YXR1cyA9IHBqX3NzbF9zb2NrX3NlbmQoc3NvY2ssIChwal9pb3F1ZXVlX29wX2tleV90Kikmc3QtPnNlbmRfa2V5LCBkYXRhLCAmc2l6ZV8sIDApOworCSAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MgJiYgc3RhdHVzICE9IFBKX0VQRU5ESU5HKSB7CisJCWFwcF9wZXJyb3IoIi4uLkVSUk9SIHBqX3NzbF9zb2NrX3NlbmQoKSIsIHN0YXR1cyk7CisJCWdvdG8gb25fcmV0dXJuOworCSAgICB9CisKKwkgICAgaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKQorCQlzdC0+c2VudCArPSBzaXplXzsKKwl9CisKKwkvKiBWZXJpZnkgZWNob2VkIGRhdGEgd2hlbiBzcGVjaWZpZWQgdG8gKi8KKwlpZiAoc3QtPmNoZWNrX2VjaG8pIHsKKwkgICAgaWYgKCFzdC0+Y2hlY2tfZWNob19wdHIpCisJCXN0LT5jaGVja19lY2hvX3B0ciA9IHN0LT5zZW5kX3N0cjsKKworCSAgICBpZiAocGpfbWVtY21wKHN0LT5jaGVja19lY2hvX3B0ciwgZGF0YSwgY29uc3VtZWQpKSB7CisJCXN0YXR1cyA9IFBKX0VJTlZBTDsKKwkJYXBwX3BlcnJvcigiLi4uRVJST1IgZWNob2VkIGRhdGEgbm90IGV4YWN0Iiwgc3RhdHVzKTsKKwkJZ290byBvbl9yZXR1cm47CisJICAgIH0KKwkgICAgc3QtPmNoZWNrX2VjaG9fcHRyICs9IGNvbnN1bWVkOworCisJICAgIC8qIEVjaG8gcmVjZWl2ZWQgY29tcGxldGVseSAqLworCSAgICBpZiAoc3QtPnNlbmRfc3RyX2xlbiA9PSBzdC0+cmVjdikgeworCQlwal9zc2xfc29ja19pbmZvIGluZm87CisJCWNoYXIgYnVmWzY0XTsKKworCQlzdGF0dXMgPSBwal9zc2xfc29ja19nZXRfaW5mbyhzc29jaywgJmluZm8pOworCQlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkJICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIHBqX3NzbF9zb2NrX2dldF9pbmZvKCkiLCBzdGF0dXMpOworCQkgICAgZ290byBvbl9yZXR1cm47CisJCX0KKworCQlwal9zb2NrYWRkcl9wcmludCgocGpfc29ja2FkZHJfdCopJmluZm8ubG9jYWxfYWRkciwgYnVmLCBzaXplb2YoYnVmKSwgMSk7CisJCVBKX0xPRygzLCAoIiIsICIuLi4lcyBzdWNjZXNzZnVsbHkgcmVjdiAlZCBieXRlcyBlY2hvIiwgYnVmLCBzdC0+cmVjdikpOworCQlzdC0+ZG9uZSA9IFBKX1RSVUU7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJaWYgKHN0YXR1cyA9PSBQSl9FRU9GKSB7CisJICAgIHN0YXR1cyA9IFBKX1NVQ0NFU1M7CisJICAgIHN0LT5kb25lID0gUEpfVFJVRTsKKwl9IGVsc2UgeworCSAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBzc2xfb25fZGF0YV9yZWFkKCkiLCBzdGF0dXMpOworCX0KKyAgICB9CisKK29uX3JldHVybjoKKyAgICBzdC0+ZXJyID0gc3RhdHVzOworCisgICAgaWYgKHN0LT5lcnIgIT0gUEpfU1VDQ0VTUyB8fCBzdC0+ZG9uZSkgeworCXBqX3NzbF9zb2NrX2Nsb3NlKHNzb2NrKTsKKwlpZiAoIXN0LT5pc19zZXJ2ZXIpCisJICAgIGNsaWVudHNfbnVtLS07CisJcmV0dXJuIFBKX0ZBTFNFOworICAgIH0KKworICAgIHJldHVybiBQSl9UUlVFOworfQorCitzdGF0aWMgcGpfYm9vbF90IHNzbF9vbl9kYXRhX3NlbnQocGpfc3NsX3NvY2tfdCAqc3NvY2ssCisJCQkJICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksCisJCQkJICBwal9zc2l6ZV90IHNlbnQpCit7CisgICAgc3RydWN0IHRlc3Rfc3RhdGUgKnN0ID0gKHN0cnVjdCB0ZXN0X3N0YXRlKikKKwkJCSAgICAgcGpfc3NsX3NvY2tfZ2V0X3VzZXJfZGF0YShzc29jayk7CisgICAgUEpfVU5VU0VEX0FSRyhvcF9rZXkpOworCisgICAgaWYgKHNlbnQgPCAwKSB7CisJc3QtPmVyciA9IChwal9zdGF0dXNfdCktc2VudDsKKyAgICB9IGVsc2UgeworCXN0LT5zZW50ICs9IHNlbnQ7CisKKwkvKiBTZW5kIG1vcmUgaWYgYW55ICovCisJd2hpbGUgKHN0LT5zZW50IDwgc3QtPnNlbmRfc3RyX2xlbikgeworCSAgICBwal9zc2l6ZV90IHNpemU7CisJICAgIHBqX3N0YXR1c190IHN0YXR1czsKKworCSAgICBzaXplID0gc3QtPnNlbmRfc3RyX2xlbiAtIHN0LT5zZW50OworCSAgICBzdGF0dXMgPSBwal9zc2xfc29ja19zZW5kKHNzb2NrLCAocGpfaW9xdWV1ZV9vcF9rZXlfdCopJnN0LT5zZW5kX2tleSwgCisJCQkJICAgICAgc3QtPnNlbmRfc3RyICsgc3QtPnNlbnQsICZzaXplLCAwKTsKKwkgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTICYmIHN0YXR1cyAhPSBQSl9FUEVORElORykgeworCQlhcHBfcGVycm9yKCIuLi5FUlJPUiBwal9zc2xfc29ja19zZW5kKCkiLCBzdGF0dXMpOworCQlzdC0+ZXJyID0gc3RhdHVzOworCQlicmVhazsKKwkgICAgfQorCisJICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykKKwkJc3QtPnNlbnQgKz0gc2l6ZTsKKwkgICAgZWxzZQorCQlicmVhazsKKwl9CisgICAgfQorCisgICAgaWYgKHN0LT5lcnIgIT0gUEpfU1VDQ0VTUykgeworCXBqX3NzbF9zb2NrX2Nsb3NlKHNzb2NrKTsKKwlpZiAoIXN0LT5pc19zZXJ2ZXIpCisJICAgIGNsaWVudHNfbnVtLS07CisJcmV0dXJuIFBKX0ZBTFNFOworICAgIH0KKworICAgIHJldHVybiBQSl9UUlVFOworfQorCisjZGVmaW5lIEhUVFBfUkVRCQkiR0VUIC8gSFRUUC8xLjBcclxuXHJcbiI7CisjZGVmaW5lIEhUVFBfU0VSVkVSX0FERFIJInRyYWMucGpzaXAub3JnIgorI2RlZmluZSBIVFRQX1NFUlZFUl9QT1JUCTQ0MworCitzdGF0aWMgaW50IGh0dHBzX2NsaWVudF90ZXN0KHVuc2lnbmVkIG1zX3RpbWVvdXQpCit7CisgICAgcGpfcG9vbF90ICpwb29sID0gTlVMTDsKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWUgPSBOVUxMOworICAgIHBqX3RpbWVyX2hlYXBfdCAqdGltZXIgPSBOVUxMOworICAgIHBqX3NzbF9zb2NrX3QgKnNzb2NrID0gTlVMTDsKKyAgICBwal9zc2xfc29ja19wYXJhbSBwYXJhbTsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisgICAgc3RydWN0IHRlc3Rfc3RhdGUgc3RhdGUgPSB7MH07CisgICAgcGpfc29ja2FkZHIgbG9jYWxfYWRkciwgcmVtX2FkZHI7CisgICAgcGpfc3RyX3QgdG1wX3N0OworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgImh0dHBzX2dldCIsIDI1NiwgMjU2LCBOVUxMKTsKKworICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfY3JlYXRlKHBvb2wsIDQsICZpb3F1ZXVlKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBwal90aW1lcl9oZWFwX2NyZWF0ZShwb29sLCA0LCAmdGltZXIpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIHN0YXRlLnBvb2wgPSBwb29sOworICAgIHN0YXRlLnNlbmRfc3RyID0gSFRUUF9SRVE7CisgICAgc3RhdGUuc2VuZF9zdHJfbGVuID0gcGpfYW5zaV9zdHJsZW4oc3RhdGUuc2VuZF9zdHIpOworICAgIHN0YXRlLmlzX3ZlcmJvc2UgPSBQSl9UUlVFOworCisgICAgcGpfc3NsX3NvY2tfcGFyYW1fZGVmYXVsdCgmcGFyYW0pOworICAgIHBhcmFtLmNiLm9uX2Nvbm5lY3RfY29tcGxldGUgPSAmc3NsX29uX2Nvbm5lY3RfY29tcGxldGU7CisgICAgcGFyYW0uY2Iub25fZGF0YV9yZWFkID0gJnNzbF9vbl9kYXRhX3JlYWQ7CisgICAgcGFyYW0uY2Iub25fZGF0YV9zZW50ID0gJnNzbF9vbl9kYXRhX3NlbnQ7CisgICAgcGFyYW0uaW9xdWV1ZSA9IGlvcXVldWU7CisgICAgcGFyYW0udXNlcl9kYXRhID0gJnN0YXRlOworICAgIHBhcmFtLnNlcnZlcl9uYW1lID0gcGpfc3RyKChjaGFyKilIVFRQX1NFUlZFUl9BRERSKTsKKyAgICBwYXJhbS50aW1lcl9oZWFwID0gdGltZXI7CisgICAgcGFyYW0udGltZW91dC5zZWMgPSAwOworICAgIHBhcmFtLnRpbWVvdXQubXNlYyA9IG1zX3RpbWVvdXQ7CisgICAgcGFyYW0ucHJvdG8gPSBQSl9TU0xfU09DS19QUk9UT19TU0wyMzsKKyAgICBwal90aW1lX3ZhbF9ub3JtYWxpemUoJnBhcmFtLnRpbWVvdXQpOworCisgICAgc3RhdHVzID0gcGpfc3NsX3NvY2tfY3JlYXRlKHBvb2wsICZwYXJhbSwgJnNzb2NrKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBwal9zb2NrYWRkcl9pbml0KFBKX0FGX0lORVQsICZsb2NhbF9hZGRyLCBwal9zdHJzZXQyKCZ0bXBfc3QsICIwLjAuMC4wIiksIDApOworICAgIHBqX3NvY2thZGRyX2luaXQoUEpfQUZfSU5FVCwgJnJlbV9hZGRyLCBwal9zdHJzZXQyKCZ0bXBfc3QsIEhUVFBfU0VSVkVSX0FERFIpLCBIVFRQX1NFUlZFUl9QT1JUKTsKKyAgICBzdGF0dXMgPSBwal9zc2xfc29ja19zdGFydF9jb25uZWN0KHNzb2NrLCBwb29sLCAmbG9jYWxfYWRkciwgJnJlbV9hZGRyLCBzaXplb2YocmVtX2FkZHIpKTsKKyAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpIHsKKwlzc2xfb25fY29ubmVjdF9jb21wbGV0ZShzc29jaywgUEpfU1VDQ0VTUyk7CisgICAgfSBlbHNlIGlmIChzdGF0dXMgPT0gUEpfRVBFTkRJTkcpIHsKKwlzdGF0dXMgPSBQSl9TVUNDRVNTOworICAgIH0gZWxzZSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogV2FpdCB1bnRpbCBldmVyeXRoaW5nIGhhcyBiZWVuIHNlbnQvcmVjZWl2ZWQgKi8KKyAgICB3aGlsZSAoc3RhdGUuZXJyID09IFBKX1NVQ0NFU1MgJiYgIXN0YXRlLmRvbmUpIHsKKyNpZmRlZiBQSl9TWU1CSUFOCisJcGpfc3ltYmlhbm9zX3BvbGwoLTEsIDEwMDApOworI2Vsc2UKKwlwal90aW1lX3ZhbCBkZWxheSA9IHswLCAxMDB9OworCXBqX2lvcXVldWVfcG9sbChpb3F1ZXVlLCAmZGVsYXkpOworCXBqX3RpbWVyX2hlYXBfcG9sbCh0aW1lciwgJmRlbGF5KTsKKyNlbmRpZgorICAgIH0KKworICAgIGlmIChzdGF0ZS5lcnIpIHsKKwlzdGF0dXMgPSBzdGF0ZS5lcnI7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgUEpfTE9HKDMsICgiIiwgIi4uLkRvbmUhIikpOworICAgIFBKX0xPRygzLCAoIiIsICIuLi4uLlNlbnQvcmVjdjogJWQvJWQgYnl0ZXMiLCBzdGF0ZS5zZW50LCBzdGF0ZS5yZWN2KSk7CisKK29uX3JldHVybjoKKyAgICBpZiAoc3NvY2sgJiYgIXN0YXRlLmVyciAmJiAhc3RhdGUuZG9uZSkgCisJcGpfc3NsX3NvY2tfY2xvc2Uoc3NvY2spOworICAgIGlmIChpb3F1ZXVlKQorCXBqX2lvcXVldWVfZGVzdHJveShpb3F1ZXVlKTsKKyAgICBpZiAodGltZXIpCisJcGpfdGltZXJfaGVhcF9kZXN0cm95KHRpbWVyKTsKKyAgICBpZiAocG9vbCkKKwlwal9wb29sX3JlbGVhc2UocG9vbCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisKK3N0YXRpYyBpbnQgZWNob190ZXN0KHBqX3NzbF9zb2NrX3Byb3RvIHNydl9wcm90bywgcGpfc3NsX3NvY2tfcHJvdG8gY2xpX3Byb3RvLAorCQkgICAgIHBqX3NzbF9jaXBoZXIgc3J2X2NpcGhlciwgcGpfc3NsX2NpcGhlciBjbGlfY2lwaGVyLAorCQkgICAgIHBqX2Jvb2xfdCByZXFfY2xpZW50X2NlcnQsIHBqX2Jvb2xfdCBjbGllbnRfcHJvdmlkZV9jZXJ0KQoreworICAgIHBqX3Bvb2xfdCAqcG9vbCA9IE5VTEw7CisgICAgcGpfaW9xdWV1ZV90ICppb3F1ZXVlID0gTlVMTDsKKyAgICBwal9zc2xfc29ja190ICpzc29ja19zZXJ2ID0gTlVMTDsKKyAgICBwal9zc2xfc29ja190ICpzc29ja19jbGkgPSBOVUxMOworICAgIHBqX3NzbF9zb2NrX3BhcmFtIHBhcmFtOworICAgIHN0cnVjdCB0ZXN0X3N0YXRlIHN0YXRlX3NlcnYgPSB7IDAgfTsKKyAgICBzdHJ1Y3QgdGVzdF9zdGF0ZSBzdGF0ZV9jbGkgPSB7IDAgfTsKKyAgICBwal9zb2NrYWRkciBhZGRyLCBsaXN0ZW5fYWRkcjsKKyAgICBwal9zc2xfY2lwaGVyIGNpcGhlcnNbMV07CisgICAgcGpfc3NsX2NlcnRfdCAqY2VydCA9IE5VTEw7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgInNzbF9lY2hvIiwgMjU2LCAyNTYsIE5VTEwpOworCisgICAgc3RhdHVzID0gcGpfaW9xdWV1ZV9jcmVhdGUocG9vbCwgNCwgJmlvcXVldWUpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIHBqX3NzbF9zb2NrX3BhcmFtX2RlZmF1bHQoJnBhcmFtKTsKKyAgICBwYXJhbS5jYi5vbl9hY2NlcHRfY29tcGxldGUgPSAmc3NsX29uX2FjY2VwdF9jb21wbGV0ZTsKKyAgICBwYXJhbS5jYi5vbl9jb25uZWN0X2NvbXBsZXRlID0gJnNzbF9vbl9jb25uZWN0X2NvbXBsZXRlOworICAgIHBhcmFtLmNiLm9uX2RhdGFfcmVhZCA9ICZzc2xfb25fZGF0YV9yZWFkOworICAgIHBhcmFtLmNiLm9uX2RhdGFfc2VudCA9ICZzc2xfb25fZGF0YV9zZW50OworICAgIHBhcmFtLmlvcXVldWUgPSBpb3F1ZXVlOworICAgIHBhcmFtLmNpcGhlcnMgPSBjaXBoZXJzOworCisgICAgLyogSW5pdCBkZWZhdWx0IGJpbmQgYWRkcmVzcyAqLworICAgIHsKKwlwal9zdHJfdCB0bXBfc3Q7CisJcGpfc29ja2FkZHJfaW5pdChQSl9BRl9JTkVULCAmYWRkciwgcGpfc3Ryc2V0MigmdG1wX3N0LCAiMTI3LjAuMC4xIiksIDApOworICAgIH0KKworICAgIC8qID09PSBTRVJWRVIgPT09ICovCisgICAgcGFyYW0ucHJvdG8gPSBzcnZfcHJvdG87CisgICAgcGFyYW0udXNlcl9kYXRhID0gJnN0YXRlX3NlcnY7CisgICAgcGFyYW0uY2lwaGVyc19udW0gPSAoc3J2X2NpcGhlciA9PSAtMSk/IDAgOiAxOworICAgIHBhcmFtLnJlcXVpcmVfY2xpZW50X2NlcnQgPSByZXFfY2xpZW50X2NlcnQ7CisgICAgY2lwaGVyc1swXSA9IHNydl9jaXBoZXI7CisKKyAgICBzdGF0ZV9zZXJ2LnBvb2wgPSBwb29sOworICAgIHN0YXRlX3NlcnYuZWNobyA9IFBKX1RSVUU7CisgICAgc3RhdGVfc2Vydi5pc19zZXJ2ZXIgPSBQSl9UUlVFOworICAgIHN0YXRlX3NlcnYuaXNfdmVyYm9zZSA9IFBKX1RSVUU7CisKKyAgICBzdGF0dXMgPSBwal9zc2xfc29ja19jcmVhdGUocG9vbCwgJnBhcmFtLCAmc3NvY2tfc2Vydik7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogU2V0IHNlcnZlciBjZXJ0ICovCisgICAgeworCXBqX3N0cl90IHRtcDEsIHRtcDIsIHRtcDMsIHRtcDQ7CisKKwlzdGF0dXMgPSBwal9zc2xfY2VydF9sb2FkX2Zyb21fZmlsZXMocG9vbCwgCisJCQkJCSAgICAgcGpfc3Ryc2V0MigmdG1wMSwgKGNoYXIqKUNFUlRfQ0FfRklMRSksIAorCQkJCQkgICAgIHBqX3N0cnNldDIoJnRtcDIsIChjaGFyKilDRVJUX0ZJTEUpLCAKKwkJCQkJICAgICBwal9zdHJzZXQyKCZ0bXAzLCAoY2hhciopQ0VSVF9QUklWS0VZX0ZJTEUpLCAKKwkJCQkJICAgICBwal9zdHJzZXQyKCZ0bXA0LCAoY2hhciopQ0VSVF9QUklWS0VZX1BBU1MpLCAKKwkJCQkJICAgICAmY2VydCk7CisJaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIGdvdG8gb25fcmV0dXJuOworCX0KKworCXN0YXR1cyA9IHBqX3NzbF9zb2NrX3NldF9jZXJ0aWZpY2F0ZShzc29ja19zZXJ2LCBwb29sLCBjZXJ0KTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgZ290byBvbl9yZXR1cm47CisJfQorICAgIH0KKworICAgIHN0YXR1cyA9IHBqX3NzbF9zb2NrX3N0YXJ0X2FjY2VwdChzc29ja19zZXJ2LCBwb29sLCAmYWRkciwgcGpfc29ja2FkZHJfZ2V0X2xlbigmYWRkcikpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIEdldCBsaXN0ZW5lciBhZGRyZXNzICovCisgICAgeworCXBqX3NzbF9zb2NrX2luZm8gaW5mbzsKKworCXBqX3NzbF9zb2NrX2dldF9pbmZvKHNzb2NrX3NlcnYsICZpbmZvKTsKKwlwal9zb2NrYWRkcl9jcCgmbGlzdGVuX2FkZHIsICZpbmZvLmxvY2FsX2FkZHIpOworICAgIH0KKworICAgIC8qID09PSBDTElFTlQgPT09ICovCisgICAgcGFyYW0ucHJvdG8gPSBjbGlfcHJvdG87CisgICAgcGFyYW0udXNlcl9kYXRhID0gJnN0YXRlX2NsaTsKKyAgICBwYXJhbS5jaXBoZXJzX251bSA9IChjbGlfY2lwaGVyID09IC0xKT8gMCA6IDE7CisgICAgY2lwaGVyc1swXSA9IGNsaV9jaXBoZXI7CisKKyAgICBzdGF0ZV9jbGkucG9vbCA9IHBvb2w7CisgICAgc3RhdGVfY2xpLmNoZWNrX2VjaG8gPSBQSl9UUlVFOworICAgIHN0YXRlX2NsaS5pc192ZXJib3NlID0gUEpfVFJVRTsKKworICAgIHsKKwlwal90aW1lX3ZhbCBub3c7CisKKwlwal9nZXR0aW1lb2ZkYXkoJm5vdyk7CisJcGpfc3JhbmQoKHVuc2lnbmVkKW5vdy5zZWMpOworCXN0YXRlX2NsaS5zZW5kX3N0cl9sZW4gPSAocGpfcmFuZCgpICUgNSArIDEpICogMTAyNCArIHBqX3JhbmQoKSAlIDEwMjQ7CisgICAgfQorICAgIHN0YXRlX2NsaS5zZW5kX3N0ciA9IChjaGFyKilwal9wb29sX2FsbG9jKHBvb2wsIHN0YXRlX2NsaS5zZW5kX3N0cl9sZW4pOworICAgIHsKKwl1bnNpZ25lZCBpOworCWZvciAoaSA9IDA7IGkgPCBzdGF0ZV9jbGkuc2VuZF9zdHJfbGVuOyArK2kpCisJICAgIHN0YXRlX2NsaS5zZW5kX3N0cltpXSA9IChjaGFyKShwal9yYW5kKCkgJSAyNTYpOworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX3NzbF9zb2NrX2NyZWF0ZShwb29sLCAmcGFyYW0sICZzc29ja19jbGkpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIFNldCBjZXJ0IGZvciBjbGllbnQgKi8KKyAgICB7CisKKwlpZiAoIWNsaWVudF9wcm92aWRlX2NlcnQpIHsKKwkgICAgcGpfc3RyX3QgdG1wMSwgdG1wMjsKKworCSAgICBwal9zdHJzZXQyKCZ0bXAxLCAoY2hhciopQ0VSVF9DQV9GSUxFKTsKKwkgICAgcGpfc3Ryc2V0MigmdG1wMiwgTlVMTCk7CisJICAgIHN0YXR1cyA9IHBqX3NzbF9jZXJ0X2xvYWRfZnJvbV9maWxlcyhwb29sLCAKKwkJCQkJCSAmdG1wMSwgJnRtcDIsICZ0bXAyLCAmdG1wMiwKKwkJCQkJCSAmY2VydCk7CisJICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCQlnb3RvIG9uX3JldHVybjsKKwkgICAgfQorCX0KKworCXN0YXR1cyA9IHBqX3NzbF9zb2NrX3NldF9jZXJ0aWZpY2F0ZShzc29ja19jbGksIHBvb2wsIGNlcnQpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBnb3RvIG9uX3JldHVybjsKKwl9CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfc3NsX3NvY2tfc3RhcnRfY29ubmVjdChzc29ja19jbGksIHBvb2wsICZhZGRyLCAmbGlzdGVuX2FkZHIsIHBqX3NvY2thZGRyX2dldF9sZW4oJmFkZHIpKTsKKyAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpIHsKKwlzc2xfb25fY29ubmVjdF9jb21wbGV0ZShzc29ja19jbGksIFBKX1NVQ0NFU1MpOworICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IFBKX0VQRU5ESU5HKSB7CisJc3RhdHVzID0gUEpfU1VDQ0VTUzsKKyAgICB9IGVsc2UgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIFdhaXQgdW50aWwgZXZlcnl0aGluZyBoYXMgYmVlbiBzZW50L3JlY2VpdmVkIG9yIGVycm9yICovCisgICAgd2hpbGUgKCFzdGF0ZV9zZXJ2LmVyciAmJiAhc3RhdGVfY2xpLmVyciAmJiAhc3RhdGVfc2Vydi5kb25lICYmICFzdGF0ZV9jbGkuZG9uZSkKKyAgICB7CisjaWZkZWYgUEpfU1lNQklBTgorCXBqX3N5bWJpYW5vc19wb2xsKC0xLCAxMDAwKTsKKyNlbHNlCisJcGpfdGltZV92YWwgZGVsYXkgPSB7MCwgMTAwfTsKKwlwal9pb3F1ZXVlX3BvbGwoaW9xdWV1ZSwgJmRlbGF5KTsKKyNlbmRpZgorICAgIH0KKworICAgIC8qIENsZWFuIHVwIHNvY2tldHMgKi8KKyAgICB7CisJcGpfdGltZV92YWwgZGVsYXkgPSB7MCwgMTAwfTsKKwl3aGlsZSAocGpfaW9xdWV1ZV9wb2xsKGlvcXVldWUsICZkZWxheSkgPiAwKTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVfc2Vydi5lcnIgfHwgc3RhdGVfY2xpLmVycikgeworCWlmIChzdGF0ZV9zZXJ2LmVyciAhPSBQSl9TVUNDRVNTKQorCSAgICBzdGF0dXMgPSBzdGF0ZV9zZXJ2LmVycjsKKwllbHNlCisJICAgIHN0YXR1cyA9IHN0YXRlX2NsaS5lcnI7CisKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBQSl9MT0coMywgKCIiLCAiLi4uRG9uZSEiKSk7CisgICAgUEpfTE9HKDMsICgiIiwgIi4uLi4uU2VudC9yZWN2OiAlZC8lZCBieXRlcyIsIHN0YXRlX2NsaS5zZW50LCBzdGF0ZV9jbGkucmVjdikpOworCitvbl9yZXR1cm46CisgICAgaWYgKHNzb2NrX3NlcnYpCisJcGpfc3NsX3NvY2tfY2xvc2Uoc3NvY2tfc2Vydik7CisgICAgaWYgKHNzb2NrX2NsaSAmJiAhc3RhdGVfY2xpLmVyciAmJiAhc3RhdGVfY2xpLmRvbmUpIAorCXBqX3NzbF9zb2NrX2Nsb3NlKHNzb2NrX2NsaSk7CisgICAgaWYgKGlvcXVldWUpCisJcGpfaW9xdWV1ZV9kZXN0cm95KGlvcXVldWUpOworICAgIGlmIChwb29sKQorCXBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKKworc3RhdGljIHBqX2Jvb2xfdCBhc29ja19vbl9kYXRhX3JlYWQocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkgICAgdm9pZCAqZGF0YSwKKwkJCQkgICAgcGpfc2l6ZV90IHNpemUsCisJCQkJICAgIHBqX3N0YXR1c190IHN0YXR1cywKKwkJCQkgICAgcGpfc2l6ZV90ICpyZW1haW5kZXIpCit7CisgICAgc3RydWN0IHRlc3Rfc3RhdGUgKnN0ID0gKHN0cnVjdCB0ZXN0X3N0YXRlKikKKwkJCSAgICAgcGpfYWN0aXZlc29ja19nZXRfdXNlcl9kYXRhKGFzb2NrKTsKKworICAgIFBKX1VOVVNFRF9BUkcoZGF0YSk7CisgICAgUEpfVU5VU0VEX0FSRyhzaXplKTsKKyAgICBQSl9VTlVTRURfQVJHKHJlbWFpbmRlcik7CisKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlpZiAoc3RhdHVzID09IFBKX0VFT0YpIHsKKwkgICAgc3RhdHVzID0gUEpfU1VDQ0VTUzsKKwkgICAgc3QtPmRvbmUgPSBQSl9UUlVFOworCX0gZWxzZSB7CisJICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIGFzb2NrX29uX2RhdGFfcmVhZCgpIiwgc3RhdHVzKTsKKwl9CisgICAgfQorCisgICAgc3QtPmVyciA9IHN0YXR1czsKKworICAgIGlmIChzdC0+ZXJyICE9IFBKX1NVQ0NFU1MgfHwgc3QtPmRvbmUpIHsKKwlwal9hY3RpdmVzb2NrX2Nsb3NlKGFzb2NrKTsKKwlpZiAoIXN0LT5pc19zZXJ2ZXIpCisJICAgIGNsaWVudHNfbnVtLS07CisJcmV0dXJuIFBKX0ZBTFNFOworICAgIH0KKworICAgIHJldHVybiBQSl9UUlVFOworfQorCisKK3N0YXRpYyBwal9ib29sX3QgYXNvY2tfb25fY29ubmVjdF9jb21wbGV0ZShwal9hY3RpdmVzb2NrX3QgKmFzb2NrLAorCQkJCQkgICBwal9zdGF0dXNfdCBzdGF0dXMpCit7CisgICAgc3RydWN0IHRlc3Rfc3RhdGUgKnN0ID0gKHN0cnVjdCB0ZXN0X3N0YXRlKikKKwkJCSAgICAgcGpfYWN0aXZlc29ja19nZXRfdXNlcl9kYXRhKGFzb2NrKTsKKworICAgIGlmIChzdGF0dXMgPT0gUEpfU1VDQ0VTUykgeworCXZvaWQgKnJlYWRfYnVmWzFdOworCisJLyogU3RhcnQgcmVhZGluZyBkYXRhICovCisJcmVhZF9idWZbMF0gPSBzdC0+cmVhZF9idWY7CisJc3RhdHVzID0gcGpfYWN0aXZlc29ja19zdGFydF9yZWFkMihhc29jaywgc3QtPnBvb2wsIHNpemVvZihzdC0+cmVhZF9idWYpLCAodm9pZCoqKXJlYWRfYnVmLCAwKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgYXBwX3BlcnJvcigiLi4uRVJST1IgcGpfc3NsX3NvY2tfc3RhcnRfcmVhZDIoKSIsIHN0YXR1cyk7CisJfQorICAgIH0KKworICAgIHN0LT5lcnIgPSBzdGF0dXM7CisKKyAgICBpZiAoc3QtPmVyciAhPSBQSl9TVUNDRVNTKSB7CisJcGpfYWN0aXZlc29ja19jbG9zZShhc29jayk7CisJaWYgKCFzdC0+aXNfc2VydmVyKQorCSAgICBjbGllbnRzX251bS0tOworCXJldHVybiBQSl9GQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gUEpfVFJVRTsKK30KKworc3RhdGljIHBqX2Jvb2xfdCBhc29ja19vbl9hY2NlcHRfY29tcGxldGUocGpfYWN0aXZlc29ja190ICphc29jaywKKwkJCQkJICBwal9zb2NrX3QgbmV3c29jaywKKwkJCQkJICBjb25zdCBwal9zb2NrYWRkcl90ICpzcmNfYWRkciwKKwkJCQkJICBpbnQgc3JjX2FkZHJfbGVuKQoreworICAgIHN0cnVjdCB0ZXN0X3N0YXRlICpzdDsKKyAgICB2b2lkICpyZWFkX2J1ZlsxXTsKKyAgICBwal9hY3RpdmVzb2NrX3QgKm5ld19hc29jazsKKyAgICBwal9hY3RpdmVzb2NrX2NiIGFzb2NrX2NiID0geyAwIH07CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgUEpfVU5VU0VEX0FSRyhzcmNfYWRkcik7CisgICAgUEpfVU5VU0VEX0FSRyhzcmNfYWRkcl9sZW4pOworCisgICAgc3QgPSAoc3RydWN0IHRlc3Rfc3RhdGUqKSBwal9hY3RpdmVzb2NrX2dldF91c2VyX2RhdGEoYXNvY2spOworCisgICAgYXNvY2tfY2Iub25fZGF0YV9yZWFkID0gJmFzb2NrX29uX2RhdGFfcmVhZDsKKyAgICBzdGF0dXMgPSBwal9hY3RpdmVzb2NrX2NyZWF0ZShzdC0+cG9vbCwgbmV3c29jaywgcGpfU09DS19TVFJFQU0oKSwgTlVMTCwgCisJCQkJICBzdC0+aW9xdWV1ZSwgJmFzb2NrX2NiLCBzdCwgJm5ld19hc29jayk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogU3RhcnQgcmVhZGluZyBkYXRhICovCisgICAgcmVhZF9idWZbMF0gPSBzdC0+cmVhZF9idWY7CisgICAgc3RhdHVzID0gcGpfYWN0aXZlc29ja19zdGFydF9yZWFkMihuZXdfYXNvY2ssIHN0LT5wb29sLCAKKwkJCQkgICAgICAgc2l6ZW9mKHN0LT5yZWFkX2J1ZiksIAorCQkJCSAgICAgICAodm9pZCoqKXJlYWRfYnVmLCAwKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5FUlJPUiBwal9zc2xfc29ja19zdGFydF9yZWFkMigpIiwgc3RhdHVzKTsKKyAgICB9CisKK29uX3JldHVybjoKKyAgICBzdC0+ZXJyID0gc3RhdHVzOworCisgICAgaWYgKHN0LT5lcnIgIT0gUEpfU1VDQ0VTUykKKwlwal9hY3RpdmVzb2NrX2Nsb3NlKG5ld19hc29jayk7CisKKyAgICByZXR1cm4gUEpfVFJVRTsKK30KKworCisvKiBSYXcgVENQIHNvY2tldCB0cnkgdG8gY29ubmVjdCB0byBTU0wgc29ja2V0IHNlcnZlciwgb25jZQorICogY29ubmVjdGlvbiBlc3RhYmxpc2hlZCwgaXQgd2lsbCBqdXN0IGRvIG5vdGhpbmcsIFNTTCBzb2NrZXQKKyAqIHNlcnZlciBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSB0aGUgY29ubmVjdGlvbiBhZnRlciBzcGVjaWZpZWQKKyAqIHRpbWVvdXQgcGVyaW9kIChzZXQgbXNfdGltZW91dCB0byAwIHRvIGRpc2FibGUgdGltZXIpLgorICovCitzdGF0aWMgaW50IGNsaWVudF9ub25fc3NsKHVuc2lnbmVkIG1zX3RpbWVvdXQpCit7CisgICAgcGpfcG9vbF90ICpwb29sID0gTlVMTDsKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWUgPSBOVUxMOworICAgIHBqX3RpbWVyX2hlYXBfdCAqdGltZXIgPSBOVUxMOworICAgIHBqX3NzbF9zb2NrX3QgKnNzb2NrX3NlcnYgPSBOVUxMOworICAgIHBqX2FjdGl2ZXNvY2tfdCAqYXNvY2tfY2xpID0gTlVMTDsKKyAgICBwal9hY3RpdmVzb2NrX2NiIGFzb2NrX2NiID0geyAwIH07CisgICAgcGpfc29ja190IHNvY2sgPSBQSl9JTlZBTElEX1NPQ0tFVDsKKyAgICBwal9zc2xfc29ja19wYXJhbSBwYXJhbTsKKyAgICBzdHJ1Y3QgdGVzdF9zdGF0ZSBzdGF0ZV9zZXJ2ID0geyAwIH07CisgICAgc3RydWN0IHRlc3Rfc3RhdGUgc3RhdGVfY2xpID0geyAwIH07CisgICAgcGpfc29ja2FkZHIgbGlzdGVuX2FkZHI7CisgICAgcGpfc3NsX2NlcnRfdCAqY2VydCA9IE5VTEw7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgInNzbF9hY2NlcHRfcmF3X3RjcCIsIDI1NiwgMjU2LCBOVUxMKTsKKworICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfY3JlYXRlKHBvb2wsIDQsICZpb3F1ZXVlKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBwal90aW1lcl9oZWFwX2NyZWF0ZShwb29sLCA0LCAmdGltZXIpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIFNldCBjZXJ0ICovCisgICAgeworCXBqX3N0cl90IHRtcDEsIHRtcDIsIHRtcDMsIHRtcDQ7CisJc3RhdHVzID0gcGpfc3NsX2NlcnRfbG9hZF9mcm9tX2ZpbGVzKHBvb2wsIAorCQkJCQkgICAgIHBqX3N0cnNldDIoJnRtcDEsIChjaGFyKilDRVJUX0NBX0ZJTEUpLCAKKwkJCQkJICAgICBwal9zdHJzZXQyKCZ0bXAyLCAoY2hhciopQ0VSVF9GSUxFKSwgCisJCQkJCSAgICAgcGpfc3Ryc2V0MigmdG1wMywgKGNoYXIqKUNFUlRfUFJJVktFWV9GSUxFKSwgCisJCQkJCSAgICAgcGpfc3Ryc2V0MigmdG1wNCwgKGNoYXIqKUNFUlRfUFJJVktFWV9QQVNTKSwgCisJCQkJCSAgICAgJmNlcnQpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBnb3RvIG9uX3JldHVybjsKKwl9CisgICAgfQorCisgICAgcGpfc3NsX3NvY2tfcGFyYW1fZGVmYXVsdCgmcGFyYW0pOworICAgIHBhcmFtLmNiLm9uX2FjY2VwdF9jb21wbGV0ZSA9ICZzc2xfb25fYWNjZXB0X2NvbXBsZXRlOworICAgIHBhcmFtLmNiLm9uX2RhdGFfcmVhZCA9ICZzc2xfb25fZGF0YV9yZWFkOworICAgIHBhcmFtLmNiLm9uX2RhdGFfc2VudCA9ICZzc2xfb25fZGF0YV9zZW50OworICAgIHBhcmFtLmlvcXVldWUgPSBpb3F1ZXVlOworICAgIHBhcmFtLnRpbWVyX2hlYXAgPSB0aW1lcjsKKyAgICBwYXJhbS50aW1lb3V0LnNlYyA9IDA7CisgICAgcGFyYW0udGltZW91dC5tc2VjID0gbXNfdGltZW91dDsKKyAgICBwal90aW1lX3ZhbF9ub3JtYWxpemUoJnBhcmFtLnRpbWVvdXQpOworCisgICAgLyogU0VSVkVSICovCisgICAgcGFyYW0udXNlcl9kYXRhID0gJnN0YXRlX3NlcnY7CisgICAgc3RhdGVfc2Vydi5wb29sID0gcG9vbDsKKyAgICBzdGF0ZV9zZXJ2LmlzX3NlcnZlciA9IFBKX1RSVUU7CisgICAgc3RhdGVfc2Vydi5pc192ZXJib3NlID0gUEpfVFJVRTsKKworICAgIHN0YXR1cyA9IHBqX3NzbF9zb2NrX2NyZWF0ZShwb29sLCAmcGFyYW0sICZzc29ja19zZXJ2KTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBwal9zc2xfc29ja19zZXRfY2VydGlmaWNhdGUoc3NvY2tfc2VydiwgcG9vbCwgY2VydCk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogSW5pdCBiaW5kIGFkZHJlc3MgKi8KKyAgICB7CisJcGpfc3RyX3QgdG1wX3N0OworCXBqX3NvY2thZGRyX2luaXQoUEpfQUZfSU5FVCwgJmxpc3Rlbl9hZGRyLCBwal9zdHJzZXQyKCZ0bXBfc3QsICIxMjcuMC4wLjEiKSwgMCk7CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfc3NsX3NvY2tfc3RhcnRfYWNjZXB0KHNzb2NrX3NlcnYsIHBvb2wsICZsaXN0ZW5fYWRkciwgcGpfc29ja2FkZHJfZ2V0X2xlbigmbGlzdGVuX2FkZHIpKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgbGlzdGVuZXIgYWRkcmVzcyAqLworICAgIHsKKwlwal9zc2xfc29ja19pbmZvIGluZm87CisKKwlwal9zc2xfc29ja19nZXRfaW5mbyhzc29ja19zZXJ2LCAmaW5mbyk7CisJcGpfc29ja2FkZHJfY3AoJmxpc3Rlbl9hZGRyLCAmaW5mby5sb2NhbF9hZGRyKTsKKyAgICB9CisKKyAgICAvKiBDTElFTlQgKi8KKyAgICBzdGF0ZV9jbGkucG9vbCA9IHBvb2w7CisgICAgc3RhdHVzID0gcGpfc29ja19zb2NrZXQocGpfQUZfSU5FVCgpLCBwal9TT0NLX1NUUkVBTSgpLCAwLCAmc29jayk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgYXNvY2tfY2Iub25fY29ubmVjdF9jb21wbGV0ZSA9ICZhc29ja19vbl9jb25uZWN0X2NvbXBsZXRlOworICAgIGFzb2NrX2NiLm9uX2RhdGFfcmVhZCA9ICZhc29ja19vbl9kYXRhX3JlYWQ7CisgICAgc3RhdHVzID0gcGpfYWN0aXZlc29ja19jcmVhdGUocG9vbCwgc29jaywgcGpfU09DS19TVFJFQU0oKSwgTlVMTCwgCisJCQkJICBpb3F1ZXVlLCAmYXNvY2tfY2IsICZzdGF0ZV9jbGksICZhc29ja19jbGkpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfc3RhcnRfY29ubmVjdChhc29ja19jbGksIHBvb2wsIChwal9zb2NrYWRkcl90KikmbGlzdGVuX2FkZHIsIAorCQkJCQkgcGpfc29ja2FkZHJfZ2V0X2xlbigmbGlzdGVuX2FkZHIpKTsKKyAgICBpZiAoc3RhdHVzID09IFBKX1NVQ0NFU1MpIHsKKwlhc29ja19vbl9jb25uZWN0X2NvbXBsZXRlKGFzb2NrX2NsaSwgUEpfU1VDQ0VTUyk7CisgICAgfSBlbHNlIGlmIChzdGF0dXMgPT0gUEpfRVBFTkRJTkcpIHsKKwlzdGF0dXMgPSBQSl9TVUNDRVNTOworICAgIH0gZWxzZSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogV2FpdCB1bnRpbCBldmVyeXRoaW5nIGhhcyBiZWVuIHNlbnQvcmVjZWl2ZWQgb3IgZXJyb3IgKi8KKyAgICB3aGlsZSAoIXN0YXRlX3NlcnYuZXJyICYmICFzdGF0ZV9jbGkuZXJyICYmICFzdGF0ZV9zZXJ2LmRvbmUgJiYgIXN0YXRlX2NsaS5kb25lKQorICAgIHsKKyNpZmRlZiBQSl9TWU1CSUFOCisJcGpfc3ltYmlhbm9zX3BvbGwoLTEsIDEwMDApOworI2Vsc2UKKwlwal90aW1lX3ZhbCBkZWxheSA9IHswLCAxMDB9OworCXBqX2lvcXVldWVfcG9sbChpb3F1ZXVlLCAmZGVsYXkpOworCXBqX3RpbWVyX2hlYXBfcG9sbCh0aW1lciwgJmRlbGF5KTsKKyNlbmRpZgorICAgIH0KKworICAgIGlmIChzdGF0ZV9zZXJ2LmVyciB8fCBzdGF0ZV9jbGkuZXJyKSB7CisJaWYgKHN0YXRlX3NlcnYuZXJyICE9IFBKX1NVQ0NFU1MpCisJICAgIHN0YXR1cyA9IHN0YXRlX3NlcnYuZXJyOworCWVsc2UKKwkgICAgc3RhdHVzID0gc3RhdGVfY2xpLmVycjsKKworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIFBKX0xPRygzLCAoIiIsICIuLi5Eb25lISIpKTsKKworb25fcmV0dXJuOgorICAgIGlmIChzc29ja19zZXJ2KQorCXBqX3NzbF9zb2NrX2Nsb3NlKHNzb2NrX3NlcnYpOworICAgIGlmIChhc29ja19jbGkgJiYgIXN0YXRlX2NsaS5lcnIgJiYgIXN0YXRlX2NsaS5kb25lKQorCXBqX2FjdGl2ZXNvY2tfY2xvc2UoYXNvY2tfY2xpKTsKKyAgICBpZiAodGltZXIpCisJcGpfdGltZXJfaGVhcF9kZXN0cm95KHRpbWVyKTsKKyAgICBpZiAoaW9xdWV1ZSkKKwlwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xdWV1ZSk7CisgICAgaWYgKHBvb2wpCisJcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworCisvKiBTU0wgc29ja2V0IHRyeSB0byBjb25uZWN0IHRvIHJhdyBUQ1Agc29ja2V0IHNlcnZlciwgb25jZQorICogY29ubmVjdGlvbiBlc3RhYmxpc2hlZCwgU1NMIHNvY2tldCB3aWxsIHRyeSB0byBwZXJmb3JtIFNTTAorICogaGFuZHNoYWtlLiBTU0wgY2xpZW50IHNvY2tldCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSB0aGUKKyAqIGNvbm5lY3Rpb24gYWZ0ZXIgc3BlY2lmaWVkIHRpbWVvdXQgcGVyaW9kIChzZXQgbXNfdGltZW91dCB0byAKKyAqIDAgdG8gZGlzYWJsZSB0aW1lcikuCisgKi8KK3N0YXRpYyBpbnQgc2VydmVyX25vbl9zc2wodW5zaWduZWQgbXNfdGltZW91dCkKK3sKKyAgICBwal9wb29sX3QgKnBvb2wgPSBOVUxMOworICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSA9IE5VTEw7CisgICAgcGpfdGltZXJfaGVhcF90ICp0aW1lciA9IE5VTEw7CisgICAgcGpfYWN0aXZlc29ja190ICphc29ja19zZXJ2ID0gTlVMTDsKKyAgICBwal9zc2xfc29ja190ICpzc29ja19jbGkgPSBOVUxMOworICAgIHBqX2FjdGl2ZXNvY2tfY2IgYXNvY2tfY2IgPSB7IDAgfTsKKyAgICBwal9zb2NrX3Qgc29jayA9IFBKX0lOVkFMSURfU09DS0VUOworICAgIHBqX3NzbF9zb2NrX3BhcmFtIHBhcmFtOworICAgIHN0cnVjdCB0ZXN0X3N0YXRlIHN0YXRlX3NlcnYgPSB7IDAgfTsKKyAgICBzdHJ1Y3QgdGVzdF9zdGF0ZSBzdGF0ZV9jbGkgPSB7IDAgfTsKKyAgICBwal9zb2NrYWRkciBhZGRyLCBsaXN0ZW5fYWRkcjsKKyAgICBwal9zdGF0dXNfdCBzdGF0dXM7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCAic3NsX2Nvbm5lY3RfcmF3X3RjcCIsIDI1NiwgMjU2LCBOVUxMKTsKKworICAgIHN0YXR1cyA9IHBqX2lvcXVldWVfY3JlYXRlKHBvb2wsIDQsICZpb3F1ZXVlKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBwal90aW1lcl9oZWFwX2NyZWF0ZShwb29sLCA0LCAmdGltZXIpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIFNFUlZFUiAqLworICAgIHN0YXRlX3NlcnYucG9vbCA9IHBvb2w7CisgICAgc3RhdGVfc2Vydi5pb3F1ZXVlID0gaW9xdWV1ZTsKKworICAgIHN0YXR1cyA9IHBqX3NvY2tfc29ja2V0KHBqX0FGX0lORVQoKSwgcGpfU09DS19TVFJFQU0oKSwgMCwgJnNvY2spOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIEluaXQgYmluZCBhZGRyZXNzICovCisgICAgeworCXBqX3N0cl90IHRtcF9zdDsKKwlwal9zb2NrYWRkcl9pbml0KFBKX0FGX0lORVQsICZsaXN0ZW5fYWRkciwgcGpfc3Ryc2V0MigmdG1wX3N0LCAiMTI3LjAuMC4xIiksIDApOworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX3NvY2tfYmluZChzb2NrLCAocGpfc29ja2FkZHJfdCopJmxpc3Rlbl9hZGRyLCAKKwkJCSAgcGpfc29ja2FkZHJfZ2V0X2xlbigocGpfc29ja2FkZHJfdCopJmxpc3Rlbl9hZGRyKSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfc29ja19saXN0ZW4oc29jaywgUEpfU09NQVhDT05OKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBhc29ja19jYi5vbl9hY2NlcHRfY29tcGxldGUgPSAmYXNvY2tfb25fYWNjZXB0X2NvbXBsZXRlOworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfY3JlYXRlKHBvb2wsIHNvY2ssIHBqX1NPQ0tfU1RSRUFNKCksIE5VTEwsIAorCQkJCSAgaW9xdWV1ZSwgJmFzb2NrX2NiLCAmc3RhdGVfc2VydiwgJmFzb2NrX3NlcnYpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX2FjdGl2ZXNvY2tfc3RhcnRfYWNjZXB0KGFzb2NrX3NlcnYsIHBvb2wpOworICAgIGlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykKKwlnb3RvIG9uX3JldHVybjsKKworICAgIC8qIFVwZGF0ZSBsaXN0ZW5lciBhZGRyZXNzICovCisgICAgeworCWludCBhZGRyX2xlbjsKKworCWFkZHJfbGVuID0gc2l6ZW9mKGxpc3Rlbl9hZGRyKTsKKwlwal9zb2NrX2dldHNvY2tuYW1lKHNvY2ssIChwal9zb2NrYWRkcl90KikmbGlzdGVuX2FkZHIsICZhZGRyX2xlbik7CisgICAgfQorCisgICAgLyogQ0xJRU5UICovCisgICAgcGpfc3NsX3NvY2tfcGFyYW1fZGVmYXVsdCgmcGFyYW0pOworICAgIHBhcmFtLmNiLm9uX2Nvbm5lY3RfY29tcGxldGUgPSAmc3NsX29uX2Nvbm5lY3RfY29tcGxldGU7CisgICAgcGFyYW0uY2Iub25fZGF0YV9yZWFkID0gJnNzbF9vbl9kYXRhX3JlYWQ7CisgICAgcGFyYW0uY2Iub25fZGF0YV9zZW50ID0gJnNzbF9vbl9kYXRhX3NlbnQ7CisgICAgcGFyYW0uaW9xdWV1ZSA9IGlvcXVldWU7CisgICAgcGFyYW0udGltZXJfaGVhcCA9IHRpbWVyOworICAgIHBhcmFtLnRpbWVvdXQuc2VjID0gMDsKKyAgICBwYXJhbS50aW1lb3V0Lm1zZWMgPSBtc190aW1lb3V0OworICAgIHBqX3RpbWVfdmFsX25vcm1hbGl6ZSgmcGFyYW0udGltZW91dCk7CisgICAgcGFyYW0udXNlcl9kYXRhID0gJnN0YXRlX2NsaTsKKworICAgIHN0YXRlX2NsaS5wb29sID0gcG9vbDsKKyAgICBzdGF0ZV9jbGkuaXNfc2VydmVyID0gUEpfRkFMU0U7CisgICAgc3RhdGVfY2xpLmlzX3ZlcmJvc2UgPSBQSl9UUlVFOworCisgICAgc3RhdHVzID0gcGpfc3NsX3NvY2tfY3JlYXRlKHBvb2wsICZwYXJhbSwgJnNzb2NrX2NsaSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogSW5pdCBkZWZhdWx0IGJpbmQgYWRkcmVzcyAqLworICAgIHsKKwlwal9zdHJfdCB0bXBfc3Q7CisJcGpfc29ja2FkZHJfaW5pdChQSl9BRl9JTkVULCAmYWRkciwgcGpfc3Ryc2V0MigmdG1wX3N0LCAiMTI3LjAuMC4xIiksIDApOworICAgIH0KKworICAgIHN0YXR1cyA9IHBqX3NzbF9zb2NrX3N0YXJ0X2Nvbm5lY3Qoc3NvY2tfY2xpLCBwb29sLCAKKwkJCQkgICAgICAgKHBqX3NvY2thZGRyX3QqKSZhZGRyLCAKKwkJCQkgICAgICAgKHBqX3NvY2thZGRyX3QqKSZsaXN0ZW5fYWRkciwgCisJCQkJICAgICAgIHBqX3NvY2thZGRyX2dldF9sZW4oJmxpc3Rlbl9hZGRyKSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9FUEVORElORykgeworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIC8qIFdhaXQgdW50aWwgZXZlcnl0aGluZyBoYXMgYmVlbiBzZW50L3JlY2VpdmVkIG9yIGVycm9yICovCisgICAgd2hpbGUgKCghc3RhdGVfc2Vydi5lcnIgJiYgIXN0YXRlX3NlcnYuZG9uZSkgfHwgKCFzdGF0ZV9jbGkuZXJyICYmICFzdGF0ZV9jbGkuZG9uZSkpCisgICAgeworI2lmZGVmIFBKX1NZTUJJQU4KKwlwal9zeW1iaWFub3NfcG9sbCgtMSwgMTAwMCk7CisjZWxzZQorCXBqX3RpbWVfdmFsIGRlbGF5ID0gezAsIDEwMH07CisJcGpfaW9xdWV1ZV9wb2xsKGlvcXVldWUsICZkZWxheSk7CisJcGpfdGltZXJfaGVhcF9wb2xsKHRpbWVyLCAmZGVsYXkpOworI2VuZGlmCisgICAgfQorCisgICAgaWYgKHN0YXRlX3NlcnYuZXJyIHx8IHN0YXRlX2NsaS5lcnIpIHsKKwlpZiAoc3RhdGVfY2xpLmVyciAhPSBQSl9TVUNDRVNTKQorCSAgICBzdGF0dXMgPSBzdGF0ZV9jbGkuZXJyOworCWVsc2UKKwkgICAgc3RhdHVzID0gc3RhdGVfc2Vydi5lcnI7CisKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBQSl9MT0coMywgKCIiLCAiLi4uRG9uZSEiKSk7CisKK29uX3JldHVybjoKKyAgICBpZiAoYXNvY2tfc2VydikKKwlwal9hY3RpdmVzb2NrX2Nsb3NlKGFzb2NrX3NlcnYpOworICAgIGlmIChzc29ja19jbGkgJiYgIXN0YXRlX2NsaS5lcnIgJiYgIXN0YXRlX2NsaS5kb25lKQorCXBqX3NzbF9zb2NrX2Nsb3NlKHNzb2NrX2NsaSk7CisgICAgaWYgKHRpbWVyKQorCXBqX3RpbWVyX2hlYXBfZGVzdHJveSh0aW1lcik7CisgICAgaWYgKGlvcXVldWUpCisJcGpfaW9xdWV1ZV9kZXN0cm95KGlvcXVldWUpOworICAgIGlmIChwb29sKQorCXBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKKworLyogVGVzdCB3aWxsIHBlcmZvcm0gbXVsdGlwbGUgY2xpZW50cyB0cnlpbmcgdG8gY29ubmVjdCB0byBzaW5nbGUgc2VydmVyLgorICogT25jZSBTU0wgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCwgZWNobyB0ZXN0IHdpbGwgYmUgcGVyZm9ybWVkLgorICovCitzdGF0aWMgaW50IHBlcmZfdGVzdCh1bnNpZ25lZCBjbGllbnRzLCB1bnNpZ25lZCBtc19oYW5kc2hha2VfdGltZW91dCkKK3sKKyAgICBwal9wb29sX3QgKnBvb2wgPSBOVUxMOworICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZSA9IE5VTEw7CisgICAgcGpfdGltZXJfaGVhcF90ICp0aW1lciA9IE5VTEw7CisgICAgcGpfc3NsX3NvY2tfdCAqc3NvY2tfc2VydiA9IE5VTEw7CisgICAgcGpfc3NsX3NvY2tfdCAqKnNzb2NrX2NsaSA9IE5VTEw7CisgICAgcGpfc3NsX3NvY2tfcGFyYW0gcGFyYW07CisgICAgc3RydWN0IHRlc3Rfc3RhdGUgc3RhdGVfc2VydiA9IHsgMCB9OworICAgIHN0cnVjdCB0ZXN0X3N0YXRlICpzdGF0ZV9jbGkgPSBOVUxMOworICAgIHBqX3NvY2thZGRyIGFkZHIsIGxpc3Rlbl9hZGRyOworICAgIHBqX3NzbF9jZXJ0X3QgKmNlcnQgPSBOVUxMOworICAgIHBqX3N0YXR1c190IHN0YXR1czsKKyAgICB1bnNpZ25lZCBpLCBjbGlfZXJyID0gMDsKKyAgICBwal9zaXplX3QgdG90X3NlbnQgPSAwLCB0b3RfcmVjdiA9IDA7CisgICAgcGpfdGltZV92YWwgc3RhcnQ7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCAic3NsX3BlcmYiLCAyNTYsIDI1NiwgTlVMTCk7CisKKyAgICBzdGF0dXMgPSBwal9pb3F1ZXVlX2NyZWF0ZShwb29sLCBQSl9JT1FVRVVFX01BWF9IQU5ETEVTLCAmaW9xdWV1ZSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfdGltZXJfaGVhcF9jcmVhdGUocG9vbCwgUEpfSU9RVUVVRV9NQVhfSEFORExFUywgJnRpbWVyKTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICAvKiBTZXQgY2VydCAqLworICAgIHsKKwlwal9zdHJfdCB0bXAxLCB0bXAyLCB0bXAzLCB0bXA0OworCisJc3RhdHVzID0gcGpfc3NsX2NlcnRfbG9hZF9mcm9tX2ZpbGVzKHBvb2wsIAorCQkJCQkgICAgIHBqX3N0cnNldDIoJnRtcDEsIChjaGFyKilDRVJUX0NBX0ZJTEUpLCAKKwkJCQkJICAgICBwal9zdHJzZXQyKCZ0bXAyLCAoY2hhciopQ0VSVF9GSUxFKSwgCisJCQkJCSAgICAgcGpfc3Ryc2V0MigmdG1wMywgKGNoYXIqKUNFUlRfUFJJVktFWV9GSUxFKSwgCisJCQkJCSAgICAgcGpfc3Ryc2V0MigmdG1wNCwgKGNoYXIqKUNFUlRfUFJJVktFWV9QQVNTKSwgCisJCQkJCSAgICAgJmNlcnQpOworCWlmIChzdGF0dXMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBnb3RvIG9uX3JldHVybjsKKwl9CisgICAgfQorCisgICAgcGpfc3NsX3NvY2tfcGFyYW1fZGVmYXVsdCgmcGFyYW0pOworICAgIHBhcmFtLmNiLm9uX2FjY2VwdF9jb21wbGV0ZSA9ICZzc2xfb25fYWNjZXB0X2NvbXBsZXRlOworICAgIHBhcmFtLmNiLm9uX2Nvbm5lY3RfY29tcGxldGUgPSAmc3NsX29uX2Nvbm5lY3RfY29tcGxldGU7CisgICAgcGFyYW0uY2Iub25fZGF0YV9yZWFkID0gJnNzbF9vbl9kYXRhX3JlYWQ7CisgICAgcGFyYW0uY2Iub25fZGF0YV9zZW50ID0gJnNzbF9vbl9kYXRhX3NlbnQ7CisgICAgcGFyYW0uaW9xdWV1ZSA9IGlvcXVldWU7CisgICAgcGFyYW0udGltZXJfaGVhcCA9IHRpbWVyOworICAgIHBhcmFtLnRpbWVvdXQuc2VjID0gMDsKKyAgICBwYXJhbS50aW1lb3V0Lm1zZWMgPSBtc19oYW5kc2hha2VfdGltZW91dDsKKyAgICBwal90aW1lX3ZhbF9ub3JtYWxpemUoJnBhcmFtLnRpbWVvdXQpOworCisgICAgLyogSW5pdCBkZWZhdWx0IGJpbmQgYWRkcmVzcyAqLworICAgIHsKKwlwal9zdHJfdCB0bXBfc3Q7CisJcGpfc29ja2FkZHJfaW5pdChQSl9BRl9JTkVULCAmYWRkciwgcGpfc3Ryc2V0MigmdG1wX3N0LCAiMTI3LjAuMC4xIiksIDApOworICAgIH0KKworICAgIC8qIFNFUlZFUiAqLworICAgIHBhcmFtLnVzZXJfZGF0YSA9ICZzdGF0ZV9zZXJ2OworCisgICAgc3RhdGVfc2Vydi5wb29sID0gcG9vbDsKKyAgICBzdGF0ZV9zZXJ2LmVjaG8gPSBQSl9UUlVFOworICAgIHN0YXRlX3NlcnYuaXNfc2VydmVyID0gUEpfVFJVRTsKKworICAgIHN0YXR1cyA9IHBqX3NzbF9zb2NrX2NyZWF0ZShwb29sLCAmcGFyYW0sICZzc29ja19zZXJ2KTsKKyAgICBpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwlnb3RvIG9uX3JldHVybjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBwal9zc2xfc29ja19zZXRfY2VydGlmaWNhdGUoc3NvY2tfc2VydiwgcG9vbCwgY2VydCk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgc3RhdHVzID0gcGpfc3NsX3NvY2tfc3RhcnRfYWNjZXB0KHNzb2NrX3NlcnYsIHBvb2wsICZhZGRyLCBwal9zb2NrYWRkcl9nZXRfbGVuKCZhZGRyKSk7CisgICAgaWYgKHN0YXR1cyAhPSBQSl9TVUNDRVNTKSB7CisJZ290byBvbl9yZXR1cm47CisgICAgfQorCisgICAgLyogR2V0IGxpc3RlbmluZyBhZGRyZXNzIGZvciBjbGllbnRzIHRvIGNvbm5lY3QgdG8gKi8KKyAgICB7CisJcGpfc3NsX3NvY2tfaW5mbyBpbmZvOworCWNoYXIgYnVmWzY0XTsKKworCXBqX3NzbF9zb2NrX2dldF9pbmZvKHNzb2NrX3NlcnYsICZpbmZvKTsKKwlwal9zb2NrYWRkcl9jcCgmbGlzdGVuX2FkZHIsICZpbmZvLmxvY2FsX2FkZHIpOworCisJcGpfc29ja2FkZHJfcHJpbnQoKHBqX3NvY2thZGRyX3QqKSZsaXN0ZW5fYWRkciwgYnVmLCBzaXplb2YoYnVmKSwgMSk7CisJUEpfTE9HKDMsICgiIiwgIi4uLkxpc3RlbmVyIHJlYWR5IGF0ICVzIiwgYnVmKSk7CisgICAgfQorCisKKyAgICAvKiBDTElFTlRTICovCisgICAgY2xpZW50c19udW0gPSBjbGllbnRzOworICAgIHBhcmFtLnRpbWVvdXQuc2VjID0gMDsKKyAgICBwYXJhbS50aW1lb3V0Lm1zZWMgPSAwOworCisgICAgLyogSW5pdCByYW5kb20gc2VlZCAqLworICAgIHsKKwlwal90aW1lX3ZhbCBub3c7CisKKwlwal9nZXR0aW1lb2ZkYXkoJm5vdyk7CisJcGpfc3JhbmQoKHVuc2lnbmVkKW5vdy5zZWMpOworICAgIH0KKworICAgIC8qIEFsbG9jYXRlIFNTTCBzb2NrZXQgcG9pbnRlcnMgYW5kIHRlc3Qgc3RhdGUgKi8KKyAgICBzc29ja19jbGkgPSAocGpfc3NsX3NvY2tfdCoqKXBqX3Bvb2xfY2FsbG9jKHBvb2wsIGNsaWVudHMsIHNpemVvZihwal9zc2xfc29ja190KikpOworICAgIHN0YXRlX2NsaSA9IChzdHJ1Y3QgdGVzdF9zdGF0ZSopcGpfcG9vbF9jYWxsb2MocG9vbCwgY2xpZW50cywgc2l6ZW9mKHN0cnVjdCB0ZXN0X3N0YXRlKSk7CisKKyAgICAvKiBHZXQgc3RhcnQgdGltZXN0YW1wICovCisgICAgcGpfZ2V0dGltZW9mZGF5KCZzdGFydCk7CisKKyAgICAvKiBTZXR1cCBjbGllbnRzICovCisgICAgZm9yIChpID0gMDsgaSA8IGNsaWVudHM7ICsraSkgeworCXBhcmFtLnVzZXJfZGF0YSA9ICZzdGF0ZV9jbGlbaV07CisKKwlzdGF0ZV9jbGlbaV0ucG9vbCA9IHBvb2w7CisJc3RhdGVfY2xpW2ldLmNoZWNrX2VjaG8gPSBQSl9UUlVFOworCXN0YXRlX2NsaVtpXS5zZW5kX3N0cl9sZW4gPSAocGpfcmFuZCgpICUgNSArIDEpICogMTAyNCArIHBqX3JhbmQoKSAlIDEwMjQ7CisJc3RhdGVfY2xpW2ldLnNlbmRfc3RyID0gKGNoYXIqKXBqX3Bvb2xfYWxsb2MocG9vbCwgc3RhdGVfY2xpW2ldLnNlbmRfc3RyX2xlbik7CisJeworCSAgICB1bnNpZ25lZCBqOworCSAgICBmb3IgKGogPSAwOyBqIDwgc3RhdGVfY2xpW2ldLnNlbmRfc3RyX2xlbjsgKytqKQorCQlzdGF0ZV9jbGlbaV0uc2VuZF9zdHJbal0gPSAoY2hhcikocGpfcmFuZCgpICUgMjU2KTsKKwl9CisKKwlzdGF0dXMgPSBwal9zc2xfc29ja19jcmVhdGUocG9vbCwgJnBhcmFtLCAmc3NvY2tfY2xpW2ldKTsKKwlpZiAoc3RhdHVzICE9IFBKX1NVQ0NFU1MpIHsKKwkgICAgYXBwX3BlcnJvcigiLi4uRVJST1IgcGpfc3NsX3NvY2tfY3JlYXRlKCkiLCBzdGF0dXMpOworCSAgICBjbGlfZXJyKys7CisJICAgIGNsaWVudHNfbnVtLS07CisJICAgIGNvbnRpbnVlOworCX0KKworCXN0YXR1cyA9IHBqX3NzbF9zb2NrX3N0YXJ0X2Nvbm5lY3Qoc3NvY2tfY2xpW2ldLCBwb29sLCAmYWRkciwgJmxpc3Rlbl9hZGRyLCBwal9zb2NrYWRkcl9nZXRfbGVuKCZhZGRyKSk7CisJaWYgKHN0YXR1cyA9PSBQSl9TVUNDRVNTKSB7CisJICAgIHNzbF9vbl9jb25uZWN0X2NvbXBsZXRlKHNzb2NrX2NsaVtpXSwgUEpfU1VDQ0VTUyk7CisJfSBlbHNlIGlmIChzdGF0dXMgPT0gUEpfRVBFTkRJTkcpIHsKKwkgICAgc3RhdHVzID0gUEpfU1VDQ0VTUzsKKwl9IGVsc2UgeworCSAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBwal9zc2xfc29ja19jcmVhdGUoKSIsIHN0YXR1cyk7CisJICAgIHBqX3NzbF9zb2NrX2Nsb3NlKHNzb2NrX2NsaVtpXSk7CisJICAgIHNzb2NrX2NsaVtpXSA9IE5VTEw7CisJICAgIGNsaWVudHNfbnVtLS07CisJICAgIGNsaV9lcnIrKzsKKwkgICAgY29udGludWU7CisJfQorCisJLyogR2l2ZSBjaGFuY2UgdG8gc2VydmVyIHRvIGFjY2VwdCB0aGlzIGNsaWVudCAqLworCXsKKwkgICAgdW5zaWduZWQgbiA9IDU7CisKKyNpZmRlZiBQSl9TWU1CSUFOCisJICAgIHdoaWxlKG4gJiYgcGpfc3ltYmlhbm9zX3BvbGwoLTEsIDEwMDApKQorCQluLS07CisjZWxzZQorCSAgICBwal90aW1lX3ZhbCBkZWxheSA9IHswLCAxMDB9OworCSAgICB3aGlsZShuICYmIHBqX2lvcXVldWVfcG9sbChpb3F1ZXVlLCAmZGVsYXkpID4gMCkKKwkJbi0tOworI2VuZGlmCisJfQorICAgIH0KKworICAgIC8qIFdhaXQgdW50aWwgZXZlcnl0aGluZyBoYXMgYmVlbiBzZW50L3JlY2VpdmVkIG9yIGVycm9yICovCisgICAgd2hpbGUgKGNsaWVudHNfbnVtKQorICAgIHsKKyNpZmRlZiBQSl9TWU1CSUFOCisJcGpfc3ltYmlhbm9zX3BvbGwoLTEsIDEwMDApOworI2Vsc2UKKwlwal90aW1lX3ZhbCBkZWxheSA9IHswLCAxMDB9OworCXBqX2lvcXVldWVfcG9sbChpb3F1ZXVlLCAmZGVsYXkpOworCXBqX3RpbWVyX2hlYXBfcG9sbCh0aW1lciwgJmRlbGF5KTsKKyNlbmRpZgorICAgIH0KKworICAgIC8qIENsZWFuIHVwIHNvY2tldHMgKi8KKyAgICB7CisJcGpfdGltZV92YWwgZGVsYXkgPSB7MCwgNTAwfTsKKwl3aGlsZSAocGpfaW9xdWV1ZV9wb2xsKGlvcXVldWUsICZkZWxheSkgPiAwKTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVfc2Vydi5lcnIgIT0gUEpfU1VDQ0VTUykgeworCXN0YXR1cyA9IHN0YXRlX3NlcnYuZXJyOworCWdvdG8gb25fcmV0dXJuOworICAgIH0KKworICAgIFBKX0xPRygzLCAoIiIsICIuLi5Eb25lISIpKTsKKworICAgIC8qIFNTTCBzZXR1cCBhbmQgZGF0YSB0cmFuc2ZlciBkdXJhdGlvbiAqLworICAgIHsKKwlwal90aW1lX3ZhbCBzdG9wOworCQorCXBqX2dldHRpbWVvZmRheSgmc3RvcCk7CisJUEpfVElNRV9WQUxfU1VCKHN0b3AsIHN0YXJ0KTsKKworCVBKX0xPRygzLCAoIiIsICIuLi4uLlNldHVwICYgZGF0YSB0cmFuc2ZlciBkdXJhdGlvbjogJWQuJTAzZHMiLCBzdG9wLnNlYywgc3RvcC5tc2VjKSk7CisgICAgfQorCisgICAgLyogQ2hlY2sgY2xpZW50cyBzdGF0dXMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgY2xpZW50czsgKytpKSB7CisJaWYgKHN0YXRlX2NsaVtpXS5lcnIgIT0gUEpfU1VDQ0VTUykKKwkgICAgY2xpX2VycisrOworCisJdG90X3NlbnQgKz0gc3RhdGVfY2xpWzFdLnNlbnQ7CisJdG90X3JlY3YgKz0gc3RhdGVfY2xpWzFdLnJlY3Y7CisgICAgfQorCisgICAgUEpfTE9HKDMsICgiIiwgIi4uLi4uQ2xpZW50czogJWQgKCVkIGVycm9ycykiLCBjbGllbnRzLCBjbGlfZXJyKSk7CisgICAgUEpfTE9HKDMsICgiIiwgIi4uLi4uVG90YWwgc2VudC9yZWN2OiAlZC8lZCBieXRlcyIsIHRvdF9zZW50LCB0b3RfcmVjdikpOworCitvbl9yZXR1cm46CisgICAgaWYgKHNzb2NrX3NlcnYpIAorCXBqX3NzbF9zb2NrX2Nsb3NlKHNzb2NrX3NlcnYpOworCisgICAgZm9yIChpID0gMDsgaSA8IGNsaWVudHM7ICsraSkgeworCWlmIChzc29ja19jbGlbaV0gJiYgIXN0YXRlX2NsaVtpXS5lcnIgJiYgIXN0YXRlX2NsaVtpXS5kb25lKQorCSAgICBwal9zc2xfc29ja19jbG9zZShzc29ja19jbGlbaV0pOworICAgIH0KKyAgICBpZiAoaW9xdWV1ZSkKKwlwal9pb3F1ZXVlX2Rlc3Ryb3koaW9xdWV1ZSk7CisgICAgaWYgKHBvb2wpCisJcGpfcG9vbF9yZWxlYXNlKHBvb2wpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworI2lmIDAgJiYgKCFkZWZpbmVkKFBKX1NZTUJJQU4pIHx8IFBKX1NZTUJJQU49PTApCitwal9zdGF0dXNfdCBwal9zc2xfc29ja19vc3NsX3Rlc3Rfc2VuZF9idWYocGpfcG9vbF90ICpwb29sKTsKK3N0YXRpYyBpbnQgb3NzbF90ZXN0X3NlbmRfYnVmKCkKK3sKKyAgICBwal9wb29sX3QgKnBvb2w7CisgICAgcGpfc3RhdHVzX3Qgc3RhdHVzOworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgInNlbmRfYnVmIiwgMjU2LCAyNTYsIE5VTEwpOworICAgIHN0YXR1cyA9IHBqX3NzbF9zb2NrX29zc2xfdGVzdF9zZW5kX2J1Zihwb29sKTsKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKyNlbHNlCitzdGF0aWMgaW50IG9zc2xfdGVzdF9zZW5kX2J1ZigpCit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworaW50IHNzbF9zb2NrX3Rlc3Qodm9pZCkKK3sKKyAgICBpbnQgcmV0OworCisgICAgUEpfTE9HKDMsKCIiLCAiLi50ZXN0IG9zc2wgc2VuZCBidWYiKSk7CisgICAgcmV0ID0gb3NzbF90ZXN0X3NlbmRfYnVmKCk7CisgICAgaWYgKHJldCAhPSAwKQorCXJldHVybiByZXQ7CisKKyAgICBQSl9MT0coMywoIiIsICIuLmdldCBjaXBoZXIgbGlzdCB0ZXN0IikpOworICAgIHJldCA9IGdldF9jaXBoZXJfbGlzdCgpOworICAgIGlmIChyZXQgIT0gMCkKKwlyZXR1cm4gcmV0OworCisgICAgUEpfTE9HKDMsKCIiLCAiLi5odHRwcyBjbGllbnQgdGVzdCIpKTsKKyAgICByZXQgPSBodHRwc19jbGllbnRfdGVzdCgzMDAwMCk7CisgICAgLy8gSWdub3JlIHRlc3QgcmVzdWx0IGFzIGludGVybmV0IGNvbm5lY3Rpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUuCisgICAgLy9pZiAocmV0ICE9IDApCisJLy9yZXR1cm4gcmV0OworCisjaWZuZGVmIFBKX1NZTUJJQU4KKyAgIAorICAgIC8qIE9uIFN5bWJpYW4gcGxhdGZvcm1zLCBTU0wgc29ja2V0IGlzIGltcGxlbWVudGVkIHVzaW5nIENTZWN1cmVTb2NrZXQsIAorICAgICAqIGFuZCBpdCBoYXNuJ3Qgc3VwcG9ydGVkIHNlcnZlciBtb2RlLCBzbyBleGNsdWRlIHRoZSBmb2xsb3dpbmcgdGVzdHMsCisgICAgICogd2hpY2ggcmVxdWlyZSBTU0wgc2VydmVyLCBmb3Igbm93LgorICAgICAqLworCisgICAgUEpfTE9HKDMsKCIiLCAiLi5lY2hvIHRlc3Qgdy8gVExTdjEgYW5kIFBKX1RMU19SU0FfV0lUSF9ERVNfQ0JDX1NIQSBjaXBoZXIiKSk7CisgICAgcmV0ID0gZWNob190ZXN0KFBKX1NTTF9TT0NLX1BST1RPX1RMUzEsIFBKX1NTTF9TT0NLX1BST1RPX1RMUzEsIAorCQkgICAgUEpfVExTX1JTQV9XSVRIX0RFU19DQkNfU0hBLCBQSl9UTFNfUlNBX1dJVEhfREVTX0NCQ19TSEEsIAorCQkgICAgUEpfRkFMU0UsIFBKX0ZBTFNFKTsKKyAgICBpZiAocmV0ICE9IDApCisJcmV0dXJuIHJldDsKKworICAgIFBKX0xPRygzLCgiIiwgIi4uZWNobyB0ZXN0IHcvIFNTTHYyMyBhbmQgUEpfVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSBjaXBoZXIiKSk7CisgICAgcmV0ID0gZWNob190ZXN0KFBKX1NTTF9TT0NLX1BST1RPX1NTTDIzLCBQSl9TU0xfU09DS19QUk9UT19TU0wyMywgCisJCSAgICBQSl9UTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBLCBQSl9UTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBLAorCQkgICAgUEpfRkFMU0UsIFBKX0ZBTFNFKTsKKyAgICBpZiAocmV0ICE9IDApCisJcmV0dXJuIHJldDsKKworICAgIFBKX0xPRygzLCgiIiwgIi4uZWNobyB0ZXN0IHcvIGluY29tcGF0aWJsZSBwcm90byIpKTsKKyAgICByZXQgPSBlY2hvX3Rlc3QoUEpfU1NMX1NPQ0tfUFJPVE9fVExTMSwgUEpfU1NMX1NPQ0tfUFJPVE9fU1NMMywgCisJCSAgICBQSl9UTFNfUlNBX1dJVEhfREVTX0NCQ19TSEEsIFBKX1RMU19SU0FfV0lUSF9ERVNfQ0JDX1NIQSwKKwkJICAgIFBKX0ZBTFNFLCBQSl9GQUxTRSk7CisgICAgaWYgKHJldCA9PSAwKQorCXJldHVybiBQSl9FQlVHOworCisgICAgUEpfTE9HKDMsKCIiLCAiLi5lY2hvIHRlc3Qgdy8gaW5jb21wYXRpYmxlIGNpcGhlcnMiKSk7CisgICAgcmV0ID0gZWNob190ZXN0KFBKX1NTTF9TT0NLX1BST1RPX0RFRkFVTFQsIFBKX1NTTF9TT0NLX1BST1RPX0RFRkFVTFQsIAorCQkgICAgUEpfVExTX1JTQV9XSVRIX0RFU19DQkNfU0hBLCBQSl9UTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBLAorCQkgICAgUEpfRkFMU0UsIFBKX0ZBTFNFKTsKKyAgICBpZiAocmV0ID09IDApCisJcmV0dXJuIFBKX0VCVUc7CisKKyAgICBQSl9MT0coMywoIiIsICIuLmVjaG8gdGVzdCB3LyBjbGllbnQgY2VydCByZXF1aXJlZCBidXQgbm90IHByb3ZpZGVkIikpOworICAgIHJldCA9IGVjaG9fdGVzdChQSl9TU0xfU09DS19QUk9UT19ERUZBVUxULCBQSl9TU0xfU09DS19QUk9UT19ERUZBVUxULCAKKwkJICAgIFBKX1RMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEsIFBKX1RMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEsCisJCSAgICBQSl9UUlVFLCBQSl9GQUxTRSk7CisgICAgaWYgKHJldCA9PSAwKQorCXJldHVybiBQSl9FQlVHOworCisgICAgUEpfTE9HKDMsKCIiLCAiLi5lY2hvIHRlc3Qgdy8gY2xpZW50IGNlcnQgcmVxdWlyZWQgYW5kIHByb3ZpZGVkIikpOworICAgIHJldCA9IGVjaG9fdGVzdChQSl9TU0xfU09DS19QUk9UT19ERUZBVUxULCBQSl9TU0xfU09DS19QUk9UT19ERUZBVUxULCAKKwkJICAgIFBKX1RMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEsIFBKX1RMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEsCisJCSAgICBQSl9UUlVFLCBQSl9UUlVFKTsKKyAgICBpZiAocmV0ICE9IDApCisJcmV0dXJuIHJldDsKKworICAgIFBKX0xPRygzLCgiIiwgIi4ucGVyZm9ybWFuY2UgdGVzdCIpKTsKKyAgICByZXQgPSBwZXJmX3Rlc3QoUEpfSU9RVUVVRV9NQVhfSEFORExFUy8yIC0gMSwgMCk7CisgICAgaWYgKHJldCAhPSAwKQorCXJldHVybiByZXQ7CisKKyAgICBQSl9MT0coMywoIiIsICIuLmNsaWVudCBub24tU1NMIChoYW5kc2hha2UgdGltZW91dCA1IHNlY3MpIikpOworICAgIHJldCA9IGNsaWVudF9ub25fc3NsKDUwMDApOworICAgIC8qIFBKX1RJTUVET1VUIHdvbid0IGJlIHJldHVybmVkIGFzIGFjY2VwdGVkIHNvY2tldCBpcyBkZWxldGVkIHNpbGVudGx5ICovCisgICAgaWYgKHJldCAhPSAwKQorCXJldHVybiByZXQ7CisKKyNlbmRpZgorCisgICAgUEpfTE9HKDMsKCIiLCAiLi5zZXJ2ZXIgbm9uLVNTTCAoaGFuZHNoYWtlIHRpbWVvdXQgNSBzZWNzKSIpKTsKKyAgICByZXQgPSBzZXJ2ZXJfbm9uX3NzbCg1MDAwKTsKKyAgICBpZiAocmV0ICE9IFBKX0VUSU1FRE9VVCkKKwlyZXR1cm4gcmV0OworCisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCS8qIElOQ0xVREVfU1NMU09DS19URVNUICovCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV9zc2xfc29ja190ZXN0OworI2VuZGlmCS8qIElOQ0xVREVfU1NMU09DS19URVNUICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3N0cmluZy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3Qvc3RyaW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmNzNiOQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3N0cmluZy5jCkBAIC0wLDAgKzEsNDM4IEBACisvKiAkSWQ6IHN0cmluZy5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSA8cGovc3RyaW5nLmg+CisjaW5jbHVkZSA8cGovcG9vbC5oPgorI2luY2x1ZGUgPHBqL2xvZy5oPgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSAidGVzdC5oIgorCisjZGVmaW5lIFRISVNfRklMRQkic3RyaW5nLmMiCisKKy8qKgorICogXHBhZ2UgcGFnZV9wamxpYl9zdHJpbmdfdGVzdCBUZXN0OiBTdHJpbmcKKyAqCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgaW1wbGVtZW50YXRpb24gb2YgXGIgc3RyaW5nX3Rlc3QoKS4gSXQgdGVzdHMgdGhlCisgKiBmdW5jdGlvbmFsaXR5IG9mIHRoZSBzdHJpbmcgQVBJLgorICoKKyAqIFxzZWN0aW9uIHNsZWVwX3Rlc3Rfc2VjIFNjb3BlIG9mIHRoZSBUZXN0CisgKgorICogQVBJIHRlc3RlZDoKKyAqICAtIHBqX3N0cigpCisgKiAgLSBwal9zdHJjbXAoKQorICogIC0gcGpfc3RyY21wMigpCisgKiAgLSBwal9zdHJpY21wKCkKKyAqICAtIHBqX3N0cmxlbigpCisgKiAgLSBwal9zdHJuY21wKCkKKyAqICAtIHBqX3N0cm5pY21wKCkKKyAqICAtIHBqX3N0cmNocigpCisgKiAgLSBwal9zdHJkdXAoKQorICogIC0gcGpfc3RyZHVwMigpCisgKiAgLSBwal9zdHJjcHkoKQorICogIC0gcGpfc3RyY2F0KCkKKyAqICAtIHBqX3N0cnRyaW0oKQorICogIC0gcGpfdXRvYSgpCisgKiAgLSBwal9zdHJ0b3VsKCkKKyAqICAtIHBqX3N0cnRvdWwyKCkKKyAqICAtIHBqX2NyZWF0ZV9yYW5kb21fc3RyaW5nKCkKKyAqICAtIC4uLiBhbmQgbW9kZS4uCisgKgorICogVGhpcyBmaWxlIGlzIDxiPnBqbGliLXRlc3Qvc3RyaW5nLmM8L2I+CisgKgorICogXGluY2x1ZGUgcGpsaWItdGVzdC9zdHJpbmcuYworICovCisKKyNpZiBJTkNMVURFX1NUUklOR19URVNUCisKKyNpZmRlZiBfTVNDX1ZFUgorIyAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQyMDQpCisjZW5kaWYKKworI2RlZmluZSBIRUxMT19XT1JMRAkiSGVsbG8gV29ybGQiCisjZGVmaW5lIEhFTExPX1dPUkxEX0xFTgkxMQorI2RlZmluZSBKVVNUX0hFTExPCSJIZWxsbyIKKyNkZWZpbmUgSlVTVF9IRUxMT19MRU4JNQorI2RlZmluZSBVTF9WQUxVRQkzNDU2Nzg5MDEyVUwKKworI2lmIDEKKy8qIFNlZSBpZiBib3RoIGludGVnZXJzIGhhdmUgdGhlIHNhbWUgc2lnbiAqLworUEpfSU5MSU5FKGludCkgY21wKGNvbnN0IGNoYXIgKmV4cHIsIGludCBpLCBpbnQgaikKK3sKKyAgICBpbnQgciA9ICEoKGk+MCAmJiBqPjApIHx8IChpPDAgJiYgajwwKSB8fCAoaT09MCAmJiBqPT0wKSk7CisgICAgaWYgKHIpIHsKKwlQSl9MT0coMywoVEhJU19GSUxFLCIgICBlcnJvcjogJXM6IGV4cGVjdGluZyAlZCwgZ290ICVkIiwgZXhwciwgaiwgaSkpOworICAgIH0KKyAgICByZXR1cm4gcjsKK30KKyNlbHNlCisvKiBGb3Igc3RyaWN0IGNvbXBhcmlzb24sIG11c3QgYmUgZXF1YWwgKi8KK1BKX0lOTElORShpbnQpIGNtcChjb25zdCBjaGFyICpleHByLCBpbnQgaSwgaW50IGopCit7CisgICAgUEpfVU5VU0VEX0FSRyhleHByKTsKKyAgICByZXR1cm4gaSE9ajsKK30KKyNlbmRpZgorCisjZGVmaW5lIEMoZXhwciwgcmVzKQljbXAoI2V4cHIsIGV4cHIsIHJlcykKKworc3RhdGljIGludCBzdHJpY21wX3Rlc3Qodm9pZCkKK3sKKy8qIFRoaXMgc3BlY2lmaWNseSB0ZXN0cyBhbmQgYmVuY2htYXJrIHBqX3N0cmljbXAoKSwgcGpfc3RyaWNtcF9hbG51bSgpLgorICogSW4gYWRkaXRpb24sIGl0IGFsc28gdGVzdHMgcGpfc3RyaWNtcDIoKSwgcGpfc3RybmljbXAoKSwgYW5kIAorICogcGpfc3RybmljbXAyKCkuCisgKi8KKyNkZWZpbmUgU1RSVEVTVChyZXMscmVzMixTMSxTMixjb2RlKQlcCisJICAgIGRvIHsgXAorCQlzMS5wdHI9UzE7IHMxLnNsZW49KFMxKT9sZW46MDsgXAorCQlzMi5wdHI9UzI7IHMyLnNsZW49KFMyKT9sZW46MDsgXAorCQlwal9nZXRfdGltZXN0YW1wKCZ0MSk7IFwKKwkgICAgICAgIGlmIChDKHBqX3N0cmljbXAoJnMxLCZzMikscmVzKSkgcmV0dXJuIGNvZGU7IFwKKwkJcGpfZ2V0X3RpbWVzdGFtcCgmdDIpOyBcCisJCXBqX3N1Yl90aW1lc3RhbXAoJnQyLCAmdDEpOyBcCisJCXBqX2FkZF90aW1lc3RhbXAoJmUxLCAmdDIpOyBcCisJCXBqX2dldF90aW1lc3RhbXAoJnQxKTsgXAorCSAgICAgICAgaWYgKEMocGpfc3RyaWNtcF9hbG51bSgmczEsJnMyKSxyZXMpKSByZXR1cm4gY29kZS0xOyBcCisJCXBqX2dldF90aW1lc3RhbXAoJnQyKTsgXAorCQlwal9zdWJfdGltZXN0YW1wKCZ0MiwgJnQxKTsgXAorCQlwal9hZGRfdGltZXN0YW1wKCZlMiwgJnQyKTsgXAorCQlpZiAoQyhwal9zdHJpY21wMigmczEsUzIpLHJlczIpKSByZXR1cm4gY29kZSoxMDsgXAorCQlpZiAoQyhwal9zdHJuaWNtcCgmczEsJnMyLGxlbikscmVzKSkgcmV0dXJuIGNvZGUqMTAwOyBcCisJCWlmIChDKHBqX3N0cm5pY21wMigmczEsUzIsbGVuKSxyZXMpKSByZXR1cm4gY29kZSoxMDAwOyBcCisJICAgIH0gd2hpbGUgKDApCisKKyAgICBjaGFyICpidWY7CisgICAgcGpfc3RyX3QgczEsIHMyOworICAgIHBqX3RpbWVzdGFtcCB0MSwgdDIsIGUxLCBlMiwgemVybzsKKyAgICBwal91aW50MzJfdCBjMSwgYzI7CisgICAgaW50IGxlbjsKKworICAgIGUxLnUzMi5oaSA9IGUxLnUzMi5sbyA9IGUyLnUzMi5oaSA9IGUyLnUzMi5sbyA9IDA7CisKKyAgICBwal90aHJlYWRfc2xlZXAoMCk7CisKKyNkZWZpbmUgU05VTEwgMAorCisgICAgLyogQ29tcGFyZSBlbXB0eSBzdHJpbmdzLiAqLworICAgIGxlbj0wOworICAgIFNUUlRFU1QoIDAsIDAsICIiLCIiLC01MDApOworICAgIFNUUlRFU1QoIDAsIDAsIFNOVUxMLCIiLC01MDIpOworICAgIFNUUlRFU1QoIDAsIDAsICIiLFNOVUxMLC01MDQpOworICAgIFNUUlRFU1QoIDAsIDAsIFNOVUxMLFNOVUxMLC01MDYpOworICAgIFNUUlRFU1QoIDAsIC0xLCAiaGVsbG8iLCJ3b3JsZCIsLTUwOCk7CisKKyAgICAvKiBlcXVhbCwgbGVuZ3RoPTEgCisgICAgICogdXNlIGJ1ZmZlciB0byBzaW11bGF0ZSBub24tYWxpZ25lZCBzdHJpbmcuCisgICAgICovCisgICAgYnVmID0gImEiIkEiOworICAgIGxlbj0xOworICAgIFNUUlRFU1QoIDAsICAtMSwgImEiLGJ1ZiswLC01MTApOworICAgIFNUUlRFU1QoIDAsICAwLCAiYSIsYnVmKzEsLTUxMik7CisgICAgU1RSVEVTVCgtMSwgLTEsICJPIiwgIlAiLCAtNTE0KTsKKyAgICBTVFJURVNUKC0xLCAtMSwgU05VTEwsICJhIiwgLTUxNik7CisgICAgU1RSVEVTVCggMSwgIDEsICJhIiwgU05VTEwsIC01MTgpOworCisgICAgLyogZXF1YWwsIGxlbmd0aD0yIAorICAgICAqIHVzZSBidWZmZXIgdG8gc2ltdWxhdGUgbm9uLWFsaWduZWQgc3RyaW5nLgorICAgICAqLworICAgIGJ1ZiA9ICJhYSIiQWEiImFBIiJBQSI7CisgICAgbGVuPTI7CisgICAgU1RSVEVTVCggMCwgLTEsICJhYSIsYnVmKzAsLTUyMCk7CisgICAgU1RSVEVTVCggMCwgLTEsICJhYSIsYnVmKzIsLTUyMik7CisgICAgU1RSVEVTVCggMCwgLTEsICJhYSIsYnVmKzQsLTUyNCk7CisgICAgU1RSVEVTVCggMCwgMCwgImFhIixidWYrNiwtNTI0KTsKKworICAgIC8qIGVxdWFsLCBsZW5ndGg9MyAKKyAgICAgKiB1c2UgYnVmZmVyIHRvIHNpbXVsYXRlIG5vbi1hbGlnbmVkIHN0cmluZy4KKyAgICAgKi8KKyAgICBidWYgPSAiYWFhIiJBYWEiImFBYSIiYWFBIiJBQWEiImFBQSIiQWFBIiJBQUEiOworICAgIGxlbj0zOworICAgIFNUUlRFU1QoIDAsIC0xLCAiYWFhIixidWYrMCwtNTMwKTsKKyAgICBTVFJURVNUKCAwLCAtMSwgImFhYSIsYnVmKzMsLTUzMik7CisgICAgU1RSVEVTVCggMCwgLTEsICJhYWEiLGJ1Zis2LC01MzQpOworICAgIFNUUlRFU1QoIDAsIC0xLCAiYWFhIixidWYrOSwtNTM2KTsKKyAgICBTVFJURVNUKCAwLCAtMSwgImFhYSIsYnVmKzEyLC01MzgpOworICAgIFNUUlRFU1QoIDAsIC0xLCAiYWFhIixidWYrMTUsLTU0MCk7CisgICAgU1RSVEVTVCggMCwgLTEsICJhYWEiLGJ1ZisxOCwtNTQyKTsKKyAgICBTVFJURVNUKCAwLCAwLCAiYWFhIixidWYrMjEsLTUzNCk7CisKKyAgICAvKiBlcXVhbCwgbGVuZ3RoPTQgKi8KKyAgICBsZW49NDsKKyAgICBTVFJURVNUKCAwLCAwLCAiYWFhYSIsImFhYWEiLC01NDApOworICAgIFNUUlRFU1QoIDAsIDAsICJhYWFhIiwiQWFhYSIsLTU0Mik7CisgICAgU1RSVEVTVCggMCwgMCwgImFhYWEiLCJhQWFhIiwtNTQ0KTsKKyAgICBTVFJURVNUKCAwLCAwLCAiYWFhYSIsImFhQWEiLC01NDYpOworICAgIFNUUlRFU1QoIDAsIDAsICJhYWFhIiwiYWFhQSIsLTU0OCk7CisgICAgU1RSVEVTVCggMCwgMCwgImFhYWEiLCJBQWFhIiwtNTUwKTsKKyAgICBTVFJURVNUKCAwLCAwLCAiYWFhYSIsImFBQWEiLC01NTIpOworICAgIFNUUlRFU1QoIDAsIDAsICJhYWFhIiwiYWFBQSIsLTU1NCk7CisgICAgU1RSVEVTVCggMCwgMCwgImFhYWEiLCJBYUFhIiwtNTU2KTsKKyAgICBTVFJURVNUKCAwLCAwLCAiYWFhYSIsImFBYUEiLC01NTgpOworICAgIFNUUlRFU1QoIDAsIDAsICJhYWFhIiwiQWFhQSIsLTU2MCk7CisgICAgU1RSVEVTVCggMCwgMCwgImFhYWEiLCJBQUFhIiwtNTYyKTsKKyAgICBTVFJURVNUKCAwLCAwLCAiYWFhYSIsImFBQUEiLC01NjQpOworICAgIFNUUlRFU1QoIDAsIDAsICJhYWFhIiwiQUFhQSIsLTU2Nik7CisgICAgU1RSVEVTVCggMCwgMCwgImFhYWEiLCJBYUFBIiwtNTY4KTsKKyAgICBTVFJURVNUKCAwLCAwLCAiYWFhYSIsIkFBQUEiLC01NzApOworCisgICAgLyogZXF1YWwsIGxlbmd0aD01ICovCisgICAgYnVmID0gImFhYUFhIiJBYWFhQSIiQWFBYUEiIkFBQUFBIjsKKyAgICBsZW49NTsKKyAgICBTVFJURVNUKCAwLCAtMSwgImFhYWFhIixidWYrMCwtNTgwKTsKKyAgICBTVFJURVNUKCAwLCAtMSwgImFhYWFhIixidWYrNSwtNTgyKTsKKyAgICBTVFJURVNUKCAwLCAtMSwgImFhYWFhIixidWYrMTAsLTU4NCk7CisgICAgU1RSVEVTVCggMCwgMCwgImFhYWFhIixidWYrMTUsLTU4Nik7CisKKyAgICAvKiBub3QgZXF1YWwsIGxlbmd0aD0xICovCisgICAgbGVuPTE7CisgICAgU1RSVEVTVCggLTEsIC0xLCAiYSIsICJiIiwgLTYwMCk7CisKKyAgICAvKiBub3QgZXF1YWwsIGxlbmd0aD0yICovCisgICAgYnVmID0gImFiIiJiYSI7CisgICAgbGVuPTI7CisgICAgU1RSVEVTVCggLTEsIC0xLCAiYWEiLCBidWYrMCwgLTYxMCk7CisgICAgU1RSVEVTVCggLTEsIC0xLCAiYWEiLCBidWYrMiwgLTYxMik7CisKKyAgICAvKiBub3QgZXF1YWwsIGxlbmd0aD0zICovCisgICAgYnVmID0gImFhYiIiYWJhIiJiYWEiOworICAgIGxlbj0zOworICAgIFNUUlRFU1QoIC0xLCAtMSwgImFhYSIsIGJ1ZiswLCAtNjIwKTsKKyAgICBTVFJURVNUKCAtMSwgLTEsICJhYWEiLCBidWYrMywgLTYyMik7CisgICAgU1RSVEVTVCggLTEsIC0xLCAiYWFhIiwgYnVmKzYsIC02MjQpOworCisgICAgLyogbm90IGVxdWFsLCBsZW5ndGg9NCAqLworICAgIGJ1ZiA9ICJhYWFiIiJhYWJhIiJhYmFhIiJiYWFhIjsKKyAgICBsZW49NDsKKyAgICBTVFJURVNUKCAtMSwgLTEsICJhYWFhIiwgYnVmKzAsIC02MzApOworICAgIFNUUlRFU1QoIC0xLCAtMSwgImFhYWEiLCBidWYrNCwgLTYzMik7CisgICAgU1RSVEVTVCggLTEsIC0xLCAiYWFhYSIsIGJ1Zis4LCAtNjM0KTsKKyAgICBTVFJURVNUKCAtMSwgLTEsICJhYWFhIiwgYnVmKzEyLCAtNjM2KTsKKworICAgIC8qIG5vdCBlcXVhbCwgbGVuZ3RoPTUgKi8KKyAgICBidWY9ImFhYWFiIiJhYWFiYSIiYWFiYWEiImFiYWFhIiJiYWFhYSI7CisgICAgbGVuPTU7CisgICAgU1RSVEVTVCggLTEsIC0xLCAiYWFhYWEiLCBidWYrMCwgLTY0MCk7CisgICAgU1RSVEVTVCggLTEsIC0xLCAiYWFhYWEiLCBidWYrNSwgLTY0Mik7CisgICAgU1RSVEVTVCggLTEsIC0xLCAiYWFhYWEiLCBidWYrMTAsIC02NDQpOworICAgIFNUUlRFU1QoIC0xLCAtMSwgImFhYWFhIiwgYnVmKzE1LCAtNjQ2KTsKKyAgICBTVFJURVNUKCAtMSwgLTEsICJhYWFhYSIsIGJ1ZisyMCwgLTY0OCk7CisKKyAgICB6ZXJvLnUzMi5oaSA9IHplcm8udTMyLmxvID0gMDsKKyAgICBjMSA9IHBqX2VsYXBzZWRfY3ljbGUoJnplcm8sICZlMSk7CisgICAgYzIgPSBwal9lbGFwc2VkX2N5Y2xlKCZ6ZXJvLCAmZTIpOworCisgICAgaWYgKGMxIDwgYzIpIHsKKwlQSl9MT0coMywoIiIsICIgIGluZm86IHBqX3N0cmljbXBfYWxudW0gaXMgc2xvd2VyIHRoYW4gcGpfc3RyaWNtcCEiKSk7CisJLy9yZXR1cm4gLTcwMDsKKyAgICB9CisKKyAgICAvKiBBdm9pZCBkaXZpc2lvbiBieSB6ZXJvICovCisgICAgaWYgKGMyID09IDApIGMyPTE7CisgICAgCisgICAgUEpfTE9HKDMsICgiIiwgIiAgdGltZTogc3RyaWNtcD0ldSwgc3RyaWNtcF9hbG51bT0ldSAoc3BlZWR1cD0lZC4lMDJkeCkiLCAKKwkJICAgYzEsIGMyLAorCQkgICAoYzEgKiAxMDAgLyBjMikgLyAxMDAsCisJCSAgIChjMSAqIDEwMCAvIGMyKSAlIDEwMCkpOworICAgIHJldHVybiAwOworI3VuZGVmIFNUUlRFU1QKK30KKworLyogVGhpcyB0ZXN0cyBwal9zdHJjbXAoKSwgcGpfc3RyY21wMigpLCBwal9zdHJuY21wKCksIHBqX3N0cm5jbXAyKCkgKi8KK3N0YXRpYyBpbnQgc3RyY21wX3Rlc3Qodm9pZCkKK3sKKyNkZWZpbmUgU1RSX1RFU1QocmVzLFMxLFMyLGNvZGUpICAgIFwKKwkgICAgZG8geyBcCisJCXMxLnB0cj1TMTsgczEuc2xlbj1TMT9sZW46MDsgXAorCQlzMi5wdHI9UzI7IHMyLnNsZW49UzI/bGVuOjA7IFwKKwkgICAgICAgIGlmIChDKHBqX3N0cmNtcCgmczEsJnMyKSxyZXMpKSByZXR1cm4gY29kZTsgXAorCQlpZiAoQyhwal9zdHJjbXAyKCZzMSxTMikscmVzKSkgcmV0dXJuIGNvZGUtMTsgXAorCQlpZiAoQyhwal9zdHJuY21wKCZzMSwmczIsbGVuKSxyZXMpKSByZXR1cm4gY29kZS0yOyBcCisJCWlmIChDKHBqX3N0cm5jbXAyKCZzMSxTMixsZW4pLHJlcykpIHJldHVybiBjb2RlLTM7IFwKKwkgICAgfSB3aGlsZSAoMCkKKworICAgIHBqX3N0cl90IHMxLCBzMjsKKyAgICBpbnQgbGVuOworICAgIAorICAgIC8qIFRlc3Qgd2l0aCBsZW5ndGggPT0gMCAqLworICAgIGxlbj0wOworICAgIFNUUl9URVNUKDAsICIiLCAiIiwgLTQwMCk7CisgICAgU1RSX1RFU1QoMCwgU05VTEwsICIiLCAtNDA1KTsKKyAgICBTVFJfVEVTVCgwLCAiIiwgU05VTEwsIC00MTApOworICAgIFNUUl9URVNUKDAsIFNOVUxMLCBTTlVMTCwgLTQxNSk7CisgICAgU1RSX1RFU1QoMCwgImhlbGxvIiwgIiIsIC00MjApOworICAgIFNUUl9URVNUKDAsICJoZWxsbyIsIFNOVUxMLCAtNDI1KTsKKworICAgIC8qIFRlc3Qgd2l0aCBsZW5ndGggIT0gMCAqLworICAgIGxlbiA9IDI7CisgICAgU1RSX1RFU1QoMCwgIjEyIiwgIjEyIiwgLTQzMCk7CisgICAgU1RSX1RFU1QoMSwgIjEyIiwgIjEiLCAtNDM1KTsKKyAgICBTVFJfVEVTVCgtMSwgIjEiLCAiMTIiLCAtNDQwKTsKKyAgICBTVFJfVEVTVCgtMSwgU05VTEwsICIxMiIsIC00NDUpOworICAgIFNUUl9URVNUKDEsICIxMiIsIFNOVUxMLCAtNDUwKTsKKworICAgIHJldHVybiAwOworCisjdW5kZWYgU1RSX1RFU1QKK30KKworaW50IHN0cmluZ190ZXN0KHZvaWQpCit7CisgICAgY29uc3QgcGpfc3RyX3QgaGVsbG9fd29ybGQgPSB7IEhFTExPX1dPUkxELCBIRUxMT19XT1JMRF9MRU4gfTsKKyAgICBjb25zdCBwal9zdHJfdCBqdXN0X2hlbGxvID0geyBKVVNUX0hFTExPLCBKVVNUX0hFTExPX0xFTiB9OworICAgIHBqX3N0cl90IHMxLCBzMiwgczMsIHM0LCBzNTsKKyAgICBlbnVtIHsgUkNPVU5UID0gMTAsIFJMRU4gPSAxNiB9OworICAgIHBqX3N0cl90IHJhbmRvbVtSQ09VTlRdOworICAgIHBqX3Bvb2xfdCAqcG9vbDsKKyAgICBpbnQgaTsKKworICAgIHBvb2wgPSBwal9wb29sX2NyZWF0ZShtZW0sIFNOVUxMLCA0MDk2LCAwLCBTTlVMTCk7CisgICAgaWYgKCFwb29sKSByZXR1cm4gLTU7CisgICAgCisgICAgLyogCisgICAgICogcGpfc3RyKCksIHBqX3N0cmNtcCgpLCBwal9zdHJpY21wKCksIHBqX3N0cmxlbigpLCAKKyAgICAgKiBwal9zdHJuY21wKCksIHBqX3N0cmNocigpIAorICAgICAqLworICAgIHMxID0gcGpfc3RyKEhFTExPX1dPUkxEKTsKKyAgICBpZiAocGpfc3RyY21wKCZzMSwgJmhlbGxvX3dvcmxkKSAhPSAwKQorCXJldHVybiAtMTA7CisgICAgaWYgKHBqX3N0cmljbXAoJnMxLCAmaGVsbG9fd29ybGQpICE9IDApCisJcmV0dXJuIC0yMDsKKyAgICBpZiAocGpfc3RyY21wKCZzMSwgJmp1c3RfaGVsbG8pIDw9IDApCisJcmV0dXJuIC0zMDsKKyAgICBpZiAocGpfc3RyaWNtcCgmczEsICZqdXN0X2hlbGxvKSA8PSAwKQorCXJldHVybiAtNDA7CisgICAgaWYgKHBqX3N0cmxlbigmczEpICE9IHN0cmxlbihIRUxMT19XT1JMRCkpCisJcmV0dXJuIC01MDsKKyAgICBpZiAocGpfc3RybmNtcCgmczEsICZoZWxsb193b3JsZCwgNSkgIT0gMCkKKwlyZXR1cm4gLTYwOworICAgIGlmIChwal9zdHJuaWNtcCgmczEsICZoZWxsb193b3JsZCwgNSkgIT0gMCkKKwlyZXR1cm4gLTcwOworICAgIGlmIChwal9zdHJjaHIoJnMxLCBIRUxMT19XT1JMRFsxXSkgIT0gczEucHRyKzEpCisJcmV0dXJuIC04MDsKKworICAgIC8qIAorICAgICAqIHBqX3N0cmR1cCgpIAorICAgICAqLworICAgIGlmICghcGpfc3RyZHVwKHBvb2wsICZzMiwgJnMxKSkKKwlyZXR1cm4gLTEwMDsKKyAgICBpZiAocGpfc3RyY21wKCZzMSwgJnMyKSAhPSAwKQorCXJldHVybiAtMTEwOworICAgIAorICAgIC8qIAorICAgICAqIHBqX3N0cmNweSgpLCBwal9zdHJjYXQoKSAKKyAgICAgKi8KKyAgICBzMy5wdHIgPSAoY2hhciopIHBqX3Bvb2xfYWxsb2MocG9vbCwgMjU2KTsKKyAgICBpZiAoIXMzLnB0cikgCisJcmV0dXJuIC0yMDA7CisgICAgcGpfc3RyY3B5KCZzMywgJnMyKTsKKyAgICBwal9zdHJjYXQoJnMzLCAmanVzdF9oZWxsbyk7CisKKyAgICBpZiAocGpfc3RyY21wMigmczMsIEhFTExPX1dPUkxEIEpVU1RfSEVMTE8pICE9IDApCisJcmV0dXJuIC0yMTA7CisKKyAgICAvKiAKKyAgICAgKiBwal9zdHJkdXAyKCksIHBqX3N0cnRyaW0oKS4gCisgICAgICovCisgICAgcGpfc3RyZHVwMihwb29sLCAmczQsICIgIiBIRUxMT19XT1JMRCAiXHQgIik7CisgICAgcGpfc3RydHJpbSgmczQpOworICAgIGlmIChwal9zdHJjbXAyKCZzNCwgSEVMTE9fV09STEQpICE9IDApCisJcmV0dXJuIC0yNTA7CisKKyAgICAvKiAKKyAgICAgKiBwal91dG9hKCkgCisgICAgICovCisgICAgczUucHRyID0gKGNoYXIqKSBwal9wb29sX2FsbG9jKHBvb2wsIDE2KTsKKyAgICBpZiAoIXM1LnB0cikKKwlyZXR1cm4gLTI3MDsKKyAgICBzNS5zbGVuID0gcGpfdXRvYShVTF9WQUxVRSwgczUucHRyKTsKKworICAgIC8qIAorICAgICAqIHBqX3N0cnRvdWwoKSAKKyAgICAgKi8KKyAgICBpZiAocGpfc3RydG91bCgmczUpICE9IFVMX1ZBTFVFKQorCXJldHVybiAtMjgwOworCisgICAgLyoKKyAgICAgKiBwal9zdHJ0b3VsMigpCisgICAgICovCisgICAgczUgPSBwal9zdHIoIjEyMzQ1NiIpOworCisgICAgcGpfc3RydG91bDIoJnM1LCBTTlVMTCwgMTApOwkvKiBDcmFzaCB0ZXN0ICovCisKKyAgICBpZiAocGpfc3RydG91bDIoJnM1LCAmczQsIDEwKSAhPSAxMjM0NTZVTCkKKwlyZXR1cm4gLTI5MDsKKyAgICBpZiAoczQuc2xlbiAhPSAwKQorCXJldHVybiAtMjkxOworICAgIGlmIChwal9zdHJ0b3VsMigmczUsICZzNCwgMTYpICE9IDB4MTIzNDU2VUwpCisJcmV0dXJuIC0yOTI7CisKKyAgICBzNSA9IHBqX3N0cigiMDEyM0FCQ0QiKTsKKyAgICBpZiAocGpfc3RydG91bDIoJnM1LCAmczQsIDEwKSAhPSAxMjMpCisJcmV0dXJuIC0yOTM7CisgICAgaWYgKHM0LnNsZW4gIT0gNCkKKwlyZXR1cm4gLTI5NDsKKyAgICBpZiAoczQucHRyID09IFNOVUxMIHx8ICpzNC5wdHIgIT0gJ0EnKQorCXJldHVybiAtMjk1OworICAgIGlmIChwal9zdHJ0b3VsMigmczUsICZzNCwgMTYpICE9IDB4MTIzQUJDRFVMKQorCXJldHVybiAtMjk2OworICAgIGlmIChzNC5zbGVuICE9IDApCisJcmV0dXJuIC0yOTc7CisKKyAgICAvKiAKKyAgICAgKiBwal9jcmVhdGVfcmFuZG9tX3N0cmluZygpIAorICAgICAqIENoZWNrIHRoYXQgbm8gZHVwbGljYXRlIHN0cmluZ3MgYXJlIHJldHVybmVkLgorICAgICAqLworICAgIGZvciAoaT0wOyBpPFJDT1VOVDsgKytpKSB7CisJaW50IGo7CisJCisJcmFuZG9tW2ldLnB0ciA9IChjaGFyKikgcGpfcG9vbF9hbGxvYyhwb29sLCBSTEVOKTsKKwlpZiAoIXJhbmRvbVtpXS5wdHIpCisJICAgIHJldHVybiAtMzIwOworCisgICAgICAgIHJhbmRvbVtpXS5zbGVuID0gUkxFTjsKKwlwal9jcmVhdGVfcmFuZG9tX3N0cmluZyhyYW5kb21baV0ucHRyLCBSTEVOKTsKKworCWZvciAoaj0wOyBqPGk7ICsraikgeworCSAgICBpZiAocGpfc3RyY21wKCZyYW5kb21baV0sICZyYW5kb21bal0pPT0wKQorCQlyZXR1cm4gLTMzMDsKKwl9CisgICAgfQorCisgICAgLyogRG9uZS4gKi8KKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisKKyAgICAvKiBDYXNlIHNlbnNpdGl2ZSBjb21wYXJpc29uIHRlc3QuICovCisgICAgaSA9IHN0cmNtcF90ZXN0KCk7CisgICAgaWYgKGkgIT0gMCkKKwlyZXR1cm4gaTsKKworICAgIC8qIENhc2VsZXNzIGNvbXBhcmlzb24gdGVzdC4gKi8KKyAgICBpID0gc3RyaWNtcF90ZXN0KCk7CisgICAgaWYgKGkgIT0gMCkKKwlyZXR1cm4gaTsKKworICAgIHJldHVybiAwOworfQorCisjZWxzZQorLyogVG8gcHJldmVudCB3YXJuaW5nIGFib3V0ICJ0cmFuc2xhdGlvbiB1bml0IGlzIGVtcHR5IgorICogd2hlbiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQuIAorICovCitpbnQgZHVtbXlfc3RyaW5nX3Rlc3Q7CisjZW5kaWYJLyogSU5DTFVERV9TVFJJTkdfVEVTVCAqLworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC90ZXN0LmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC90ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM2ZjU3ZAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3Rlc3QuYwpAQCAtMCwwICsxLDIzNCBAQAorLyogJElkOiB0ZXN0LmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisjaW5jbHVkZSA8cGpsaWIuaD4KKyNpZmRlZiBfTVNDX1ZFUgorIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQorI2VuZGlmCisKKyNkZWZpbmUgRE9fVEVTVCh0ZXN0KQlkbyB7IFwKKwkJCSAgICBQSl9MT0coMywgKCJ0ZXN0IiwgIlJ1bm5pbmcgJXMuLi4iLCAjdGVzdCkpOyAgXAorCQkJICAgIHJjID0gdGVzdDsgXAorCQkJICAgIFBKX0xPRygzLCAoInRlc3QiLCAgXAorCQkJCSAgICAgICAiJXMoJWQpIiwgIFwKKwkJCQkgICAgICAgKHJjID8gIi4uRVJST1IiIDogIi4uc3VjY2VzcyIpLCByYykpOyBcCisJCQkgICAgaWYgKHJjIT0wKSBnb3RvIG9uX3JldHVybjsgXAorCQkJfSB3aGlsZSAoMCkKKworCitwal9wb29sX2ZhY3RvcnkgKm1lbTsKKworaW50IHBhcmFtX2VjaG9fc29ja190eXBlOworY29uc3QgY2hhciAqcGFyYW1fZWNob19zZXJ2ZXIgPSBFQ0hPX1NFUlZFUl9BRERSRVNTOworaW50IHBhcmFtX2VjaG9fcG9ydCA9IEVDSE9fU0VSVkVSX1NUQVJUX1BPUlQ7CitpbnQgcGFyYW1fbG9nX2RlY29yID0gUEpfTE9HX0hBU19ORVdMSU5FIHwgUEpfTE9HX0hBU19USU1FIHwgCisJCSAgICAgIFBKX0xPR19IQVNfTUlDUk9fU0VDOworCitpbnQgbnVsbF9mdW5jKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworaW50IHRlc3RfaW5uZXIodm9pZCkKK3sKKyAgICBwal9jYWNoaW5nX3Bvb2wgY2FjaGluZ19wb29sOworICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOworICAgIGludCBsaW5lOworICAgIGludCByYyA9IDA7CisKKyAgICBtZW0gPSAmY2FjaGluZ19wb29sLmZhY3Rvcnk7CisKKyAgICBwal9sb2dfc2V0X2xldmVsKDMpOworICAgIHBqX2xvZ19zZXRfZGVjb3IocGFyYW1fbG9nX2RlY29yKTsKKworICAgIHJjID0gcGpfaW5pdCgpOworICAgIGlmIChyYyAhPSAwKSB7CisJYXBwX3BlcnJvcigicGpfaW5pdCgpIGVycm9yISEiLCByYyk7CisJcmV0dXJuIHJjOworICAgIH0KKyAgICAKKyAgICAvL3BqX2R1bXBfY29uZmlnKCk7CisgICAgcGpfY2FjaGluZ19wb29sX2luaXQoICZjYWNoaW5nX3Bvb2wsIE5VTEwsIDAgKTsKKworI2lmIElOQ0xVREVfRVJSTk9fVEVTVAorICAgIERPX1RFU1QoIGVycm5vX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX0VYQ0VQVElPTl9URVNUCisgICAgRE9fVEVTVCggZXhjZXB0aW9uX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX09TX1RFU1QKKyAgICBET19URVNUKCBvc190ZXN0KCkgKTsKKyNlbmRpZgorCisjaWYgSU5DTFVERV9SQU5EX1RFU1QKKyAgICBET19URVNUKCByYW5kX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX0xJU1RfVEVTVAorICAgIERPX1RFU1QoIGxpc3RfdGVzdCgpICk7CisjZW5kaWYKKworI2lmIElOQ0xVREVfUE9PTF9URVNUCisgICAgRE9fVEVTVCggcG9vbF90ZXN0KCkgKTsKKyNlbmRpZgorCisjaWYgSU5DTFVERV9QT09MX1BFUkZfVEVTVAorICAgIERPX1RFU1QoIHBvb2xfcGVyZl90ZXN0KCkgKTsKKyNlbmRpZgorCisjaWYgSU5DTFVERV9TVFJJTkdfVEVTVAorICAgIERPX1RFU1QoIHN0cmluZ190ZXN0KCkgKTsKKyNlbmRpZgorICAgIAorI2lmIElOQ0xVREVfRklGT0JVRl9URVNUCisgICAgRE9fVEVTVCggZmlmb2J1Zl90ZXN0KCkgKTsKKyNlbmRpZgorCisjaWYgSU5DTFVERV9SQlRSRUVfVEVTVAorICAgIERPX1RFU1QoIHJidHJlZV90ZXN0KCkgKTsKKyNlbmRpZgorCisjaWYgSU5DTFVERV9IQVNIX1RFU1QKKyAgICBET19URVNUKCBoYXNoX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX1RJTUVTVEFNUF9URVNUCisgICAgRE9fVEVTVCggdGltZXN0YW1wX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX0FUT01JQ19URVNUCisgICAgRE9fVEVTVCggYXRvbWljX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX01VVEVYX1RFU1QKKyAgICBET19URVNUKCBtdXRleF90ZXN0KCkgKTsKKyNlbmRpZgorCisjaWYgSU5DTFVERV9USU1FUl9URVNUCisgICAgRE9fVEVTVCggdGltZXJfdGVzdCgpICk7CisjZW5kaWYKKworI2lmIElOQ0xVREVfU0xFRVBfVEVTVAorICAgIERPX1RFU1QoIHNsZWVwX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX1RIUkVBRF9URVNUCisgICAgRE9fVEVTVCggdGhyZWFkX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX1NPQ0tfVEVTVAorICAgIERPX1RFU1QoIHNvY2tfdGVzdCgpICk7CisjZW5kaWYKKworI2lmIElOQ0xVREVfU09DS19QRVJGX1RFU1QKKyAgICBET19URVNUKCBzb2NrX3BlcmZfdGVzdCgpICk7CisjZW5kaWYKKworI2lmIElOQ0xVREVfU0VMRUNUX1RFU1QKKyAgICBET19URVNUKCBzZWxlY3RfdGVzdCgpICk7CisjZW5kaWYKKworI2lmIElOQ0xVREVfVURQX0lPUVVFVUVfVEVTVAorICAgIERPX1RFU1QoIHVkcF9pb3F1ZXVlX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBQSl9IQVNfVENQICYmIElOQ0xVREVfVENQX0lPUVVFVUVfVEVTVAorICAgIERPX1RFU1QoIHRjcF9pb3F1ZXVlX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX0lPUVVFVUVfUEVSRl9URVNUCisgICAgRE9fVEVTVCggaW9xdWV1ZV9wZXJmX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX0lPUVVFVUVfVU5SRUdfVEVTVAorICAgIERPX1RFU1QoIHVkcF9pb3F1ZXVlX3VucmVnX3Rlc3QoKSApOworI2VuZGlmCisKKyNpZiBJTkNMVURFX0FDVElWRVNPQ0tfVEVTVAorICAgIERPX1RFU1QoIGFjdGl2ZXNvY2tfdGVzdCgpICk7CisjZW5kaWYKKworI2lmIElOQ0xVREVfRklMRV9URVNUCisgICAgRE9fVEVTVCggZmlsZV90ZXN0KCkgKTsKKyNlbmRpZgorCisjaWYgSU5DTFVERV9TU0xTT0NLX1RFU1QKKyAgICBET19URVNUKCBzc2xfc29ja190ZXN0KCkgKTsKKyNlbmRpZgorCisjaWYgSU5DTFVERV9FQ0hPX1NFUlZFUgorICAgIC8vZWNob19zZXJ2ZXIoKTsKKyAgICAvL2VjaG9fc3J2X3N5bmMoKTsKKyAgICB1ZHBfZWNob19zcnZfaW9xdWV1ZSgpOworCisjZWxpZiBJTkNMVURFX0VDSE9fQ0xJRU5UCisgICAgaWYgKHBhcmFtX2VjaG9fc29ja190eXBlID09IDApCisgICAgICAgIHBhcmFtX2VjaG9fc29ja190eXBlID0gcGpfU09DS19ER1JBTSgpOworCisgICAgZWNob19jbGllbnQoIHBhcmFtX2VjaG9fc29ja190eXBlLCAKKyAgICAgICAgICAgICAgICAgcGFyYW1fZWNob19zZXJ2ZXIsIAorICAgICAgICAgICAgICAgICBwYXJhbV9lY2hvX3BvcnQpOworI2VuZGlmCisKKyAgICBnb3RvIG9uX3JldHVybjsKKworb25fcmV0dXJuOgorCisgICAgcGpfY2FjaGluZ19wb29sX2Rlc3Ryb3koICZjYWNoaW5nX3Bvb2wgKTsKKworICAgIFBKX0xPRygzLCgidGVzdCIsICIiKSk7CisgCisgICAgcGpfdGhyZWFkX2dldF9zdGFja19pbmZvKHBqX3RocmVhZF90aGlzKCksICZmaWxlbmFtZSwgJmxpbmUpOworICAgIFBKX0xPRygzLCgidGVzdCIsICJTdGFjayBtYXggdXNhZ2U6ICV1LCBkZWVwZXN0OiAlczoldSIsIAorCSAgICAgICAgICAgICAgcGpfdGhyZWFkX2dldF9zdGFja19tYXhfdXNhZ2UocGpfdGhyZWFkX3RoaXMoKSksCisJCSAgICAgIGZpbGVuYW1lLCBsaW5lKSk7CisgICAgaWYgKHJjID09IDApCisJUEpfTE9HKDMsKCJ0ZXN0IiwgIkxvb2tzIGxpa2UgZXZlcnl0aGluZyBpcyBva2F5IS4uIikpOworICAgIGVsc2UKKwlQSl9MT0coMywoInRlc3QiLCAiVGVzdCBjb21wbGV0ZWQgd2l0aCBlcnJvcihzKSIpKTsKKyAgICAKKyAgICBwal9zaHV0ZG93bigpOworICAgIAorICAgIHJldHVybiAwOworfQorCisjaW5jbHVkZSA8cGovc29jay5oPgorCitpbnQgdGVzdF9tYWluKHZvaWQpCit7CisgICAgaW50IGk7CisgICAgUEpfVVNFX0VYQ0VQVElPTjsKKworICAgIGkgPSBwal9BRl9JTkVUKCk7CisKKyAgICBQSl9UUlkgeworICAgICAgICByZXR1cm4gdGVzdF9pbm5lcigpOworICAgIH0KKyAgICBQSl9DQVRDSF9BTlkgeworICAgICAgICBpbnQgaWQgPSBQSl9HRVRfRVhDRVBUSU9OKCk7CisgICAgICAgIFBKX0xPRygzLCgidGVzdCIsICJGQVRBTDogdW5oYW5kbGVkIGV4Y2VwdGlvbiBpZCAlZCAoJXMpIiwgCisgICAgICAgICAgICAgICAgICBpZCwgcGpfZXhjZXB0aW9uX2lkX25hbWUoaWQpKSk7CisgICAgfQorICAgIFBKX0VORDsKKworICAgIHJldHVybiAtMTsKK30KZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3Rlc3QuaCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTY5ZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvdGVzdC5oCkBAIC0wLDAgKzEsMTI5IEBACisvKiAkSWQ6IHRlc3QuaCAzNTUzIDIwMTEtMDUtMDUgMDY6MTQ6MTlaIG5hbmFuZyAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2lmbmRlZiBfX1BKTElCX1RFU1RfSF9fCisjZGVmaW5lIF9fUEpMSUJfVEVTVF9IX18KKworI2luY2x1ZGUgPHBqL3R5cGVzLmg+CisKKyNkZWZpbmUgR1JPVVBfTElCQyAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgR1JPVVBfT1MgICAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgR1JPVVBfREFUQV9TVFJVQ1RVUkUgICAgICAgIDEKKyNkZWZpbmUgR1JPVVBfTkVUV09SSyAgICAgICAgICAgICAgIDEKKyNpZiBkZWZpbmVkKFBKX1NZTUJJQU4pCisjICAgZGVmaW5lIEdST1VQX0ZJTEUgICAgICAgICAgICAgICAwCisjZWxzZQorIyAgIGRlZmluZSBHUk9VUF9GSUxFICAgICAgICAgICAgICAgMQorI2VuZGlmCisKKyNkZWZpbmUgSU5DTFVERV9FUlJOT19URVNUICAgICAgICAgIEdST1VQX0xJQkMKKyNkZWZpbmUgSU5DTFVERV9USU1FU1RBTVBfVEVTVCAgICAgIEdST1VQX09TCisjZGVmaW5lIElOQ0xVREVfRVhDRVBUSU9OX1RFU1QJICAgIEdST1VQX0xJQkMKKyNkZWZpbmUgSU5DTFVERV9SQU5EX1RFU1QJICAgIEdST1VQX0xJQkMKKyNkZWZpbmUgSU5DTFVERV9MSVNUX1RFU1QJICAgIEdST1VQX0RBVEFfU1RSVUNUVVJFCisjZGVmaW5lIElOQ0xVREVfSEFTSF9URVNUCSAgICBHUk9VUF9EQVRBX1NUUlVDVFVSRQorI2RlZmluZSBJTkNMVURFX1BPT0xfVEVTVAkgICAgR1JPVVBfTElCQworI2RlZmluZSBJTkNMVURFX1BPT0xfUEVSRl9URVNUCSAgICBHUk9VUF9MSUJDCisjZGVmaW5lIElOQ0xVREVfU1RSSU5HX1RFU1QJICAgIEdST1VQX0RBVEFfU1RSVUNUVVJFCisjZGVmaW5lIElOQ0xVREVfRklGT0JVRl9URVNUCSAgICAwCS8vIEdST1VQX0RBVEFfU1RSVUNUVVJFCisjZGVmaW5lIElOQ0xVREVfUkJUUkVFX1RFU1QJICAgIEdST1VQX0RBVEFfU1RSVUNUVVJFCisjZGVmaW5lIElOQ0xVREVfVElNRVJfVEVTVAkgICAgR1JPVVBfREFUQV9TVFJVQ1RVUkUKKyNkZWZpbmUgSU5DTFVERV9BVE9NSUNfVEVTVCAgICAgICAgIEdST1VQX09TCisjZGVmaW5lIElOQ0xVREVfTVVURVhfVEVTVAkgICAgKFBKX0hBU19USFJFQURTICYmIEdST1VQX09TKQorI2RlZmluZSBJTkNMVURFX1NMRUVQX1RFU1QgICAgICAgICAgR1JPVVBfT1MKKyNkZWZpbmUgSU5DTFVERV9PU19URVNUICAgICAgICAgICAgIEdST1VQX09TCisjZGVmaW5lIElOQ0xVREVfVEhSRUFEX1RFU1QgICAgICAgICAoUEpfSEFTX1RIUkVBRFMgJiYgR1JPVVBfT1MpCisjZGVmaW5lIElOQ0xVREVfU09DS19URVNUCSAgICBHUk9VUF9ORVRXT1JLCisjZGVmaW5lIElOQ0xVREVfU09DS19QRVJGX1RFU1QJICAgIEdST1VQX05FVFdPUksKKyNkZWZpbmUgSU5DTFVERV9TRUxFQ1RfVEVTVAkgICAgR1JPVVBfTkVUV09SSworI2RlZmluZSBJTkNMVURFX1VEUF9JT1FVRVVFX1RFU1QgICAgR1JPVVBfTkVUV09SSworI2RlZmluZSBJTkNMVURFX1RDUF9JT1FVRVVFX1RFU1QgICAgR1JPVVBfTkVUV09SSworI2RlZmluZSBJTkNMVURFX0FDVElWRVNPQ0tfVEVTVAkgICAgR1JPVVBfTkVUV09SSworI2RlZmluZSBJTkNMVURFX1NTTFNPQ0tfVEVTVAkgICAgKFBKX0hBU19TU0xfU09DSyAmJiBHUk9VUF9ORVRXT1JLKQorI2RlZmluZSBJTkNMVURFX0lPUVVFVUVfUEVSRl9URVNUICAgKFBKX0hBU19USFJFQURTICYmIEdST1VQX05FVFdPUkspCisjZGVmaW5lIElOQ0xVREVfSU9RVUVVRV9VTlJFR19URVNUICAoUEpfSEFTX1RIUkVBRFMgJiYgR1JPVVBfTkVUV09SSykKKyNkZWZpbmUgSU5DTFVERV9GSUxFX1RFU1QgICAgICAgICAgIEdST1VQX0ZJTEUKKworI2RlZmluZSBJTkNMVURFX0VDSE9fU0VSVkVSICAgICAgICAgMAorI2RlZmluZSBJTkNMVURFX0VDSE9fQ0xJRU5UICAgICAgICAgMAorCisKKyNkZWZpbmUgRUNIT19TRVJWRVJfTUFYX1RIUkVBRFMgICAgIDIKKyNkZWZpbmUgRUNIT19TRVJWRVJfU1RBUlRfUE9SVCAgICAgIDY1MDAwCisjZGVmaW5lIEVDSE9fU0VSVkVSX0FERFJFU1MgICAgICAgICAiY29tcGFxLmhvbWUiCisjZGVmaW5lIEVDSE9fU0VSVkVSX0RVUkFUSU9OX01TRUMgICAoNjAqNjAqMTAwMCkKKworI2RlZmluZSBFQ0hPX0NMSUVOVF9NQVhfVEhSRUFEUyAgICAgNgorCitQSl9CRUdJTl9ERUNMCisKK2V4dGVybiBpbnQgZXJybm9fdGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgdGltZXN0YW1wX3Rlc3Qodm9pZCk7CitleHRlcm4gaW50IGV4Y2VwdGlvbl90ZXN0KHZvaWQpOworZXh0ZXJuIGludCByYW5kX3Rlc3Qodm9pZCk7CitleHRlcm4gaW50IGxpc3RfdGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgaGFzaF90ZXN0KHZvaWQpOworZXh0ZXJuIGludCBvc190ZXN0KHZvaWQpOworZXh0ZXJuIGludCBwb29sX3Rlc3Qodm9pZCk7CitleHRlcm4gaW50IHBvb2xfcGVyZl90ZXN0KHZvaWQpOworZXh0ZXJuIGludCBzdHJpbmdfdGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgZmlmb2J1Zl90ZXN0KHZvaWQpOworZXh0ZXJuIGludCB0aW1lcl90ZXN0KHZvaWQpOworZXh0ZXJuIGludCByYnRyZWVfdGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgYXRvbWljX3Rlc3Qodm9pZCk7CitleHRlcm4gaW50IG11dGV4X3Rlc3Qodm9pZCk7CitleHRlcm4gaW50IHNsZWVwX3Rlc3Qodm9pZCk7CitleHRlcm4gaW50IHRocmVhZF90ZXN0KHZvaWQpOworZXh0ZXJuIGludCBzb2NrX3Rlc3Qodm9pZCk7CitleHRlcm4gaW50IHNvY2tfcGVyZl90ZXN0KHZvaWQpOworZXh0ZXJuIGludCBzZWxlY3RfdGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgdWRwX2lvcXVldWVfdGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgdWRwX2lvcXVldWVfdW5yZWdfdGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgdGNwX2lvcXVldWVfdGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgaW9xdWV1ZV9wZXJmX3Rlc3Qodm9pZCk7CitleHRlcm4gaW50IGFjdGl2ZXNvY2tfdGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgZmlsZV90ZXN0KHZvaWQpOworZXh0ZXJuIGludCBzc2xfc29ja190ZXN0KHZvaWQpOworCitleHRlcm4gaW50IGVjaG9fc2VydmVyKHZvaWQpOworZXh0ZXJuIGludCBlY2hvX2NsaWVudChpbnQgc29ja190eXBlLCBjb25zdCBjaGFyICpzZXJ2ZXIsIGludCBwb3J0KTsKKworZXh0ZXJuIGludCBlY2hvX3Nydl9zeW5jKHZvaWQpOworZXh0ZXJuIGludCB1ZHBfZWNob19zcnZfaW9xdWV1ZSh2b2lkKTsKK2V4dGVybiBpbnQgZWNob19zcnZfY29tbW9uX2xvb3AocGpfYXRvbWljX3QgKmJ5dGVzX2NvdW50ZXIpOworCisKK2V4dGVybiBwal9wb29sX2ZhY3RvcnkgKm1lbTsKKworZXh0ZXJuIGludCAgICAgICAgICB0ZXN0X21haW4odm9pZCk7CitleHRlcm4gdm9pZCAgICAgICAgIGFwcF9wZXJyb3IoY29uc3QgY2hhciAqbXNnLCBwal9zdGF0dXNfdCBlcnIpOworZXh0ZXJuIHBqX3N0YXR1c190ICBhcHBfc29ja2V0KGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG8sIGludCBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NvY2tfdCAqcHRyX3NvY2spOworZXh0ZXJuIHBqX3N0YXR1c190ICBhcHBfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvY29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9zb2NrX3QgKnNlcnZlciwgcGpfc29ja190ICpjbGllbnQpOworZXh0ZXJuIGludAkgICAgbnVsbF9mdW5jKHZvaWQpOworCisvLyNkZWZpbmUgVFJBQ0VfKGV4cHIpIFBKX0xPRygzLGV4cHIpCisjZGVmaW5lIFRSQUNFXyhleHByKQorI2RlZmluZSBIQUxUKG1zZykgICB7IFBKX0xPRygzLChUSElTX0ZJTEUsIiVzIGhhbHRlZCIsbXNnKSk7IGZvcig7Oykgc2xlZXAoMSk7IH0KKworUEpfRU5EX0RFQ0wKKworI2VuZGlmCS8qIF9fUEpMSUJfVEVTVF9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvdGVzdF93cmFwLmNwcCBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3Rlc3Rfd3JhcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM0MTIwNAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3Rlc3Rfd3JhcC5jcHAKQEAgLTAsMCArMSwyNCBAQAorLyogJElkOiB0ZXN0X3dyYXAuY3BwIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworCisvKgorICogVGhpcyBmaWxlIGlzIGEgQysrIHdyYXBwZXIsIHNlZSB0aWNrZXQgIzg4NiBmb3IgZGV0YWlscy4KKyAqLworCisjaW5jbHVkZSAidGVzdC5jIgpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvdGhyZWFkLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC90aHJlYWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzYzMTdmCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvdGhyZWFkLmMKQEAgLTAsMCArMSwzMzYgQEAKKy8qICRJZDogdGhyZWFkLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKy8qKgorICogXHBhZ2UgcGFnZV9wamxpYl90aHJlYWRfdGVzdCBUZXN0OiBUaHJlYWQgVGVzdAorICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyBcYSB0aHJlYWRfdGVzdCgpIGRlZmluaXRpb24uCisgKgorICogXHNlY3Rpb24gdGhyZWFkX3Rlc3Rfc2NvcGVfc2VjIFNjb3BlIG9mIFRlc3QKKyAqIFRoaXMgdGVzdHM6CisgKiAgLSB3aGV0aGVyIFBKX1RIUkVBRF9TVVNQRU5ERUQgZmxhZyB3b3Jrcy4KKyAqICAtIHdoZXRoZXIgbXVsdGl0aHJlYWRpbmcgd29ya3MuCisgKiAgLSB3aGV0aGVyIHRocmVhZCB0aW1lc2xpY2luZyB3b3JrcywgYW5kIHRocmVhZHMgaGF2ZSBlcXVhbAorICogICAgdGltZS1zbGljZSBwcm9wb3J0aW9uLgorICogCisgKiBBUElzIHRlc3RlZDoKKyAqICAtIHBqX3RocmVhZF9jcmVhdGUoKQorICogIC0gcGpfdGhyZWFkX3JlZ2lzdGVyKCkKKyAqICAtIHBqX3RocmVhZF90aGlzKCkKKyAqICAtIHBqX3RocmVhZF9nZXRfbmFtZSgpCisgKiAgLSBwal90aHJlYWRfZGVzdHJveSgpCisgKiAgLSBwal90aHJlYWRfcmVzdW1lKCkKKyAqICAtIHBqX3RocmVhZF9zbGVlcCgpCisgKiAgLSBwal90aHJlYWRfam9pbigpCisgKiAgLSBwal90aHJlYWRfZGVzdHJveSgpCisgKgorICoKKyAqIFRoaXMgZmlsZSBpcyA8Yj5wamxpYi10ZXN0L3RocmVhZC5jPC9iPgorICoKKyAqIFxpbmNsdWRlIHBqbGliLXRlc3QvdGhyZWFkLmMKKyAqLworI2lmIElOQ0xVREVfVEhSRUFEX1RFU1QKKworI2luY2x1ZGUgPHBqbGliLmg+CisKKyNkZWZpbmUgVEhJU19GSUxFICAgInRocmVhZF90ZXN0IgorCitzdGF0aWMgdm9sYXRpbGUgaW50IHF1aXRfZmxhZz0wOworCisjaWYgMAorIyAgIGRlZmluZSBUUkFDRV9fKGFyZ3MpCVBKX0xPRygzLGFyZ3MpCisjZWxzZQorIyAgIGRlZmluZSBUUkFDRV9fKGFyZ3MpCisjZW5kaWYKKworCisvKgorICogVGhlIHRocmVhZCdzIGVudHJ5IHBvaW50LgorICoKKyAqIEVhY2ggb2YgdGhlIHRocmVhZCBtYWlubHkgd2lsbCBqdXN0IGV4ZWN1dGUgdGhlIGxvb3Agd2hpY2gKKyAqIGluY3JlbWVudHMgYSB2YXJpYWJsZS4KKyAqLworc3RhdGljIHZvaWQqIHRocmVhZF9wcm9jKHBqX3VpbnQzMl90ICpwY291bnRlcikKK3sKKyAgICAvKiBUZXN0IHRoYXQgcGpfdGhyZWFkX3JlZ2lzdGVyKCkgd29ya3MuICovCisgICAgcGpfdGhyZWFkX2Rlc2MgZGVzYzsKKyAgICBwal90aHJlYWRfdCAqdGhpc190aHJlYWQ7CisgICAgdW5zaWduZWQgaWQ7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICBpZCA9ICpwY291bnRlcjsKKyAgICBUUkFDRV9fKChUSElTX0ZJTEUsICIgICAgIHRocmVhZCAlZCBydW5uaW5nLi4iLCBpZCkpOworCisgICAgcGpfYnplcm8oZGVzYywgc2l6ZW9mKGRlc2MpKTsKKworICAgIHJjID0gcGpfdGhyZWFkX3JlZ2lzdGVyKCJ0aHJlYWQiLCBkZXNjLCAmdGhpc190aHJlYWQpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yIGluIHBqX3RocmVhZF9yZWdpc3RlciIsIHJjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogVGVzdCB0aGF0IHBqX3RocmVhZF90aGlzKCkgd29ya3MgKi8KKyAgICB0aGlzX3RocmVhZCA9IHBqX3RocmVhZF90aGlzKCk7CisgICAgaWYgKHRoaXNfdGhyZWFkID09IE5VTEwpIHsKKyAgICAgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLmVycm9yOiBwal90aHJlYWRfdGhpcygpIHJldHVybnMgTlVMTCEiKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIFRlc3QgdGhhdCBwal90aHJlYWRfZ2V0X25hbWUoKSB3b3JrcyAqLworICAgIGlmIChwal90aHJlYWRfZ2V0X25hbWUodGhpc190aHJlYWQpID09IE5VTEwpIHsKKyAgICAgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLmVycm9yOiBwal90aHJlYWRfZ2V0X25hbWUoKSByZXR1cm5zIE5VTEwhIikpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBNYWluIGxvb3AgKi8KKyAgICBmb3IgKDshcXVpdF9mbGFnOykgeworCSgqcGNvdW50ZXIpKys7CisgICAgICAgIC8vTXVzdCBzbGVlcCBpZiBwbGF0Zm9ybSBkb2Vzbid0IGRvIHRpbWUtc2xpY2luZy4KKwkvL3BqX3RocmVhZF9zbGVlcCgwKTsKKyAgICB9CisKKyAgICBUUkFDRV9fKChUSElTX0ZJTEUsICIgICAgIHRocmVhZCAlZCBxdWl0dGluZy4uIiwgaWQpKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIHNpbXBsZV90aHJlYWQoKQorICovCitzdGF0aWMgaW50IHNpbXBsZV90aHJlYWQoY29uc3QgY2hhciAqdGl0bGUsIHVuc2lnbmVkIGZsYWdzKQoreworICAgIHBqX3Bvb2xfdCAqcG9vbDsKKyAgICBwal90aHJlYWRfdCAqdGhyZWFkOworICAgIHBqX3N0YXR1c190IHJjOworICAgIHBqX3VpbnQzMl90IGNvdW50ZXIgPSAwOworIAorICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLiVzIiwgdGl0bGUpKTsKKyAgICAKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCBOVUxMLCA0MDAwLCA0MDAwLCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpCisJcmV0dXJuIC0xMDAwOworCisgICAgcXVpdF9mbGFnID0gMDsKKworICAgIFRSQUNFX18oKFRISVNfRklMRSwgIiAgICBDcmVhdGluZyB0aHJlYWQgMC4uIikpOworICAgIHJjID0gcGpfdGhyZWFkX2NyZWF0ZShwb29sLCAidGhyZWFkIiwgKHBqX3RocmVhZF9wcm9jKikmdGhyZWFkX3Byb2MsCisJCQkgICZjb3VudGVyLAorCQkJICBQSl9USFJFQURfREVGQVVMVF9TVEFDS19TSVpFLAorCQkJICBmbGFncywKKwkJCSAgJnRocmVhZCk7CisKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLmVycm9yOiB1bmFibGUgdG8gY3JlYXRlIHRocmVhZCIsIHJjKTsKKwlyZXR1cm4gLTEwMTA7CisgICAgfQorCisgICAgVFJBQ0VfXygoVEhJU19GSUxFLCAiICAgIE1haW4gdGhyZWFkIHdhaXRpbmcuLiIpKTsKKyAgICBwal90aHJlYWRfc2xlZXAoMTUwMCk7CisgICAgVFJBQ0VfXygoVEhJU19GSUxFLCAiICAgIE1haW4gdGhyZWFkIHJlc3VtaW5nLi4iKSk7CisKKyAgICBpZiAoZmxhZ3MgJiBQSl9USFJFQURfU1VTUEVOREVEKSB7CisKKwkvKiBDaGVjayB0aGF0IGNvdW50ZXIgaXMgc3RpbGwgemVybyAqLworCWlmIChjb3VudGVyICE9IDApIHsKKwkgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLmVycm9yOiB0aHJlYWQgaXMgbm90IHN1c3BlbmRlZCIpKTsKKwkgICAgcmV0dXJuIC0xMDE1OworCX0KKwkKKwlyYyA9IHBqX3RocmVhZF9yZXN1bWUodGhyZWFkKTsKKwlpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCSAgICBhcHBfcGVycm9yKCIuLi5lcnJvcjogcmVzdW1lIHRocmVhZCBlcnJvciIsIHJjKTsKKwkgICAgcmV0dXJuIC0xMDIwOworCX0KKyAgICB9CisgICAgCisgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4ud2FpdGluZyBmb3IgdGhyZWFkIHRvIHF1aXQuLiIpKTsKKworICAgIHBqX3RocmVhZF9zbGVlcCgxNTAwKTsKKworICAgIHF1aXRfZmxhZyA9IDE7CisgICAgcGpfdGhyZWFkX2pvaW4odGhyZWFkKTsKKworICAgIHBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKworICAgIGlmIChjb3VudGVyID09IDApIHsKKwlQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uZXJyb3I6IHRocmVhZCBpcyBub3QgcnVubmluZyIpKTsKKwlyZXR1cm4gLTEwMjU7CisgICAgfQorICAgIAorICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi4lcyBzdWNjZXNzIiwgdGl0bGUpKTsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworCisvKgorICogdGltZXNsaWNlX3Rlc3QoKQorICovCitzdGF0aWMgaW50IHRpbWVzbGljZV90ZXN0KHZvaWQpCit7CisgICAgZW51bSB7IE5VTV9USFJFQURTID0gNCB9OworICAgIHBqX3Bvb2xfdCAqcG9vbDsKKyAgICBwal91aW50MzJfdCBjb3VudGVyW05VTV9USFJFQURTXSwgbG93ZXN0LCBoaWdoZXN0LCBkaWZmOworICAgIHBqX3RocmVhZF90ICp0aHJlYWRbTlVNX1RIUkVBRFNdOworICAgIHVuc2lnbmVkIGk7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICBxdWl0X2ZsYWcgPSAwOworCisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKG1lbSwgTlVMTCwgNDAwMCwgNDAwMCwgTlVMTCk7CisgICAgaWYgKCFwb29sKQorICAgICAgICByZXR1cm4gLTEwOworCisgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4udGltZXNsaWNlIHRlc3Rpbmcgd2l0aCAlZCB0aHJlYWRzIiwgTlVNX1RIUkVBRFMpKTsKKworICAgIC8qIENyZWF0ZSBhbGwgdGhyZWFkcyBpbiBzdXNwZW5kZWQgbW9kZS4gKi8KKyAgICBmb3IgKGk9MDsgaTxOVU1fVEhSRUFEUzsgKytpKSB7CisgICAgICAgIGNvdW50ZXJbaV0gPSBpOworICAgICAgICByYyA9IHBqX3RocmVhZF9jcmVhdGUocG9vbCwgInRocmVhZCIsIChwal90aHJlYWRfcHJvYyopJnRocmVhZF9wcm9jLCAKKwkJCSAgICAgICZjb3VudGVyW2ldLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBKX1RIUkVBRF9ERUZBVUxUX1NUQUNLX1NJWkUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEpfVEhSRUFEX1NVU1BFTkRFRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFkW2ldKTsKKyAgICAgICAgaWYgKHJjIT1QSl9TVUNDRVNTKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal90aHJlYWRfY3JlYXRlKCkiLCByYyk7CisgICAgICAgICAgICByZXR1cm4gLTIwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogU2xlZXAgZm9yIDEgc2Vjb25kLgorICAgICAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gdGVzdCB3aGV0aGVyIGFsbCB0aHJlYWRzIGFyZSBzdXNwZW5kZWQuCisgICAgICovCisgICAgVFJBQ0VfXygoVEhJU19GSUxFLCAiICAgIE1haW4gdGhyZWFkIHdhaXRpbmcuLiIpKTsKKyAgICBwal90aHJlYWRfc2xlZXAoMTAwMCk7CisgICAgVFJBQ0VfXygoVEhJU19GSUxFLCAiICAgIE1haW4gdGhyZWFkIHJlc3VtaW5nLi4iKSk7CisKKyAgICAvKiBDaGVjayB0aGF0IGFsbCBjb3VudGVycyBhcmUgc3RpbGwgemVyby4gKi8KKyAgICBmb3IgKGk9MDsgaTxOVU1fVEhSRUFEUzsgKytpKSB7CisgICAgICAgIGlmIChjb3VudGVyW2ldID4gaSkgeworICAgICAgICAgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLi5FUlJPUiEgVGhyZWFkICVkLXRoIGlzIG5vdCBzdXNwZW5kZWQhIiwgCisJCSAgICAgIGkpKTsKKyAgICAgICAgICAgIHJldHVybiAtMzA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBOb3cgcmVzdW1lIGFsbCB0aHJlYWRzLiAqLworICAgIGZvciAoaT0wOyBpPE5VTV9USFJFQURTOyArK2kpIHsKKwlUUkFDRV9fKChUSElTX0ZJTEUsICIgICAgUmVzdW1pbmcgdGhyZWFkICVkIFslcF0uLiIsIGksIHRocmVhZFtpXSkpOworICAgICAgICByYyA9IHBqX3RocmVhZF9yZXN1bWUodGhyZWFkW2ldKTsKKyAgICAgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SIGluIHBqX3RocmVhZF9yZXN1bWUoKSIsIHJjKTsKKyAgICAgICAgICAgIHJldHVybiAtNDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBNYWluIHRocmVhZCBzbGVlcHMgZm9yIHNvbWUgdGltZSB0byBhbGxvdyB0aHJlYWRzIHRvIHJ1bi4gCisgICAgICogVGhlIGxvbmdlciB3ZSBzbGVlcCwgdGhlIG1vcmUgYWNjdXJhdGUgdGhlIGNhbGN1bGF0aW9uIHdpbGwgYmUsCisgICAgICogYnV0IGl0J2xsIG1ha2UgdXNlciB3YWl0cyBmb3IgbG9uZ2VyIGZvciB0aGUgdGVzdCB0byBmaW5pc2guCisgICAgICovCisgICAgVFJBQ0VfXygoVEhJU19GSUxFLCAiICAgIE1haW4gdGhyZWFkIHdhaXRpbmcgKDVzKS4uIikpOworICAgIHBqX3RocmVhZF9zbGVlcCg1MDAwKTsKKyAgICBUUkFDRV9fKChUSElTX0ZJTEUsICIgICAgTWFpbiB0aHJlYWQgcmVzdW1pbmcuLiIpKTsKKworICAgIC8qIFNpZ25hbCBhbGwgdGhyZWFkcyB0byBxdWl0LiAqLworICAgIHF1aXRfZmxhZyA9IDE7CisKKyAgICAvKiBXYWl0IHVudGlsIGFsbCB0aHJlYWRzIHF1aXQsIHRoZW4gZGVzdHJveS4gKi8KKyAgICBmb3IgKGk9MDsgaTxOVU1fVEhSRUFEUzsgKytpKSB7CisJVFJBQ0VfXygoVEhJU19GSUxFLCAiICAgIE1haW4gdGhyZWFkIGpvaW5pbmcgdGhyZWFkICVkIFslcF0uLiIsIAorCQkJICAgIGksIHRocmVhZFtpXSkpOworICAgICAgICByYyA9IHBqX3RocmVhZF9qb2luKHRocmVhZFtpXSk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5FUlJPUiBpbiBwal90aHJlYWRfam9pbigpIiwgcmMpOworICAgICAgICAgICAgcmV0dXJuIC01MDsKKyAgICAgICAgfQorCVRSQUNFX18oKFRISVNfRklMRSwgIiAgICBEZXN0cm95aW5nIHRocmVhZCAlZCBbJXBdLi4iLCBpLCB0aHJlYWRbaV0pKTsKKyAgICAgICAgcmMgPSBwal90aHJlYWRfZGVzdHJveSh0aHJlYWRbaV0pOworICAgICAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uRVJST1IgaW4gcGpfdGhyZWFkX2Rlc3Ryb3koKSIsIHJjKTsKKyAgICAgICAgICAgIHJldHVybiAtNjA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBUUkFDRV9fKChUSElTX0ZJTEUsICIgICAgTWFpbiB0aHJlYWQgY2FsY3VsYXRpbmcgdGltZSBzbGljZXMuLiIpKTsKKworICAgIC8qIE5vdyBleGFtaW5lIHRoZSB2YWx1ZSBvZiB0aGUgY291bnRlcnMuCisgICAgICogQ2hlY2sgdGhhdCBhbGwgdGhyZWFkcyBoYWQgZXF1YWwgcHJvcG9ydGlvbiBvZiBwcm9jZXNzaW5nLgorICAgICAqLworICAgIGxvd2VzdCA9IDB4RkZGRkZGRkY7CisgICAgaGlnaGVzdCA9IDA7CisgICAgZm9yIChpPTA7IGk8TlVNX1RIUkVBRFM7ICsraSkgeworICAgICAgICBpZiAoY291bnRlcltpXSA8IGxvd2VzdCkKKyAgICAgICAgICAgIGxvd2VzdCA9IGNvdW50ZXJbaV07CisgICAgICAgIGlmIChjb3VudGVyW2ldID4gaGlnaGVzdCkKKyAgICAgICAgICAgIGhpZ2hlc3QgPSBjb3VudGVyW2ldOworICAgIH0KKworICAgIC8qIENoZWNrIHRoYXQgYWxsIHRocmVhZHMgYXJlIHJ1bm5pbmcuICovCisgICAgaWYgKGxvd2VzdCA8IDIpIHsKKyAgICAgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLkVSUk9SOiBub3QgYWxsIHRocmVhZHMgd2VyZSBydW5uaW5nISIpKTsKKyAgICAgICAgcmV0dXJuIC03MDsKKyAgICB9CisKKyAgICAvKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGxvd2VzdCBhbmQgaGlnZXN0IHNob3VsZCBiZSBsb3dlciB0aGFuIDUwJS4KKyAgICAgKi8KKyAgICBkaWZmID0gKGhpZ2hlc3QtbG93ZXN0KSoxMDAgLyAoKGhpZ2hlc3QrbG93ZXN0KS8yKTsKKyAgICBpZiAoIGRpZmYgPj0gNTApIHsKKyAgICAgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgCisJCSAgIi4uLkVSUk9SOiB0aHJlYWQgZGlkbid0IGhhdmUgZXF1YWwgdGltZXNsaWNlISIpKTsKKyAgICAgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgCisJCSAgIi4uLi4ubG93ZXN0IGNvdW50ZXI9JXUsIGhpZ2hlc3QgY291bnRlcj0ldSwgZGlmZj0ldSUlIiwKKyAgICAgICAgICAgICAgICAgIGxvd2VzdCwgaGlnaGVzdCwgZGlmZikpOworICAgICAgICByZXR1cm4gLTgwOworICAgIH0gZWxzZSB7CisgICAgICAgIFBKX0xPRygzLChUSElTX0ZJTEUsIAorICAgICAgICAgICAgICAgICAgIi4uLmluZm86IHRpbWVzbGljZSBkaWZmIGJldHdlZW4gbG93ZXN0ICYgaGlnaGVzdD0ldSUlIiwKKyAgICAgICAgICAgICAgICAgIGRpZmYpKTsKKyAgICB9CisKKyAgICBwal9wb29sX3JlbGVhc2UocG9vbCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCB0aHJlYWRfdGVzdCh2b2lkKQoreworICAgIGludCByYzsKKworICAgIHJjID0gc2ltcGxlX3RocmVhZCgic2ltcGxlIHRocmVhZCB0ZXN0IiwgMCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHJjOworICAgIAorICAgIHJjID0gc2ltcGxlX3RocmVhZCgic3VzcGVuZGVkIHRocmVhZCB0ZXN0IiwgUEpfVEhSRUFEX1NVU1BFTkRFRCk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisJcmV0dXJuIHJjOworICAgIAorICAgIHJjID0gdGltZXNsaWNlX3Rlc3QoKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykKKwlyZXR1cm4gcmM7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKyNlbHNlCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV90aHJlYWRfdGVzdDsKKyNlbmRpZgkvKiBJTkNMVURFX1RIUkVBRF9URVNUICovCisKKwpkaWZmIC0tZ2l0IGEvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvdGltZXIuYyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3RpbWVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRkMDliNwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3RpbWVyLmMKQEAgLTAsMCArMSwxOTcgQEAKKy8qICRJZDogdGltZXIuYyA0NTM3IDIwMTMtMDYtMTkgMDY6NDc6NDNaIHJpemEgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKy8qKgorICogXHBhZ2UgcGFnZV9wamxpYl90aW1lcl90ZXN0IFRlc3Q6IFRpbWVyCisgKgorICogVGhpcyBmaWxlIHByb3ZpZGVzIGltcGxlbWVudGF0aW9uIG9mIFxiIHRpbWVyX3Rlc3QoKS4gSXQgdGVzdHMgdGhlCisgKiBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0aW1lciBoZWFwLgorICoKKyAqCisgKiBUaGlzIGZpbGUgaXMgPGI+cGpsaWItdGVzdC90aW1lci5jPC9iPgorICoKKyAqIFxpbmNsdWRlIHBqbGliLXRlc3QvdGltZXIuYworICovCisKKworI2lmIElOQ0xVREVfVElNRVJfVEVTVAorCisjaW5jbHVkZSA8cGpsaWIuaD4KKworI2RlZmluZSBMT09QCQkxNgorI2RlZmluZSBNSU5fQ09VTlQJMjUwCisjZGVmaW5lIE1BWF9DT1VOVAkoTE9PUCAqIE1JTl9DT1VOVCkKKyNkZWZpbmUgTUlOX0RFTEFZCTIKKyNkZWZpbmUJRAkJKE1BWF9DT1VOVCAvIDMyMDAwKQorI2RlZmluZSBERUxBWQkJKEQgPCBNSU5fREVMQVkgPyBNSU5fREVMQVkgOiBEKQorI2RlZmluZSBUSElTX0ZJTEUJInRpbWVyX3Rlc3QiCisKKworc3RhdGljIHZvaWQgdGltZXJfY2FsbGJhY2socGpfdGltZXJfaGVhcF90ICpodCwgcGpfdGltZXJfZW50cnkgKmUpCit7CisgICAgUEpfVU5VU0VEX0FSRyhodCk7CisgICAgUEpfVU5VU0VEX0FSRyhlKTsKK30KKworc3RhdGljIGludCB0ZXN0X3RpbWVyX2hlYXAodm9pZCkKK3sKKyAgICBpbnQgaSwgajsKKyAgICBwal90aW1lcl9lbnRyeSAqZW50cnk7CisgICAgcGpfcG9vbF90ICpwb29sOworICAgIHBqX3RpbWVyX2hlYXBfdCAqdGltZXI7CisgICAgcGpfdGltZV92YWwgZGVsYXk7CisgICAgcGpfc3RhdHVzX3QgcmM7ICAgIGludCBlcnI9MDsKKyAgICBwal9zaXplX3Qgc2l6ZTsKKyAgICB1bnNpZ25lZCBjb3VudDsKKworICAgIHNpemUgPSBwal90aW1lcl9oZWFwX21lbV9zaXplKE1BWF9DT1VOVCkrTUFYX0NPVU5UKnNpemVvZihwal90aW1lcl9lbnRyeSk7CisgICAgcG9vbCA9IHBqX3Bvb2xfY3JlYXRlKCBtZW0sIE5VTEwsIHNpemUsIDQwMDAsIE5VTEwpOworICAgIGlmICghcG9vbCkgeworCVBKX0xPRygzLCgidGVzdCIsICIuLi5lcnJvcjogdW5hYmxlIHRvIGNyZWF0ZSBwb29sIG9mICV1IGJ5dGVzIiwKKwkJICBzaXplKSk7CisJcmV0dXJuIC0xMDsKKyAgICB9CisKKyAgICBlbnRyeSA9IChwal90aW1lcl9lbnRyeSopcGpfcG9vbF9jYWxsb2MocG9vbCwgTUFYX0NPVU5ULCBzaXplb2YoKmVudHJ5KSk7CisgICAgaWYgKCFlbnRyeSkKKwlyZXR1cm4gLTIwOworCisgICAgZm9yIChpPTA7IGk8TUFYX0NPVU5UOyArK2kpIHsKKwllbnRyeVtpXS5jYiA9ICZ0aW1lcl9jYWxsYmFjazsKKyAgICB9CisgICAgcmMgPSBwal90aW1lcl9oZWFwX2NyZWF0ZShwb29sLCBNQVhfQ09VTlQsICZ0aW1lcik7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3I6IHVuYWJsZSB0byBjcmVhdGUgdGltZXIgaGVhcCIsIHJjKTsKKwlyZXR1cm4gLTMwOworICAgIH0KKworICAgIGNvdW50ID0gTUlOX0NPVU5UOworICAgIGZvciAoaT0wOyBpPExPT1A7ICsraSkgeworCWludCBlYXJseSA9IDA7CisJaW50IGRvbmU9MDsKKwlpbnQgY2FuY2VsbGVkPTA7CisJaW50IHJjOworCXBqX3RpbWVzdGFtcCB0MSwgdDIsIHRfc2NoZWQsIHRfY2FuY2VsLCB0X3BvbGw7CisJcGpfdGltZV92YWwgbm93LCBleHBpcmU7CisKKwlwal9nZXR0aW1lb2ZkYXkoJm5vdyk7CisJcGpfc3JhbmQobm93LnNlYyk7CisJdF9zY2hlZC51MzIubG8gPSB0X2NhbmNlbC51MzIubG8gPSB0X3BvbGwudTMyLmxvID0gMDsKKworCS8vIFJlZ2lzdGVyIHRpbWVycworCWZvciAoaj0wOyBqPChpbnQpY291bnQ7ICsraikgeworCSAgICBkZWxheS5zZWMgPSBwal9yYW5kKCkgJSBERUxBWTsKKwkgICAgZGVsYXkubXNlYyA9IHBqX3JhbmQoKSAlIDEwMDA7CisKKwkgICAgLy8gU2NoZWR1bGUgdGltZXIKKwkgICAgcGpfZ2V0X3RpbWVzdGFtcCgmdDEpOworCSAgICByYyA9IHBqX3RpbWVyX2hlYXBfc2NoZWR1bGUodGltZXIsICZlbnRyeVtqXSwgJmRlbGF5KTsKKwkgICAgaWYgKHJjICE9IDApCisJCXJldHVybiAtNDA7CisJICAgIHBqX2dldF90aW1lc3RhbXAoJnQyKTsKKworCSAgICB0X3NjaGVkLnUzMi5sbyArPSAodDIudTMyLmxvIC0gdDEudTMyLmxvKTsKKworCSAgICAvLyBQb2xsIHRpbWVycy4KKwkgICAgcGpfZ2V0X3RpbWVzdGFtcCgmdDEpOworCSAgICByYyA9IHBqX3RpbWVyX2hlYXBfcG9sbCh0aW1lciwgTlVMTCk7CisJICAgIHBqX2dldF90aW1lc3RhbXAoJnQyKTsKKwkgICAgaWYgKHJjID4gMCkgeworCQl0X3BvbGwudTMyLmxvICs9ICh0Mi51MzIubG8gLSB0MS51MzIubG8pOworCQllYXJseSArPSByYzsKKwkgICAgfQorCX0KKworCS8vIFNldCB0aGUgdGltZSB3aGVyZSBhbGwgdGltZXJzIHNob3VsZCBmaW5pc2gKKwlwal9nZXR0aW1lb2ZkYXkoJmV4cGlyZSk7CisJZGVsYXkuc2VjID0gREVMQVk7IAorCWRlbGF5Lm1zZWMgPSAwOworCVBKX1RJTUVfVkFMX0FERChleHBpcmUsIGRlbGF5KTsKKworCS8vIFdhaXQgdW5maWwgYWxsIHRpbWVycyBmaW5pc2gsIGNhbmNlbCBzb21lIG9mIHRoZW0uCisJZG8geworCSAgICBpbnQgaW5kZXggPSBwal9yYW5kKCkgJSBjb3VudDsKKwkgICAgcGpfZ2V0X3RpbWVzdGFtcCgmdDEpOworCSAgICByYyA9IHBqX3RpbWVyX2hlYXBfY2FuY2VsKHRpbWVyLCAmZW50cnlbaW5kZXhdKTsKKwkgICAgcGpfZ2V0X3RpbWVzdGFtcCgmdDIpOworCSAgICBpZiAocmMgPiAwKSB7CisJCWNhbmNlbGxlZCArPSByYzsKKwkJdF9jYW5jZWwudTMyLmxvICs9ICh0Mi51MzIubG8gLSB0MS51MzIubG8pOworCSAgICB9CisKKwkgICAgcGpfZ2V0dGltZW9mZGF5KCZub3cpOworCisJICAgIHBqX2dldF90aW1lc3RhbXAoJnQxKTsKKyNpZiBkZWZpbmVkKFBKX1NZTUJJQU4pICYmIFBKX1NZTUJJQU4hPTAKKwkgICAgLyogT24gU3ltYmlhbiwgd2UgbXVzdCB1c2UgT1MgcG9sbCAoQWN0aXZlIFNjaGVkdWxlciBwb2xsKSBzaW5jZSAKKwkgICAgICogdGltZXIgaXMgaW1wbGVtZW50ZWQgdXNpbmcgQWN0aXZlIE9iamVjdC4KKwkgICAgICovCisJICAgIHJjID0gMDsKKwkgICAgd2hpbGUgKHBqX3N5bWJpYW5vc19wb2xsKC0xLCAwKSkKKwkJKytyYzsKKyNlbHNlCisJICAgIHJjID0gcGpfdGltZXJfaGVhcF9wb2xsKHRpbWVyLCBOVUxMKTsKKyNlbmRpZgorCSAgICBwal9nZXRfdGltZXN0YW1wKCZ0Mik7CisJICAgIGlmIChyYyA+IDApIHsKKwkJZG9uZSArPSByYzsKKwkJdF9wb2xsLnUzMi5sbyArPSAodDIudTMyLmxvIC0gdDEudTMyLmxvKTsKKwkgICAgfQorCisJfSB3aGlsZSAoUEpfVElNRV9WQUxfTFRFKG5vdywgZXhwaXJlKSYmcGpfdGltZXJfaGVhcF9jb3VudCh0aW1lcikgPiAwKTsKKworCWlmIChwal90aW1lcl9oZWFwX2NvdW50KHRpbWVyKSkgeworCSAgICBQSl9MT0coMywgKFRISVNfRklMRSwgIkVSUk9SOiAlZCB0aW1lcnMgbGVmdCIsIAorCQkgICAgICAgcGpfdGltZXJfaGVhcF9jb3VudCh0aW1lcikpKTsKKwkgICAgKytlcnI7CisJfQorCXRfc2NoZWQudTMyLmxvIC89IGNvdW50OyAKKwl0X2NhbmNlbC51MzIubG8gLz0gY291bnQ7CisJdF9wb2xsLnUzMi5sbyAvPSBjb3VudDsKKwlQSl9MT0coNCwgKFRISVNfRklMRSwgCisJICAgICAgICAiLi4ub2sgKGNvdW50OiVkLCBlYXJseTolZCwgY2FuY2VsbGVkOiVkLCAiCisJCSJzY2hlZDolZCwgY2FuY2VsOiVkIHBvbGw6JWQpIiwgCisJCWNvdW50LCBlYXJseSwgY2FuY2VsbGVkLCB0X3NjaGVkLnUzMi5sbywgdF9jYW5jZWwudTMyLmxvLAorCQl0X3BvbGwudTMyLmxvKSk7CisKKwljb3VudCA9IGNvdW50ICogMjsKKwlpZiAoY291bnQgPiBNQVhfQ09VTlQpCisJICAgIGJyZWFrOworICAgIH0KKworICAgIHBqX3Bvb2xfcmVsZWFzZShwb29sKTsKKyAgICByZXR1cm4gZXJyOworfQorCisKK2ludCB0aW1lcl90ZXN0KCkKK3sKKyAgICByZXR1cm4gdGVzdF90aW1lcl9oZWFwKCk7Cit9CisKKyNlbHNlCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV90aW1lcl90ZXN0OworI2VuZGlmCS8qIElOQ0xVREVfVElNRVJfVEVTVCAqLworCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3RpbWVzdGFtcC5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvdGltZXN0YW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IwNDAwMAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3RpbWVzdGFtcC5jCkBAIC0wLDAgKzEsMjM1IEBACisvKiAkSWQ6IHRpbWVzdGFtcC5jIDM1NTMgMjAxMS0wNS0wNSAwNjoxNDoxOVogbmFuYW5nICQgKi8KKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgVGVsdXUgSW5jLiAoaHR0cDovL3d3dy50ZWx1dS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBCZW5ueSBQcmlqb25vIDxiZW5ueUBwcmlqb25vLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBIAorICovCisjaW5jbHVkZSAidGVzdC5oIgorI2luY2x1ZGUgPHBqL29zLmg+CisjaW5jbHVkZSA8cGovbG9nLmg+CisjaW5jbHVkZSA8cGovcmFuZC5oPgorCisKKy8qKgorICogXHBhZ2UgcGFnZV9wamxpYl90aW1lc3RhbXBfdGVzdCBUZXN0OiBUaW1lc3RhbXAKKyAqCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgaW1wbGVtZW50YXRpb24gb2YgdGltZXN0YW1wX3Rlc3QoKQorICoKKyAqIFxzZWN0aW9uIHRpbWVzdGFtcF90ZXN0X3NlYyBTY29wZSBvZiB0aGUgVGVzdAorICoKKyAqIFRoaXMgdGVzdHMgd2hldGhlciB0aW1lc3RhbXAgQVBJIHdvcmtzLgorICoKKyAqIEFQSSB0ZXN0ZWQ6CisgKiAgLSBwal9nZXRfdGltZXN0YW1wX2ZyZXEoKQorICogIC0gcGpfZ2V0X3RpbWVzdGFtcCgpCisgKiAgLSBwal9lbGFwc2VkX3VzZWMoKQorICogIC0gUEpfTE9HKCkKKyAqCisgKgorICogVGhpcyBmaWxlIGlzIDxiPnBqbGliLXRlc3QvdGltZXN0YW1wLmM8L2I+CisgKgorICogXGluY2x1ZGUgcGpsaWItdGVzdC90aW1lc3RhbXAuYworICovCisKKyNpZiBJTkNMVURFX1RJTUVTVEFNUF9URVNUCisKKyNkZWZpbmUgVEhJU19GSUxFICAgInRpbWVzdGFtcCIKKworc3RhdGljIGludCB0aW1lc3RhbXBfYWNjdXJhY3koKQoreworICAgIHBqX3RpbWVzdGFtcCBmcmVxLCB0MSwgdDI7CisgICAgcGpfdGltZV92YWwgdHYxLCB0djIsIHR2dG1wOworICAgIHBqX2ludDY0X3QgbXNlYywgdGljczsKKyAgICBwal9pbnQ2NF90IGRpZmY7CisKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi4udGVzdGluZyBmcmVxdWVuY3kgYWNjdXJhY3kgKHBscyB3YWl0KSIpKTsKKworICAgIHBqX2dldF90aW1lc3RhbXBfZnJlcSgmZnJlcSk7CisKKyAgICAvKiBHZXQgdGhlIHN0YXJ0IHRpbWUgKi8KKyAgICBwal9nZXR0aW1lb2ZkYXkoJnR2dG1wKTsKKyAgICBkbyB7CisJcGpfZ2V0dGltZW9mZGF5KCZ0djEpOworICAgIH0gd2hpbGUgKFBKX1RJTUVfVkFMX0VRKHR2dG1wLCB0djEpKTsKKyAgICBwal9nZXRfdGltZXN0YW1wKCZ0MSk7CisKKyAgICAvKiBTbGVlcCBmb3IgMTAgc2Vjb25kcyAqLworICAgIHBqX3RocmVhZF9zbGVlcCgxMDAwMCk7CisKKyAgICAvKiBHZXQgZW5kIHRpbWUgKi8KKyAgICBwal9nZXR0aW1lb2ZkYXkoJnR2dG1wKTsKKyAgICBkbyB7CisJcGpfZ2V0dGltZW9mZGF5KCZ0djIpOworICAgIH0gd2hpbGUgKFBKX1RJTUVfVkFMX0VRKHR2dG1wLCB0djIpKTsKKyAgICBwal9nZXRfdGltZXN0YW1wKCZ0Mik7CisKKyAgICAvKiBHZXQgdGhlIGVsYXBzZWQgdGltZSAqLworICAgIFBKX1RJTUVfVkFMX1NVQih0djIsIHR2MSk7CisgICAgbXNlYyA9IFBKX1RJTUVfVkFMX01TRUModHYyKTsKKworICAgIC8qIENoZWNrIHRoYXQgdGhlIGZyZXF1ZW5jeSBtYXRjaCB0aGUgZWxhcHNlZCB0aW1lICovCisgICAgdGljcyA9IHQyLnU2NCAtIHQxLnU2NDsKKyAgICBkaWZmID0gdGljcyAtIChtc2VjICogZnJlcS51NjQgLyAxMDAwKTsKKyAgICBpZiAoZGlmZiA8IDApCisJZGlmZiA9IC1kaWZmOworCisgICAgLyogT25seSBhbGxvdyAxIG1zZWMgbWlzbWF0Y2ggKi8KKyAgICBpZiAoZGlmZiA+IChwal9pbnQ2NF90KShmcmVxLnU2NCAvIDEwMDApKSB7CisJUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLi5lcnJvcjogdGltZXN0YW1wIGRyaWZ0ZWQgYnkgJWQgdXNlYyBhZnRlciAiCisJCQkgICAgICIlZCBtc2VjIiwgCisJCQkgICAgIChwal91aW50MzJfdCkoZGlmZiAqIDEwMDAwMDAgLyBmcmVxLnU2NCksIAorCQkJICAgICBtc2VjKSk7CisJcmV0dXJuIC0yMDAwOworCisgICAgLyogT3RoZXJ3aXNlIGp1c3QgcHJpbnQgd2FybmluZyBpZiB0aW1lc3RhbXAgZHJpZnRlZCBieSA+MSB1c2VjICovCisgICAgfSBlbHNlIGlmIChkaWZmID4gKHBqX2ludDY0X3QpKGZyZXEudTY0IC8gMTAwMDAwMCkpIHsKKwlQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uLndhcm5pbmc6IHRpbWVzdGFtcCBkcmlmdGVkIGJ5ICVkIHVzZWMgYWZ0ZXIgIgorCQkJICAgICAiJWQgbXNlYyIsIAorCQkJICAgICAocGpfdWludDMyX3QpKGRpZmYgKiAxMDAwMDAwIC8gZnJlcS51NjQpLCAKKwkJCSAgICAgbXNlYykpOworICAgIH0gZWxzZSB7CisJUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLi5nb29kLiBUaW1lc3RhbXAgaXMgYWNjdXJhdGUgZG93biB0byIKKwkJCSAgICAgIiBuZWFyZXN0IHVzZWMuIikpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisKK2ludCB0aW1lc3RhbXBfdGVzdCh2b2lkKQoreworICAgIGVudW0geyBDT05TRUNVVElWRV9MT09QID0gMTAwIH07CisgICAgdm9sYXRpbGUgdW5zaWduZWQgaTsKKyAgICBwal90aW1lc3RhbXAgZnJlcSwgdDEsIHQyOworICAgIHBqX3RpbWVfdmFsIHR2MSwgdHYyOworICAgIHVuc2lnbmVkIGVsYXBzZWQ7CisgICAgcGpfc3RhdHVzX3QgcmM7CisKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uVGVzdGluZyB0aW1lc3RhbXAgKGhpZ2ggcmVzIHRpbWUpIikpOworICAgIAorICAgIC8qIEdldCBhbmQgZGlzcGxheSB0aW1lc3RhbXAgZnJlcXVlbmN5LiAqLworICAgIGlmICgocmM9cGpfZ2V0X3RpbWVzdGFtcF9mcmVxKCZmcmVxKSkgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLkVSUk9SOiBnZXQgdGltZXN0YW1wIGZyZXEiLCByYyk7CisJcmV0dXJuIC0xMDAwOworICAgIH0KKworICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi4uZnJlcXVlbmN5OiBoaXdvcmQ9JWx1IGxvd29yZD0lbHUiLCAKKwkJCWZyZXEudTMyLmhpLCBmcmVxLnUzMi5sbykpOworCisgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLmNoZWNraW5nIGlmIHRpbWUgY2FuIHJ1biBiYWNrd2FyZHMgKHBscyB3YWl0KS4uIikpOworCisgICAgLyoKKyAgICAgKiBDaGVjayBpZiBjb25zZWN1dGl2ZSByZWFkaW5ncyBzaG91bGQgeWllbGQgdGltZXN0YW1wIHZhbHVlCisgICAgICogdGhhdCBpcyBiaWdnZXIgdGhhbiBwcmV2aW91cyB2YWx1ZS4KKyAgICAgKiBGaXJzdCB3ZSBnZXQgdGhlIGZpcnN0IHRpbWVzdGFtcC4KKyAgICAgKi8KKyAgICByYyA9IHBqX2dldF90aW1lc3RhbXAoJnQxKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLkVSUk9SOiBwal9nZXRfdGltZXN0YW1wIiwgcmMpOworCXJldHVybiAtMTAwMTsKKyAgICB9CisgICAgcmMgPSBwal9nZXR0aW1lb2ZkYXkoJnR2MSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKwlhcHBfcGVycm9yKCIuLi5FUlJPUjogcGpfZ2V0dGltZW9mZGF5IiwgcmMpOworCXJldHVybiAtMTAwMjsKKyAgICB9CisgICAgZm9yIChpPTA7IGk8Q09OU0VDVVRJVkVfTE9PUDsgKytpKSB7CisgICAgICAgIAorICAgICAgICBwal90aHJlYWRfc2xlZXAocGpfcmFuZCgpICUgMTAwKTsKKworCXJjID0gcGpfZ2V0X3RpbWVzdGFtcCgmdDIpOworCWlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SOiBwal9nZXRfdGltZXN0YW1wIiwgcmMpOworCSAgICByZXR1cm4gLTEwMDM7CisJfQorCXJjID0gcGpfZ2V0dGltZW9mZGF5KCZ0djIpOworCWlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisJICAgIGFwcF9wZXJyb3IoIi4uLkVSUk9SOiBwal9nZXR0aW1lb2ZkYXkiLCByYyk7CisJICAgIHJldHVybiAtMTAwNDsKKwl9CisKKwkvKiBjb21wYXJlIHQyIHdpdGggdDEsIGV4cGVjdGluZyB0MiA+PSB0MS4gKi8KKwlpZiAodDIudTMyLmhpIDwgdDEudTMyLmhpIHx8CisJICAgICh0Mi51MzIuaGkgPT0gdDEudTMyLmhpICYmIHQyLnUzMi5sbyA8IHQxLnUzMi5sbykpCisJeworCSAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uRVJST1I6IHRpbWVzdGFtcCBydW4gYmFja3dhcmRzISIpKTsKKwkgICAgcmV0dXJuIC0xMDA1OworCX0KKworCS8qIGNvbXBhcmUgdHYyIHdpdGggdHYxLCBleHBlY3RpbmcgdHYyID49IHR2MS4gKi8KKwlpZiAoUEpfVElNRV9WQUxfTFQodHYyLCB0djEpKSB7CisJICAgIFBKX0xPRygzLChUSElTX0ZJTEUsICIuLi5FUlJPUjogdGltZSBydW4gYmFja3dhcmRzISIpKTsKKwkgICAgcmV0dXJuIC0xMDA2OworCX0KKyAgICB9CisKKyAgICAvKiAKKyAgICAgKiBTaW1wbGUgdGVzdCB0byB0aW1lIHNvbWUgbG9vcC4gCisgICAgICovCisgICAgUEpfTE9HKDMsKFRISVNfRklMRSwgIi4uLi50ZXN0aW5nIHNpbXBsZSAxMDAwMDAwIGxvb3AiKSk7CisKKworICAgIC8qIE1hcmsgc3RhcnQgdGltZS4gKi8KKyAgICBpZiAoKHJjPXBqX2dldF90aW1lc3RhbXAoJnQxKSkgIT0gUEpfU1VDQ0VTUykgeworCWFwcF9wZXJyb3IoIi4uLi5lcnJvcjogY2F0J3QgZ2V0IHRpbWVzdGFtcCIsIHJjKTsKKwlyZXR1cm4gLTEwMTA7CisgICAgfQorCisgICAgLyogTG9vcC4uICovCisgICAgZm9yIChpPTA7IGk8MTAwMDAwMDsgKytpKSB7CisJLyogVHJ5IHRvIGRvIHNvbWV0aGluZyBzbyB0aGF0IHNtYXJ0IGNvbXBpbGVycyB3b250CisJICogcmVtb3ZlIHRoaXMgc2lsbHkgbG9vcC4KKwkgKi8KKwludWxsX2Z1bmMoKTsKKyAgICB9CisKKyAgICBwal90aHJlYWRfc2xlZXAoMCk7CisKKyAgICAvKiBNYXJrIGVuZCB0aW1lLiAqLworICAgIHBqX2dldF90aW1lc3RhbXAoJnQyKTsKKworICAgIC8qIEdldCBlbGFwc2VkIHRpbWUgaW4gdXNlYy4gKi8KKyAgICBlbGFwc2VkID0gcGpfZWxhcHNlZF91c2VjKCZ0MSwgJnQyKTsKKyAgICBQSl9MT0coMywoVEhJU19GSUxFLCAiLi4uLmVsYXBzZWQ6ICV1IHVzZWMiLCAodW5zaWduZWQpZWxhcHNlZCkpOworCisgICAgLyogU2VlIGlmIGVsYXBzZWQgdGltZSBpcyAicmVhc29uYWJsZSIuIAorICAgICAqIFRoaXMgc2hvdWxkIGJlIGdvb2QgZXZlbiBvbiA1ME1oeiBlbWJlZGRlZCBwb3dlcnBjLgorICAgICAqLworICAgIGlmIChlbGFwc2VkIDwgMSB8fCBlbGFwc2VkID4gMTAwMDAwMCkgeworCVBKX0xPRygzLChUSElTX0ZJTEUsICIuLi4uZXJyb3I6IGVsYXBzZWQgdGltZSBvdXRzaWRlIHdpbmRvdyAoJXUsICIKKwkJCSAgICAgInQxLnUzMi5oaT0ldSwgdDEudTMyLmxvPSV1LCAiCisJCQkgICAgICJ0Mi51MzIuaGk9JXUsIHQyLnUzMi5sbz0ldSkiLAorCQkJICAgICBlbGFwc2VkLCAKKwkJCSAgICAgdDEudTMyLmhpLCB0MS51MzIubG8sIHQyLnUzMi5oaSwgdDIudTMyLmxvKSk7CisJcmV0dXJuIC0xMDMwOworICAgIH0KKworICAgIC8qIFRlc3RpbmcgdGltZS90aW1lc3RhbXAgYWNjdXJhY3kgKi8KKyAgICByYyA9IHRpbWVzdGFtcF9hY2N1cmFjeSgpOworICAgIGlmIChyYyAhPSAwKQorCXJldHVybiByYzsKKworICAgIHJldHVybiAwOworfQorCisKKyNlbHNlCisvKiBUbyBwcmV2ZW50IHdhcm5pbmcgYWJvdXQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1wdHkiCisgKiB3aGVuIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gCisgKi8KK2ludCBkdW1teV90aW1lc3RhbXBfdGVzdDsKKyNlbmRpZgkvKiBJTkNMVURFX1RJTUVTVEFNUF9URVNUICovCisKZGlmZiAtLWdpdCBhL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3VkcF9lY2hvX3Nydl9pb3F1ZXVlLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC91ZHBfZWNob19zcnZfaW9xdWV1ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNzAxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC91ZHBfZWNob19zcnZfaW9xdWV1ZS5jCkBAIC0wLDAgKzEsMjE0IEBACisvKiAkSWQkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgPHBqbGliLmg+CisjaW5jbHVkZSAidGVzdC5oIgorCitzdGF0aWMgcGpfaW9xdWV1ZV9rZXlfdCAqa2V5Oworc3RhdGljIHBqX2F0b21pY190ICp0b3RhbF9ieXRlczsKK3N0YXRpYyBwal9ib29sX3QgdGhyZWFkX3F1aXRfZmxhZzsKKworc3RydWN0IG9wX2tleQoreworICAgIHBqX2lvcXVldWVfb3Bfa2V5X3QgIG9wX2tleV87CisgICAgc3RydWN0IG9wX2tleSAgICAgICAqcGVlcjsKKyAgICBjaGFyICAgICAgICAgICAgICAgICpidWZmZXI7CisgICAgcGpfc2l6ZV90ICAgICAgICAgICAgc2l6ZTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICBpc19wZW5kaW5nOworICAgIHBqX3N0YXR1c190ICAgICAgICAgIGxhc3RfZXJyOworICAgIHBqX3NvY2thZGRyX2luICAgICAgIGFkZHI7CisgICAgaW50ICAgICAgICAgICAgICAgICAgYWRkcmxlbjsKK307CisKK3N0YXRpYyB2b2lkIG9uX3JlYWRfY29tcGxldGUocGpfaW9xdWV1ZV9rZXlfdCAqa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfaW9xdWV1ZV9vcF9rZXlfdCAqb3Bfa2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCBieXRlc19yZWNlaXZlZCkKK3sKKyAgICBwal9zdGF0dXNfdCByYzsKKyAgICBzdHJ1Y3Qgb3Bfa2V5ICpyZWN2X3JlYyA9IChzdHJ1Y3Qgb3Bfa2V5ICopb3Bfa2V5OworCisgICAgZm9yICg7OykgeworICAgICAgICBzdHJ1Y3Qgb3Bfa2V5ICpzZW5kX3JlYyA9IHJlY3ZfcmVjLT5wZWVyOworICAgICAgICByZWN2X3JlYy0+aXNfcGVuZGluZyA9IDA7CisKKyAgICAgICAgaWYgKGJ5dGVzX3JlY2VpdmVkIDwgMCkgeworICAgICAgICAgICAgaWYgKC1ieXRlc19yZWNlaXZlZCAhPSByZWN2X3JlYy0+bGFzdF9lcnIpIHsKKyAgICAgICAgICAgICAgICByZWN2X3JlYy0+bGFzdF9lcnIgPSAocGpfc3RhdHVzX3QpLWJ5dGVzX3JlY2VpdmVkOworICAgICAgICAgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yIHJlY2VpdmluZyBkYXRhIiwgcmVjdl9yZWMtPmxhc3RfZXJyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChieXRlc19yZWNlaXZlZCA9PSAwKSB7CisgICAgICAgICAgICAvKiBub3RlOiBwcmV2aW91cyBlcnJvciwgb3Igd3JpdGUgY2FsbGJhY2sgKi8KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBqX2F0b21pY19hZGQodG90YWxfYnl0ZXMsIChwal9hdG9taWNfdmFsdWVfdClieXRlc19yZWNlaXZlZCk7CisKKyAgICAgICAgICAgIGlmICghc2VuZF9yZWMtPmlzX3BlbmRpbmcpIHsKKyAgICAgICAgICAgICAgICBwal9zc2l6ZV90IHNlbnQgPSBieXRlc19yZWNlaXZlZDsKKyAgICAgICAgICAgICAgICBwal9tZW1jcHkoc2VuZF9yZWMtPmJ1ZmZlciwgcmVjdl9yZWMtPmJ1ZmZlciwgYnl0ZXNfcmVjZWl2ZWQpOworICAgICAgICAgICAgICAgIHBqX21lbWNweSgmc2VuZF9yZWMtPmFkZHIsICZyZWN2X3JlYy0+YWRkciwgcmVjdl9yZWMtPmFkZHJsZW4pOworICAgICAgICAgICAgICAgIHNlbmRfcmVjLT5hZGRybGVuID0gcmVjdl9yZWMtPmFkZHJsZW47CisgICAgICAgICAgICAgICAgcmMgPSBwal9pb3F1ZXVlX3NlbmR0byhrZXksICZzZW5kX3JlYy0+b3Bfa2V5XywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3JlYy0+YnVmZmVyLCAmc2VudCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZW5kX3JlYy0+YWRkciwgc2VuZF9yZWMtPmFkZHJsZW4pOworICAgICAgICAgICAgICAgIHNlbmRfcmVjLT5pc19wZW5kaW5nID0gKHJjPT1QSl9FUEVORElORyk7CisKKyAgICAgICAgICAgICAgICBpZiAocmMhPVBKX1NVQ0NFU1MgJiYgcmMhPVBKX0VQRU5ESU5HKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcF9wZXJyb3IoIi4uLnNlbmQgZXJyb3IoMSkiLCByYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzZW5kX3JlYy0+aXNfcGVuZGluZykgeworICAgICAgICAgICAgYnl0ZXNfcmVjZWl2ZWQgPSByZWN2X3JlYy0+c2l6ZTsKKyAgICAgICAgICAgIHJjID0gcGpfaW9xdWV1ZV9yZWN2ZnJvbShrZXksICZyZWN2X3JlYy0+b3Bfa2V5XywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdl9yZWMtPmJ1ZmZlciwgJmJ5dGVzX3JlY2VpdmVkLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWN2X3JlYy0+YWRkciwgJnJlY3ZfcmVjLT5hZGRybGVuKTsKKyAgICAgICAgICAgIHJlY3ZfcmVjLT5pc19wZW5kaW5nID0gKHJjPT1QSl9FUEVORElORyk7CisgICAgICAgICAgICBpZiAocmMgPT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCBuZXh0IGxvb3AuICovCisgICAgICAgICAgICB9IGVsc2UgaWYgKHJjID09IFBKX0VQRU5ESU5HKSB7CisgICAgICAgICAgICAgICAgLyogcXVpdCBjYWxsYmFjay4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogZXJyb3IgKi8KKyAgICAgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5yZWN2IGVycm9yIiwgcmMpOworICAgICAgICAgICAgICAgIHJlY3ZfcmVjLT5sYXN0X2VyciA9IHJjOworCisgICAgICAgICAgICAgICAgYnl0ZXNfcmVjZWl2ZWQgPSAwOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCBuZXh0IGxvb3AuICovCisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiByZWN2IHdpbGwgYmUgZG9uZSB3aGVuIHdyaXRlIGNvbXBsZXRpb24gY2FsbGJhY2sgaXMgY2FsbGVkLiAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIG9uX3dyaXRlX2NvbXBsZXRlKHBqX2lvcXVldWVfa2V5X3QgKmtleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwal9pb3F1ZXVlX29wX2tleV90ICpvcF9rZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGpfc3NpemVfdCBieXRlc19zZW50KQoreworICAgIHN0cnVjdCBvcF9rZXkgKnNlbmRfcmVjID0gKHN0cnVjdCBvcF9rZXkqKW9wX2tleTsKKworICAgIGlmIChieXRlc19zZW50IDw9IDApIHsKKyAgICAgICAgcGpfc3RhdHVzX3QgcmMgPSAocGpfc3RhdHVzX3QpLWJ5dGVzX3NlbnQ7CisgICAgICAgIGlmIChyYyAhPSBzZW5kX3JlYy0+bGFzdF9lcnIpIHsKKyAgICAgICAgICAgIHNlbmRfcmVjLT5sYXN0X2VyciA9IHJjOworICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uc2VuZCBlcnJvcigyKSIsIHJjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNlbmRfcmVjLT5pc19wZW5kaW5nID0gMDsKKyAgICBvbl9yZWFkX2NvbXBsZXRlKGtleSwgJnNlbmRfcmVjLT5wZWVyLT5vcF9rZXlfLCAwKTsKK30KKworc3RhdGljIGludCB3b3JrZXJfdGhyZWFkKHZvaWQgKmFyZykKK3sKKyAgICBwal9pb3F1ZXVlX3QgKmlvcXVldWUgPSAocGpfaW9xdWV1ZV90KikgYXJnOworICAgIHN0cnVjdCBvcF9rZXkgcmVhZF9vcCwgd3JpdGVfb3A7CisgICAgY2hhciByZWN2X2J1Zls1MTJdLCBzZW5kX2J1Zls1MTJdOworICAgIHBqX3NzaXplX3QgbGVuZ3RoOworICAgIHBqX3N0YXR1c190IHJjOworCisgICAgcmVhZF9vcC5wZWVyID0gJndyaXRlX29wOworICAgIHJlYWRfb3AuaXNfcGVuZGluZyA9IDA7CisgICAgcmVhZF9vcC5sYXN0X2VyciA9IDA7CisgICAgcmVhZF9vcC5idWZmZXIgPSByZWN2X2J1ZjsKKyAgICByZWFkX29wLnNpemUgPSBzaXplb2YocmVjdl9idWYpOworICAgIHJlYWRfb3AuYWRkcmxlbiA9IHNpemVvZihyZWFkX29wLmFkZHIpOworCisgICAgd3JpdGVfb3AucGVlciA9ICZyZWFkX29wOworICAgIHdyaXRlX29wLmlzX3BlbmRpbmcgPSAwOworICAgIHdyaXRlX29wLmxhc3RfZXJyID0gMDsKKyAgICB3cml0ZV9vcC5idWZmZXIgPSBzZW5kX2J1ZjsKKyAgICB3cml0ZV9vcC5zaXplID0gc2l6ZW9mKHNlbmRfYnVmKTsKKworICAgIGxlbmd0aCA9IHNpemVvZihyZWN2X2J1Zik7CisgICAgcmMgPSBwal9pb3F1ZXVlX3JlY3Zmcm9tKGtleSwgJnJlYWRfb3Aub3Bfa2V5XywgcmVjdl9idWYsICZsZW5ndGgsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWFkX29wLmFkZHIsICZyZWFkX29wLmFkZHJsZW4pOworICAgIGlmIChyYyA9PSBQSl9TVUNDRVNTKSB7CisgICAgICAgIHJlYWRfb3AuaXNfcGVuZGluZyA9IDE7CisgICAgICAgIG9uX3JlYWRfY29tcGxldGUoa2V5LCAmcmVhZF9vcC5vcF9rZXlfLCBsZW5ndGgpOworICAgIH0KKyAgICAKKyAgICB3aGlsZSAoIXRocmVhZF9xdWl0X2ZsYWcpIHsKKyAgICAgICAgcGpfdGltZV92YWwgdGltZW91dDsKKyAgICAgICAgdGltZW91dC5zZWMgPSAwOyB0aW1lb3V0Lm1zZWMgPSAxMDsKKyAgICAgICAgcmMgPSBwal9pb3F1ZXVlX3BvbGwoaW9xdWV1ZSwgJnRpbWVvdXQpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50IHVkcF9lY2hvX3Nydl9pb3F1ZXVlKHZvaWQpCit7CisgICAgcGpfcG9vbF90ICpwb29sOworICAgIHBqX3NvY2tfdCBzb2NrOworICAgIHBqX2lvcXVldWVfdCAqaW9xdWV1ZTsKKyAgICBwal9pb3F1ZXVlX2NhbGxiYWNrIGNhbGxiYWNrOworICAgIGludCBpOworICAgIHBqX3RocmVhZF90ICp0aHJlYWRbRUNIT19TRVJWRVJfTUFYX1RIUkVBRFNdOworICAgIHBqX3N0YXR1c190IHJjOworCisgICAgcGpfYnplcm8oJmNhbGxiYWNrLCBzaXplb2YoY2FsbGJhY2spKTsKKyAgICBjYWxsYmFjay5vbl9yZWFkX2NvbXBsZXRlID0gJm9uX3JlYWRfY29tcGxldGU7CisgICAgY2FsbGJhY2sub25fd3JpdGVfY29tcGxldGUgPSAmb25fd3JpdGVfY29tcGxldGU7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCBOVUxMLCA0MDAwLCA0MDAwLCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpCisgICAgICAgIHJldHVybiAtMTA7CisKKyAgICByYyA9IHBqX2lvcXVldWVfY3JlYXRlKHBvb2wsIDIsICZpb3F1ZXVlKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICBhcHBfcGVycm9yKCIuLi5wal9pb3F1ZXVlX2NyZWF0ZSBlcnJvciIsIHJjKTsKKyAgICAgICAgcmV0dXJuIC0yMDsKKyAgICB9CisKKyAgICByYyA9IGFwcF9zb2NrZXQocGpfQUZfSU5FVCgpLCBwal9TT0NLX0RHUkFNKCksIDAsIAorICAgICAgICAgICAgICAgICAgICBFQ0hPX1NFUlZFUl9TVEFSVF9QT1JULCAmc29jayk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uYXBwX3NvY2tldCBlcnJvciIsIHJjKTsKKyAgICAgICAgcmV0dXJuIC0zMDsKKyAgICB9CisKKyAgICByYyA9IHBqX2lvcXVldWVfcmVnaXN0ZXJfc29jayhwb29sLCBpb3F1ZXVlLCBzb2NrLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWxsYmFjaywgJmtleSk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uZXJyb3IgcmVnaXN0ZXJpbmcgc29ja2V0IiwgcmMpOworICAgICAgICByZXR1cm4gLTQwOworICAgIH0KKworICAgIHJjID0gcGpfYXRvbWljX2NyZWF0ZShwb29sLCAwLCAmdG90YWxfYnl0ZXMpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLmVycm9yIGNyZWF0aW5nIGF0b21pYyB2YXJpYWJsZSIsIHJjKTsKKyAgICAgICAgcmV0dXJuIC00NTsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaTxFQ0hPX1NFUlZFUl9NQVhfVEhSRUFEUzsgKytpKSB7CisgICAgICAgIHJjID0gcGpfdGhyZWFkX2NyZWF0ZShwb29sLCBOVUxMLCAmd29ya2VyX3RocmVhZCwgaW9xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBKX1RIUkVBRF9ERUZBVUxUX1NUQUNLX1NJWkUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFkW2ldKTsKKyAgICAgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGFwcF9wZXJyb3IoIi4uLmNyZWF0ZSB0aHJlYWQgZXJyb3IiLCByYyk7CisgICAgICAgICAgICByZXR1cm4gLTUwOworICAgICAgICB9CisgICAgfQorCisgICAgZWNob19zcnZfY29tbW9uX2xvb3AodG90YWxfYnl0ZXMpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC91ZHBfZWNob19zcnZfc3luYy5jIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvdWRwX2VjaG9fc3J2X3N5bmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjYzMzdhCi0tLSAvZGV2L251bGwKKysrIGIvam5pL2xpYnBqc2lwL3NvdXJjZXMvcGpsaWIvc3JjL3BqbGliLXRlc3QvdWRwX2VjaG9fc3J2X3N5bmMuYwpAQCAtMCwwICsxLDE2NyBAQAorLyogJElkOiB1ZHBfZWNob19zcnZfc3luYy5jIDQ1MzcgMjAxMy0wNi0xOSAwNjo0Nzo0M1ogcml6YSAkICovCisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFRlbHV1IEluYy4gKGh0dHA6Ly93d3cudGVsdXUuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggQmVubnkgUHJpam9ubyA8YmVubnlAcHJpam9uby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAKKyAqLworI2luY2x1ZGUgInRlc3QuaCIKKyNpbmNsdWRlIDxwamxpYi5oPgorCitzdGF0aWMgcGpfYXRvbWljX3QgKnRvdGFsX2J5dGVzOworc3RhdGljIHBqX2Jvb2xfdCB0aHJlYWRfcXVpdF9mbGFnID0gMDsKKworc3RhdGljIGludCB3b3JrZXJfdGhyZWFkKHZvaWQgKmFyZykKK3sKKyAgICBwal9zb2NrX3QgICAgc29jayA9IChwal9zb2NrX3QpYXJnOworICAgIGNoYXIgICAgICAgICBidWZbNTEyXTsKKyAgICBwal9zdGF0dXNfdCAgbGFzdF9yZWN2X2VyciA9IFBKX1NVQ0NFU1MsIGxhc3Rfd3JpdGVfZXJyID0gUEpfU1VDQ0VTUzsKKworICAgIHdoaWxlICghdGhyZWFkX3F1aXRfZmxhZykgeworICAgICAgICBwal9zc2l6ZV90IGxlbjsKKyAgICAgICAgcGpfc3RhdHVzX3QgcmM7CisgICAgICAgIHBqX3NvY2thZGRyX2luIGFkZHI7CisgICAgICAgIGludCBhZGRybGVuOworCisgICAgICAgIGxlbiA9IHNpemVvZihidWYpOworICAgICAgICBhZGRybGVuID0gc2l6ZW9mKGFkZHIpOworICAgICAgICByYyA9IHBqX3NvY2tfcmVjdmZyb20oc29jaywgYnVmLCAmbGVuLCAwLCAmYWRkciwgJmFkZHJsZW4pOworICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgaWYgKHJjICE9IGxhc3RfcmVjdl9lcnIpIHsKKyAgICAgICAgICAgICAgICBhcHBfcGVycm9yKCIuLi5yZWN2IGVycm9yIiwgcmMpOworICAgICAgICAgICAgICAgIGxhc3RfcmVjdl9lcnIgPSByYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKwlwal9hdG9taWNfYWRkKHRvdGFsX2J5dGVzLCAocGpfYXRvbWljX3ZhbHVlX3QpbGVuKTsKKworICAgICAgICByYyA9IHBqX3NvY2tfc2VuZHRvKHNvY2ssIGJ1ZiwgJmxlbiwgMCwgJmFkZHIsIGFkZHJsZW4pOworICAgICAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykgeworICAgICAgICAgICAgaWYgKHJjICE9IGxhc3Rfd3JpdGVfZXJyKSB7CisgICAgICAgICAgICAgICAgYXBwX3BlcnJvcigiLi4uc2VuZCBlcnJvciIsIHJjKTsKKyAgICAgICAgICAgICAgICBsYXN0X3dyaXRlX2VyciA9IHJjOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKworaW50IGVjaG9fc3J2X3N5bmModm9pZCkKK3sKKyAgICBwal9wb29sX3QgKnBvb2w7CisgICAgcGpfc29ja190IHNvY2s7CisgICAgcGpfdGhyZWFkX3QgKnRocmVhZFtFQ0hPX1NFUlZFUl9NQVhfVEhSRUFEU107CisgICAgcGpfc3RhdHVzX3QgcmM7CisgICAgaW50IGk7CisKKyAgICBwb29sID0gcGpfcG9vbF9jcmVhdGUobWVtLCBOVUxMLCA0MDAwLCA0MDAwLCBOVUxMKTsKKyAgICBpZiAoIXBvb2wpCisgICAgICAgIHJldHVybiAtNTsKKworICAgIHJjID0gcGpfYXRvbWljX2NyZWF0ZShwb29sLCAwLCAmdG90YWxfYnl0ZXMpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgIGFwcF9wZXJyb3IoIi4uLnVuYWJsZSB0byBjcmVhdGUgYXRvbWljX3ZhciIsIHJjKTsKKyAgICAgICAgcmV0dXJuIC02OworICAgIH0KKworICAgIHJjID0gYXBwX3NvY2tldChwal9BRl9JTkVUKCksIHBqX1NPQ0tfREdSQU0oKSwwLCBFQ0hPX1NFUlZFUl9TVEFSVF9QT1JULCAmc29jayk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgYXBwX3BlcnJvcigiLi4uc29ja2V0IGVycm9yIiwgcmMpOworICAgICAgICByZXR1cm4gLTEwOworICAgIH0KKworICAgIGZvciAoaT0wOyBpPEVDSE9fU0VSVkVSX01BWF9USFJFQURTOyArK2kpIHsKKyAgICAgICAgcmMgPSBwal90aHJlYWRfY3JlYXRlKHBvb2wsIE5VTEwsICZ3b3JrZXJfdGhyZWFkLCAodm9pZCopc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBKX1RIUkVBRF9ERUZBVUxUX1NUQUNLX1NJWkUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFkW2ldKTsKKyAgICAgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGFwcF9wZXJyb3IoIi4uLnVuYWJsZSB0byBjcmVhdGUgdGhyZWFkIiwgcmMpOworICAgICAgICAgICAgcmV0dXJuIC0yMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIFBKX0xPRygzLCgiIiwgIi4uLlVEUCBlY2hvIHNlcnZlciBydW5uaW5nIHdpdGggJWQgdGhyZWFkcyBhdCBwb3J0ICVkIiwKKyAgICAgICAgICAgICAgICAgIEVDSE9fU0VSVkVSX01BWF9USFJFQURTLCBFQ0hPX1NFUlZFUl9TVEFSVF9QT1JUKSk7CisgICAgUEpfTE9HKDMsKCIiLCAiLi4uUHJlc3MgQ3RybC1DIHRvIGFib3J0IikpOworCisgICAgZWNob19zcnZfY29tbW9uX2xvb3AodG90YWxfYnl0ZXMpOworICAgIHJldHVybiAwOworfQorCisKK2ludCBlY2hvX3Nydl9jb21tb25fbG9vcChwal9hdG9taWNfdCAqYnl0ZXNfY291bnRlcikKK3sKKyAgICBwal9oaWdocHJlY190IGxhc3RfcmVjZWl2ZWQsIGF2Z19idywgaGlnaGVzdF9idzsKKyAgICBwal90aW1lX3ZhbCBsYXN0X3ByaW50OworICAgIHVuc2lnbmVkIGNvdW50OworICAgIGNvbnN0IGNoYXIgKmlvcXVldWVfbmFtZTsKKworICAgIGxhc3RfcmVjZWl2ZWQgPSAwOworICAgIHBqX2dldHRpbWVvZmRheSgmbGFzdF9wcmludCk7CisgICAgYXZnX2J3ID0gaGlnaGVzdF9idyA9IDA7CisgICAgY291bnQgPSAwOworCisgICAgaW9xdWV1ZV9uYW1lID0gcGpfaW9xdWV1ZV9uYW1lKCk7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHBqX2hpZ2hwcmVjX3QgcmVjZWl2ZWQsIGN1cl9yZWNlaXZlZCwgYnc7CisgICAgICAgIHVuc2lnbmVkIG1zZWM7CisgICAgICAgIHBqX3RpbWVfdmFsIG5vdywgZHVyYXRpb247CisKKyAgICAgICAgcGpfdGhyZWFkX3NsZWVwKDEwMDApOworCisgICAgICAgIHJlY2VpdmVkID0gY3VyX3JlY2VpdmVkID0gcGpfYXRvbWljX2dldChieXRlc19jb3VudGVyKTsKKyAgICAgICAgY3VyX3JlY2VpdmVkID0gY3VyX3JlY2VpdmVkIC0gbGFzdF9yZWNlaXZlZDsKKworICAgICAgICBwal9nZXR0aW1lb2ZkYXkoJm5vdyk7CisgICAgICAgIGR1cmF0aW9uID0gbm93OworICAgICAgICBQSl9USU1FX1ZBTF9TVUIoZHVyYXRpb24sIGxhc3RfcHJpbnQpOworICAgICAgICBtc2VjID0gUEpfVElNRV9WQUxfTVNFQyhkdXJhdGlvbik7CisgICAgICAgIAorICAgICAgICBidyA9IGN1cl9yZWNlaXZlZDsKKyAgICAgICAgcGpfaGlnaHByZWNfbXVsKGJ3LCAxMDAwKTsKKyAgICAgICAgcGpfaGlnaHByZWNfZGl2KGJ3LCBtc2VjKTsKKworICAgICAgICBsYXN0X3ByaW50ID0gbm93OworICAgICAgICBsYXN0X3JlY2VpdmVkID0gcmVjZWl2ZWQ7CisKKyAgICAgICAgYXZnX2J3ID0gYXZnX2J3ICsgYnc7CisgICAgICAgIGNvdW50Kys7CisKKyAgICAgICAgUEpfTE9HKDMsKCIiLCAiJXMgVURQICglZCB0aHJlYWRzKTogJXUgS0IvcyAoYXZnPSV1IEtCL3MpICVzIiwgCisJCSAgaW9xdWV1ZV9uYW1lLAorICAgICAgICAgICAgICAgICAgRUNIT19TRVJWRVJfTUFYX1RIUkVBRFMsIAorICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKShidyAvIDEwMDApLAorICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKShhdmdfYncgLyBjb3VudCAvIDEwMDApLAorICAgICAgICAgICAgICAgICAgKGNvdW50PT0yMCA/ICI8c2VzIGF2Zz4iIDogIiIpKSk7CisKKyAgICAgICAgaWYgKGNvdW50PT0yMCkgeworICAgICAgICAgICAgaWYgKGF2Z19idy9jb3VudCA+IGhpZ2hlc3RfYncpCisgICAgICAgICAgICAgICAgaGlnaGVzdF9idyA9IGF2Z19idy9jb3VudDsKKworICAgICAgICAgICAgY291bnQgPSAwOworICAgICAgICAgICAgYXZnX2J3ID0gMDsKKworICAgICAgICAgICAgUEpfTE9HKDMsKCIiLCAiSGlnaGVzdCBhdmVyYWdlIGJhbmR3aWR0aD0ldSBLQi9zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKShoaWdoZXN0X2J3LzEwMDApKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgUEpfVU5SRUFDSEVEKHJldHVybiAwOykKK30KKworCmRpZmYgLS1naXQgYS9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC91dGlsLmMgYi9qbmkvbGlicGpzaXAvc291cmNlcy9wamxpYi9zcmMvcGpsaWItdGVzdC91dGlsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJhYTkzOAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9saWJwanNpcC9zb3VyY2VzL3BqbGliL3NyYy9wamxpYi10ZXN0L3V0aWwuYwpAQCAtMCwwICsxLDE0MCBAQAorLyogJElkOiB1dGlsLmMgMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisjaW5jbHVkZSA8cGpsaWIuaD4KKworI2RlZmluZSBUSElTX0ZJTEUgInV0aWwuYyIKKwordm9pZCBhcHBfcGVycm9yKGNvbnN0IGNoYXIgKm1zZywgcGpfc3RhdHVzX3QgcmMpCit7CisgICAgY2hhciBlcnJidWZbUEpfRVJSX01TR19TSVpFXTsKKworICAgIFBKX0NIRUNLX1NUQUNLKCk7CisKKyAgICBwal9zdHJlcnJvcihyYywgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSk7CisgICAgUEpfTE9HKDMsKCJ0ZXN0IiwgIiVzOiBbcGpfc3RhdHVzX3Q9JWRdICVzIiwgbXNnLCByYywgZXJyYnVmKSk7Cit9CisKKyNkZWZpbmUgU0VSVkVSIDAKKyNkZWZpbmUgQ0xJRU5UIDEKKworcGpfc3RhdHVzX3QgYXBwX3NvY2tldChpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvLCBpbnQgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgcGpfc29ja190ICpwdHJfc29jaykKK3sKKyAgICBwal9zb2NrYWRkcl9pbiBhZGRyOworICAgIHBqX3NvY2tfdCBzb2NrOworICAgIHBqX3N0YXR1c190IHJjOworCisgICAgcmMgPSBwal9zb2NrX3NvY2tldChmYW1pbHksIHR5cGUsIHByb3RvLCAmc29jayk7CisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiByYzsKKworICAgIHBqX2J6ZXJvKCZhZGRyLCBzaXplb2YoYWRkcikpOworICAgIGFkZHIuc2luX2ZhbWlseSA9IChwal91aW50MTZfdClmYW1pbHk7CisgICAgYWRkci5zaW5fcG9ydCA9IChzaG9ydCkocG9ydCE9LTEgPyBwal9odG9ucygocGpfdWludDE2X3QpcG9ydCkgOiAwKTsKKyAgICByYyA9IHBqX3NvY2tfYmluZChzb2NrLCAmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKyAgICBpZiAocmMgIT0gUEpfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIHJjOworICAgIAorI2lmIFBKX0hBU19UQ1AKKyAgICBpZiAodHlwZSA9PSBwal9TT0NLX1NUUkVBTSgpKSB7CisgICAgICAgIHJjID0gcGpfc29ja19saXN0ZW4oc29jaywgNSk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorICAgICAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKyNlbmRpZgorCisgICAgKnB0cl9zb2NrID0gc29jazsKKyAgICByZXR1cm4gUEpfU1VDQ0VTUzsKK30KKworcGpfc3RhdHVzX3QgYXBwX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBqX3NvY2tfdCAqc2VydmVyZmQsIHBqX3NvY2tfdCAqY2xpZW50ZmQpCit7CisgICAgaW50IGk7CisgICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IHBvcnQgPSAxMTAwMDsKKyAgICBwal9zb2NrYWRkcl9pbiBhZGRyOworICAgIHBqX3N0cl90IHM7CisgICAgcGpfc3RhdHVzX3QgcmMgPSAwOworICAgIHBqX3NvY2tfdCBzb2NrWzJdOworCisgICAgLyogQ3JlYXRlIGJvdGggc29ja2V0cy4gKi8KKyAgICBmb3IgKGk9MDsgaTwyOyArK2kpIHsKKyAgICAgICAgcmMgPSBwal9zb2NrX3NvY2tldChmYW1pbHksIHR5cGUsIHByb3RvY29sLCAmc29ja1tpXSk7CisgICAgICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKSB7CisgICAgICAgICAgICBpZiAoaT09MSkKKyAgICAgICAgICAgICAgICBwal9zb2NrX2Nsb3NlKHNvY2tbMF0pOworICAgICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICB9CisgICAgfQorCisgICAgLyogUmV0cnkgYmluZCAqLworICAgIHBqX2J6ZXJvKCZhZGRyLCBzaXplb2YoYWRkcikpOworICAgIGFkZHIuc2luX2ZhbWlseSA9IHBqX0FGX0lORVQoKTsKKyAgICBmb3IgKGk9MDsgaTw1OyArK2kpIHsKKyAgICAgICAgYWRkci5zaW5fcG9ydCA9IHBqX2h0b25zKHBvcnQrKyk7CisgICAgICAgIHJjID0gcGpfc29ja19iaW5kKHNvY2tbU0VSVkVSXSwgJmFkZHIsIHNpemVvZihhZGRyKSk7CisgICAgICAgIGlmIChyYyA9PSBQSl9TVUNDRVNTKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisgICAgICAgIGdvdG8gb25fZXJyb3I7CisKKyAgICAvKiBGb3IgVENQLCBsaXN0ZW4gdGhlIHNvY2tldC4gKi8KKyNpZiBQSl9IQVNfVENQCisgICAgaWYgKHR5cGUgPT0gcGpfU09DS19TVFJFQU0oKSkgeworICAgICAgICByYyA9IHBqX3NvY2tfbGlzdGVuKHNvY2tbU0VSVkVSXSwgUEpfU09NQVhDT05OKTsKKyAgICAgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisgICAgICAgICAgICBnb3RvIG9uX2Vycm9yOworICAgIH0KKyNlbmRpZgorCisgICAgLyogQ29ubmVjdCBjbGllbnQgc29ja2V0LiAqLworICAgIGFkZHIuc2luX2FkZHIgPSBwal9pbmV0X2FkZHIocGpfY3N0cigmcywgIjEyNy4wLjAuMSIpKTsKKyAgICByYyA9IHBqX3NvY2tfY29ubmVjdChzb2NrW0NMSUVOVF0sICZhZGRyLCBzaXplb2YoYWRkcikpOworICAgIGlmIChyYyAhPSBQSl9TVUNDRVNTKQorICAgICAgICBnb3RvIG9uX2Vycm9yOworCisgICAgLyogRm9yIFRDUCwgbXVzdCBhY2NlcHQoKSwgYW5kIGdldCB0aGUgbmV3IHNvY2tldC4gKi8KKyNpZiBQSl9IQVNfVENQCisgICAgaWYgKHR5cGUgPT0gcGpfU09DS19TVFJFQU0oKSkgeworICAgICAgICBwal9zb2NrX3QgbmV3c2VydmVyOworCisgICAgICAgIHJjID0gcGpfc29ja19hY2NlcHQoc29ja1tTRVJWRVJdLCAmbmV3c2VydmVyLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKHJjICE9IFBKX1NVQ0NFU1MpCisgICAgICAgICAgICBnb3RvIG9uX2Vycm9yOworCisgICAgICAgIC8qIFJlcGxhY2Ugc2VydmVyIHNvY2tldCB3aXRoIG5ldyBzb2NrZXQuICovCisgICAgICAgIHBqX3NvY2tfY2xvc2Uoc29ja1tTRVJWRVJdKTsKKyAgICAgICAgc29ja1tTRVJWRVJdID0gbmV3c2VydmVyOworICAgIH0KKyNlbmRpZgorCisgICAgKnNlcnZlcmZkID0gc29ja1tTRVJWRVJdOworICAgICpjbGllbnRmZCA9IHNvY2tbQ0xJRU5UXTsKKworICAgIHJldHVybiByYzsKKworb25fZXJyb3I6CisgICAgZm9yIChpPTA7IGk8MjsgKytpKQorICAgICAgICBwal9zb2NrX2Nsb3NlKHNvY2tbaV0pOworICAgIHJldHVybiByYzsKK30K