IiBWaW0gc3ludGF4IGZpbGUKIiBMYW5ndWFnZToJRm9ydHJhbiAyMDA4IChhbmQgb2xkZXI6IEZvcnRyYW4gMjAwMywgOTUsIDkwLCBhbmQgNzcpCiIgVmVyc2lvbjoJMC45NgoiIExhc3QgQ2hhbmdlOgkyMDE1IE5vdi4gMzAKIiBNYWludGFpbmVyOglBaml0IEouIFRoYWtrYXIgPGFqaXRAdW5iLmNhPjsgPGh0dHA6Ly93d3cyLnVuYi5jYS9+YWppdC8+CiIgVXNhZ2U6CUZvciBpbnN0cnVjdGlvbnMsIGRvIDpoZWxwIGZvcnRyYW4tc3ludGF4IGZyb20gVmltCiIgQ3JlZGl0czoKIiAgVmVyc2lvbiAwLjEgd2FzIGJhc2VkIG9uIHRoZSBmb3J0cmFuIDc3IHN5bnRheCBmaWxlIGJ5IE1hcmlvIEV1c2ViaW8gYW5kCiIgIFByZWJlbiBHdWxkYmVyZy4gVXNlZnVsIHN1Z2dlc3Rpb25zIGFuZCBjb250cmlidXRpb25zIHdlcmUgbWFkZSBieTogQW5kcmVqIFBhbmprb3YsCiIgIEJyYW0gTW9vbGVuYWFyLCBUaG9tYXMgT2xzZW4sIE1pY2hhZWwgU3Rlcm5iZXJnLCBDaHJpc3RpYW4gUmVpbGUsCiIgIFdhbHRlciBEaWV1ZG9ubuksIEFsZXhhbmRlciBXYWduZXIsIFJvbWFuIEJlcnRsZSwgQ2hhcmxlcyBSZW5kbGVtYW4sCiIgIEFuZHJldyBHcmlmZml0aHMsIEpvZSBLcmFobiwgSGVuZHJpayBNZXJ4LCBhbmQgTWF0dCBUaG9tcHNvbi4KCmlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCiAgZmluaXNoCmVuZGlmCgpsZXQgczpjcG9fc2F2ZSA9ICZjcG8Kc2V0IGNwbyZ2aW0KCiIgQ2hvb3NlIGZvcnRyYW5fZGlhbGVjdCB1c2luZyB0aGUgcHJpb3JpdHk6CiIgc291cmNlIGZpbGUgZGlyZWN0aXZlID4gYnVmZmVyLWxvY2FsIHZhbHVlID4gZ2xvYmFsIHZhbHVlID4gZmlsZSBleHRlbnNpb24KIiBmaXJzdCB0cnkgdXNpbmcgZGlyZWN0aXZlIGluIGZpcnN0IHRocmVlIGxpbmVzIG9mIGZpbGUKbGV0IGI6Zm9ydHJhbl9yZXR5cGUgPSBnZXRsaW5lKDEpLiIgIi5nZXRsaW5lKDIpLiIgIi5nZXRsaW5lKDMpCmlmIGI6Zm9ydHJhbl9yZXR5cGUgPX4/ICdcPGZvcnRyYW5fZGlhbGVjdFxzKj1ccypGXD4nCiAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gIkYiCmVsc2VpZiBiOmZvcnRyYW5fcmV0eXBlID1+PyAnXDxmb3J0cmFuX2RpYWxlY3Rccyo9XHMqZjA4XD4nCiAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gImYwOCIKZWxzZWlmICFleGlzdHMoImI6Zm9ydHJhbl9kaWFsZWN0IikKICBpZiBleGlzdHMoImc6Zm9ydHJhbl9kaWFsZWN0IikgJiYgZzpmb3J0cmFuX2RpYWxlY3QgPX4jICdcPEZcfGYwOFw+JwogICAgIiB0cnkgZ2xvYmFsIHZhcmlhYmxlCiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSBnOmZvcnRyYW5fZGlhbGVjdAogIGVsc2UgICAgICAgICAiIG5vdGhpbmcgZm91bmQsIHNvIHVzZSBkZWZhdWx0CiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiZjA4IgogIGVuZGlmCmVuZGlmCnVubGV0ISBiOmZvcnRyYW5fcmV0eXBlCiIgbWFrZSBzdXJlIGJ1ZmZlci1sb2NhbCB2YWx1ZSBpcyBub3QgaW52YWxpZAppZiBiOmZvcnRyYW5fZGlhbGVjdCAhfiMgJ1w8Rlx8ZjA4XD4nCiAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gImYwOCIKZW5kaWYKCiIgQ2hvb3NlIGJldHdlZW4gZml4ZWQgYW5kIGZyZWUgc291cmNlIGZvcm0gaWYgdGhpcyBoYXNuJ3QgYmVlbiBkb25lIHlldAppZiAhZXhpc3RzKCJiOmZvcnRyYW5fZml4ZWRfc291cmNlIikKICBpZiBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiRiIKICAgICIgRiByZXF1aXJlcyBmcmVlIHNvdXJjZSBmb3JtCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICBlbHNlaWYgZXhpc3RzKCJmb3J0cmFuX2ZyZWVfc291cmNlIikKICAgICIgVXNlciBndWFyYW50ZWVzIGZyZWUgc291cmNlIGZvcm0gZm9yIGFsbCBmb3J0cmFuIGZpbGVzCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICBlbHNlaWYgZXhpc3RzKCJmb3J0cmFuX2ZpeGVkX3NvdXJjZSIpCiAgICAiIFVzZXIgZ3VhcmFudGVlcyBmaXhlZCBzb3VyY2UgZm9ybSBmb3IgYWxsIGZvcnRyYW4gZmlsZXMKICAgIGxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMQogIGVsc2VpZiBleHBhbmQoIiU6ZSIpID09PyAiZlw8OTBcfDk1XHwwM1x8MDhcPiIKICAgICIgRnJlZS1mb3JtIGZpbGUgZXh0ZW5zaW9uIGRlZmF1bHRzIGFzIGluIEludGVsIGlmb3J0LCBnY2MoZ2ZvcnRyYW4pLCBOQUcsIFBhdGhzY2FsZSwgYW5kIENyYXkgY29tcGlsZXJzCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICBlbHNlaWYgZXhwYW5kKCIlOmUiKSA9PT8gImZcfGY3N1x8Zm9yIgogICAgIiBGaXhlZC1mb3JtIGZpbGUgZXh0ZW5zaW9uIGRlZmF1bHRzCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDEKICBlbHNlCiAgICAiIE1vZGVybiBmb3J0cmFuIHN0aWxsIGFsbG93cyBib3RoIGZyZWUgYW5kIGZpeGVkIHNvdXJjZSBmb3JtLgogICAgIiBBc3N1bWUgZml4ZWQgc291cmNlIGZvcm0gdW5sZXNzIHNpZ25zIG9mIGZyZWUgc291cmNlIGZvcm0KICAgICIgYXJlIGRldGVjdGVkIGluIHRoZSBmaXJzdCBmaXZlIGNvbHVtbnMgb2YgdGhlIGZpcnN0IHM6bG1heCBsaW5lcy4KICAgICIgRGV0ZWN0aW9uIGJlY29tZXMgbW9yZSBhY2N1cmF0ZSBhbmQgdGltZS1jb25zdW1pbmcgaWYgbW9yZSBsaW5lcwogICAgIiBhcmUgY2hlY2tlZC4gSW5jcmVhc2UgdGhlIGxpbWl0IGJlbG93IGlmIHlvdSBrZWVwIGxvdHMgb2YgY29tbWVudHMgYXQKICAgICIgdGhlIHZlcnkgdG9wIG9mIGVhY2ggZmlsZSBhbmQgeW91IGhhdmUgYSBmYXN0IGNvbXB1dGVyLgogICAgbGV0IHM6bG1heCA9IDUwMAogICAgaWYgKCBzOmxtYXggPiBsaW5lKCIkIikgKQogICAgICBsZXQgczpsbWF4ID0gbGluZSgiJCIpCiAgICBlbmRpZgogICAgbGV0IGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPSAxCiAgICBsZXQgczpsbj0xCiAgICB3aGlsZSBzOmxuIDw9IHM6bG1heAogICAgICBsZXQgczp0ZXN0ID0gc3RycGFydChnZXRsaW5lKHM6bG4pLDAsNSkKICAgICAgaWYgczp0ZXN0ICF+ICdeW0NjKl0nICYmIHM6dGVzdCAhfiAnXiAqWyEjXScgJiYgczp0ZXN0ID1+ICdbXiAwLTlcdF0nICYmIHM6dGVzdCAhfiAnXlsgMC05XSpcdCcKICAgICAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICAgICAgICBicmVhawogICAgICBlbmRpZgogICAgICBsZXQgczpsbiA9IHM6bG4gKyAxCiAgICBlbmR3aGlsZQogICAgdW5sZXQhIHM6bG1heCBzOmxuIHM6dGVzdAogIGVuZGlmCmVuZGlmCgpzeW4gY2FzZSBpZ25vcmUKCmlmIGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMQogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZQkiXlxzXHs2LH1cenNcYVx3Klx6ZVxzKjoiCmVsc2UKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnN0cnVjdE5hbWUJIl5ccypcenNcYVx3Klx6ZVxzKjoiCmVuZGlmCmlmIGV4aXN0cygiZm9ydHJhbl9tb3JlX3ByZWNpc2UiKQogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKmRvXHNcK1wpXEA8PVxhXHcqIgogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKmlmXHNcK1wpXEA8PVxhXHcqIgogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKnNlbGVjdFxzXCtcKVxAPD1cYVx3KiIKZW5kaWYKCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRcPiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxjaGFyYWN0ZXJcPiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxjb21wbGV4XD4iCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW50ZWdlclw+IgpzeW4ga2V5d29yZCBmb3J0cmFuVHlwZQkJaW50cmluc2ljCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW1wbGljaXRcPiIKc3luIGtleXdvcmQgZm9ydHJhblN0cnVjdHVyZQlkaW1lbnNpb24Kc3luIGtleXdvcmQgZm9ydHJhblN0b3JhZ2VDbGFzcwlwYXJhbWV0ZXIgc2F2ZQpzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8c3Vicm91dGluZVw+IgpzeW4ga2V5d29yZCBmb3J0cmFuQ2FsbAkJY2FsbApzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8ZnVuY3Rpb25cPiIKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPHByb2dyYW1cPiIKc3luIGtleXdvcmQgZm9ydHJhbktleXdvcmQJcmV0dXJuIHN0b3AKc3luIGtleXdvcmQgZm9ydHJhbkNvbmRpdGlvbmFsCWVsc2UgdGhlbgpzeW4gbWF0Y2ggZm9ydHJhbkNvbmRpdGlvbmFsCSJcPGlmXD4iCnN5biBtYXRjaCBmb3J0cmFuQ29uZGl0aW9uYWxPYgkiXDxpZlxzKiguKilccypcZFwrXHMqLFxzKlxkXCtccyosXHMqXGRcK1xzKiQiCnN5biBtYXRjaCBmb3J0cmFuUmVwZWF0CQkiXDxkb1w+IgoKc3luIGtleXdvcmQgZm9ydHJhblRvZG8JCWNvbnRhaW5lZCB0b2RvIGZpeG1lCgoiQ2F0Y2ggZXJyb3JzIGNhdXNlZCBieSB0b28gbWFueSByaWdodCBwYXJlbnRoZXNlcwpzeW4gcmVnaW9uIGZvcnRyYW5QYXJlbiB0cmFuc3BhcmVudCBzdGFydD0iKCIgZW5kPSIpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblBhcmVuRXJyb3IsQGZvcnRyYW5Db21tZW50R3JvdXAsY0luY2x1ZGVkLEBzcGVsbApzeW4gbWF0Y2ggIGZvcnRyYW5QYXJlbkVycm9yICAgIikiCgpzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSJcLlxzKm5cPWVxdlxzKlwuIgpzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSJcLlxzKlwoYW5kXHxvclx8bm90XClccypcLiIKc3luIG1hdGNoIGZvcnRyYW5PcGVyYXRvcgkiXCgrXHwtXHwvXHxcKlwpIgpzeW4gbWF0Y2ggZm9ydHJhblR5cGVPYgkJIlw8Y2hhcmFjdGVyXHMqXCoiCgpzeW4gbWF0Y2ggZm9ydHJhbkJvb2xlYW4JIlwuXHMqXCh0cnVlXHxmYWxzZVwpXHMqXC4iCgpzeW4ga2V5d29yZCBmb3J0cmFuUmVhZFdyaXRlCWJhY2tzcGFjZSBjbG9zZSBlbmRmaWxlIGlucXVpcmUgb3BlbiBwcmludCByZWFkIHJld2luZCB3cml0ZQoKIklmIHRhYnMgYXJlIGFsbG93ZWQgdGhlbiB0aGUgbGVmdCBtYXJnaW4gY2hlY2tzIGRvIG5vdCB3b3JrCmlmIGV4aXN0cygiZm9ydHJhbl9oYXZlX3RhYnMiKQogIHN5biBtYXRjaCBmb3J0cmFuVGFiCQkiXHQiICB0cmFuc3BhcmVudAplbHNlCiAgc3luIG1hdGNoIGZvcnRyYW5UYWIJCSJcdCIKZW5kaWYKCnN5biBrZXl3b3JkIGZvcnRyYW5JTwkJYWNjZXNzIGJsYW5rIGRpcmVjdCBleGlzdCBmaWxlIGZtdCBmb3JtIGZvcm1hdHRlZCBpb3N0YXQgbmFtZSBuYW1lZCBuZXh0cmVjIG51bWJlciBvcGVuZWQgcmVjIHJlY2wgc2VxdWVudGlhbCBzdGF0dXMgdW5mb3JtYXR0ZWQgdW5pdAoKc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY1IJCWFsb2cgYWxvZzEwIGFtYXgwIGFtYXgxIGFtaW4wIGFtaW4xIGFtb2QgY2FicyBjY29zIGNleHAgY2xvZyBjc2luIGNzcXJ0IGRhYnMgZGFjb3MgZGFzaW4gZGF0YW4gZGF0YW4yIGRjb3MgZGNvc2ggZGRpbSBkZXhwIGRpbnQgZGxvZyBkbG9nMTAgZG1heDEgZG1pbjEgZG1vZCBkbmludCBkc2lnbiBkc2luIGRzaW5oIGRzcXJ0IGR0YW4gZHRhbmggZmxvYXQgaWFicyBpZGltIGlkaW50IGlkbmludCBpZml4IGlzaWduIG1heDAgbWF4MSBtaW4wIG1pbjEgc25nbAoKIiBJbnRyaW5zaWNzIHByb3ZpZGVkIGJ5IHNvbWUgdmVuZG9ycwpzeW4ga2V5d29yZCBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hIGlxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgcW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oCgpzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljCWFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaApzeW4gbWF0Y2ggZm9ydHJhbkludHJpbnNpYwkiXDxsZW5ccypbKCxdIm1lPXMrMwpzeW4gbWF0Y2ggZm9ydHJhbkludHJpbnNpYwkiXDxyZWFsXHMqKCJtZT1zKzQKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxpbXBsaWNpdFxzXCtyZWFsIgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJeXHMqcmVhbFw+IgpzeW4gbWF0Y2ggZm9ydHJhbkludHJpbnNpYwkiXDxsb2dpY2FsXHMqKCJtZT1zKzcKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxpbXBsaWNpdFxzXCtsb2dpY2FsIgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJeXHMqbG9naWNhbFw+IgoKIk51bWJlcnMgb2YgdmFyaW91cyBzb3J0cwoiIEludGVnZXJzCnN5biBtYXRjaCBmb3J0cmFuTnVtYmVyCWRpc3BsYXkgIlw8XGRcK1woX1xhXHcqXClcPVw+IgoiIGZsb2F0aW5nIHBvaW50IG51bWJlciwgd2l0aG91dCBhIGRlY2ltYWwgcG9pbnQKc3luIG1hdGNoIGZvcnRyYW5GbG9hdElsbAlkaXNwbGF5CSJcPFxkXCtbZGVxXVstK11cPVxkXCtcKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIsIHN0YXJ0aW5nIHdpdGggYSBkZWNpbWFsIHBvaW50CnN5biBtYXRjaCBmb3J0cmFuRmxvYXRJbGwJZGlzcGxheQkiXC5cZFwrXChbZGVxXVstK11cPVxkXCtcKVw9XChfXGFcdypcKVw9XD4iCiIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBubyBkaWdpdHMgYWZ0ZXIgZGVjaW1hbApzeW4gbWF0Y2ggZm9ydHJhbkZsb2F0SWxsCWRpc3BsYXkJIlw8XGRcK1wuXChbZGVxXVstK11cPVxkXCtcKVw9XChfXGFcdypcKVw9XD4iCiIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBEIG9yIFEgZXhwb25lbnRzCnN5biBtYXRjaCBmb3J0cmFuRmxvYXRJbGwJZGlzcGxheQkiXDxcZFwrXC5cZFwrXChbZHFdWy0rXVw9XGRcK1wpXD1cKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIKc3luIG1hdGNoIGZvcnRyYW5GbG9hdAlkaXNwbGF5CSJcPFxkXCtcLlxkXCtcKGVbLStdXD1cZFwrXClcPVwoX1xhXHcqXClcPVw+IgoiIE51bWJlcnMgaW4gZm9ybWF0cwpzeW4gbWF0Y2ggZm9ydHJhbkZvcm1hdFNwZWMJZGlzcGxheQkiXGQqZlxkXCtcLlxkXCsiCnN5biBtYXRjaCBmb3J0cmFuRm9ybWF0U3BlYwlkaXNwbGF5CSJcZCplW3NuXVw9XGRcK1wuXGRcK1woZVxkK1w+XClcPSIKc3luIG1hdGNoIGZvcnRyYW5Gb3JtYXRTcGVjCWRpc3BsYXkJIlxkKlwoZFx8cVx8Z1wpXGRcK1wuXGRcK1woZVxkK1wpXD0iCnN5biBtYXRjaCBmb3J0cmFuRm9ybWF0U3BlYwlkaXNwbGF5CSJcZFwreFw+IgoiIFRoZSBuZXh0IG1hdGNoIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgd291bGQgcGljayB1cCBpZGVudGlmaWVycyBhcyB3ZWxsCiIgc3luIG1hdGNoIGZvcnRyYW5Gb3JtYXRTcGVjCWRpc3BsYXkJIlw8XChhXHxpXClcZFwrIgoKIiBOdW1iZXJzIGFzIGxhYmVscwpzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsTnVtYmVyCWRpc3BsYXkJIl5cZFx7MSw1fVxzIm1lPWUtMQpzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsTnVtYmVyCWRpc3BsYXkJIl4gXGRcezEsNH1ccyJtcz1zKzEsbWU9ZS0xCnN5biBtYXRjaCBmb3J0cmFuTGFiZWxOdW1iZXIJZGlzcGxheQkiXiAgXGRcezEsM31ccyJtcz1zKzIsbWU9ZS0xCnN5biBtYXRjaCBmb3J0cmFuTGFiZWxOdW1iZXIJZGlzcGxheQkiXiAgIFxkXGRcPVxzIm1zPXMrMyxtZT1lLTEKc3luIG1hdGNoIGZvcnRyYW5MYWJlbE51bWJlcglkaXNwbGF5CSJeICAgIFxkXHMibXM9cys0LG1lPWUtMQoKaWYgZXhpc3RzKCJmb3J0cmFuX21vcmVfcHJlY2lzZSIpCiAgIiBOdW1iZXJzIGFzIHRhcmdldHMKICBzeW4gbWF0Y2ggZm9ydHJhblRhcmdldAlkaXNwbGF5CSJcKFw8aWZccyooLlwrKVxzKlwpXEA8PVwoXGRcK1xzKixccypcKVx7Mn1cZFwrXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5UYXJnZXQJZGlzcGxheQkiXChcPGRvXHNcK1wpXEA8PVxkXCtcPiIKICBzeW4gbWF0Y2ggZm9ydHJhblRhcmdldAlkaXNwbGF5CSJcKFw8Z29ccyp0b1xzKihcPVwpXEA8PVwoXGRcK1xzKixccypcKSpcZFwrXD4iCmVuZGlmCgpzeW4ga2V5d29yZCBmb3J0cmFuVHlwZVIJZXh0ZXJuYWwKc3luIGtleXdvcmQgZm9ydHJhbklPUgkJZm9ybWF0CnN5biBtYXRjaCBmb3J0cmFuS2V5d29yZFIJIlw8Y29udGludWVcPiIKc3luIG1hdGNoIGZvcnRyYW5LZXl3b3JkCSJeXHMqXGRcK1xzXCtjb250aW51ZVw+IgpzeW4gbWF0Y2ggZm9ydHJhbktleXdvcmQgIAkiXDxnb1xzKnRvXD4iCnN5biBtYXRjaCBmb3J0cmFuS2V5d29yZERlbCAgCSJcPGdvXHMqdG9cemVcc1wrLiosXHMqKC4qJCIKc3luIG1hdGNoIGZvcnRyYW5LZXl3b3JkT2IgIAkiXDxnb1xzKnRvXHplXHMqKFxkXCsuKiQiCnN5biByZWdpb24gZm9ydHJhblN0cmluZ1IJc3RhcnQ9KycrIGVuZD0rJysgY29udGFpbnM9Zm9ydHJhbkNvbnRpbnVlTWFyayxmb3J0cmFuTGVmdE1hcmdpbixmb3J0cmFuU2VyaWFsTnVtYmVyCnN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNSCWRpbSBsZ2UgbGd0IGxsZSBsbHQgbW9kCnN5biBrZXl3b3JkIGZvcnRyYW5LZXl3b3JkRGVsCWFzc2lnbiBwYXVzZQoKc3luIG1hdGNoIGZvcnRyYW5UeXBlICAgICAgICAgICAiXDx0eXBlXD4iCnN5biBrZXl3b3JkIGZvcnRyYW5UeXBlCSAgICAgICAgbm9uZQoKc3luIGtleXdvcmQgZm9ydHJhblN0cnVjdHVyZQlwcml2YXRlIHB1YmxpYyBpbnRlbnQgb3B0aW9uYWwKc3luIGtleXdvcmQgZm9ydHJhblN0cnVjdHVyZQlwb2ludGVyIHRhcmdldCBhbGxvY2F0YWJsZQpzeW4ga2V5d29yZCBmb3J0cmFuU3RvcmFnZUNsYXNzCWluIG91dApzeW4gbWF0Y2ggZm9ydHJhblN0b3JhZ2VDbGFzcwkiXDxraW5kXHMqPSJtZT1zKzQKc3luIG1hdGNoIGZvcnRyYW5TdG9yYWdlQ2xhc3MJIlw8bGVuXHMqPSJtZT1zKzMKCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxtb2R1bGVcPiIKc3luIGtleXdvcmQgZm9ydHJhblVuaXRIZWFkZXIJdXNlIG9ubHkgY29udGFpbnMKc3luIGtleXdvcmQgZm9ydHJhblVuaXRIZWFkZXIJcmVzdWx0IG9wZXJhdG9yIGFzc2lnbm1lbnQKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGludGVyZmFjZVw+IgpzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8cmVjdXJzaXZlXD4iCnN5biBrZXl3b3JkIGZvcnRyYW5LZXl3b3JkCWFsbG9jYXRlIGRlYWxsb2NhdGUgbnVsbGlmeSBjeWNsZSBleGl0CnN5biBtYXRjaCBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8c2VsZWN0XD4iCnN5biBrZXl3b3JkIGZvcnRyYW5Db25kaXRpb25hbAljYXNlIGRlZmF1bHQgd2hlcmUgZWxzZXdoZXJlCgpzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSJcKFwoPlx8PFwpPVw9XHw9PVx8Lz1cfD1cKSIKc3luIG1hdGNoIGZvcnRyYW5PcGVyYXRvcgkiPT4iCgpzeW4gcmVnaW9uIGZvcnRyYW5TdHJpbmcJc3RhcnQ9KyIrIGVuZD0rIisJY29udGFpbnM9Zm9ydHJhbkxlZnRNYXJnaW4sZm9ydHJhbkNvbnRpbnVlTWFyayxmb3J0cmFuU2VyaWFsTnVtYmVyCnN5biBrZXl3b3JkIGZvcnRyYW5JTwkJcGFkIHBvc2l0aW9uIGFjdGlvbiBkZWxpbSByZWFkd3JpdGUKc3luIGtleXdvcmQgZm9ydHJhbklPCQllb3IgYWR2YW5jZSBubWwKCnN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWMJYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCBtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlY2lzaW9uIHByZXNlbnQgcHJvZHVjdCByYWRpeCByYW5kb21fbnVtYmVyIHJhbmRvbV9zZWVkIHJhbmdlIHJlcGVhdCByZXNoYXBlIHJyc3BhY2luZwpzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljCXNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kIHNldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeQpzeW4gbWF0Y2ggZm9ydHJhbkludHJpbnNpYwkJIlw8bm90XD5cKFxzKlwuXClcQCEibWU9cyszCnN5biBtYXRjaCBmb3J0cmFuSW50cmluc2ljCSJcPGtpbmRcPlxzKlsoLF0ibWU9cys0CgpzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKmZ1bmN0aW9uIgpzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKmludGVyZmFjZSIKc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccyptb2R1bGUiCnN5biBtYXRjaCAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXHMqcHJvZ3JhbSIKc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccypzdWJyb3V0aW5lIgpzeW4gbWF0Y2ggIGZvcnRyYW5SZXBlYXQJIlw8ZW5kXHMqZG8iCnN5biBtYXRjaCAgZm9ydHJhbkNvbmRpdGlvbmFsCSJcPGVuZFxzKndoZXJlIgpzeW4gbWF0Y2ggIGZvcnRyYW5Db25kaXRpb25hbAkiXDxzZWxlY3RccypjYXNlIgpzeW4gbWF0Y2ggIGZvcnRyYW5Db25kaXRpb25hbAkiXDxlbmRccypzZWxlY3QiCnN5biBtYXRjaCAgZm9ydHJhblR5cGUJIlw8ZW5kXHMqdHlwZSIKc3luIG1hdGNoICBmb3J0cmFuVHlwZQkiXDxpblxzKm91dCIKCnN5biBrZXl3b3JkIGZvcnRyYW5UeXBlCSAgICAgICAgcHJvY2VkdXJlCnN5biBtYXRjaCAgZm9ydHJhblR5cGUJICAgICAgICAiXDxtb2R1bGVcemVcc1wrcHJvY2VkdXJlXD4iCnN5biBrZXl3b3JkIGZvcnRyYW5JT1IJCW5hbWVsaXN0CnN5biBrZXl3b3JkIGZvcnRyYW5Db25kaXRpb25hbFIJd2hpbGUKc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY1IJYWNoYXIgaWFjaGFyIHRyYW5zZmVyCgpzeW4ga2V5d29yZCBmb3J0cmFuSW5jbHVkZQkJaW5jbHVkZQpzeW4ga2V5d29yZCBmb3J0cmFuU3RvcmFnZUNsYXNzUglzZXF1ZW5jZQoKc3luIG1hdGNoICAgZm9ydHJhbkNvbmRpdGlvbmFsCSJcPGVuZFxzKmlmIgpzeW4gbWF0Y2ggICBmb3J0cmFuSU8JCWNvbnRhaW5zPWZvcnRyYW5PcGVyYXRvciAiXDxlXChuZFx8cnJcKVxzKj1ccypcZFwrIgpzeW4gbWF0Y2ggICBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8ZWxzZVxzKmlmIgoKc3luIGtleXdvcmQgZm9ydHJhblVuaXRIZWFkZXJPYgllbnRyeQpzeW4gbWF0Y2ggZm9ydHJhblR5cGVSCQlkaXNwbGF5ICJkb3VibGVcc1wrcHJlY2lzaW9uIgpzeW4gbWF0Y2ggZm9ydHJhblR5cGVSCQlkaXNwbGF5ICJkb3VibGVcc1wrY29tcGxleCIKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyUglkaXNwbGF5ICJibG9ja1xzXCtkYXRhIgpzeW4ga2V5d29yZCBmb3J0cmFuU3RvcmFnZUNsYXNzUgljb21tb24gZXF1aXZhbGVuY2UgZGF0YQpzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljUglkYmxlIGRwcm9kCnN5biBtYXRjaCAgIGZvcnRyYW5PcGVyYXRvclIJIlwuXHMqW2dsXVtldF1ccypcLiIKc3luIG1hdGNoICAgZm9ydHJhbk9wZXJhdG9yUgkiXC5ccypcKGVxXHxuZVwpXHMqXC4iCgpzeW4ga2V5d29yZCBmb3J0cmFuUmVwZWF0CQlmb3JhbGwKc3luIG1hdGNoIGZvcnRyYW5SZXBlYXQJCSJcPGVuZFxzKmZvcmFsbCIKc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYwludWxsIGNwdV90aW1lCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJCSJcPGVsZW1lbnRhbFw+IgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCQkiXDxwdXJlXD4iCmlmIGV4aXN0cygiZm9ydHJhbl9tb3JlX3ByZWNpc2UiKQogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKmZvcmFsbFxzXCtcKVxAPD1cYVx3Klw+IgplbmRpZgoKaWYgYjpmb3J0cmFuX2RpYWxlY3QgPT0gImYwOCIKICAiIEYyMDAzCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYyAgICAgICAgY29tbWFuZF9hcmd1bWVudF9jb3VudCBnZXRfY29tbWFuZCBnZXRfY29tbWFuZF9hcmd1bWVudCBnZXRfZW52aXJvbm1lbnRfdmFyaWFibGUgaXNfaW9zdGF0X2VuZCBpc19pb3N0YXRfZW9yIG1vdmVfYWxsb2MgbmV3X2xpbmUgc2VsZWN0ZWRfY2hhcl9raW5kIHNhbWVfdHlwZV9hcyBleHRlbmRzX3R5cGVfb2YKICAiIElTT19DX2JpbmRpbmcKICBzeW4ga2V5d29yZCBmb3J0cmFuQ29uc3RhbnQgICAgICAgICBjX251bGxfY2hhciBjX2FsZXJ0IGNfYmFja3NwYWNlIGNfZm9ybV9mZWVkIGNfbmV3X2xpbmUgY19jYXJyaWFnZV9yZXR1cm4gY19ob3Jpem9udGFsX3RhYiBjX3ZlcnRpY2FsX3RhYgogIHN5biBrZXl3b3JkIGZvcnRyYW5Db25zdGFudCAgICAgICAgIGNfaW50IGNfc2hvcnQgY19sb25nIGNfbG9uZ19sb25nIGNfc2lnbmVkX2NoYXIgY19zaXplX3QgY19pbnQ4X3QgY19pbnQxNl90IGNfaW50MzJfdCBjX2ludDY0X3QgY19pbnRfbGVhc3Q4X3QgY19pbnRfbGVhc3QxNl90IGNfaW50X2xlYXN0MzJfdCBjX2ludF9sZWFzdDY0X3QgY19pbnRfZmFzdDhfdCBjX2ludF9mYXN0MTZfdCBjX2ludF9mYXN0MzJfdCBjX2ludF9mYXN0NjRfdCBjX2ludG1heF90IENfaW50cHRyX3QgY19mbG9hdCBjX2RvdWJsZSBjX2xvbmdfZG91YmxlIGNfZmxvYXRfY29tcGxleCBjX2RvdWJsZV9jb21wbGV4IGNfbG9uZ19kb3VibGVfY29tcGxleCBjX2Jvb2wgY19jaGFyIGNfbnVsbF9wdHIgY19udWxsX2Z1bnB0cgogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWMgICAgICAgIGlzb19jX2JpbmRpbmcgY19sb2MgY19mdW5sb2MgY19hc3NvY2lhdGVkICBjX2ZfcG9pbnRlciBjX2ZfcHJvY3BvaW50ZXIKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZSAgICAgICAgICAgICBjX3B0ciBjX2Z1bnB0cgogICIgSVNPX0ZvcnRyYW5fZW52CiAgc3luIGtleXdvcmQgZm9ydHJhbkNvbnN0YW50ICAgICAgICAgaXNvX2ZvcnRyYW5fZW52IGNoYXJhY3Rlcl9zdG9yYWdlX3NpemUgZXJyb3JfdW5pdCBmaWxlX3N0b3JhZ2Vfc2l6ZSBpbnB1dF91bml0IGlvc3RhdF9lbmQgaW9zdGF0X2VvciBudW1lcmljX3N0b3JhZ2Vfc2l6ZSBvdXRwdXRfdW5pdAogICIgSUVFRV9hcml0aG1ldGljCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYyAgICAgICAgaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZQoKICBzeW4ga2V5d29yZCBmb3J0cmFuUmVhZFdyaXRlCWZsdXNoIHdhaXQKICBzeW4ga2V5d29yZCBmb3J0cmFuSU8gCSAgICAgIGRlY2ltYWwgcm91bmQgaW9tc2cKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZSAgICAgICAgICAgICBhc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydAogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlICAgICAgICAgICAgIG5vbl9pbnRyaW5zaWMgdmFsdWUgYmluZCBkZWZlcnJlZCBnZW5lcmljIGZpbmFsIGVudW1lcmF0b3IKICBzeW4gbWF0Y2ggZm9ydHJhblR5cGUgICAgICAgICAgICAgICAiXDxjbGFzc1w+IgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZSAgICAgICAgICAgICAgICJcPGFzc29jaWF0ZVw+IgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZSAgICAgICAgICAgICAgICJcPGVuZFxzKmFzc29jaWF0ZSIKICBzeW4gbWF0Y2ggZm9ydHJhblR5cGUgICAgICAgICAgICAgICAiXDxlbnVtXHMqLFxzKmJpbmRccyooXHMqY1xzKikiCiAgc3luIG1hdGNoIGZvcnRyYW5UeXBlICAgICAgICAgICAgICAgIlw8ZW5kXHMqZW51bSIKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbmRpdGlvbmFsCSJcPHNlbGVjdFxzKnR5cGUiCiAgc3luIG1hdGNoIGZvcnRyYW5Db25kaXRpb25hbCAgICAgICAgIlw8dHlwZVxzKmlzXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5Db25kaXRpb25hbCAgICAgICAgIlw8Y2xhc3Nccyppc1w+IgogIHN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlciAgICAgICAgICJcPGFic3RyYWN0XHMqaW50ZXJmYWNlXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5PcGVyYXRvciAgICAgICAgICAgIlwoW1x8XVwpIgoKICAiIEYyMDA4CiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYyAgICAgICAgYWNvc2ggYXNpbmggYXRhbmggYmVzc2VsX2owIGJlc3NlbF9qMSBiZXNzZWxfam4gYmVzc2VsX3kwIGJlc3NlbF95MSBiZXNzZWxfeW4gZXJmIGVyZmMgZXJmY19zY2FsZWQgZ2FtbWEgbG9nX2dhbW1hIGh5cG90IG5vcm0yCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYyAgICAgICAgYXRvbWljX2RlZmluZSBhdG9taWNfcmVmIGV4ZWN1dGVfY29tbWFuZF9saW5lIGxlYWR6IHRyYWlseiBzdG9yYWdlX3NpemUgbWVyZ2VfYml0cwogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWMgICAgICAgIGJnZSBiZ3QgYmxlIGJsdCBkc2hpZnRsIGRzaGlmdHIgZmluZGxvYyBpYWxsIGlhbnkgaXBhcml0eSBpbWFnZV9pbmRleCBsY29ib3VuZCB1Y29ib3VuZCBtYXNrbCBtYXNrciBudW1faW1hZ2VzIHBhcml0eSBwb3BjbnQgcG9wcGFyIHNoaWZ0YSBzaGlmdGwgc2hpZnRyIHRoaXNfaW1hZ2UKICBzeW4ga2V5d29yZCBmb3J0cmFuSU8gICAgICAgICAgICAgICBuZXd1bml0CiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGUgICAgICAgICAgICAgY29udGlndW91cwoKIiBDVURBIGZvcnRyYW4KICBzeW4gbWF0Y2ggZm9ydHJhblR5cGVDVURBICAgICAgICAgICAiXDxhdHRyaWJ1dGVzXD4iCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgaG9zdCBnbG9iYWwgZGV2aWNlIHZhbHVlCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgc2hhcmVkIGNvbnN0YW50IHBpbm5lZCB0ZXh0dXJlCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgZGltMSBkaW0yIGRpbTMgZGltNAogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFkZXZpY2Vwcm9wIGN1ZGFfY291bnRfa2luZCBjdWRhX3N0cmVhbV9raW5kCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYUV2ZW50IGN1ZGFGdW5jQXR0cmlidXRlcyBjdWRhQXJyYXlQdHIKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhU3ltYm9sIGN1ZGFDaGFubmVsRm9ybWF0RGVzYyBjdWRhUGl0Y2hlZFB0cgogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFFeHRlbnQgY3VkYU1lbWNweTNEUGFybXMKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhRnVuY0NhY2hlUHJlZmVyTm9uZSBjdWRhRnVuY0NhY2hlUHJlZmVyU2hhcmVkCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYUZ1bmNDYWNoZVByZWZlckwxIGN1ZGFMaW1pdFN0YWNrU2l6ZQogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFMaW1pdFByaW50ZlNpemUgY3VkYUxpbWl0TWFsbG9jSGVhcFNpemUKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhU2hhcmVkTWVtQmFua1NpemVEZWZhdWx0IGN1ZGFTaGFyZWRNZW1CYW5rU2l6ZUZvdXJCeXRlIGN1ZGFTaGFyZWRNZW1CYW5rU2l6ZUVpZ2h0Qnl0ZQogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFFdmVudERlZmF1bHQgY3VkYUV2ZW50QmxvY2tpbmdTeW5jIGN1ZGFFdmVudERpc2FibGVUaW1pbmcKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhTWVtY3B5SG9zdFRvRGV2aWNlIGN1ZGFNZW1jcHlEZXZpY2VUb0hvc3QKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhTWVtY3B5RGV2aWNlVG9EZXZpY2UKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhRXJyb3JOb3RSZWFkeSBjdWRhU3VjY2VzcyBjdWRhRXJyb3JJbnZhbGlkVmFsdWUKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjX2RldnB0cgoKICBzeW4gbWF0Y2ggZm9ydHJhblN0cmluZ0NVREEgICAgICAgICAiYmxvY2tpZHglW3h5el0iCiAgc3luIG1hdGNoIGZvcnRyYW5TdHJpbmdDVURBICAgICAgICAgImJsb2NrZGltJVt4eXpdIgogIHN5biBtYXRjaCBmb3J0cmFuU3RyaW5nQ1VEQSAgICAgICAgICJncmlkZGltJVt4eXpdIgogIHN5biBtYXRjaCBmb3J0cmFuU3RyaW5nQ1VEQSAgICAgICAgICJ0aHJlYWRpZHglW3h5el0iCgogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNDVURBICAgIHdhcnBzaXplIHN5bmN0aHJlYWRzIHN5bmN0aHJlYWRzX2FuZCBzeW5jdGhyZWFkc19jb3VudCBzeW5jdGhyZWFkc19vciB0aHJlYWRmZW5jZSB0aHJlYWRmZW5jZV9ibG9jayB0aHJlYWRmZW5jZV9zeXN0ZW0gZ3B1X3RpbWUgYWxsdGhyZWFkcyBhbnl0aHJlYWQgYmFsbG90CiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY0NVREEgICAgYXRvbWljYWRkIGF0b21pY3N1YiBhdG9taWNtYXggYXRvbWljbWluIGF0b21pY2FuZCBhdG9taWNvciBhdG9taWN4b3IgYXRvbWljZXhjaCBhdG9taWNpbmMgYXRvbWljZGVjIGF0b21pY2NhcyBzaXplb2YgX19zaGZsIF9fc2hmbF91cCBfX3NoZmxfZG93biBfX3NoZmxfeG9yCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY0NVREEgICAgY3VkYUNob29zZURldmljZSBjdWRhRGV2aWNlR2V0Q2FjaGVDb25maWcgY3VkYURldmljZUdldExpbWl0IGN1ZGFEZXZpY2VHZXRTaGFyZWRNZW1Db25maWcgY3VkYURldmljZVJlc2V0IGN1ZGFEZXZpY2VTZXRDYWNoZUNvbmZpZyBjdWRhRGV2aWNlU2V0TGltaXQgY3VkYURldmljZVNldFNoYXJlZE1lbUNvbmZpZyBjdWRhRGV2aWNlU3luY2hyb25pemUgY3VkYUdldERldmljZSBjdWRhR2V0RGV2aWNlQ291bnQgY3VkYUdldERldmljZVByb3BlcnRpZXMgY3VkYVNldERldmljZSBjdWRhU2V0RGV2aWNlRmxhZ3MgY3VkYVNldFZhbGlkRGV2aWNlcwogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNDVURBICAgIGN1ZGFUaHJlYWRFeGl0IGN1ZGFUaHJlYWRTeW5jaHJvbml6ZSBjdWRhR2V0TGFzdEVycm9yIGN1ZGFHZXRFcnJvclN0cmluZyBjdWRhUGVla0F0TGFzdEVycm9yIGN1ZGFTdHJlYW1DcmVhdGUgY3VkYVN0cmVhbURlc3Ryb3kgY3VkYVN0cmVhbVF1ZXJ5IGN1ZGFTdHJlYW1TeW5jaHJvbml6ZSBjdWRhU3RyZWFtV2FpdEV2ZW50IGN1ZGFFdmVudENyZWF0ZSBjdWRhRXZlbnRDcmVhdGVXaXRoRmxhZ3MgY3VkYUV2ZW50RGVzdHJveSBjdWRhRXZlbnRFbGFwc2VkVGltZSBjdWRhRXZlbnRRdWVyeSBjdWRhRXZlbnRSZWNvcmQgY3VkYUV2ZW50U3luY2hyb25pemUKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBjdWRhRnVuY0dldEF0dHJpYnV0ZXMgY3VkYUZ1bmNTZXRDYWNoZUNvbmZpZyBjdWRhRnVuY1NldFNoYXJlZE1lbUNvbmZpZyBjdWRhU2V0RG91YmxlRm9yRGV2aWNlIGN1ZGFTZXREb3VibGVGb3JIb3N0IGN1ZGFGcmVlIGN1ZGFGcmVlQXJyYXkgY3VkYUZyZWVIb3N0IGN1ZGFHZXRTeW1ib2xBZGRyZXNzIGN1ZGFHZXRTeW1ib2xTaXplCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY0NVREEgICAgY3VkYUhvc3RBbGxvYyBjdWRhSG9zdEdldERldmljZVBvaW50ZXIgY3VkYUhvc3RHZXRGbGFncyBjdWRhSG9zdFJlZ2lzdGVyIGN1ZGFIb3N0VW5yZWdpc3RlciBjdWRhTWFsbG9jIGN1ZGFNYWxsb2NBcnJheSBjdWRhTWFsbG9jSG9zdCBjdWRhTWFsbG9jUGl0Y2ggY3VkYU1hbGxvYzNEIGN1ZGFNYWxsb2MzREFycmF5CiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY0NVREEgICAgY3VkYU1lbWNweSBjdWRhTWVtY3B5QXJyYXl0b0FycmF5IGN1ZGFNZW1jcHlBc3luYyBjdWRhTWVtY3B5RnJvbUFycmF5IGN1ZGFNZW1jcHlGcm9tU3ltYm9sIGN1ZGFNZW1jcHlGcm9tU3ltYm9sQXN5bmMgY3VkYU1lbWNweVBlZXIgY3VkYU1lbWNweVBlZXJBc3luYyBjdWRhTWVtY3B5VG9BcnJheSBjdWRhTWVtY3B5VG9TeW1ib2wgY3VkYU1lbWNweVRvU3ltYm9sQXN5bmMgY3VkYU1lbWNweTJEIGN1ZGFNZW1jcHkyREFycmF5VG9BcnJheSBjdWRhTWVtY3B5MkRBc3luYyBjdWRhTWVtY3B5MkRGcm9tQXJyYXkgY3VkYU1lbWNweTJEVG9BcnJheSBjdWRhTWVtY3B5M0QgY3VkYU1lbWNweTNEQXN5bmMKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBjdWRhTWVtR2V0SW5mbyBjdWRhTWVtc2V0IGN1ZGFNZW1zZXQyRCBjdWRhTWVtc2V0M0QgY3VkYURldmljZUNhbkFjY2Vzc1BlZXIgY3VkYURldmljZURpc2FibGVQZWVyQWNjZXNzIGN1ZGFEZXZpY2VFbmFibGVQZWVyQWNjZXNzIGN1ZGFQb2ludGVyR2V0QXR0cmlidXRlcyBjdWRhRHJpdmVyR2V0VmVyc2lvbiBjdWRhUnVudGltZUdldFZlcnNpb24KCiAgc3luIHJlZ2lvbiBub25lIG1hdGNoZ3JvdXA9Zm9ydHJhblR5cGUgc3RhcnQ9Ijw8PCIgZW5kPSI+Pj4iIGNvbnRhaW5zPUFMTEJVVCxub25lCmVuZGlmCgpzeW4gY2x1c3RlciBmb3J0cmFuQ29tbWVudEdyb3VwIGNvbnRhaW5zPWZvcnRyYW5Ub2RvCgppZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAxKQogIGlmICFleGlzdHMoImZvcnRyYW5faGF2ZV90YWJzIikKICAgICJGbGFnIGl0ZW1zIGJleW9uZCBjb2x1bW4gNzIKICAgIHN5biBtYXRjaCBmb3J0cmFuU2VyaWFsTnVtYmVyCWV4Y2x1ZGVubCAiXi5cezczLH0kImxjPTcyCiAgICAiRmxhZyBsZWZ0IG1hcmdpbiBlcnJvcnMKICAgIHN5biBtYXRjaCBmb3J0cmFuTGFiZWxFcnJvcgkiXi5cey0sNH1bXjAtOSBdIiBjb250YWlucz1mb3J0cmFuVGFiCiAgICBzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsRXJyb3IJIl4uXHs0fVxkXFMiCiAgZW5kaWYKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbW1lbnQJCWV4Y2x1ZGVubCAiXlshYypdLiokIiBjb250YWlucz1AZm9ydHJhbkNvbW1lbnRHcm91cCxAc3BlbGwKICBzeW4gbWF0Y2ggZm9ydHJhbkxlZnRNYXJnaW4JCXRyYW5zcGFyZW50ICJeIFx7NX0iCiAgc3luIG1hdGNoIGZvcnRyYW5Db250aW51ZU1hcmsJCWRpc3BsYXkgIl4uXHs1fVxTImxjPTUKZWxzZQogIHN5biBtYXRjaCBmb3J0cmFuQ29udGludWVNYXJrCQlkaXNwbGF5ICImIgplbmRpZgoKc3luIG1hdGNoIGZvcnRyYW5Db21tZW50CWV4Y2x1ZGVubCAiIS4qJCIgY29udGFpbnM9QGZvcnRyYW5Db21tZW50R3JvdXAsQHNwZWxsCgoiY3BwIGlzIG9mdGVuIHVzZWQgd2l0aCBGb3J0cmFuCnN5biBtYXRjaAljUHJlUHJvYwkJIl5ccyojXHMqXChkZWZpbmVcfGlmZGVmXClcPi4qIgpzeW4gbWF0Y2gJY1ByZVByb2MJCSJeXHMqI1xzKlwoZWxpZlx8aWZcKVw+LioiCnN5biBtYXRjaAljUHJlUHJvYwkJIl5ccyojXHMqXChpZm5kZWZcfHVuZGVmXClcPi4qIgpzeW4gbWF0Y2gJY1ByZUNvbmRpdAkJIl5ccyojXHMqXChlbHNlXHxlbmRpZlwpXD4uKiIKc3luIHJlZ2lvbgljSW5jbHVkZWQJY29udGFpbmVkIHN0YXJ0PSsiW14oXSsgc2tpcD0rXFxcXFx8XFwiKyBlbmQ9KyIrIGNvbnRhaW5zPWZvcnRyYW5MZWZ0TWFyZ2luLGZvcnRyYW5Db250aW51ZU1hcmssZm9ydHJhblNlcmlhbE51bWJlcgpzeW4gbWF0Y2gJY0luY2x1ZGVkCQljb250YWluZWQgIjxbXj5dKj4iCnN5biBtYXRjaAljSW5jbHVkZQkJIl5ccyojXHMqaW5jbHVkZVw+XHMqWyI8XSIgY29udGFpbnM9Y0luY2x1ZGVkCgoiU3luY2hyb25pc2luZyBsaW1pdHMgYXNzdW1lIHRoYXQgY29tbWVudCBhbmQgY29udGludWF0aW9uIGxpbmVzIGFyZSBub3QgbWl4ZWQKaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGQiKSB8fCBleGlzdHMoImZvcnRyYW5fbW9yZV9wcmVjaXNlIikKICBzeW4gc3luYyBmcm9tc3RhcnQKZWxzZWlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDApCiAgc3luIHN5bmMgbGluZWNvbnQgIiYiIG1pbmxpbmVzPTMwCmVsc2UKICBzeW4gc3luYyBtaW5saW5lcz0zMAplbmRpZgoKaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGQiKQoKICBpZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAxKQogICAgc3luIHJlZ2lvbiBmb3J0cmFuUHJvZ3JhbSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Il5ccypwcm9ncmFtXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChwcm9ncmFtXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuTW9kdWxlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5Nb2R1bGUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqbW9kdWxlXHNcK1wocHJvY2VkdXJlXClcQCFceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwobW9kdWxlXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbQogICAgc3luIHJlZ2lvbiBmb3J0cmFuRnVuY3Rpb24gdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqXChcKFwocmVhbCBcfGludGVnZXIgXHxsb2dpY2FsIFx8Y29tcGxleCBcfGRvdWJsZSBccypwcmVjaXNpb24gXClccypcKChcKFxzKmtpbmRccyo9XClcPVxzKlx3XCtccyopXClcPVwpXHx0eXBlXHNcKyhccypcd1wrXHMqKSBcfGNoYXJhY3RlciBcKChcKFxzKmxlblxzKj1cKVw9XHMqXGRcK1xzKilcfChcKFxzKmtpbmRccyo9XClcPVxzKlx3XCtccyopXClcPVwpXD1ccypmdW5jdGlvblxzXCtceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8ZnVuY3Rpb25cKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhblN1YnJvdXRpbmUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqc3Vicm91dGluZVxzXCtceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8c3Vicm91dGluZVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuQmxvY2tEYXRhIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxibG9ja1xzKmRhdGFcKFxzXCtceihcYVx3KlwpXClcPSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGJsb2NrXHMqZGF0YVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5JbnRlcmZhY2UgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKmludGVyZmFjZVw+IiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKmludGVyZmFjZVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICAgIHN5biByZWdpb24gZm9ydHJhblR5cGVEZWYgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKnR5cGVccypcKCxccypcKHB1YmxpY1x8cHJpdmF0ZVwpXClcPVxzKjo6IiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKnR5cGVcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgZWxzZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuUHJvZ3JhbSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Il5ccypwcm9ncmFtXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwocHJvZ3JhbVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuTW9kdWxlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKm1vZHVsZVxzXCtcKHByb2NlZHVyZVwpXEAhXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChtb2R1bGVcKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5GdW5jdGlvbiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypcKFwoXChyZWFsIFx8aW50ZWdlciBcfGxvZ2ljYWwgXHxjb21wbGV4IFx8ZG91YmxlIFxzKnByZWNpc2lvbiBcKVxzKlwoKFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcfHR5cGVcc1wrKFxzKlx3XCtccyopIFx8Y2hhcmFjdGVyIFwoKFwoXHMqbGVuXHMqPVwpXD1ccypcZFwrXHMqKVx8KFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcPVxzKmZ1bmN0aW9uXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8ZnVuY3Rpb25cKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhblN1YnJvdXRpbmUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqc3Vicm91dGluZVxzXCtceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfHN1YnJvdXRpbmVcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhbkJsb2NrRGF0YSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8YmxvY2tccypkYXRhXChcc1wrXHooXGFcdypcKVwpXD0iIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8YmxvY2tccypkYXRhXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICAgIHN5biByZWdpb24gZm9ydHJhbkludGVyZmFjZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqaW50ZXJmYWNlXD4iIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKmludGVyZmFjZVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICAgIHN5biByZWdpb24gZm9ydHJhblR5cGVEZWYgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKnR5cGVccypcKCxccypcKHB1YmxpY1x8cHJpdmF0ZVwpXClcPVxzKjo6IiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccyp0eXBlXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jawogIGVuZGlmCgogIGlmIGV4aXN0cygiZm9ydHJhbl9mb2xkX2NvbmRpdGlvbmFscyIpCiAgICBpZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAxKQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW43N0xvb3AgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJcPGRvXHNcK1x6KFxkXCtcKSIgZW5kPSJeXHMqXHoxXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW45MExvb3AgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXChcPGVuZFxzXCtcKVxAPCFcPGRvXChcc1wrXGFcfFxzKiRcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypkb1w+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuSWZCbG9jayB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJcKFw8ZVwobmRcfGxzZVwpXHNcK1wpXEA8IVw8aWZccyooLlwrKVxzKnRoZW5cPiIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZW5kPSJcPGVuZFxzKmlmXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW5DYXNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Ilw8c2VsZWN0XHMqY2FzZVw+IiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBlbmQ9Ilw8ZW5kXHMqc2VsZWN0XD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgZWxzZQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW43N0xvb3AgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJcPGRvXHNcK1x6KFxkXCtcKSIgZW5kPSJeXHMqXHoxXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW45MExvb3AgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXChcPGVuZFxzXCtcKVxAPCFcPGRvXChcc1wrXGFcfFxzKiRcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqZG9cPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICAgIHN5biByZWdpb24gZm9ydHJhbklmQmxvY2sgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXChcPGVcKG5kXHxsc2VcKVxzXCtcKVxAPCFcPGlmXHMqKC5cKylccyp0aGVuXD4iIHNraXA9Il5ccypbISNdLiokIiBlbmQ9Ilw8ZW5kXHMqaWZcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICAgIHN5biByZWdpb24gZm9ydHJhbkNhc2UgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXDxzZWxlY3RccypjYXNlXD4iIHNraXA9Il5ccypbISNdLiokIiBlbmQ9Ilw8ZW5kXHMqc2VsZWN0XD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgZW5kaWYKICBlbmRpZgoKICBpZiBleGlzdHMoImZvcnRyYW5fZm9sZF9tdWx0aWxpbmVjb21tZW50cyIpCiAgICBpZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAxKQogICAgICBzeW4gbWF0Y2ggZm9ydHJhbk11bHRpTGluZUNvbW1lbnRzIHRyYW5zcGFyZW50IGZvbGQgIlwoXlshYypdLipcKFxuXHxcJSRcKVwpXHs0LH0iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuTXVsdGlDb21tZW50TGluZXMKICAgIGVsc2UKICAgICAgc3luIG1hdGNoIGZvcnRyYW5NdWx0aUxpbmVDb21tZW50cyB0cmFuc3BhcmVudCBmb2xkICJcKF5ccyohLipcKFxuXHxcJSRcKVwpXHs0LH0iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuTXVsdGlDb21tZW50TGluZXMKICAgIGVuZGlmCiAgZW5kaWYKZW5kaWYKCiIgRGVmaW5lIHRoZSBkZWZhdWx0IGhpZ2hsaWdodGluZy4KIiBUaGUgZGVmYXVsdCBoaWdobGlnaHRpbmcgZGlmZmVycyBmb3IgZWFjaCBkaWFsZWN0LgoiIFRyYW5zcGFyZW50IGdyb3VwczoKIiBmb3J0cmFuUGFyZW4sIGZvcnRyYW5MZWZ0TWFyZ2luCiIgZm9ydHJhblByb2dyYW0sIGZvcnRyYW5Nb2R1bGUsIGZvcnRyYW5TdWJyb3V0aW5lLCBmb3J0cmFuRnVuY3Rpb24sCiIgZm9ydHJhbkJsb2NrRGF0YQoiIGZvcnRyYW43N0xvb3AsIGZvcnRyYW45MExvb3AsIGZvcnRyYW5JZkJsb2NrLCBmb3J0cmFuQ2FzZQoiIGZvcnRyYW5NdWx0aUNvbW1lbnRMaW5lcwpoaSBkZWYgbGluayBmb3J0cmFuS2V5d29yZCAJS2V5d29yZApoaSBkZWYgbGluayBmb3J0cmFuQ29uc3RydWN0TmFtZQlJZGVudGlmaWVyCmhpIGRlZiBsaW5rIGZvcnRyYW5Db25kaXRpb25hbAlDb25kaXRpb25hbApoaSBkZWYgbGluayBmb3J0cmFuUmVwZWF0CVJlcGVhdApoaSBkZWYgbGluayBmb3J0cmFuVG9kbwkJVG9kbwpoaSBkZWYgbGluayBmb3J0cmFuQ29udGludWVNYXJrCVNwZWNpYWwKaGkgZGVmIGxpbmsgZm9ydHJhblN0cmluZwlTdHJpbmcKaGkgZGVmIGxpbmsgZm9ydHJhbk51bWJlcglOdW1iZXIKaGkgZGVmIGxpbmsgZm9ydHJhbk9wZXJhdG9yCU9wZXJhdG9yCmhpIGRlZiBsaW5rIGZvcnRyYW5Cb29sZWFuCUJvb2xlYW4KaGkgZGVmIGxpbmsgZm9ydHJhbkxhYmVsRXJyb3IJRXJyb3IKaGkgZGVmIGxpbmsgZm9ydHJhbk9ic29sZXRlCVRvZG8KaGkgZGVmIGxpbmsgZm9ydHJhblR5cGUJCVR5cGUKaGkgZGVmIGxpbmsgZm9ydHJhblN0cnVjdHVyZQlUeXBlCmhpIGRlZiBsaW5rIGZvcnRyYW5TdG9yYWdlQ2xhc3MJU3RvcmFnZUNsYXNzCmhpIGRlZiBsaW5rIGZvcnRyYW5DYWxsCQlGdW5jdGlvbgpoaSBkZWYgbGluayBmb3J0cmFuVW5pdEhlYWRlcglmb3J0cmFuUHJlQ29uZGl0CmhpIGRlZiBsaW5rIGZvcnRyYW5SZWFkV3JpdGUJS2V5d29yZApoaSBkZWYgbGluayBmb3J0cmFuSU8JCUtleXdvcmQKaGkgZGVmIGxpbmsgZm9ydHJhbkludHJpbnNpYwlGdW5jdGlvbgpoaSBkZWYgbGluayBmb3J0cmFuQ29uc3RhbnQJQ29uc3RhbnQKCiIgVG8gc3RvcCBkZWxldGVkICYgb2Jzb2xlc2NlbnQgZmVhdHVyZXMgYmVpbmcgaGlnaGxpZ2h0ZWQgYXMgVG9kbyBpdGVtcywKIiBjb21tZW50IG91dCB0aGUgbmV4dCA1IGxpbmVzIGFuZCB1bmNvbW1lbnQgdGhlIDUgbGluZXMgYWZ0ZXIgdGhhdApoaSBkZWYgbGluayBmb3J0cmFuVW5pdEhlYWRlck9iICAgIGZvcnRyYW5PYnNvbGV0ZQpoaSBkZWYgbGluayBmb3J0cmFuS2V5d29yZE9iICAgICAgIGZvcnRyYW5PYnNvbGV0ZQpoaSBkZWYgbGluayBmb3J0cmFuQ29uZGl0aW9uYWxPYiAgIGZvcnRyYW5PYnNvbGV0ZQpoaSBkZWYgbGluayBmb3J0cmFuVHlwZU9iICAgICAgICAgIGZvcnRyYW5PYnNvbGV0ZQpoaSBkZWYgbGluayBmb3J0cmFuS2V5d29yZERlbCAgICAgIGZvcnRyYW5PYnNvbGV0ZQoiaGkgZGVmIGxpbmsgZm9ydHJhblVuaXRIZWFkZXJPYiAgICBmb3J0cmFuVW5pdEhlYWRlcgoiaGkgZGVmIGxpbmsgZm9ydHJhbktleXdvcmRPYiAgICAgICBmb3J0cmFuS2V5d29yZAoiaGkgZGVmIGxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsT2IgICBmb3J0cmFuQ29uZGl0aW9uYWwKImhpIGRlZiBsaW5rIGZvcnRyYW5UeXBlT2IgICAgICAgICAgZm9ydHJhblR5cGUKImhpIGRlZiBsaW5rIGZvcnRyYW5LZXl3b3JkRGVsICAgICAgZm9ydHJhbktleXdvcmQKCmlmIGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJGIgogIGhpISBkZWYgbGluayBmb3J0cmFuSW50cmluc2ljUglmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhblVuaXRIZWFkZXJSCWZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuVHlwZVIJCWZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuU3RvcmFnZUNsYXNzUglmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhbk9wZXJhdG9yUiAJZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5JbmNsdWRlICAgCWZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuTGFiZWxOdW1iZXIJZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5UYXJnZXQJICAgICAgICBmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkZsb2F0SWxsCSAgICAgICAgZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5JT1IJCWZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuS2V5d29yZFIJICAgICAgICBmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhblN0cmluZ1IJICAgICAgICBmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsUglmb3J0cmFuT2Jzb2xldGUKZWxzZQogIGhpISBkZWYgbGluayBmb3J0cmFuSW50cmluc2ljUglmb3J0cmFuSW50cmluc2ljCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5Vbml0SGVhZGVyUglmb3J0cmFuUHJlQ29uZGl0CiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5UeXBlUgkJZm9ydHJhblR5cGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhblN0b3JhZ2VDbGFzc1IJZm9ydHJhblN0b3JhZ2VDbGFzcwogIGhpISBkZWYgbGluayBmb3J0cmFuT3BlcmF0b3JSCSAgICAgICAgZm9ydHJhbk9wZXJhdG9yCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5JbmNsdWRlCSAgICAgICAgSW5jbHVkZQogIGhpISBkZWYgbGluayBmb3J0cmFuTGFiZWxOdW1iZXIJU3BlY2lhbAogIGhpISBkZWYgbGluayBmb3J0cmFuVGFyZ2V0CSAgICAgICAgU3BlY2lhbAogIGhpISBkZWYgbGluayBmb3J0cmFuRmxvYXRJbGwJICAgICAgICBmb3J0cmFuRmxvYXQKICBoaSEgZGVmIGxpbmsgZm9ydHJhbklPUgkJZm9ydHJhbklPCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5LZXl3b3JkUgkgICAgICAgIGZvcnRyYW5LZXl3b3JkCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5TdHJpbmdSCSAgICAgICAgZm9ydHJhblN0cmluZwogIGhpISBkZWYgbGluayBmb3J0cmFuQ29uZGl0aW9uYWxSCWZvcnRyYW5Db25kaXRpb25hbAplbmRpZgoKIiBDVURBCmhpIGRlZiBsaW5rIGZvcnRyYW5JbnRyaW5zaWNDVURBICAgICAgICBmb3J0cmFuSW50cmluc2ljCmhpIGRlZiBsaW5rIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgICAgICBmb3J0cmFuVHlwZQpoaSBkZWYgbGluayBmb3J0cmFuU3RyaW5nQ1VEQSAgICAgICAgICAgZm9ydHJhblN0cmluZwoKaGkgZGVmIGxpbmsgZm9ydHJhbkZvcm1hdFNwZWMJSWRlbnRpZmllcgpoaSBkZWYgbGluayBmb3J0cmFuRmxvYXQJRmxvYXQKaGkgZGVmIGxpbmsgZm9ydHJhblByZUNvbmRpdAlQcmVDb25kaXQKaGkgZGVmIGxpbmsgY0luY2x1ZGVkCQlmb3J0cmFuU3RyaW5nCmhpIGRlZiBsaW5rIGNJbmNsdWRlCQlJbmNsdWRlCmhpIGRlZiBsaW5rIGNQcmVQcm9jCQlQcmVQcm9jCmhpIGRlZiBsaW5rIGNQcmVDb25kaXQJCVByZUNvbmRpdApoaSBkZWYgbGluayBmb3J0cmFuUGFyZW5FcnJvcglFcnJvcgpoaSBkZWYgbGluayBmb3J0cmFuQ29tbWVudAlDb21tZW50CmhpIGRlZiBsaW5rIGZvcnRyYW5TZXJpYWxOdW1iZXIJVG9kbwpoaSBkZWYgbGluayBmb3J0cmFuVGFiCQlFcnJvcgoKIiBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSBpZiB5b3UgdXNlIGV4dHJhIGludHJpbnNpY3MgcHJvdmlkZWQgYnkgdmVuZG9ycwoiaGkgZGVmIGxpbmsgZm9ydHJhbkV4dHJhSW50cmluc2ljCUZ1bmN0aW9uCgpsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJmb3J0cmFuIgoKbGV0ICZjcG8gPSBzOmNwb19zYXZlCnVubGV0IHM6Y3BvX3NhdmUKIiB2aW06IHRzPTggdHc9MTMyCg==